mirror of
https://github.com/wega-team/ss14-wega.git
synced 2026-02-14 19:30:01 +01:00
update
This commit is contained in:
@@ -146,10 +146,10 @@ public sealed class HumanoidAppearanceSystem : SharedHumanoidAppearanceSystem
|
||||
|
||||
// We need to ensure hair before applying it or coloring can try depend on markings that can be invalid
|
||||
var hairColor = _markingManager.MustMatchSkin(profile.Species, HumanoidVisualLayers.Hair, out var hairAlpha, _prototypeManager)
|
||||
? profile.Appearance.SkinColor.WithAlpha(hairAlpha)
|
||||
? new List<Color> { profile.Appearance.SkinColor.WithAlpha(hairAlpha) } // Corvax-Wega-Hair-Extended
|
||||
: profile.Appearance.HairColor;
|
||||
var hair = new Marking(profile.Appearance.HairStyleId,
|
||||
new[] { hairColor });
|
||||
hairColor); // Corvax-Wega-Hair-Extended
|
||||
|
||||
var facialHairColor = _markingManager.MustMatchSkin(profile.Species, HumanoidVisualLayers.FacialHair, out var facialHairAlpha, _prototypeManager)
|
||||
? profile.Appearance.SkinColor.WithAlpha(facialHairAlpha)
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
</ScrollContainer>
|
||||
|
||||
<!-- Color sliders -->
|
||||
<ScrollContainer MinHeight="200" HorizontalExpand="True">
|
||||
<ScrollContainer MinHeight="300" HorizontalExpand="True"> <!-- Corvax-Wega-Hair-Extended -->
|
||||
<BoxContainer Name="ColorSelectorContainer" HorizontalExpand="True" />
|
||||
</ScrollContainer>
|
||||
</BoxContainer>
|
||||
|
||||
@@ -291,8 +291,9 @@ namespace Content.Client.Lobby.UI
|
||||
{
|
||||
if (Profile is null)
|
||||
return;
|
||||
var hairColorList = new List<Robust.Shared.Maths.Color>(newColor.marking.MarkingColors); // Corvax-Wega-Hair-Extended
|
||||
Profile = Profile.WithCharacterAppearance(
|
||||
Profile.Appearance.WithHairColor(newColor.marking.MarkingColors[0]));
|
||||
Profile.Appearance.WithHairColor(hairColorList));// Corvax-Wega-Hair-Extended
|
||||
UpdateCMarkingsHair();
|
||||
ReloadPreview();
|
||||
};
|
||||
@@ -1531,7 +1532,7 @@ namespace Content.Client.Lobby.UI
|
||||
var hairMarking = Profile.Appearance.HairStyleId switch
|
||||
{
|
||||
HairStyles.DefaultHairStyle => new List<Marking>(),
|
||||
_ => new() { new(Profile.Appearance.HairStyleId, new List<Color>() { Profile.Appearance.HairColor }) },
|
||||
_ => new List<Marking> { new Marking(Profile.Appearance.HairStyleId, Profile.Appearance.HairColor) }, // Corvax-Wega-Hair-Extended
|
||||
};
|
||||
|
||||
var facialHairMarking = Profile.Appearance.FacialHairStyleId switch
|
||||
@@ -1571,7 +1572,7 @@ namespace Content.Client.Lobby.UI
|
||||
}
|
||||
else
|
||||
{
|
||||
hairColor = Profile.Appearance.HairColor;
|
||||
hairColor = Profile.Appearance.HairColor.First(); // Corvax-Wega-Hair-Extended
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
using Content.Shared.StationRecords;
|
||||
using Robust.Client.UserInterface;
|
||||
using Robust.Shared.Player; // Corvax-Wega-Record
|
||||
using static Robust.Client.UserInterface.Controls.BaseButton; // Corvax-Wega-Record
|
||||
|
||||
namespace Content.Client.StationRecords;
|
||||
|
||||
@@ -12,6 +14,9 @@ public sealed class GeneralStationRecordConsoleBoundUserInterface : BoundUserInt
|
||||
{
|
||||
}
|
||||
|
||||
[Dependency] private readonly IEntityManager _entityManager = default!; // Corvax-Wega-Record
|
||||
[Dependency] private readonly ISharedPlayerManager _playerManager = default!; // Corvax-Wega-Record
|
||||
|
||||
protected override void Open()
|
||||
{
|
||||
base.Open();
|
||||
@@ -22,8 +27,33 @@ public sealed class GeneralStationRecordConsoleBoundUserInterface : BoundUserInt
|
||||
_window.OnFiltersChanged += (type, filterValue) =>
|
||||
SendMessage(new SetStationRecordFilter(type, filterValue));
|
||||
_window.OnDeleted += id => SendMessage(new DeleteStationRecord(id));
|
||||
|
||||
_window.OnJobAdd += OnJobsAdd; // Corvax-Wega-Record
|
||||
_window.OnJobSubtract += OnJobsSubtract; // Corvax-Wega-Record
|
||||
}
|
||||
|
||||
// Corvax-Wega-Record-start
|
||||
private void OnJobsAdd(ButtonEventArgs args)
|
||||
{
|
||||
if (args.Button.Parent?.Parent is not JobRow row || row.Job == null)
|
||||
return;
|
||||
|
||||
var netEntity = _entityManager.GetNetEntity(_playerManager.LocalSession?.AttachedEntity ?? EntityUid.Invalid);
|
||||
AdjustStationJobMsg msg = new(netEntity, row.Job, 1);
|
||||
SendMessage(msg);
|
||||
}
|
||||
|
||||
private void OnJobsSubtract(ButtonEventArgs args)
|
||||
{
|
||||
if (args.Button.Parent?.Parent is not JobRow row || row.Job == null)
|
||||
return;
|
||||
|
||||
var netEntity = _entityManager.GetNetEntity(_playerManager.LocalSession?.AttachedEntity ?? EntityUid.Invalid);
|
||||
AdjustStationJobMsg msg = new(netEntity, row.Job, -1);
|
||||
SendMessage(msg);
|
||||
}
|
||||
// Corvax-Wega-Record-end
|
||||
|
||||
protected override void UpdateState(BoundUserInterfaceState state)
|
||||
{
|
||||
base.UpdateState(state);
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
Title="{Loc 'general-station-record-console-window-title'}"
|
||||
MinSize="750 500">
|
||||
<BoxContainer Orientation="Vertical">
|
||||
<BoxContainer Margin="5 5 5 10" HorizontalExpand="true" VerticalAlignment="Center">
|
||||
<BoxContainer Margin="5 5 5 10" HorizontalExpand="true"> <!-- Corvax-Wega-Record -->
|
||||
<OptionButton Name="StationRecordsFilterType" MinWidth="200" Margin="0 0 10 0"/>
|
||||
<LineEdit Name="StationRecordsFiltersValue"
|
||||
PlaceHolder="{Loc 'general-station-record-for-filter-line-placeholder'}" HorizontalExpand="True"/>
|
||||
@@ -11,11 +11,20 @@
|
||||
</BoxContainer>
|
||||
<BoxContainer VerticalExpand="True">
|
||||
<!-- Record listing -->
|
||||
<BoxContainer Orientation="Vertical" Margin="5" MinWidth="250" MaxWidth="250">
|
||||
<BoxContainer Orientation="Vertical" Margin="5" MinWidth="328" MaxWidth="360"> <!-- Corvax-Wega-Record -->
|
||||
<Label Name="RecordListingStatus" Visible="False" />
|
||||
<ScrollContainer VerticalExpand="True">
|
||||
<ItemList Name="RecordListing" />
|
||||
</ScrollContainer>
|
||||
<!-- Corvax-Wega-Record-start -->
|
||||
<ScrollContainer VerticalExpand="True">
|
||||
<BoxContainer Name="JobListing"
|
||||
Orientation="Vertical"
|
||||
HorizontalExpand="True"
|
||||
VerticalExpand="True">
|
||||
</BoxContainer>
|
||||
</ScrollContainer>
|
||||
<!-- Corvax-Wega-Record-end -->
|
||||
</BoxContainer>
|
||||
<BoxContainer Orientation="Vertical" Margin="5">
|
||||
<Label Name="RecordContainerStatus" Visible="False" Text="{Loc 'general-station-record-console-select-record-info'}"/>
|
||||
|
||||
@@ -1,18 +1,25 @@
|
||||
using static Robust.Client.UserInterface.Controls.BaseButton; // Corvax-Wega-Record
|
||||
using Content.Shared.StationRecords;
|
||||
using Robust.Client.AutoGenerated;
|
||||
using Robust.Client.UserInterface.CustomControls;
|
||||
using Robust.Client.UserInterface.XAML;
|
||||
|
||||
using Robust.Shared.Prototypes; // Corvax-Wega-Record
|
||||
using Content.Shared.Roles; // Corvax-Wega-Record
|
||||
namespace Content.Client.StationRecords;
|
||||
|
||||
[GenerateTypedNameReferences]
|
||||
public sealed partial class GeneralStationRecordConsoleWindow : DefaultWindow
|
||||
{
|
||||
private readonly IPrototypeManager _prototype = default!; // Corvax-Wega-Record
|
||||
|
||||
public Action<uint?>? OnKeySelected;
|
||||
|
||||
public Action<StationRecordFilterType, string>? OnFiltersChanged;
|
||||
public Action<uint>? OnDeleted;
|
||||
|
||||
public event Action<ButtonEventArgs>? OnJobAdd; // Corvax-Wega-Record
|
||||
public event Action<ButtonEventArgs>? OnJobSubtract; // Corvax-Wega-Record
|
||||
|
||||
private bool _isPopulating;
|
||||
|
||||
private StationRecordFilterType _currentFilterType;
|
||||
@@ -21,6 +28,8 @@ public sealed partial class GeneralStationRecordConsoleWindow : DefaultWindow
|
||||
{
|
||||
RobustXamlLoader.Load(this);
|
||||
|
||||
_prototype = IoCManager.Resolve<IPrototypeManager>(); // Corvax-Wega-Record
|
||||
|
||||
_currentFilterType = StationRecordFilterType.Name;
|
||||
|
||||
foreach (var item in Enum.GetValues<StationRecordFilterType>())
|
||||
@@ -87,6 +96,14 @@ public sealed partial class GeneralStationRecordConsoleWindow : DefaultWindow
|
||||
|
||||
StationRecordsFilterType.SelectId((int)_currentFilterType);
|
||||
|
||||
// Corvax-Wega-Record-start
|
||||
if (state.JobList != null)
|
||||
{
|
||||
JobListing.Visible = true;
|
||||
PopulateJobsContainer(state.JobList);
|
||||
}
|
||||
// Corvax-Wega-Record-end
|
||||
|
||||
if (state.RecordListing == null)
|
||||
{
|
||||
RecordListingStatus.Visible = true;
|
||||
@@ -158,4 +175,26 @@ public sealed partial class GeneralStationRecordConsoleWindow : DefaultWindow
|
||||
return Loc.GetString($"general-station-record-{type.ToString().ToLower()}-filter");
|
||||
}
|
||||
|
||||
// Corvax-Wega-Record-end
|
||||
private void PopulateJobsContainer(IReadOnlyDictionary<ProtoId<JobPrototype>, int?> jobList)
|
||||
{
|
||||
JobListing.RemoveAllChildren();
|
||||
foreach (var (jobId, amount) in jobList)
|
||||
{
|
||||
if (!_prototype.TryIndex<JobPrototype>(jobId, out var jobPrototype))
|
||||
continue;
|
||||
|
||||
var jobEntry = new JobRow
|
||||
{
|
||||
Job = jobId,
|
||||
JobName = { Text = jobPrototype.LocalizedName },
|
||||
JobAmount = { Text = amount?.ToString() },
|
||||
};
|
||||
|
||||
jobEntry.DecreaseJobSlot.OnPressed += (args) => { OnJobSubtract?.Invoke(args); };
|
||||
jobEntry.IncreaseJobSlot.OnPressed += (args) => { OnJobAdd?.Invoke(args); };
|
||||
JobListing.AddChild(jobEntry);
|
||||
}
|
||||
}
|
||||
// Corvax-Wega-Record-end
|
||||
}
|
||||
|
||||
24
Content.Client/StationRecords/JobRow.xaml
Normal file
24
Content.Client/StationRecords/JobRow.xaml
Normal file
@@ -0,0 +1,24 @@
|
||||
<PanelContainer xmlns="https://spacestation14.io"
|
||||
xmlns:gfx="clr-namespace:Robust.Client.Graphics;assembly=Robust.Client"
|
||||
HorizontalExpand="True">
|
||||
<BoxContainer Orientation="Horizontal"
|
||||
HorizontalExpand="True">
|
||||
<Label Name="JobName"
|
||||
Access="Public"
|
||||
MinWidth="210" />
|
||||
<Button Name="DecreaseJobSlot"
|
||||
Access="Public"
|
||||
ToolTip=""
|
||||
Text="-"
|
||||
StyleClasses="OptionLeft" />
|
||||
<Label Name="JobAmount"
|
||||
Margin="6 0 0 0"
|
||||
Access="Public"
|
||||
MinWidth="22"/>
|
||||
<Button Name="IncreaseJobSlot"
|
||||
Access="Public"
|
||||
ToolTip=""
|
||||
Text="+"
|
||||
StyleClasses="OptionRight" />
|
||||
</BoxContainer>
|
||||
</PanelContainer>
|
||||
15
Content.Client/StationRecords/JobRow.xaml.cs
Normal file
15
Content.Client/StationRecords/JobRow.xaml.cs
Normal file
@@ -0,0 +1,15 @@
|
||||
using Robust.Client.AutoGenerated;
|
||||
using Robust.Client.UserInterface.Controls;
|
||||
using Robust.Client.UserInterface.XAML;
|
||||
namespace Content.Client.StationRecords;
|
||||
|
||||
[GenerateTypedNameReferences]
|
||||
|
||||
public sealed partial class JobRow : PanelContainer
|
||||
{
|
||||
public string? Job;
|
||||
public JobRow()
|
||||
{
|
||||
RobustXamlLoader.Load(this);
|
||||
}
|
||||
}
|
||||
@@ -53,7 +53,7 @@ namespace Content.IntegrationTests.Tests.Preferences
|
||||
Age = 21,
|
||||
Appearance = new(
|
||||
"Afro",
|
||||
Color.Aqua,
|
||||
new List<Color> { Color.Aqua }, // Corvax-Wega-Hair-Extended
|
||||
"Shaved",
|
||||
Color.Aquamarine,
|
||||
Color.Azure,
|
||||
|
||||
@@ -255,6 +255,19 @@ namespace Content.Server.Database
|
||||
loadouts[role.RoleName] = loadout;
|
||||
}
|
||||
|
||||
// Corvax-Wega-Hair-Extended-start
|
||||
List<Color> hairColors;
|
||||
try
|
||||
{
|
||||
var hairColorHexCodes = JsonSerializer.Deserialize<List<string>>(profile.HairColor);
|
||||
hairColors = hairColorHexCodes?.Select(color => Color.FromHex(color.Trim())).ToList() ?? new List<Color> { Color.White };
|
||||
}
|
||||
catch (JsonException)
|
||||
{
|
||||
hairColors = new List<Color> { Color.White };
|
||||
}
|
||||
// Corvax-Wega-Hair-Extended-end
|
||||
|
||||
return new HumanoidCharacterProfile(
|
||||
profile.CharacterName,
|
||||
profile.FlavorText,
|
||||
@@ -269,7 +282,7 @@ namespace Content.Server.Database
|
||||
new HumanoidCharacterAppearance
|
||||
(
|
||||
profile.HairName,
|
||||
Color.FromHex(profile.HairColor),
|
||||
hairColors, // Corvax-Wega-Hair-Extended
|
||||
profile.FacialHairName,
|
||||
Color.FromHex(profile.FacialHairColor),
|
||||
Color.FromHex(profile.EyeColor),
|
||||
@@ -307,7 +320,7 @@ namespace Content.Server.Database
|
||||
profile.Sex = humanoid.Sex.ToString();
|
||||
profile.Gender = humanoid.Gender.ToString();
|
||||
profile.HairName = appearance.HairStyleId;
|
||||
profile.HairColor = appearance.HairColor.ToHex();
|
||||
profile.HairColor = JsonSerializer.Serialize(appearance.HairColor.Select(c => c.ToHex()).ToList()); // Corvax-Wega-Hair-Extended
|
||||
profile.FacialHairName = appearance.FacialHairStyleId;
|
||||
profile.FacialHairColor = appearance.FacialHairColor.ToHex();
|
||||
profile.EyeColor = appearance.EyeColor.ToHex();
|
||||
|
||||
@@ -230,6 +230,9 @@ namespace Content.Server.Lathe
|
||||
{
|
||||
var result = Spawn(resultProto, Transform(uid).Coordinates);
|
||||
_stack.TryMergeToContacts(result);
|
||||
|
||||
var ev = new LatheResultSpawnEvent(uid); // Corvax-Wega
|
||||
RaiseLocalEvent(result, ref ev); // Corvax-Wega
|
||||
}
|
||||
|
||||
if (comp.CurrentRecipe.ResultReagents is { } resultReagents &&
|
||||
|
||||
@@ -284,6 +284,14 @@ public sealed class MagicMirrorSystem : SharedMagicMirrorSystem
|
||||
|
||||
_humanoid.RemoveMarking(component.Target.Value, category, args.Slot);
|
||||
|
||||
// Corvax-Wega-Skrell-start
|
||||
if (category == MarkingCategories.Hair)
|
||||
{
|
||||
var netEntity = GetNetEntity(component.Target.Value);
|
||||
RaiseLocalEvent(new HairMarkingRemovedEvent(netEntity));
|
||||
}
|
||||
// Corvax-Wega-Skrell-end
|
||||
|
||||
UpdateInterface(uid, component.Target.Value, component);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,22 +1,38 @@
|
||||
using System.Linq;
|
||||
using Content.Server.NukeOps; // Corvax-Wega-Record
|
||||
using Content.Server.Popups; // Corvax-Wega-Record
|
||||
using Content.Server.Station.Systems;
|
||||
using Content.Server.StationRecords.Components;
|
||||
using Content.Shared.Access.Components; // Corvax-Wega-Record
|
||||
using Content.Shared.Inventory; // Corvax-Wega-Record
|
||||
using Content.Shared.PDA; // Corvax-Wega-Record
|
||||
using Content.Shared.StationRecords;
|
||||
using Robust.Server.Audio; // Corvax-Wega-Record
|
||||
using Robust.Server.GameObjects;
|
||||
using Robust.Shared.Timing; // Corvax-Wega-Record
|
||||
|
||||
namespace Content.Server.StationRecords.Systems;
|
||||
|
||||
public sealed class GeneralStationRecordConsoleSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly AudioSystem _audio = default!;
|
||||
[Dependency] private readonly UserInterfaceSystem _ui = default!;
|
||||
[Dependency] private readonly StationSystem _station = default!;
|
||||
[Dependency] private readonly StationRecordsSystem _stationRecords = default!;
|
||||
[Dependency] private readonly StationJobsSystem _stationJobsSystem = default!; // Corvax-Wega-Record
|
||||
[Dependency] private readonly PopupSystem _popup = default!; // Corvax-Wega-Record
|
||||
[Dependency] private readonly InventorySystem _inventory = default!; // Corvax-Wega-Record
|
||||
|
||||
private readonly HashSet<string> _requiredAccessLevels = new HashSet<string> { "Captain", "HeadOfPersonnel" }; // Corvax-Wega-Record
|
||||
private bool _war = false; // Corvax-Wega-Record
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
SubscribeLocalEvent<GeneralStationRecordConsoleComponent, RecordModifiedEvent>(UpdateUserInterface);
|
||||
SubscribeLocalEvent<GeneralStationRecordConsoleComponent, AfterGeneralRecordCreatedEvent>(UpdateUserInterface);
|
||||
SubscribeLocalEvent<GeneralStationRecordConsoleComponent, RecordRemovedEvent>(UpdateUserInterface);
|
||||
SubscribeLocalEvent<GeneralStationRecordConsoleComponent, AdjustStationJobMsg>(OnAdjustJob); // Corvax-Wega-Record
|
||||
SubscribeLocalEvent<WarDeclaredEvent>(OnWarDeclared);
|
||||
|
||||
Subs.BuiEvents<GeneralStationRecordConsoleComponent>(GeneralStationRecordConsoleKey.Key, subs =>
|
||||
{
|
||||
@@ -63,6 +79,93 @@ public sealed class GeneralStationRecordConsoleSystem : EntitySystem
|
||||
}
|
||||
}
|
||||
|
||||
// Corvax-Wega-Record-start
|
||||
private void OnWarDeclared(ref WarDeclaredEvent ev)
|
||||
{
|
||||
_war = true;
|
||||
Timer.Spawn((int)(40f * 60000), () => { _war = false; });
|
||||
}
|
||||
|
||||
private void OnAdjustJob(Entity<GeneralStationRecordConsoleComponent> ent, ref AdjustStationJobMsg msg)
|
||||
{
|
||||
var user = GetEntity(msg.User);
|
||||
var idCard = GetIdCard(user);
|
||||
|
||||
if (idCard is null || !HasRequiredAccess(idCard.Value, msg.JobProto))
|
||||
{
|
||||
_audio.PlayPvs("/Audio/Effects/Cargo/buzz_sigh.ogg", ent);
|
||||
_popup.PopupCursor(Loc.GetString("general-station-record-console-access-denied"), user);
|
||||
return;
|
||||
}
|
||||
else if (_war)
|
||||
{
|
||||
_audio.PlayPvs("/Audio/Effects/Cargo/buzz_sigh.ogg", ent);
|
||||
_popup.PopupCursor(Loc.GetString("general-station-record-console-error"), user);
|
||||
return;
|
||||
}
|
||||
|
||||
var stationUid = _station.GetOwningStation(ent);
|
||||
if (stationUid is not EntityUid station || !_stationJobsSystem.TryGetJobSlot(station, msg.JobProto, out var currentSlots))
|
||||
return;
|
||||
|
||||
var commandJobs = new HashSet<string>
|
||||
{
|
||||
"Captain", "IAA", "ChiefEngineer", "ChiefMedicalOfficer",
|
||||
"HeadOfPersonnel", "HeadOfSecurity", "ResearchDirector", "Quartermaster"
|
||||
};
|
||||
|
||||
var newSlotCount = currentSlots + msg.Amount;
|
||||
if (commandJobs.Contains(msg.JobProto) && currentSlots == 1 && msg.Amount > 0)
|
||||
{
|
||||
_audio.PlayPvs("/Audio/Effects/Cargo/buzz_sigh.ogg", ent);
|
||||
_popup.PopupCursor(Loc.GetString("general-station-record-console-job-slot-limit"), user);
|
||||
return;
|
||||
}
|
||||
else if (msg.Amount > 0 && (currentSlots > 3 || newSlotCount > 3))
|
||||
{
|
||||
_audio.PlayPvs("/Audio/Effects/Cargo/buzz_sigh.ogg", ent);
|
||||
_popup.PopupCursor(Loc.GetString("general-station-record-console-job-slot-limit"), user);
|
||||
return;
|
||||
}
|
||||
|
||||
_stationJobsSystem.TryAdjustJobSlot(station, msg.JobProto, msg.Amount, clamp: true);
|
||||
UpdateUserInterface(ent);
|
||||
}
|
||||
|
||||
private EntityUid? GetIdCard(EntityUid senderUid)
|
||||
{
|
||||
if (!_inventory.TryGetSlotEntity(senderUid, "id", out var idUid))
|
||||
return null;
|
||||
|
||||
if (EntityManager.TryGetComponent(idUid, out PdaComponent? pda) && pda.ContainedId != null)
|
||||
{
|
||||
return pda.ContainedId;
|
||||
}
|
||||
|
||||
return idUid;
|
||||
}
|
||||
|
||||
private bool HasRequiredAccess(EntityUid idCard, string jobProtoId)
|
||||
{
|
||||
if (!TryComp<AccessComponent>(idCard, out var accessComp))
|
||||
return false;
|
||||
|
||||
var cardAccess = new HashSet<string>(accessComp.Tags.Select(tag => tag.ToString()));
|
||||
var centcommAccessJobs = new HashSet<string> { "Captain", "IAA" };
|
||||
var highAccessJobs = new HashSet<string>
|
||||
{
|
||||
"ChiefEngineer", "ChiefMedicalOfficer", "HeadOfPersonnel",
|
||||
"HeadOfSecurity", "ResearchDirector", "Quartermaster"
|
||||
};
|
||||
|
||||
if (centcommAccessJobs.Contains(jobProtoId))
|
||||
return cardAccess.Contains("CentralCommand");
|
||||
else if (highAccessJobs.Contains(jobProtoId))
|
||||
return cardAccess.Contains("Captain");
|
||||
return _requiredAccessLevels.Any(cardAccess.Contains);
|
||||
}
|
||||
// Corvax-Wega-Record-end
|
||||
|
||||
private void UpdateUserInterface(Entity<GeneralStationRecordConsoleComponent> ent)
|
||||
{
|
||||
var (uid, console) = ent;
|
||||
@@ -74,6 +177,8 @@ public sealed class GeneralStationRecordConsoleSystem : EntitySystem
|
||||
return;
|
||||
}
|
||||
|
||||
var jobList = _stationJobsSystem.GetJobs(owningStation.Value); // Corvax-Wega-Record
|
||||
|
||||
var listing = _stationRecords.BuildListing((owningStation.Value, stationRecords), console.Filter);
|
||||
|
||||
switch (listing.Count)
|
||||
@@ -93,7 +198,7 @@ public sealed class GeneralStationRecordConsoleSystem : EntitySystem
|
||||
var key = new StationRecordKey(id, owningStation.Value);
|
||||
_stationRecords.TryGetRecord<GeneralStationRecord>(key, out var record, stationRecords);
|
||||
|
||||
GeneralStationRecordConsoleState newState = new(id, record, listing, console.Filter, ent.Comp.CanDeleteEntries);
|
||||
GeneralStationRecordConsoleState newState = new(id, record, listing, jobList, console.Filter, ent.Comp.CanDeleteEntries); // Corvax-Wega-Record
|
||||
_ui.SetUiState(uid, GeneralStationRecordConsoleKey.Key, newState);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,6 +30,7 @@ namespace Content.Server.Voting.Managers
|
||||
[Dependency] private readonly IServerDbManager _dbManager = default!;
|
||||
[Dependency] private readonly VoteWebhooks _voteWebhooks = default!;
|
||||
|
||||
private List<string> _lastPickedMaps = new(); // Corvax-Wega-Vote
|
||||
private VotingSystem? _votingSystem;
|
||||
private RoleSystem? _roleSystem;
|
||||
private GameTicker? _gameTicker;
|
||||
@@ -263,7 +264,13 @@ namespace Content.Server.Voting.Managers
|
||||
|
||||
private void CreateMapVote(ICommonSession? initiator)
|
||||
{
|
||||
var maps = _gameMapManager.CurrentlyEligibleMaps().ToDictionary(map => map, map => map.MapName);
|
||||
// Corvax-Wega-Vote-start
|
||||
var allMaps = _gameMapManager.CurrentlyEligibleMaps();
|
||||
|
||||
var maps = allMaps
|
||||
.Where(map => !_lastPickedMaps.Contains(map.ID))
|
||||
.ToDictionary(map => map, map => map.MapName);
|
||||
// Corvax-Wega-Vote-end
|
||||
|
||||
var alone = _playerManager.PlayerCount == 1 && initiator != null;
|
||||
var options = new VoteOptions
|
||||
@@ -302,6 +309,14 @@ namespace Content.Server.Voting.Managers
|
||||
Loc.GetString("ui-vote-map-win", ("winner", maps[picked])));
|
||||
}
|
||||
|
||||
// Corvax-Wega-Vote-start
|
||||
_lastPickedMaps.Add(picked.ID);
|
||||
if (_lastPickedMaps.Count > 2)
|
||||
{
|
||||
_lastPickedMaps.RemoveAt(0);
|
||||
}
|
||||
// Corvax-Wega-Vote-end
|
||||
|
||||
_adminLogger.Add(LogType.Vote, LogImpact.Medium, $"Map vote finished: {picked.MapName}");
|
||||
var ticker = _entityManager.EntitySysManager.GetEntitySystem<GameTicker>();
|
||||
if (ticker.CanUpdateMap())
|
||||
|
||||
70
Content.Server/_Wega/Paper/TicketMachineSystem.cs
Normal file
70
Content.Server/_Wega/Paper/TicketMachineSystem.cs
Normal file
@@ -0,0 +1,70 @@
|
||||
using Content.Shared.Interaction;
|
||||
using Content.Shared.Timing;
|
||||
using Content.Shared.Popups;
|
||||
using Content.Shared.Hands.EntitySystems;
|
||||
using Content.Shared.Examine;
|
||||
using Content.Shared.Paper;
|
||||
using Robust.Shared.Audio;
|
||||
using Robust.Shared.Audio.Systems;
|
||||
|
||||
namespace Content.Server.Paper;
|
||||
|
||||
public sealed class TicketMachineSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly SharedAudioSystem _audio = default!;
|
||||
[Dependency] private readonly PaperSystem _paperSystem = default!;
|
||||
[Dependency] private readonly IEntityManager _entityManager = default!;
|
||||
[Dependency] private readonly SharedHandsSystem _hands = default!;
|
||||
[Dependency] private readonly SharedPopupSystem _popup = default!;
|
||||
[Dependency] private readonly UseDelaySystem _useDelay = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<TicketMachineComponent, InteractHandEvent>(OnTicket);
|
||||
SubscribeLocalEvent<TicketMachineComponent, ExaminedEvent>(OnExamined);
|
||||
}
|
||||
|
||||
private void OnTicket(EntityUid machine, TicketMachineComponent component, InteractHandEvent args)
|
||||
{
|
||||
var user = args.User;
|
||||
if (!TryComp<UseDelayComponent>(machine, out var useDelay) || _useDelay.IsDelayed((machine, useDelay)))
|
||||
{
|
||||
_popup.PopupEntity(Loc.GetString("paper-component-ticket-failed"), user, user, PopupType.Small);
|
||||
return;
|
||||
}
|
||||
|
||||
var number = (component.Queue + 1).ToString();
|
||||
var ticket = _entityManager.SpawnEntity(component.TicketProto, Transform(machine).Coordinates);
|
||||
if (!TryComp<PaperComponent>(ticket, out var paper) || !TryAddTicket((ticket, paper), machine, number))
|
||||
return;
|
||||
|
||||
component.Queue++;
|
||||
_hands.TryPickupAnyHand(user, ticket);
|
||||
_useDelay.TryResetDelay((machine, useDelay));
|
||||
}
|
||||
|
||||
private bool TryAddTicket(Entity<PaperComponent> ticket, EntityUid machine, string number)
|
||||
{
|
||||
|
||||
StampDisplayInfo info = new StampDisplayInfo
|
||||
{
|
||||
StampedName = number,
|
||||
StampedColor = Color.FromHex("#333333"),
|
||||
};
|
||||
|
||||
if (_paperSystem.TryStamp(ticket, info, "paper_stamp-hop"))
|
||||
{
|
||||
_paperSystem.SetContent(ticket, Loc.GetString("paper-component-ticket", ("queue", number)));
|
||||
_audio.PlayPvs(new SoundPathSpecifier("/Audio/Machines/short_print_and_rip.ogg"), machine, AudioParams.Default.WithLoop(false));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private void OnExamined(Entity<TicketMachineComponent> entity, ref ExaminedEvent args)
|
||||
{
|
||||
if (args.IsInDetailsRange)
|
||||
args.AddMarkup($"{Loc.GetString("paper-component-ticket-count", ("number", (entity.Comp.Queue + 1).ToString()))}{Environment.NewLine}");
|
||||
}
|
||||
}
|
||||
12
Content.Server/_Wega/Printer/PrinterComponent.cs
Normal file
12
Content.Server/_Wega/Printer/PrinterComponent.cs
Normal file
@@ -0,0 +1,12 @@
|
||||
namespace Content.Server.PrinterInsert
|
||||
{
|
||||
[RegisterComponent]
|
||||
public sealed partial class PrinterComponent : Component
|
||||
{
|
||||
[DataField]
|
||||
public string UserName = string.Empty;
|
||||
|
||||
[DataField]
|
||||
public string UserJob = string.Empty;
|
||||
}
|
||||
}
|
||||
77
Content.Server/_Wega/Printer/PrinterInsertSystem.cs
Normal file
77
Content.Server/_Wega/Printer/PrinterInsertSystem.cs
Normal file
@@ -0,0 +1,77 @@
|
||||
using Content.Server.Station.Systems;
|
||||
using Content.Shared.Paper;
|
||||
using Content.Shared.Lathe;
|
||||
using Robust.Shared.Timing;
|
||||
using Content.Shared.GameTicking;
|
||||
using Content.Shared.UserInterface;
|
||||
using Content.Server.Roles.Jobs;
|
||||
using Content.Shared.Mind.Components;
|
||||
using Content.Server.Mind;
|
||||
|
||||
namespace Content.Server.PrinterInsert;
|
||||
|
||||
public sealed class PrinterInsertSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly StationSystem _stationSystem = default!;
|
||||
[Dependency] private readonly PaperSystem _paperSystem = default!;
|
||||
[Dependency] private readonly IGameTiming _gameTiming = default!;
|
||||
[Dependency] private readonly SharedGameTicker _gameTicker = default!;
|
||||
[Dependency] private readonly JobSystem _jobs = default!;
|
||||
[Dependency] private readonly IEntityManager _entityManager = default!;
|
||||
[Dependency] private readonly MindSystem _minds = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<PaperComponent, LatheResultSpawnEvent>(PaperSpawn);
|
||||
SubscribeLocalEvent<PrinterComponent, BeforeActivatableUIOpenEvent>(UpdateUserInterfaceState);
|
||||
}
|
||||
|
||||
private void UpdateUserInterfaceState(Entity<PrinterComponent> uid, ref BeforeActivatableUIOpenEvent args)
|
||||
{
|
||||
if (!_entityManager.TryGetComponent<MindContainerComponent>(args.User, out var _))
|
||||
{
|
||||
uid.Comp.UserName = string.Empty;
|
||||
uid.Comp.UserJob = string.Empty;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
uid.Comp.UserName = Name(args.User);
|
||||
|
||||
if (_minds.TryGetMind(args.User, out var mindId, out var _))
|
||||
{
|
||||
|
||||
if (_jobs.MindTryGetJobName(mindId, out var jobName))
|
||||
{
|
||||
uid.Comp.UserJob = jobName;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
uid.Comp.UserJob = string.Empty;
|
||||
}
|
||||
|
||||
private void PaperSpawn(Entity<PaperComponent> entity, ref LatheResultSpawnEvent args)
|
||||
{
|
||||
var station = _stationSystem.GetOwningStation(entity);
|
||||
if (station != null)
|
||||
{
|
||||
var data = DateTime.Today.ToShortDateString().Replace(Loc.GetString("printer-paper-year"), Loc.GetString("printer-paper-replace-year"));
|
||||
var time = _gameTiming.CurTime.Subtract(_gameTicker.RoundStartTimeSpan).ToString("hh\\:mm\\:ss");
|
||||
_paperSystem.SetContent(entity, entity.Comp.Content.Replace(Loc.GetString("printer-paper-replace-station"), Name(station.Value)));
|
||||
_paperSystem.SetContent(entity, entity.Comp.Content.Replace(Loc.GetString("printer-paper-replace-date"),
|
||||
Loc.GetString("printer-paper-date", ("time", time), ("data", data))));
|
||||
|
||||
if (_entityManager.TryGetComponent<PrinterComponent>(args.Lathe, out var comp))
|
||||
{
|
||||
_paperSystem.SetContent(entity, entity.Comp.Content.Replace(Loc.GetString("printer-paper-replace-name"),
|
||||
Loc.GetString("printer-paper-name", ("name", comp.UserName))));
|
||||
_paperSystem.SetContent(entity, entity.Comp.Content.Replace(Loc.GetString("printer-paper-replace-job"), Loc.GetString("printer-paper-job",
|
||||
("job", comp.UserJob))));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
57
Content.Server/_Wega/Skrell/SkrellSystem.cs
Normal file
57
Content.Server/_Wega/Skrell/SkrellSystem.cs
Normal file
@@ -0,0 +1,57 @@
|
||||
using Content.Shared.Inventory.Events;
|
||||
using Content.Shared.Skrell;
|
||||
using Content.Shared.Inventory;
|
||||
using Content.Shared.Humanoid;
|
||||
using Content.Shared.Humanoid.Markings;
|
||||
using Content.Shared.MagicMirror;
|
||||
using Robust.Shared.Timing;
|
||||
|
||||
namespace Content.Server.Skrell;
|
||||
|
||||
public sealed class SkrellSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly InventorySystem _inventorySystem = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<SkrellComponent, DidEquipEvent>(OnEquip);
|
||||
SubscribeLocalEvent<HairMarkingRemovedEvent>(OnRemoveSlot);
|
||||
}
|
||||
|
||||
private void OnEquip(Entity<SkrellComponent> entity, ref DidEquipEvent args)
|
||||
{
|
||||
var slot = args.Slot;
|
||||
if (slot == "pocket3")
|
||||
{
|
||||
var item = args.Equipee;
|
||||
if (CheckCondition(entity))
|
||||
{
|
||||
Timer.Spawn(1, () => _inventorySystem.TryUnequip(item, slot, force: true));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private bool CheckCondition(EntityUid uid)
|
||||
{
|
||||
if (TryComp<HumanoidAppearanceComponent>(uid, out var humanoid))
|
||||
{
|
||||
if (!humanoid.MarkingSet.TryGetCategory(MarkingCategories.Hair, out var hairMarkings) || hairMarkings.Count == 0)
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void OnRemoveSlot(HairMarkingRemovedEvent args)
|
||||
{
|
||||
var target = GetEntity(args.Target);
|
||||
if (!HasComp<SkrellComponent>(target))
|
||||
return;
|
||||
|
||||
if (_inventorySystem.TryGetSlotEntity(target, "pocket3", out _))
|
||||
{
|
||||
_inventorySystem.TryUnequip(target, "pocket3");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -15,7 +15,7 @@ public sealed partial class HumanoidCharacterAppearance : ICharacterAppearance,
|
||||
public string HairStyleId { get; set; } = HairStyles.DefaultHairStyle;
|
||||
|
||||
[DataField]
|
||||
public Color HairColor { get; set; } = Color.Black;
|
||||
public List<Color> HairColor { get; set; } = new() { Color.Black }; // Corvax-Wega-Hair-Extended
|
||||
|
||||
[DataField("facialHair")]
|
||||
public string FacialHairStyleId { get; set; } = HairStyles.DefaultFacialHairStyle;
|
||||
@@ -33,7 +33,7 @@ public sealed partial class HumanoidCharacterAppearance : ICharacterAppearance,
|
||||
public List<Marking> Markings { get; set; } = new();
|
||||
|
||||
public HumanoidCharacterAppearance(string hairStyleId,
|
||||
Color hairColor,
|
||||
List<Color> hairColor, // Corvax-Wega-Hair-Extended
|
||||
string facialHairStyleId,
|
||||
Color facialHairColor,
|
||||
Color eyeColor,
|
||||
@@ -41,7 +41,7 @@ public sealed partial class HumanoidCharacterAppearance : ICharacterAppearance,
|
||||
List<Marking> markings)
|
||||
{
|
||||
HairStyleId = hairStyleId;
|
||||
HairColor = ClampColor(hairColor);
|
||||
HairColor = hairColor.Select(ClampColor).ToList(); // Corvax-Wega-Hair-Extended
|
||||
FacialHairStyleId = facialHairStyleId;
|
||||
FacialHairColor = ClampColor(facialHairColor);
|
||||
EyeColor = ClampColor(eyeColor);
|
||||
@@ -60,7 +60,7 @@ public sealed partial class HumanoidCharacterAppearance : ICharacterAppearance,
|
||||
return new(newName, HairColor, FacialHairStyleId, FacialHairColor, EyeColor, SkinColor, Markings);
|
||||
}
|
||||
|
||||
public HumanoidCharacterAppearance WithHairColor(Color newColor)
|
||||
public HumanoidCharacterAppearance WithHairColor(List<Color> newColor) // Corvax-Wega-Hair-Extended
|
||||
{
|
||||
return new(HairStyleId, newColor, FacialHairStyleId, FacialHairColor, EyeColor, SkinColor, Markings);
|
||||
}
|
||||
@@ -104,7 +104,7 @@ public sealed partial class HumanoidCharacterAppearance : ICharacterAppearance,
|
||||
|
||||
return new(
|
||||
HairStyles.DefaultHairStyle,
|
||||
Color.Black,
|
||||
new List<Color> { Color.Black }, // Corvax-Wega-Hair-Extended
|
||||
HairStyles.DefaultFacialHairStyle,
|
||||
Color.Black,
|
||||
Color.Black,
|
||||
@@ -166,7 +166,7 @@ public sealed partial class HumanoidCharacterAppearance : ICharacterAppearance,
|
||||
break;
|
||||
}
|
||||
|
||||
return new HumanoidCharacterAppearance(newHairStyle, newHairColor, newFacialHairStyle, newHairColor, newEyeColor, newSkinColor, new ());
|
||||
return new HumanoidCharacterAppearance(newHairStyle, new List<Color> { newHairColor }, newFacialHairStyle, newHairColor, newEyeColor, newSkinColor, new ()); // Corvax-Wega-Hair-Extended
|
||||
|
||||
float RandomizeColor(float channel)
|
||||
{
|
||||
@@ -184,7 +184,7 @@ public sealed partial class HumanoidCharacterAppearance : ICharacterAppearance,
|
||||
var hairStyleId = appearance.HairStyleId;
|
||||
var facialHairStyleId = appearance.FacialHairStyleId;
|
||||
|
||||
var hairColor = ClampColor(appearance.HairColor);
|
||||
var hairColor = appearance.HairColor.Select(ClampColor).ToList(); // Corvax-Wega-Hair-Extended
|
||||
var facialHairColor = ClampColor(appearance.FacialHairColor);
|
||||
var eyeColor = ClampColor(appearance.EyeColor);
|
||||
|
||||
@@ -250,7 +250,7 @@ public sealed partial class HumanoidCharacterAppearance : ICharacterAppearance,
|
||||
{
|
||||
if (maybeOther is not HumanoidCharacterAppearance other) return false;
|
||||
if (HairStyleId != other.HairStyleId) return false;
|
||||
if (!HairColor.Equals(other.HairColor)) return false;
|
||||
if (!HairColor.SequenceEqual(other.HairColor)) return false; // Corvax-Wega-Hair-Extended
|
||||
if (FacialHairStyleId != other.FacialHairStyleId) return false;
|
||||
if (!FacialHairColor.Equals(other.FacialHairColor)) return false;
|
||||
if (!EyeColor.Equals(other.EyeColor)) return false;
|
||||
|
||||
@@ -383,7 +383,8 @@ public abstract class SharedHumanoidAppearanceSystem : EntitySystem
|
||||
// Hair/facial hair - this may eventually be deprecated.
|
||||
// We need to ensure hair before applying it or coloring can try depend on markings that can be invalid
|
||||
var hairColor = _markingManager.MustMatchSkin(profile.Species, HumanoidVisualLayers.Hair, out var hairAlpha, _proto)
|
||||
? profile.Appearance.SkinColor.WithAlpha(hairAlpha) : profile.Appearance.HairColor;
|
||||
? new List<Color> { profile.Appearance.SkinColor.WithAlpha(hairAlpha) } // Corvax-Wega-Hair-Extended
|
||||
: profile.Appearance.HairColor; // Corvax-Wega-Hair-Extended
|
||||
var facialHairColor = _markingManager.MustMatchSkin(profile.Species, HumanoidVisualLayers.FacialHair, out var facialHairAlpha, _proto)
|
||||
? profile.Appearance.SkinColor.WithAlpha(facialHairAlpha) : profile.Appearance.FacialHairColor;
|
||||
|
||||
|
||||
@@ -97,4 +97,20 @@ namespace Content.Shared.Lathe
|
||||
/// </summary>
|
||||
[ByRefEvent]
|
||||
public readonly record struct LatheStartPrintingEvent(LatheRecipePrototype Recipe);
|
||||
|
||||
// Corvax-Wega-start
|
||||
/// <summary>
|
||||
/// Event is called when the lathe creates something.
|
||||
/// </summary>
|
||||
[ByRefEvent]
|
||||
public sealed class LatheResultSpawnEvent : EntityEventArgs
|
||||
{
|
||||
public readonly EntityUid Lathe;
|
||||
|
||||
public LatheResultSpawnEvent(EntityUid lathe)
|
||||
{
|
||||
Lathe = lathe;
|
||||
}
|
||||
}
|
||||
// Corvax-Wega-end
|
||||
}
|
||||
|
||||
@@ -224,3 +224,16 @@ public sealed partial class MagicMirrorChangeColorDoAfterEvent : DoAfterEvent
|
||||
public int Slot;
|
||||
public List<Color> Colors = new List<Color>();
|
||||
}
|
||||
|
||||
// Corvax-Wega-Skrell-start
|
||||
[Serializable, NetSerializable]
|
||||
public sealed partial class HairMarkingRemovedEvent : EntityEventArgs
|
||||
{
|
||||
public NetEntity Target { get; }
|
||||
|
||||
public HairMarkingRemovedEvent(NetEntity target)
|
||||
{
|
||||
Target = target;
|
||||
}
|
||||
}
|
||||
// Corvax-Wega-Skrell-end
|
||||
|
||||
@@ -6,6 +6,7 @@ using Content.Shared.Examine;
|
||||
using Content.Shared.Interaction;
|
||||
using Content.Shared.Popups;
|
||||
using Content.Shared.Tag;
|
||||
using Content.Shared.Verbs; // Corvax-Wega-Bureaucracy-end
|
||||
using Robust.Shared.Player;
|
||||
using Robust.Shared.Audio.Systems;
|
||||
using static Content.Shared.Paper.PaperComponent;
|
||||
@@ -35,6 +36,7 @@ public sealed class PaperSystem : EntitySystem
|
||||
SubscribeLocalEvent<PaperComponent, PaperInputTextMessage>(OnInputTextMessage);
|
||||
|
||||
SubscribeLocalEvent<ActivateOnPaperOpenedComponent, PaperWriteEvent>(OnPaperWrite);
|
||||
SubscribeLocalEvent<PenComponent, GetVerbsEvent<AlternativeVerb>>(AddSignVerb); // Corvax-Wega-Bureaucracy
|
||||
}
|
||||
|
||||
private void OnMapInit(Entity<PaperComponent> entity, ref MapInitEvent args)
|
||||
@@ -103,7 +105,14 @@ public sealed class PaperSystem : EntitySystem
|
||||
var editable = entity.Comp.StampedBy.Count == 0 || _tagSystem.HasTag(args.Used, "WriteIgnoreStamps");
|
||||
if (_tagSystem.HasTag(args.Used, "Write"))
|
||||
{
|
||||
if (editable)
|
||||
// Corvax-Wega-Bureaucracy-edit
|
||||
if (TryComp<PenComponent>(args.Used, out var pen) && pen.Signature)
|
||||
{
|
||||
TrySign(entity, args.User, entity.Comp);
|
||||
args.Handled = true;
|
||||
return;
|
||||
}
|
||||
else if (editable)
|
||||
{
|
||||
if (entity.Comp.EditingDisabled)
|
||||
{
|
||||
@@ -182,6 +191,50 @@ public sealed class PaperSystem : EntitySystem
|
||||
_interaction.UseInHandInteraction(args.User, entity);
|
||||
}
|
||||
|
||||
// Corvax-Wega-Bureaucracy-start
|
||||
private void AddSignVerb(EntityUid uid, PenComponent pen, ref GetVerbsEvent<AlternativeVerb> args)
|
||||
{
|
||||
if (!args.CanAccess || !args.CanInteract || !args.Using.HasValue
|
||||
|| !_tagSystem.HasTag(args.Using.Value, "Write"))
|
||||
return;
|
||||
|
||||
AlternativeVerb verb = new()
|
||||
{
|
||||
Text = pen.Signature
|
||||
? Loc.GetString("paper-component-verb-sign-write")
|
||||
: Loc.GetString("paper-component-verb-sign-signature"),
|
||||
Act = () =>
|
||||
{
|
||||
pen.Signature = !pen.Signature;
|
||||
},
|
||||
};
|
||||
args.Verbs.Add(verb);
|
||||
}
|
||||
|
||||
public bool TrySign(Entity<PaperComponent> entity, EntityUid signer, PaperComponent paperComp)
|
||||
{
|
||||
StampDisplayInfo info = new StampDisplayInfo
|
||||
{
|
||||
StampedName = Name(signer),
|
||||
StampedColor = Color.FromHex("#333333"),
|
||||
};
|
||||
|
||||
if (TryStamp(entity, info, "paper_stamp-generic"))
|
||||
{
|
||||
var stampPaperOtherMessage = Loc.GetString("paper-component-action-signed-other", ("user", signer), ("target", entity));
|
||||
_popupSystem.PopupEntity(stampPaperOtherMessage, signer, Filter.PvsExcept(signer, entityManager: EntityManager), true);
|
||||
var stampPaperSelfMessage = Loc.GetString("paper-component-action-signed-self", ("target", entity));
|
||||
_popupSystem.PopupClient(stampPaperSelfMessage, signer, signer);
|
||||
|
||||
_audio.PlayPredicted(paperComp.Sound, entity, signer);
|
||||
_adminLogger.Add(LogType.Verb, LogImpact.Low, $"{ToPrettyString(signer):player} has signed {ToPrettyString(entity):paper}.");
|
||||
|
||||
UpdateUserInterface(entity);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
// Corvax-Wega-Bureaucracy-end
|
||||
|
||||
/// <summary>
|
||||
/// Accepts the name and state to be stamped onto the paper, returns true if successful.
|
||||
/// </summary>
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
using Robust.Shared.Prototypes; // Corvax-Wega-Record
|
||||
using Content.Shared.Roles; // Corvax-Wega-Record
|
||||
using Robust.Shared.Serialization;
|
||||
|
||||
namespace Content.Shared.StationRecords;
|
||||
@@ -36,12 +38,14 @@ public sealed class GeneralStationRecordConsoleState : BoundUserInterfaceState
|
||||
public readonly uint? SelectedKey;
|
||||
public readonly GeneralStationRecord? Record;
|
||||
public readonly Dictionary<uint, string>? RecordListing;
|
||||
public IReadOnlyDictionary<ProtoId<JobPrototype>, int?>? JobList { get; } // Corvax-Wega-Record
|
||||
public readonly StationRecordsFilter? Filter;
|
||||
public readonly bool CanDeleteEntries;
|
||||
|
||||
public GeneralStationRecordConsoleState(uint? key,
|
||||
GeneralStationRecord? record,
|
||||
Dictionary<uint, string>? recordListing,
|
||||
IReadOnlyDictionary<ProtoId<JobPrototype>, int?>? jobList, // Corvax-Wega-Record
|
||||
StationRecordsFilter? newFilter,
|
||||
bool canDeleteEntries)
|
||||
{
|
||||
@@ -49,10 +53,11 @@ public sealed class GeneralStationRecordConsoleState : BoundUserInterfaceState
|
||||
Record = record;
|
||||
RecordListing = recordListing;
|
||||
Filter = newFilter;
|
||||
JobList = jobList; // Corvax-Wega-Record
|
||||
CanDeleteEntries = canDeleteEntries;
|
||||
}
|
||||
|
||||
public GeneralStationRecordConsoleState() : this(null, null, null, null, false)
|
||||
public GeneralStationRecordConsoleState() : this(null, null, null, null, null, false) // Corvax-Wega-Record
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -42,3 +42,19 @@ public enum StationRecordFilterType : byte
|
||||
Prints,
|
||||
DNA,
|
||||
}
|
||||
|
||||
// Corvax-Wega-Record-start
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class AdjustStationJobMsg : BoundUserInterfaceMessage
|
||||
{
|
||||
public NetEntity User { get; }
|
||||
public string JobProto { get; }
|
||||
public int Amount { get; }
|
||||
public AdjustStationJobMsg(NetEntity user, string jobProto, int amount)
|
||||
{
|
||||
User = user;
|
||||
JobProto = jobProto;
|
||||
Amount = amount;
|
||||
}
|
||||
}
|
||||
// Corvax-Wega-Record-end
|
||||
|
||||
8
Content.Shared/_Wega/Paper/PenComponent.cs
Normal file
8
Content.Shared/_Wega/Paper/PenComponent.cs
Normal file
@@ -0,0 +1,8 @@
|
||||
namespace Content.Shared.Paper;
|
||||
|
||||
[RegisterComponent]
|
||||
public sealed partial class PenComponent : Component
|
||||
{
|
||||
[DataField("signature")]
|
||||
public bool Signature = false;
|
||||
}
|
||||
10
Content.Shared/_Wega/Paper/TicketMachineComponent.cs
Normal file
10
Content.Shared/_Wega/Paper/TicketMachineComponent.cs
Normal file
@@ -0,0 +1,10 @@
|
||||
namespace Content.Shared.Paper;
|
||||
|
||||
[RegisterComponent]
|
||||
public sealed partial class TicketMachineComponent : Component
|
||||
{
|
||||
[ViewVariables(VVAccess.ReadOnly), DataField]
|
||||
public int Queue = 0;
|
||||
|
||||
public string TicketProto = "PaperTicket";
|
||||
}
|
||||
6
Content.Shared/_Wega/Skrell/SkrellComponent.cs
Normal file
6
Content.Shared/_Wega/Skrell/SkrellComponent.cs
Normal file
@@ -0,0 +1,6 @@
|
||||
namespace Content.Shared.Skrell;
|
||||
|
||||
[RegisterComponent]
|
||||
public sealed partial class SkrellComponent : Component
|
||||
{
|
||||
}
|
||||
BIN
Resources/Audio/_Wega/Items/hair-clippers.ogg
Normal file
BIN
Resources/Audio/_Wega/Items/hair-clippers.ogg
Normal file
Binary file not shown.
@@ -57,5 +57,5 @@ arrivals_map = "/Maps/Corvax/Misc/corvax_terminal.yml"
|
||||
auto_call_time = 150
|
||||
|
||||
[vote]
|
||||
preset_enabled = true
|
||||
preset_enabled = false
|
||||
map_enabled = true
|
||||
|
||||
203
Resources/Locale/ru-RU/_wega/accessories/human-hair.ftl
Normal file
203
Resources/Locale/ru-RU/_wega/accessories/human-hair.ftl
Normal file
@@ -0,0 +1,203 @@
|
||||
# Gradient
|
||||
marking-HumanHairAfroGradient = Афро (Градиент)
|
||||
marking-HumanHairAfro2Gradient = Афро 2 (Градиент)
|
||||
marking-HumanHairBigafroGradient = Афро (Большая, Градиент)
|
||||
marking-HumanHairAntennaGradient = Ахоге (Градиент)
|
||||
marking-HumanHairBaldingGradient = Лысеющий (Градиент)
|
||||
marking-HumanHairBedheadGradient = Небрежная (Градиент)
|
||||
marking-HumanHairBedheadv2Gradient = Небрежная 2 (Градиент)
|
||||
marking-HumanHairBedheadv3Gradient = Небрежная 3 (Градиент)
|
||||
marking-HumanHairLongBedheadGradient = Небрежная (Длинная, Градиент)
|
||||
marking-HumanHairLongBedhead2Gradient = Небрежная (Длинная 2, Градиент)
|
||||
marking-HumanHairFloorlengthBedheadGradient = Небрежная (До пола, Градиент)
|
||||
marking-HumanHairBeehiveGradient = Улей (Градиент)
|
||||
marking-HumanHairBeehivev2Gradient = Улей 2 (Градиент)
|
||||
marking-HumanHairBobGradient = Каре (Градиент)
|
||||
marking-HumanHairBob2Gradient = Каре 2 (Градиент)
|
||||
marking-HumanHairBobcutGradient = Каре 3 (Градиент)
|
||||
marking-HumanHairBob4Gradient = Каре 4 (Градиент)
|
||||
marking-HumanHairBob5Gradient = Каре 5 (Градиент)
|
||||
marking-HumanHairBobcurlGradient = Каре (Завитки, Градиент)
|
||||
marking-HumanHairBoddickerGradient = Боддикер (Градиент)
|
||||
marking-HumanHairBowlcutGradient = Горшок (Градиент)
|
||||
marking-HumanHairBowlcut2Gradient = Горшок 2 (Градиент)
|
||||
marking-HumanHairBraidGradient = Плетение (До пола, Градиент)
|
||||
marking-HumanHairBraidedGradient = Плетение (Градиент)
|
||||
marking-HumanHairBraidfrontGradient = Плетение (Спереди, Градиент)
|
||||
marking-HumanHairBraid2Gradient = Плетение (Высокое, Градиент)
|
||||
marking-HumanHairHbraidGradient = Плетение (Низкое, Градиент)
|
||||
marking-HumanHairShortbraidGradient = Плетение (Короткое, Градиент)
|
||||
marking-HumanHairBraidtailGradient = Плетёный хвостик (Градиент)
|
||||
marking-HumanHairBunGradient = Пучок (Градиент)
|
||||
marking-HumanHairBunhead2Gradient = Пучок 2 (Градиент)
|
||||
marking-HumanHairBun3Gradient = Пучок 3 (Градиент)
|
||||
marking-HumanHairLargebunGradient = Пучок (Большой, Градиент)
|
||||
marking-HumanHairManbunGradient = Пучок (Мужской, Градиент)
|
||||
marking-HumanHairTightbunGradient = Пучок (Затянутый, Градиент)
|
||||
marking-HumanHairBusinessGradient = Деловая (Градиент)
|
||||
marking-HumanHairBusiness2Gradient = Деловая 2 (Градиент)
|
||||
marking-HumanHairBusiness3Gradient = Деловая 3 (Градиент)
|
||||
marking-HumanHairBusiness4Gradient = Деловая 4 (Градиент)
|
||||
marking-HumanHairBuzzcutGradient = Баз кат (Градиент)
|
||||
marking-HumanHairCiaGradient = ЦРУ (Градиент)
|
||||
marking-HumanHairClassicAfroGradient = Классическая Афро (Градиент)
|
||||
marking-HumanHairClassicBigAfroGradient = Классическая Афро (Большая, Градиент)
|
||||
marking-HumanHairClassicBusinessGradient = Классическая Деловая (Градиент)
|
||||
marking-HumanHairClassicCiaGradient = Классическая ЦРУ (Градиент)
|
||||
marking-HumanHairClassicCornrows2Gradient = Классическая Корнроу 2 (Градиент)
|
||||
marking-HumanHairClassicFloorlengthBedheadGradient = Классическая Небрежная (До пола, Градиент)
|
||||
marking-HumanHairClassicLong2Gradient = Классическая Длинные волосы 2 (Градиент)
|
||||
marking-HumanHairClassicLong3Gradient = Классическая Длинные волосы 3 (Градиент)
|
||||
marking-HumanHairClassicModernGradient = Классическая Современная (Градиент)
|
||||
marking-HumanHairClassicMulderGradient = Классическая Малдер (Градиент)
|
||||
marking-HumanHairClassicWispGradient = Классическая Пряди (Градиент)
|
||||
marking-HumanHairCoffeehouseGradient = Кофейная (Градиент)
|
||||
marking-HumanHairComboverGradient = Зачёс (Назад, Градиент)
|
||||
marking-HumanHairCornrowsGradient = Корнроу (Градиент)
|
||||
marking-HumanHairCornrows2Gradient = Корнроу 2 (Градиент)
|
||||
marking-HumanHairCornrowbunGradient = Корнроу (Пучок, Градиент)
|
||||
marking-HumanHairCornrowbraidGradient = Корнроу (Косичка, Градиент)
|
||||
marking-HumanHairCornrowtailGradient = Корнроу (Хвостик, Градиент)
|
||||
marking-HumanHairSpookyLongGradient = Длинная (Зловещая, Градиент)
|
||||
marking-HumanHairCrewcutGradient = Крю-кат (Градиент)
|
||||
marking-HumanHairCrewcut2Gradient = Крю-кат 2 (Градиент)
|
||||
marking-HumanHairCurlsGradient = Завитки (Градиент)
|
||||
marking-HumanHairCGradient = Подстриженная (Градиент)
|
||||
marking-HumanHairDandypompadourGradient = Денди Помпадур (Градиент)
|
||||
marking-HumanHairDevilockGradient = Дьявольский замок (Градиент)
|
||||
marking-HumanHairDoublebunGradient = Двойной пучок (Градиент)
|
||||
marking-HumanHairDoublebunLongGradient = Двойной пучок (Длинные, Градиент)
|
||||
marking-HumanHairDreadsGradient = Дреды (Градиент)
|
||||
marking-HumanHairDrillruruGradient = Дрели (Градиент)
|
||||
marking-HumanHairDrillhairextendedGradient = Дрели (Распущенные, Градиент)
|
||||
marking-HumanHairEmoGradient = Эмо (Градиент)
|
||||
marking-HumanHairEmofringeGradient = Эмо (Чёлка, Градиент)
|
||||
marking-HumanHairNofadeGradient = Фэйд (Отсутствует, Градиент)
|
||||
marking-HumanHairHighfadeGradient = Фэйд (Высокий, Градиент)
|
||||
marking-HumanHairMedfadeGradient = Фэйд (Средний, Градиент)
|
||||
marking-HumanHairLowfadeGradient = Фэйд (Низкий, Градиент)
|
||||
marking-HumanHairBaldfadeGradient = Фэйд (Лысый, Градиент)
|
||||
marking-HumanHairFeatherGradient = Перья (Градиент)
|
||||
marking-HumanHairFatherGradient = Отец (Градиент)
|
||||
marking-HumanHairSargeantGradient = Флэттоп (Градиент)
|
||||
marking-HumanHairFlairGradient = Флейр (Градиент)
|
||||
marking-HumanHairBigflattopGradient = Флэттоп (Большой, Градиент)
|
||||
marking-HumanHairFlowGradient = Флоу (Градиент)
|
||||
marking-HumanHairGelledGradient = Уложенная (Градиент)
|
||||
marking-HumanHairGentleGradient = Аккуратная (Градиент)
|
||||
marking-HumanHairHalfbangGradient = Полурасчесанная (Градиент)
|
||||
marking-HumanHairHalfbang2Gradient = Полурасчесанная 2 (Градиент)
|
||||
marking-HumanHairHalfshavedGradient = Полувыбритая (Градиент)
|
||||
marking-HumanHairHedgehogGradient = Ёжик (Градиент)
|
||||
marking-HumanHairHimecutGradient = Химэ (Градиент)
|
||||
marking-HumanHairHimecut2Gradient = Химэ 2 (Градиент)
|
||||
marking-HumanHairShorthimeGradient = Химэ (Короткая, Градиент)
|
||||
marking-HumanHairHimeupGradient = Химэ (Укладка, Градиент)
|
||||
marking-HumanHairHitopGradient = Хайтоп (Градиент)
|
||||
marking-HumanHairJadeGradient = Джейд (Градиент)
|
||||
marking-HumanHairJensenGradient = Дженсен (Градиент)
|
||||
marking-HumanHairJoestarGradient = Джостар (Градиент)
|
||||
marking-HumanHairKeanuGradient = Киану (Градиент)
|
||||
marking-HumanHairLongBowGradient = Длинная с бантом (Градиент)
|
||||
marking-HumanHairKusanagiGradient = Кусанаги (Градиент)
|
||||
marking-HumanHairLongGradient = Длинная 1 (Градиент)
|
||||
marking-HumanHairLong2Gradient = Длинная 2 (Градиент)
|
||||
marking-HumanHairLong3Gradient = Длинная 3 (Градиент)
|
||||
marking-HumanHairLongWithBundlesGradient = Длинная с пучками (Градиент)
|
||||
marking-HumanHairLongovereyeGradient = Длинная (Через глаз, Градиент)
|
||||
marking-HumanHairLbangsGradient = Длинная (Чёлка, Градиент)
|
||||
marking-HumanHairLongemoGradient = Длинная (Эмо, Градиент)
|
||||
marking-HumanHairLongfringeGradient = Длинная чёлка (Градиент)
|
||||
marking-HumanHairLongsidepartGradient = Длинная сайд-парт (Градиент)
|
||||
marking-HumanHairMegaeyebrowsGradient = Широкие брови (Градиент)
|
||||
marking-HumanHairMessyGradient = Растрёпанная (Градиент)
|
||||
marking-HumanHairModernGradient = Современная (Градиент)
|
||||
marking-HumanHairMohawkGradient = Могавк (Градиент)
|
||||
marking-HumanHairNitoriGradient = Нитори (Градиент)
|
||||
marking-HumanHairReversemohawkGradient = Могавк (Обратный, Градиент)
|
||||
marking-HumanHairUnshavenMohawkGradient = Могавк (Небритый, Градиент)
|
||||
marking-HumanHairMulderGradient = Малдер (Градиент)
|
||||
marking-HumanHairOdangoGradient = Оданго (Градиент)
|
||||
marking-HumanHairOmbreGradient = Омбре (Градиент)
|
||||
marking-HumanHairOneshoulderGradient = На одно плечо (Градиент)
|
||||
marking-HumanHairShortovereyeGradient = Через глаз (Градиент)
|
||||
marking-HumanHairOxtonGradient = Окстон (Градиент)
|
||||
marking-HumanHairPartedGradient = С пробором (Градиент)
|
||||
marking-HumanHairPartGradient = С пробором (Сбоку, Градиент)
|
||||
marking-HumanHairKagamiGradient = Хвостики (Градиент)
|
||||
marking-HumanHairPigtailsGradient = Хвостики 2 (Градиент)
|
||||
marking-HumanHairPigtails2Gradient = Хвостики 3 (Градиент)
|
||||
marking-HumanHairPixieGradient = Пикси (Градиент)
|
||||
marking-HumanHairPompadourGradient = Помпадур (Градиент)
|
||||
marking-HumanHairBigpompadourGradient = Помпадур (Большая, Градиент)
|
||||
marking-HumanHairPonytailGradient = Хвостик (Градиент)
|
||||
marking-HumanHairPonytail2Gradient = Хвостик 2 (Градиент)
|
||||
marking-HumanHairPonytail3Gradient = Хвостик 3 (Градиент)
|
||||
marking-HumanHairPonytail4Gradient = Хвостик 4 (Градиент)
|
||||
marking-HumanHairPonytail5Gradient = Хвостик 5 (Градиент)
|
||||
marking-HumanHairPonytail6Gradient = Хвостик 6 (Градиент)
|
||||
marking-HumanHairPonytail7Gradient = Хвостик 7 (Градиент)
|
||||
marking-HumanHairHighponytailGradient = Хвостик (Высокий, Градиент)
|
||||
marking-HumanHairStailGradient = Хвостик (Короткий, Градиент)
|
||||
marking-HumanHairLongstraightponytailGradient = Хвостик (Длинный, Градиент)
|
||||
marking-HumanHairCountryGradient = Хвостик (Деревенский, Градиент)
|
||||
marking-HumanHairFringetailGradient = Хвостик (Чёлка, Градиент)
|
||||
marking-HumanHairSidetailGradient = Хвостик (Сбоку, Градиент)
|
||||
marking-HumanHairSidetail2Gradient = Хвостик (Сбоку, Градиент) 2
|
||||
marking-HumanHairSidetail3Gradient = Хвостик (Сбоку, Градиент) 3
|
||||
marking-HumanHairSidetail4Gradient = Хвостик (Сбоку, Градиент) 4
|
||||
marking-HumanHairSpikyponytailGradient = Хвостик (Шипастый, Градиент)
|
||||
marking-HumanHairPulatoGradient = Пулато (Градиент)
|
||||
marking-HumanHairPoofyGradient = Пышная (Градиент)
|
||||
marking-HumanHairQuiffGradient = Квифф (Градиент)
|
||||
marking-HumanHairShapedGradient = Фигурная (Градиент)
|
||||
marking-HumanHairRoninGradient = Ронин (Градиент)
|
||||
marking-HumanHairShavedGradient = Бритая (Градиент)
|
||||
marking-HumanHairShavedpartGradient = Бритая часть (Градиент)
|
||||
marking-HumanHairShortbangsGradient = Каре (Чёлка, Градиент)
|
||||
marking-HumanHairAGradient = Короткая (Градиент)
|
||||
marking-HumanHairShorthair2Gradient = Короткая 2 (Градиент)
|
||||
marking-HumanHairShorthair3Gradient = Короткая 3 (Градиент)
|
||||
marking-HumanHairDGradient = Короткая 5 (Градиент)
|
||||
marking-HumanHairEGradient = Короткая 6 (Градиент)
|
||||
marking-HumanHairFGradient = Короткая 7 (Градиент)
|
||||
marking-HumanHairShorthairgGradient = Короткая 8 (Градиент)
|
||||
marking-HumanHair80sGradient = Короткая (80-ые, Градиент)
|
||||
marking-HumanHairRosaGradient = Короткая (Роза, Градиент)
|
||||
marking-HumanHairBGradient = Волосы до плеч (Градиент)
|
||||
marking-HumanHairShoulderLengthOverEyeGradient = До плеч через глаз (Градиент)
|
||||
marking-HumanHairSidecutGradient = Боковой вырез (Градиент)
|
||||
marking-HumanHairSkinheadGradient = Бритоголовый (Градиент)
|
||||
marking-HumanHairProtagonistGradient = Слегка длинная (Градиент)
|
||||
marking-HumanHairSpikeyGradient = Колючая (Градиент)
|
||||
marking-HumanHairSpikyGradient = Колючая 2 (Градиент)
|
||||
marking-HumanHairSpiky2Gradient = Колючая 3 (Градиент)
|
||||
marking-HumanHairSweptGradient = Зачёс назад (Градиент)
|
||||
marking-HumanHairSwept2Gradient = Зачёс назад 2 (Градиент)
|
||||
marking-HumanHairTailedGradient = Хвостатая (Градиент)
|
||||
marking-HumanHairThinningGradient = Редеющая (Градиент)
|
||||
marking-HumanHairThinningfrontGradient = Редеющая (Спереди, Градиент)
|
||||
marking-HumanHairThinningrearGradient = Редеющая (Сзади, Градиент)
|
||||
marking-HumanHairTopknotGradient = Пучок на макушке (Градиент)
|
||||
marking-HumanHairTressshoulderGradient = Коса на плече (Градиент)
|
||||
marking-HumanHairTrimmedGradient = Под машинку (Градиент)
|
||||
marking-HumanHairTrimflatGradient = Под машинку (Плоская, Градиент)
|
||||
marking-HumanHairTwintailGradient = Два хвостика (Градиент)
|
||||
marking-HumanHairTwoStrandsGradient = Две пряди (Градиент)
|
||||
marking-HumanHairUndercutGradient = Андеркат (Градиент)
|
||||
marking-HumanHairUndercutleftGradient = Андеркат (Слева, Градиент)
|
||||
marking-HumanHairUndercutrightGradient = Андеркат (Справа, Градиент)
|
||||
marking-HumanHairUnevenGradient = Неровная (Градиент)
|
||||
marking-HumanHairUnkeptGradient = Неухоженная (Градиент)
|
||||
marking-HumanHairUpdoGradient = Высокая (Градиент)
|
||||
marking-HumanHairVlongGradient = Очень длинная (Градиент)
|
||||
marking-HumanHairLongestGradient = Очень длинная 2 (Градиент)
|
||||
marking-HumanHairLongest2Gradient = Очень длинная (Через гла, Градиентз)
|
||||
marking-HumanHairVeryshortovereyealternateGradient = Очень короткая (Через глаз альт, Градиент)
|
||||
marking-HumanHairVlongfringeGradient = Очень короткая (Чёлка, Градиент)
|
||||
marking-HumanHairVolajuGradient = Воладзю (Градиент)
|
||||
marking-HumanHairWispGradient = Пряди (Градиент)
|
||||
|
||||
# Mixed Color
|
||||
marking-HumanHairNitoriTwo = Нитори (Градиент, Кончики)
|
||||
marking-HumanHairNitoriHarley = Харли (Градиент)
|
||||
33
Resources/Locale/ru-RU/_wega/accessories/skrell-hair.ftl
Normal file
33
Resources/Locale/ru-RU/_wega/accessories/skrell-hair.ftl
Normal file
@@ -0,0 +1,33 @@
|
||||
# Basic
|
||||
marking-HairSkrellExcited = Возбужденный (Эмоциональный)
|
||||
marking-HairSkrellInsulate = Изолирующий (Практичный)
|
||||
marking-HairSkrellLong = Длинный (Классический)
|
||||
marking-HairSkrellLongbun = Длинный пучок (Аккуратный)
|
||||
marking-HairSkrellLongtuux = Длинный туукс (Традиционный)
|
||||
marking-HairSkrellLoose = Распущенный (Свободный стиль)
|
||||
marking-HairSkrellLowbun = Низкий пучок (Элегантный)
|
||||
marking-HairSkrellMidbun = Средний пучок (Универсальный)
|
||||
marking-HairSkrellMullet = Маллет (Ретро)
|
||||
marking-HairSkrellReserve = Резервный (Строгий)
|
||||
marking-HairSkrellShort = Короткий (Простой)
|
||||
marking-HairSkrellShortbun = Короткий пучок (Минималистичный)
|
||||
marking-HairSkrellTuux = Туукс (Культурный)
|
||||
marking-HairSkrellVeryLong = Очень длинный (Эпический)
|
||||
marking-HairSkrellVeryShort = Очень короткий (Сдержанный)
|
||||
|
||||
# Gradient
|
||||
marking-HairSkrellExcitedGradient = Возбужденный (Эмоциональный, Градиент)
|
||||
marking-HairSkrellInsulateGradient = Изолирующий (Практичный, Градиент)
|
||||
marking-HairSkrellLongGradient = Длинный (Классический, Градиент)
|
||||
marking-HairSkrellLongbunGradient = Длинный пучок (Аккуратный, Градиент)
|
||||
marking-HairSkrellLongtuuxGradient = Длинный туукс (Традиционный, Градиент)
|
||||
marking-HairSkrellLooseGradient = Распущенный (Свободный стиль, Градиент)
|
||||
marking-HairSkrellLowbunGradient = Низкий пучок (Элегантный, Градиент)
|
||||
marking-HairSkrellMidbunGradient = Средний пучок (Универсальный, Градиент)
|
||||
marking-HairSkrellMulletGradient = Маллет (Ретро, Градиент)
|
||||
marking-HairSkrellReserveGradient = Резервный (Строгий, Градиент)
|
||||
marking-HairSkrellShortGradient = Короткий (Простой, Градиент)
|
||||
marking-HairSkrellShortbunGradient = Короткий пучок (Минималистичный, Градиент)
|
||||
marking-HairSkrellTuuxGradient = Туукс (Культурный, Градиент)
|
||||
marking-HairSkrellVeryLongGradient = Очень длинный (Эпический, Градиент)
|
||||
marking-HairSkrellVeryShortGradient = Очень короткий (Сдержанный, Градиент)
|
||||
@@ -1,2 +1,48 @@
|
||||
flavor-complex-bacchus = как стена кирпичей...
|
||||
flavor-complex-unholy = как ком пепла
|
||||
flavor-complex-aperol = как травянистая сладость
|
||||
flavor-complex-jagermeister = как горечь охоты
|
||||
flavor-complex-schnaps = как пшеничная мята
|
||||
flavor-complex-sambuka = как крутящийся огонь
|
||||
flavor-complex-sheridan = как сливочный кофе
|
||||
flavor-complex-eggnog = как яйцо
|
||||
flavor-complex-black-blood = как кровавая тьма
|
||||
flavor-complex-light-storm = как морское волнение
|
||||
flavor-complex-cream-heaven = как кофейное облако
|
||||
flavor-complex-hirosima = как алкогольный пепел
|
||||
flavor-complex-nagasaki = как радиоактивный пепел
|
||||
flavor-complex-chocolate-sheridan = как алкогольное мокко
|
||||
flavor-complex-panama = как судоходный канал
|
||||
flavor-complex-pegu-club = как судоходный канал
|
||||
flavor-complex-star-amnesia = как диско-амнезия
|
||||
flavor-complex-silverhand = как угасание суперзвезды
|
||||
flavor-complex-french-75 = как артиллерийская бомбардировка
|
||||
flavor-complex-milk-plus = как потеря человечности
|
||||
flavor-complex-aviation = как дуновение ветра
|
||||
flavor-complex-fizz = как шипение
|
||||
flavor-complex-brandy-crusta = как солено-сладкое
|
||||
flavor-complex-aperolspritz = как отдельность вкуса
|
||||
flavor-complex-tuxedo = как строгость стиля
|
||||
flavor-complex-horse-neck = как лошадиная сила
|
||||
flavor-complex-cuban-sunset = как тоталитаризм
|
||||
flavor-complex-sake-bomb = как пиво и саке
|
||||
flavor-complex-woo-woo = как ву-ву
|
||||
flavor-complex-mulled-wine = как горячее вино
|
||||
flavor-complex-white-bear = как идеологическая война
|
||||
flavor-complex-vampiro = как истощение
|
||||
flavor-complex-queen-mary = как вишневое пиво
|
||||
flavor-complex-inabox = как скрытность
|
||||
flavor-complex-beer-berry-royal = как пивная ягода
|
||||
flavor-complex-sazerac = как горький виски
|
||||
flavor-complex-monako = как фруктовый джин
|
||||
flavor-complex-slime-drink = как желеобразный алкоголь
|
||||
flavor-complex-innocent-erp = как потеря флирта
|
||||
flavor-complex-blue-lagoon = как пляжный отдых
|
||||
flavor-complex-green-fairy = как вера в фей
|
||||
flavor-complex-home-lebovsky = как халат
|
||||
flavor-complex-top-billing = как рекламное пространство
|
||||
flavor-complex-trans-siberian-express = как ужасная инфраструктура
|
||||
flavor-complex-sun = как солнечное тепло
|
||||
flavor-complex-tick-tack = как тиканье часов
|
||||
flavor-complex-uragan-shot = как порывы ветра
|
||||
flavor-complex-new-yorker = как крах
|
||||
|
||||
1
Resources/Locale/ru-RU/_wega/job/job-description.ftl
Normal file
1
Resources/Locale/ru-RU/_wega/job/job-description.ftl
Normal file
@@ -0,0 +1 @@
|
||||
job-description-barber = Вы должны обеспечить станцию неповторимым стилем.
|
||||
3
Resources/Locale/ru-RU/_wega/job/job-names.ftl
Normal file
3
Resources/Locale/ru-RU/_wega/job/job-names.ftl
Normal file
@@ -0,0 +1,3 @@
|
||||
job-name-barber = барбер
|
||||
|
||||
JobBarber = барбер
|
||||
@@ -1,15 +0,0 @@
|
||||
marking-HairSkrellExcited = Возбужденный (Эмоциональный)
|
||||
marking-HairSkrellInsulate = Изолирующий (Практичный)
|
||||
marking-HairSkrellLong = Длинный (Классический)
|
||||
marking-HairSkrellLongbun = Длинный пучок (Аккуратный)
|
||||
marking-HairSkrellLongtuux = Длинный туукс (Традиционный)
|
||||
marking-HairSkrellLoose = Распущенный (Свободный стиль)
|
||||
marking-HairSkrellLowbun = Низкий пучок (Элегантный)
|
||||
marking-HairSkrellMidbun = Средний пучок (Универсальный)
|
||||
marking-HairSkrellMullet = Маллет (Ретро)
|
||||
marking-HairSkrellReserve = Резервный (Строгий)
|
||||
marking-HairSkrellShort = Короткий (Простой)
|
||||
marking-HairSkrellShortbun = Короткий пучок (Минималистичный)
|
||||
marking-HairSkrellTuux = Туукс (Культурный)
|
||||
marking-HairSkrellVeryLong = Очень длинный (Эпический)
|
||||
marking-HairSkrellVeryShort = Очень короткий (Сдержанный)
|
||||
9
Resources/Locale/ru-RU/_wega/paper/paper-component.ftl
Normal file
9
Resources/Locale/ru-RU/_wega/paper/paper-component.ftl
Normal file
@@ -0,0 +1,9 @@
|
||||
paper-component-verb-sign-signature = Подписать
|
||||
paper-component-verb-sign-write = Писать
|
||||
paper-component-action-signed-self = Вы подписываете { $target }.
|
||||
paper-component-action-signed-other = { CAPITALIZE(THE($user)) } подписывает { $target }.
|
||||
paper-component-ticket =
|
||||
Тикет №{ $queue }
|
||||
Ожидайте своей очереди
|
||||
paper-component-ticket-count = Следующий тикет будет №{ $number }
|
||||
paper-component-ticket-failed = Подождите чтобы распечатать следующий тикет
|
||||
@@ -12,6 +12,8 @@ loadout-group-captain-socks = Капитан, носки
|
||||
loadout-group-hop-top = Глава персонала, верхнее белье
|
||||
loadout-group-hop-bottom = Глава персонала, нижнее белье
|
||||
loadout-group-hop-socks = Глава персонала, носки
|
||||
# Medical
|
||||
loadout-group-barber-outerclothing = Барбер, верхняя одежда
|
||||
# Cargo
|
||||
loadout-group-quartermaster-top = Квартирмейстер, верхнее белье
|
||||
loadout-group-quartermaster-bottom = Квартирмейстер, нижнее белье
|
||||
@@ -28,6 +30,10 @@ loadout-group-research-director-socks = Научный руководитель,
|
||||
loadout-group-head-of-security-top = Глава службы безопасности, верхнее белье
|
||||
loadout-group-head-of-security-bottom = Глава службы безопасности, нижнее белье
|
||||
loadout-group-head-of-security-socks = Глава службы безопасности, носки
|
||||
loadout-group-brigmedic-head = Бригмедик, голова
|
||||
loadout-group-brigmedic-jumpsuit = Бригмедик, комбинезон
|
||||
loadout-group-brigmedic-backpack = Бригмедик, рюкзак
|
||||
loadout-group-brigmedic-outerclothing = Бригмедик, верхняя одежда
|
||||
# Medical
|
||||
loadout-group-chief-medical-officer-top = Главный врач, верхнее белье
|
||||
loadout-group-chief-medical-officer-bottom = Главный врач, нижнее белье
|
||||
|
||||
10
Resources/Locale/ru-RU/_wega/printer/printer.ftl
Normal file
10
Resources/Locale/ru-RU/_wega/printer/printer.ftl
Normal file
@@ -0,0 +1,10 @@
|
||||
printer-paper-year = 302
|
||||
printer-paper-date = Время от начала смены и дата: { $time } { $data }
|
||||
printer-paper-name = Составитель документа: { $name }
|
||||
printer-paper-job = Должность составителя: { $job }
|
||||
|
||||
printer-paper-replace-year = 202
|
||||
printer-paper-replace-station = Station XX-000
|
||||
printer-paper-replace-date = Время от начала смены и дата:
|
||||
printer-paper-replace-name = Составитель документа:
|
||||
printer-paper-replace-job = Должность составителя:
|
||||
@@ -1,2 +1,97 @@
|
||||
reagent-name-bacchus-blessing = благословение бахуса
|
||||
reagent-name-aperol = апероль
|
||||
reagent-name-jagermeister = джагермейстер
|
||||
reagent-name-schnaps = шнапс
|
||||
reagent-name-sambuka = самбука
|
||||
reagent-name-bitter = горький
|
||||
reagent-name-sheridan = шеридан
|
||||
reagent-name-black-blood = чёрная кровь
|
||||
reagent-name-light-storm = лёгкий Шторм
|
||||
reagent-name-cream-heaven = кремовый рай
|
||||
reagent-name-hirosima = хиросима
|
||||
reagent-name-nagasaki = нагасаки
|
||||
reagent-name-chocolate-sheridan = шоколад шеридана
|
||||
reagent-name-panama = панама
|
||||
reagent-name-pegu-club = клуб пегу
|
||||
reagent-name-star-amnesia = звездная амнезия
|
||||
reagent-name-silverhand = серебряная рука
|
||||
reagent-name-french-75 = французский 75
|
||||
reagent-name-milk-plus = молоко +
|
||||
reagent-name-light = свет
|
||||
reagent-name-aviation = авиация
|
||||
reagent-name-fizz = физз
|
||||
reagent-name-brandy-crusta = brandy crusta
|
||||
reagent-name-aperolspritz = апероль спритц
|
||||
reagent-name-tuxedo = смокинг
|
||||
reagent-name-horse-neck = лошадиная шея
|
||||
reagent-name-cuban-sunset = кубинский закат
|
||||
reagent-name-sake-bomb = бомба саке
|
||||
reagent-name-woo-woo = ву-ву
|
||||
reagent-name-mulled-wine = глинтвейн
|
||||
reagent-name-white-bear = белый медведь
|
||||
reagent-name-vampiro = вампиро
|
||||
reagent-name-queen-mary = королева мария
|
||||
reagent-name-inabox = коробка
|
||||
reagent-name-beer-berry-royal = пиво королевской ягоды
|
||||
reagent-name-sazerac = сазерак
|
||||
reagent-name-monako = монако
|
||||
reagent-name-slime-drink = слаймовый напиток
|
||||
reagent-name-innocent-erp = невинный ужас
|
||||
reagent-name-blue-lagoon = голубая лагуна
|
||||
reagent-name-green-fairy = зеленая фея
|
||||
reagent-name-home-lebovsky = дом лебовски
|
||||
reagent-name-top-billing = лучший счет
|
||||
reagent-name-trans-siberian-express = транс-сибирский экспресс
|
||||
reagent-name-sun = солнце
|
||||
reagent-name-tick-tack = тик-ток
|
||||
reagent-name-uragan-shot = урагановый выстрел
|
||||
reagent-name-new-yorker = нью-йоркер
|
||||
|
||||
reagent-desc-bacchus-blessing = Вас предупредили.
|
||||
reagent-desc-aperol = Ох-ох-ох... Похоже, это засада для печени.
|
||||
reagent-desc-jagermeister = Охотник на пьяниц пришел из глубин космоса, и похоже, он нашел жертву.
|
||||
reagent-desc-schnaps = От такого шнапса не грех начать йодль.
|
||||
reagent-desc-sambuka = Улетая в космос, многие думали, что схватили судьбу за хвост.
|
||||
reagent-desc-bitter = Не перепутай размеры этикеток, потому что я ничего менять не буду.
|
||||
reagent-desc-sheridan = Охладите, наливайте под углом 45 градусов, не смешивайте, наслаждайтесь.
|
||||
reagent-desc-black-blood = Нужно пить быстрее, пока оно не начало сворачиваться.
|
||||
reagent-desc-light-storm = Даже вдали от океана можно почувствовать, как это сотрясает.
|
||||
reagent-desc-cream-heaven = Это сочетание сливок и кофе — настоящее творение небес.
|
||||
reagent-desc-hirosima = Мои руки по локоть в крови... Ой, подождите, это алкоголь.
|
||||
reagent-desc-nagasaki = Сначала никто не знал, что будет дальше. Опьянение было ужасным. Нет сомнений, что это самое сильное опьянение, которое человек когда-либо видел.
|
||||
reagent-desc-chocolate-sheridan = В ситуациях, когда очень хочется поднять настроение и выпить.
|
||||
reagent-desc-panama = Это соединит вашу кровь и алкоголь, как Катунский шлюз.
|
||||
reagent-desc-pegu-club = Это как группа джентльменов, колонизирующих ваш язык.
|
||||
reagent-desc-star-amnesia = Это просто бутылка медицинского спирта?
|
||||
reagent-desc-silverhand = Проснись, самурай. У нас есть станция, которую нужно сжечь.
|
||||
reagent-desc-french-75 = Заряди печень, прицелься, стреляй!
|
||||
reagent-desc-milk-plus = Когда человек не может выбирать, он перестает быть человеком.
|
||||
reagent-desc-light = Любимый напиток Ниан и Дионеи, кто-то говорит, что это мини-термоядерная реакция, но только тсс...
|
||||
reagent-desc-aviation = Трудно делать коктейли, когда над твоим домом летает дирижабль.
|
||||
reagent-desc-fizz = Это как жить с дикой кошкой.
|
||||
reagent-desc-brandy-crusta = Сахарная корочка может быть совсем не сладкой.
|
||||
reagent-desc-aperolspritz = Многие считают его отдельным алкоголем, но это больше похоже на коня в шахматах.
|
||||
reagent-desc-tuxedo = Я могу пообещать тебе колумбийский галстук.
|
||||
reagent-desc-horse-neck = Будь осторожен с подковами своей лошади.
|
||||
reagent-desc-cuban-sunset = Новый день, новый переворот.
|
||||
reagent-desc-sake-bomb = Ковровая бомбардировка твоего бамбукового печени.
|
||||
reagent-desc-woo-woo = И какой ребенок придумал это название? Да, я вижу, вопрос решен.
|
||||
reagent-desc-mulled-wine = Просто горячее вино со специями, но такое приятное.
|
||||
reagent-desc-white-bear = Два исторических врага в одном круге.
|
||||
reagent-desc-vampiro = Не имеет ничего общего с вампирами, кроме цвета.
|
||||
reagent-desc-queen-mary = Мэри очистили от крови, и оказалось, что она тоже красная.
|
||||
reagent-desc-inabox = Это... Просто коробка?
|
||||
reagent-desc-beer-berry-royal = Почему-то они продолжают плавать вверх и вниз.
|
||||
reagent-desc-sazerac = Лучшие фармацевты — это бармены.
|
||||
reagent-desc-monako = Можно подумать, что на рынке больше фруктов.
|
||||
reagent-desc-slime-drink = Не волнуйтесь, это просто желе. И слизь давно мертва.
|
||||
reagent-desc-innocent-erp = Помните, что Большой Брат видит всё.
|
||||
reagent-desc-blue-lagoon = Что может быть лучше, чем отдых на пляже с хорошим напитком?
|
||||
reagent-desc-green-fairy = Какое-то ненормальное зеленое.
|
||||
reagent-desc-home-lebovsky = Позвольте мне кое-что объяснить. Эм, я не Домашний Лебовски. Вы — Домашний Лебовски. Я — Чувак.
|
||||
reagent-desc-top-billing = На видном месте наш топовый биллинг!
|
||||
reagent-desc-trans-siberian-express = От Владивостока до белой горячки за день.
|
||||
reagent-desc-sun = Красное солнце над раем!
|
||||
reagent-desc-tick-tack = Тик-так, тик-так Бзззз...
|
||||
reagent-desc-uragan-shot = Это ураган? Нет, это ураганный алкоголь.
|
||||
reagent-desc-new-yorker = Будь осторожен с биржей, иначе будет "Черный вторник".
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
reagent-name-cafe-mocha = моккачино
|
||||
reagent-name-chocolate-milk = шоколадное молоко
|
||||
reagent-name-chocolate-pudding = шоколадный пудинг
|
||||
reagent-name-gibb-floats = всплывший гибб
|
||||
reagent-name-milkshake = милкшейк
|
||||
reagent-name-triple-citrus = тройной цитрус
|
||||
reagent-name-mate-de-coca = мате де кока
|
||||
reagent-name-true-milkshake = милкшейк
|
||||
|
||||
reagent-desc-cafe-mocha = Изысканный кофейный напиток с шоколадом и молоком, идеальный для любителей сладкого.
|
||||
reagent-desc-chocolate-milk = Прохладное молоко с насыщенным шоколадным вкусом, любимый напиток детей и взрослых.
|
||||
reagent-desc-chocolate-pudding = Густой и нежный шоколадный десерт, который тает во рту.
|
||||
reagent-desc-gibb-floats = Газированный напиток с шариком мороженого, создающий ощущение праздника.
|
||||
reagent-desc-milkshake = Взбитый молочный коктейль, идеальный для освежения.
|
||||
reagent-desc-triple-citrus = Освежающий микс из лимона, лайма и апельсина, который бодрит и утоляет жажду.
|
||||
reagent-desc-mate-de-coca = Тонизирующий напиток на основе листьев коки.
|
||||
reagent-desc-true-milkshake = Настоящий милкшейк с насыщенным вкусом, который не оставит вас равнодушным.
|
||||
6
Resources/Locale/ru-RU/_wega/seeds/seeds.ftl
Normal file
6
Resources/Locale/ru-RU/_wega/seeds/seeds.ftl
Normal file
@@ -0,0 +1,6 @@
|
||||
seeds-rose-name = розы
|
||||
seeds-rose-display-name = роза
|
||||
seeds-sunflower-name = подсолнух
|
||||
seeds-sunflower-display-name = подсолнух
|
||||
seeds-clownflower-name = цветок клоуна
|
||||
seeds-clownflower-display-name = цветок клоуна
|
||||
@@ -97,3 +97,4 @@ reagent-physical-desc-slimy = склизкое
|
||||
reagent-physical-desc-neural = нейронное
|
||||
# Corvax-Wega
|
||||
reagent-physical-desc-cum = солоноватое
|
||||
reagent-physical-desc-bitter = горькое
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
ent-CrateHydroponicsSoil = ящик почвы
|
||||
.desc = Ящик с обычной почвой.
|
||||
@@ -1,4 +1,4 @@
|
||||
ent-ClothingUnderBottomGrey = серые трусы
|
||||
ent-ClothingUnderBottomGrey = серые бойшортсы
|
||||
.desc = Единственные и незаменимые трусы, которые всегда с вами.
|
||||
ent-ClothingUnderBottomBabydoll = ночнушка
|
||||
.desc = Эта изысканная прозрачная ночнушка, выполненная из легкого и нежного материала, подчеркивает фигуру и создает романтичный образ. Её тонкие бретельки и элегантные детали придают сексуальность и утонченность, идеально подходят для уютных вечеров.
|
||||
@@ -16,43 +16,43 @@ ent-ClothingUnderBottomThong = стринги
|
||||
.desc = Сексуальное и минималистичное нижнее белье, подчеркивающее формы и обеспечивающее максимальную свободу движений. Изготовленные из мягкого материала, они идеально подходят для ношения под облегающей одеждой, добавляя уверенности и романтики в каждый день.
|
||||
ent-ClothingUnderBottomDeath = трусы
|
||||
.desc = { ent-ClothingUnderBottomBoxers.desc }
|
||||
ent-ClothingUnderBottomFAssblastusa = трусы
|
||||
ent-ClothingUnderBottomFAssblastusa = трусы в полоску
|
||||
.desc = { ent-ClothingUnderBottomBoxers.desc }
|
||||
ent-ClothingUnderBottomFBriefs = брифы
|
||||
.desc = { ent-ClothingUnderBottomBoxers.desc }
|
||||
ent-ClothingUnderBottomFCommie = трусы
|
||||
ent-ClothingUnderBottomFCommie = трусы в полоску
|
||||
.desc = { ent-ClothingUnderBottomBoxers.desc }
|
||||
ent-ClothingUnderBottomFishnet = ажурные трусы
|
||||
.desc = { ent-ClothingUnderBottomBoxers.desc }
|
||||
ent-ClothingUnderBottomFKinky = трусы
|
||||
ent-ClothingUnderBottomFKinky = трусы с бретельками
|
||||
.desc = { ent-ClothingUnderBottomBoxers.desc }
|
||||
ent-ClothingUnderBottomHearts = трусы с сердечками
|
||||
.desc = { ent-ClothingUnderBottomBoxers.desc }
|
||||
ent-ClothingUnderBottomLace = трусы
|
||||
ent-ClothingUnderBottomLace = полупрозрачные трусы
|
||||
.desc = { ent-ClothingUnderBottomBoxers.desc }
|
||||
ent-ClothingUnderBottomLatex = латексные трусы
|
||||
.desc = { ent-ClothingUnderBottomBoxers.desc }
|
||||
ent-ClothingUnderBottomLizard = трусы
|
||||
ent-ClothingUnderBottomLizard = трусы бразилиана
|
||||
.desc = { ent-ClothingUnderBottomBoxers.desc }
|
||||
ent-ClothingUnderBottomMAssblastusa = трусы
|
||||
ent-ClothingUnderBottomMAssblastusa = полосатые боксёры
|
||||
.desc = { ent-ClothingUnderBottomBoxers.desc }
|
||||
ent-ClothingUnderBottomMBriefs = трусы
|
||||
ent-ClothingUnderBottomMBriefs = классические трусы
|
||||
.desc = { ent-ClothingUnderBottomBoxers.desc }
|
||||
ent-ClothingUnderBottomMCommie = трусы
|
||||
ent-ClothingUnderBottomMCommie = полосатые боксёры
|
||||
.desc = { ent-ClothingUnderBottomBoxers.desc }
|
||||
ent-ClothingUnderBottomMKinky = трусы
|
||||
ent-ClothingUnderBottomMKinky = трусы с разрезом
|
||||
.desc = { ent-ClothingUnderBottomBoxers.desc }
|
||||
ent-ClothingUnderBottomNekoBlack = трусы
|
||||
ent-ClothingUnderBottomNekoBlack = трусы-неко чёрные
|
||||
.desc = { ent-ClothingUnderBottomBoxers.desc }
|
||||
ent-ClothingUnderBottomNekoWhite = трусы
|
||||
ent-ClothingUnderBottomNekoWhite = трусы-неко белые
|
||||
.desc = { ent-ClothingUnderBottomBoxers.desc }
|
||||
ent-ClothingUnderBottomPanties = трусы
|
||||
ent-ClothingUnderBottomPanties = трусы бойшортсы
|
||||
.desc = { ent-ClothingUnderBottomBoxers.desc }
|
||||
ent-ClothingUnderBottomSport = спортивные трусы
|
||||
.desc = { ent-ClothingUnderBottomBoxers.desc }
|
||||
ent-ClothingUnderBottomStripe = полосатые трусы
|
||||
.desc = { ent-ClothingUnderBottomBoxers.desc }
|
||||
ent-ClothingUnderBottomStrippedPanties = трусы
|
||||
ent-ClothingUnderBottomStrippedPanties = трусы тонг
|
||||
.desc = { ent-ClothingUnderBottomBoxers.desc }
|
||||
ent-ClothingUnderBottomTacticool = трусы
|
||||
.desc = { ent-ClothingUnderBottomBoxers.desc }
|
||||
@@ -64,35 +64,35 @@ ent-ClothingUnderBottomSwimStrapless = купательный костюм
|
||||
.desc = { ent-ClothingUnderBottomSwimHalter.desc }
|
||||
ent-ClothingUnderBottomSwimStripe = купательный костюм
|
||||
.desc = { ent-ClothingUnderBottomSwimHalter.desc }
|
||||
ent-ClothingUnderBottomFBso = трусы синего щита
|
||||
ent-ClothingUnderBottomFBso = боксёры синего щита
|
||||
.desc = { ent-ClothingUnderBottomBoxers.desc }
|
||||
ent-ClothingUnderBottomMBso = трусы синего щита
|
||||
.desc = { ent-ClothingUnderBottomBoxers.desc }
|
||||
ent-ClothingUnderBottomFCaptain = трусы капитана
|
||||
ent-ClothingUnderBottomFCaptain = боксёры капитана
|
||||
.desc = { ent-ClothingUnderBottomBoxers.desc }
|
||||
ent-ClothingUnderBottomMCaptain = трусы капитана
|
||||
.desc = { ent-ClothingUnderBottomBoxers.desc }
|
||||
ent-ClothingUnderBottomFCe = трусы старшего инженера
|
||||
ent-ClothingUnderBottomFCe = боксёры старшего инженера
|
||||
.desc = { ent-ClothingUnderBottomBoxers.desc }
|
||||
ent-ClothingUnderBottomMCe = трусы старшего инженера
|
||||
.desc = { ent-ClothingUnderBottomBoxers.desc }
|
||||
ent-ClothingUnderBottomFCmo = трусы главного врача
|
||||
ent-ClothingUnderBottomFCmo = боксёры главного врача
|
||||
.desc = { ent-ClothingUnderBottomBoxers.desc }
|
||||
ent-ClothingUnderBottomMCmo = трусы главного врача
|
||||
.desc = { ent-ClothingUnderBottomBoxers.desc }
|
||||
ent-ClothingUnderBottomFHop = трусы главы персонала
|
||||
ent-ClothingUnderBottomFHop = боксёры главы персонала
|
||||
.desc = { ent-ClothingUnderBottomBoxers.desc }
|
||||
ent-ClothingUnderBottomMHop = трусы главы персонала
|
||||
.desc = { ent-ClothingUnderBottomBoxers.desc }
|
||||
ent-ClothingUnderBottomFHos = трусы главы службы безопасности
|
||||
ent-ClothingUnderBottomFHos = боксёры главы службы безопасности
|
||||
.desc = { ent-ClothingUnderBottomBoxers.desc }
|
||||
ent-ClothingUnderBottomMHos = трусы главы службы безопасности
|
||||
.desc = { ent-ClothingUnderBottomBoxers.desc }
|
||||
ent-ClothingUnderBottomFQm = трусы квартирмейстра
|
||||
ent-ClothingUnderBottomFQm = боксёры квартирмейстра
|
||||
.desc = { ent-ClothingUnderBottomBoxers.desc }
|
||||
ent-ClothingUnderBottomMQm = трусы квартирмейстра
|
||||
.desc = { ent-ClothingUnderBottomBoxers.desc }
|
||||
ent-ClothingUnderBottomFRd = трусы научного руководителя
|
||||
ent-ClothingUnderBottomFRd = боксёры научного руководителя
|
||||
.desc = { ent-ClothingUnderBottomBoxers.desc }
|
||||
ent-ClothingUnderBottomMRd = трусы научного руководителя
|
||||
.desc = { ent-ClothingUnderBottomBoxers.desc }
|
||||
|
||||
@@ -1,91 +1,91 @@
|
||||
ent-ClothingUnderSocksBeeKnee = носки с пчёлами
|
||||
ent-ClothingUnderSocksBeeKnee = носочки с пчёлами
|
||||
.desc = { ent-ClothingUnderSocksBee.desc }
|
||||
ent-ClothingUnderSocksBlackNorm = черные носки
|
||||
ent-ClothingUnderSocksBlackNorm = чёрные носки
|
||||
.desc = Идеальное сочетание комфорта и стиля, способные добавить изюминку даже в самый обычный образ. Мягкий материал гарантирует уют в любое время года, а универсальный цвет делает их подходящими для любых случаев!
|
||||
ent-ClothingUnderSocksBlackShort = черные носки
|
||||
ent-ClothingUnderSocksBlackShort = чёрные следки
|
||||
.desc = { ent-ClothingUnderSocksBlackNorm.desc }
|
||||
.suffix = Короткие
|
||||
ent-ClothingUnderSocksBlackKnee = черные носки
|
||||
ent-ClothingUnderSocksBlackKnee = чёрные носки
|
||||
.desc = { ent-ClothingUnderSocksBlackNorm.desc }
|
||||
.suffix = По колено
|
||||
ent-ClothingUnderSocksBlackThigh = черные носки
|
||||
ent-ClothingUnderSocksBlackThigh = чёрные чулки
|
||||
.desc = { ent-ClothingUnderSocksBlackNorm.desc }
|
||||
.suffix = По бедро
|
||||
ent-ClothingUnderSocksWhiteNorm = белые носки
|
||||
.desc = Эти классические белые носки являются незаменимым элементом гардероба! Простота их дизайна позволяет сочетать их с любым образом, а комфортный материал обеспечивает удобство на каждый день.
|
||||
ent-ClothingUnderSocksWhiteShort = белые носки
|
||||
ent-ClothingUnderSocksWhiteShort = белые следки
|
||||
.desc = { ent-ClothingUnderSocksWhiteNorm.desc }
|
||||
.suffix = Короткие
|
||||
ent-ClothingUnderSocksWhiteKnee = белые носки
|
||||
ent-ClothingUnderSocksWhiteKnee = белые гольфы
|
||||
.desc = { ent-ClothingUnderSocksWhiteNorm.desc }
|
||||
.suffix = По колено
|
||||
ent-ClothingUnderSocksWhiteThigh = белые носки
|
||||
ent-ClothingUnderSocksWhiteThigh = белые чулки
|
||||
.desc = { ent-ClothingUnderSocksWhiteNorm.desc }
|
||||
.suffix = По бедро
|
||||
ent-ClothingUnderSocksBlue = синие носки
|
||||
ent-ClothingUnderSocksBlue = полосатые синие носки
|
||||
.desc = Отличный способ добавить яркости в ваш гардероб! Их стильные синие полоски не только привлекают внимание, но и делают каждую пару уникальной, позволяя вам выразить свою индивидуальность.
|
||||
ent-ClothingUnderSocksCyan = бирюзовые носки
|
||||
ent-ClothingUnderSocksCyan = полосатые бирюзовые носки
|
||||
.desc = Эти белые носки с бирюзовыми полосками добавят яркости в ваш повседневный стиль. Комфортный материал и свежий цвет создают идеальное сочетание, позволяя вам оставаться модным даже в самых обычных нарядах!
|
||||
ent-ClothingUnderSocksGreen = зеленые носки
|
||||
ent-ClothingUnderSocksGreen = полосатые зеленые носки
|
||||
.desc = Эти белые носки с зелеными полосками добавят яркости и свежести вашему гардеробу! Удобный материал и стильный дизайн делают их идеальным аксессуаром для повседневной носки, позволяя вам выделяться даже в самых простых образах.
|
||||
ent-ClothingUnderSocksOrange = оранжевые носки
|
||||
ent-ClothingUnderSocksOrange = полосатые оранжевые носки
|
||||
.desc = Эти белые носки с оранжевыми полосками добавят яркий акцент в ваш гардероб! Удобный материал и игривый дизайн делают их отличным выбором для повседневной носки, позволяя вам выделяться и поднимать настроение в любое время дня.
|
||||
ent-ClothingUnderSocksPink = розовые носки
|
||||
ent-ClothingUnderSocksPink = полосатые розовые носки
|
||||
.desc = Эти белые носки с розовыми полосками добавят нежности и игривости в ваш образ! Комфортный материал и стильный дизайн делают их идеальным аксессуаром для повседневной носки, позволяя вам выразить свою индивидуальность с яркими акцентами.
|
||||
ent-ClothingUnderSocksPurple = фиолетовые носки
|
||||
ent-ClothingUnderSocksPurple = полосатые фиолетовые носки
|
||||
.desc = Эти белые носки с фиолетовыми полосками станут стильным акцентом в вашем гардеробе! Их яркие полоски добавляют нотку оригинальности и свежести, делая каждый ваш шаг более уверенным и выразительным.
|
||||
ent-ClothingUnderSocksYellow = желтые носки
|
||||
ent-ClothingUnderSocksYellow = полосатые желтые носки
|
||||
.desc = Эти белые носки с желтыми полосами добавят яркий акцент в ваш гардероб! Их стильный дизайн и комфортный материал делают их идеальным выбором для повседневной носки, позволяя вам выразить свою индивидуальность с ноткой веселья.
|
||||
ent-ClothingUnderSocksRainbowKnee = радужные носки
|
||||
ent-ClothingUnderSocksRainbowKnee = радужные гольфы
|
||||
.desc = Эти носки, исполненные в ярких цветах радуги, добавят веселья и жизнерадостности в любой образ! Идеальны для смелых личностей, они позволяют выразить свою индивидуальность и поднять настроение даже в самый серый день.
|
||||
.suffix = По колено
|
||||
ent-ClothingUnderSocksRainbowThigh = радужные носки
|
||||
ent-ClothingUnderSocksRainbowThigh = радужные чулки
|
||||
.desc = { ent-ClothingUnderSocksRainbowKnee.desc }
|
||||
.suffix = По бедро
|
||||
ent-ClothingUnderSocksCommieKnee = носки
|
||||
ent-ClothingUnderSocksCommieKnee = полосатые носки
|
||||
.desc = Эти носки с параллельными красными и желтыми линиями добавят яркости и энергии в ваш гардероб! Их игривый дизайн делает их идеальным аксессуаром для тех, кто хочет выделиться и подчеркнуть свою индивидуальность в повседневной носке.
|
||||
.suffix = По колено
|
||||
ent-ClothingUnderSocksCommieThigh = носки
|
||||
ent-ClothingUnderSocksCommieThigh = полосатые чулки
|
||||
.desc = { ent-ClothingUnderSocksCommieKnee.desc }
|
||||
.suffix = По бедро
|
||||
ent-ClothingUnderSocksAssblastusaKnee = носки
|
||||
ent-ClothingUnderSocksAssblastusaKnee = красно-бело-синие носки
|
||||
.desc = Эти носки с чередующимися перпендикулярными линиями в красном, белом и синем цветах создают динамичный и стильный образ! Их оригинальный дизайн делает их отличным аксессуаром, позволяя вам выразить свою индивидуальность и добавить нотку игривости в повседневную носку.
|
||||
.suffix = По колено
|
||||
ent-ClothingUnderSocksAssblastusaThigh = носки
|
||||
ent-ClothingUnderSocksAssblastusaThigh = красно-бело-синие чулки
|
||||
.desc = { ent-ClothingUnderSocksAssblastusaKnee.desc }
|
||||
.suffix = По бедро
|
||||
ent-ClothingUnderSocksStripedKnee = полосатые носки
|
||||
ent-ClothingUnderSocksStripedKnee = чёрно-белые носки
|
||||
.desc = Эти носки в серо-черной гамме с перпендикулярными линиями добавляют современный акцент к любому образу! Их стильный и лаконичный дизайн идеально подходит для повседневной носки, сочетая комфорт и элегантность в каждом шаге.
|
||||
.suffix = По колено
|
||||
ent-ClothingUnderSocksStripedThigh = полосатые носки
|
||||
ent-ClothingUnderSocksStripedThigh = чулки чёрно-белые
|
||||
.desc = { ent-ClothingUnderSocksStripedKnee.desc }
|
||||
.suffix = По бедро
|
||||
ent-ClothingUnderSocksThinKnee = тонкие носки
|
||||
ent-ClothingUnderSocksThinKnee = капроновые носки
|
||||
.desc = Эти тонкие прозрачные носки являются идеальным выбором для легкости и утонченности! Они прекрасно дополнят как повседневный, так и вечерний образ, придавая вашим ногам элегантный вид, сохраняя при этом комфорт и свободу движений.
|
||||
.suffix = По колено
|
||||
ent-ClothingUnderSocksThinThigh = тонкие носки
|
||||
ent-ClothingUnderSocksThinThigh = капроновые чулки
|
||||
.desc = { ent-ClothingUnderSocksThinKnee.desc }
|
||||
.suffix = По бедро
|
||||
ent-ClothingUnderSocksFishnet = ажурные колготки
|
||||
ent-ClothingUnderSocksFishnet = сетчатые колготки
|
||||
.desc = Эти колготки в стильной клетке с ажурной сеткой добавят вашему образу утонченности и оригинальности! Легкий и дышащий материал делает их идеальными для создания эффектного наряда, подчеркивая вашу индивидуальность и стиль.
|
||||
.suffix = Полные
|
||||
ent-ClothingUnderSocksFishnetKnee = ажурные колготки
|
||||
ent-ClothingUnderSocksFishnetKnee = сетчатые носки
|
||||
.desc = { ent-ClothingUnderSocksFishnet.desc }
|
||||
.suffix = По колено
|
||||
ent-ClothingUnderSocksFishnetThigh = ажурные колготки
|
||||
ent-ClothingUnderSocksFishnetThigh = чулки-сетка
|
||||
.desc = { ent-ClothingUnderSocksFishnet.desc }
|
||||
.suffix = По бедро
|
||||
ent-ClothingUnderSocksPantyhose = колготки
|
||||
ent-ClothingUnderSocksPantyhose = капроновые колготки
|
||||
.desc = Эти универсальные колготки станут незаменимым элементом вашего гардероба! Они идеально подходят для создания стильных образов, обеспечивая комфорт и элегантность, а разнообразие текстур и цветов позволяет экспериментировать с модой каждый день.
|
||||
ent-ClothingUnderSocksCapNorm = капитанские носки
|
||||
.desc = Символ стиля и уверенности! Их роскошные золотые полосы придают носкам оригинальный вид, делая вас настоящим капитаном моды в любой ситуации.
|
||||
ent-ClothingUnderSocksCapShort = капитанские носки
|
||||
.desc = { ent-ClothingUnderSocksCapNorm.desc }
|
||||
.suffix = Короткие
|
||||
ent-ClothingUnderSocksCapKnee = капитанские носки
|
||||
ent-ClothingUnderSocksCapKnee = капитанские следки
|
||||
.desc = { ent-ClothingUnderSocksCapNorm.desc }
|
||||
.suffix = По колено
|
||||
ent-ClothingUnderSocksCapThigh = капитанские носки
|
||||
ent-ClothingUnderSocksCapThigh = капитанские чулки
|
||||
.desc = { ent-ClothingUnderSocksCapNorm.desc }
|
||||
.suffix = По бедро
|
||||
ent-ClothingUnderSocksCeNorm = носки старшего инженера
|
||||
@@ -93,10 +93,10 @@ ent-ClothingUnderSocksCeNorm = носки старшего инженера
|
||||
ent-ClothingUnderSocksCeShort = носки старшего инженера
|
||||
.desc = { ent-ClothingUnderSocksCeNorm.desc }
|
||||
.suffix = Короткие
|
||||
ent-ClothingUnderSocksCeKnee = носки старшего инженера
|
||||
ent-ClothingUnderSocksCeKnee = следки старшего инженера
|
||||
.desc = { ent-ClothingUnderSocksCeNorm.desc }
|
||||
.suffix = По колено
|
||||
ent-ClothingUnderSocksCeThigh = носки старшего инженера
|
||||
ent-ClothingUnderSocksCeThigh = чулки старшего инженера
|
||||
.desc = { ent-ClothingUnderSocksCeNorm.desc }
|
||||
.suffix = По бедро
|
||||
ent-ClothingUnderSocksCmoNorm = носки главного врача
|
||||
@@ -104,10 +104,10 @@ ent-ClothingUnderSocksCmoNorm = носки главного врача
|
||||
ent-ClothingUnderSocksCmoShort = носки главного врача
|
||||
.desc = { ent-ClothingUnderSocksCmoNorm.desc }
|
||||
.suffix = Короткие
|
||||
ent-ClothingUnderSocksCmoKnee = носки главного врача
|
||||
ent-ClothingUnderSocksCmoKnee = следки главного врача
|
||||
.desc = { ent-ClothingUnderSocksCmoNorm.desc }
|
||||
.suffix = По колено
|
||||
ent-ClothingUnderSocksCmoThigh = носки главного врача
|
||||
ent-ClothingUnderSocksCmoThigh = чулки главного врача
|
||||
.desc = { ent-ClothingUnderSocksCmoNorm.desc }
|
||||
.suffix = По бедро
|
||||
ent-ClothingUnderSocksHopNorm = носки главы персонала
|
||||
@@ -115,10 +115,10 @@ ent-ClothingUnderSocksHopNorm = носки главы персонала
|
||||
ent-ClothingUnderSocksHopShort = носки главы персонала
|
||||
.desc = { ent-ClothingUnderSocksHopNorm.desc }
|
||||
.suffix = Короткие
|
||||
ent-ClothingUnderSocksHopKnee = носки главы персонала
|
||||
ent-ClothingUnderSocksHopKnee = следки главы персонала
|
||||
.desc = { ent-ClothingUnderSocksHopNorm.desc }
|
||||
.suffix = По колено
|
||||
ent-ClothingUnderSocksHopThigh = носки главы персонала
|
||||
ent-ClothingUnderSocksHopThigh = чулки главы персонала
|
||||
.desc = { ent-ClothingUnderSocksHopNorm.desc }
|
||||
.suffix = По бедро
|
||||
ent-ClothingUnderSocksHosNorm = носки главы службы безопасности
|
||||
@@ -126,10 +126,10 @@ ent-ClothingUnderSocksHosNorm = носки главы службы безопа
|
||||
ent-ClothingUnderSocksHosShort = носки главы службы безопасности
|
||||
.desc = { ent-ClothingUnderSocksHosNorm.desc }
|
||||
.suffix = Короткие
|
||||
ent-ClothingUnderSocksHosKnee = носки главы службы безопасности
|
||||
ent-ClothingUnderSocksHosKnee = следки главы службы безопасности
|
||||
.desc = { ent-ClothingUnderSocksHosNorm.desc }
|
||||
.suffix = По колено
|
||||
ent-ClothingUnderSocksHosThigh = носки главы службы безопасности
|
||||
ent-ClothingUnderSocksHosThigh = чулки главы службы безопасности
|
||||
.desc = { ent-ClothingUnderSocksHosNorm.desc }
|
||||
.suffix = По бедро
|
||||
ent-ClothingUnderSocksQmNorm = носки квартирмейстра
|
||||
@@ -137,10 +137,10 @@ ent-ClothingUnderSocksQmNorm = носки квартирмейстра
|
||||
ent-ClothingUnderSocksQmShort = носки квартирмейстра
|
||||
.desc = { ent-ClothingUnderSocksQmNorm.desc }
|
||||
.suffix = Короткие
|
||||
ent-ClothingUnderSocksQmKnee = носки квартирмейстра
|
||||
ent-ClothingUnderSocksQmKnee = следки квартирмейстра
|
||||
.desc = { ent-ClothingUnderSocksQmNorm.desc }
|
||||
.suffix = По колено
|
||||
ent-ClothingUnderSocksQmThigh = носки квартирмейстра
|
||||
ent-ClothingUnderSocksQmThigh = чулки квартирмейстра
|
||||
.desc = { ent-ClothingUnderSocksQmNorm.desc }
|
||||
.suffix = По бедро
|
||||
ent-ClothingUnderSocksRdNorm = носки научного руководителя
|
||||
@@ -148,9 +148,9 @@ ent-ClothingUnderSocksRdNorm = носки научного руководите
|
||||
ent-ClothingUnderSocksRdShort = носки научного руководителя
|
||||
.desc = { ent-ClothingUnderSocksRdNorm.desc }
|
||||
.suffix = Короткие
|
||||
ent-ClothingUnderSocksRdKnee = носки научного руководителя
|
||||
ent-ClothingUnderSocksRdKnee = следки научного руководителя
|
||||
.desc = { ent-ClothingUnderSocksRdNorm.desc }
|
||||
.suffix = По колено
|
||||
ent-ClothingUnderSocksRdThigh = носки научного руководителя
|
||||
ent-ClothingUnderSocksRdThigh = чулки научного руководителя
|
||||
.desc = { ent-ClothingUnderSocksRdNorm.desc }
|
||||
.suffix = По бедро
|
||||
|
||||
@@ -2,31 +2,31 @@ ent-ClothingUnderTopBraGrey = серый лифчик
|
||||
.desc = Единственный и незаменимый лифчик, который всегда с вами.
|
||||
ent-ClothingUnderTopBraAssblastusa = лифчик
|
||||
.desc = Элемент нижнего белья, поддерживающий грудь и создающий комфорт. Оно изготовлено из мягких материалов и украшено различными деталями.
|
||||
ent-ClothingUnderTopBraChast = лифчик
|
||||
ent-ClothingUnderTopBraChast = лифчик с пуш-ап
|
||||
.desc = { ent-ClothingUnderTopBraAssblastusa.desc }
|
||||
ent-ClothingUnderTopBraLatex = латексный лифчик
|
||||
.desc = { ent-ClothingUnderTopBraAssblastusa.desc }
|
||||
ent-ClothingUnderTopBraStripped = полосатый лифчик
|
||||
ent-ClothingUnderTopBraStripped = чёрно-белый лифчик
|
||||
.desc = { ent-ClothingUnderTopBraAssblastusa.desc }
|
||||
ent-ClothingUnderTopBraCommie = лифчик
|
||||
ent-ClothingUnderTopBraCommie = полосатый лифчик
|
||||
.desc = { ent-ClothingUnderTopBraAssblastusa.desc }
|
||||
ent-ClothingUnderTopBraFishnet = лифчик
|
||||
ent-ClothingUnderTopBraFishnet = лифчик фишнет
|
||||
.desc = { ent-ClothingUnderTopBraAssblastusa.desc }
|
||||
ent-ClothingUnderTopBraKinky = лифчик
|
||||
ent-ClothingUnderTopBraKinky = сексуальный лифчик
|
||||
.desc = { ent-ClothingUnderTopBraAssblastusa.desc }
|
||||
ent-ClothingUnderTopBraLace = лифчик
|
||||
ent-ClothingUnderTopBraLace = полупрозрачный лифчик
|
||||
.desc = { ent-ClothingUnderTopBraAssblastusa.desc }
|
||||
ent-ClothingUnderTopBraLizard = лифчик
|
||||
ent-ClothingUnderTopBraLizard = топ-бра
|
||||
.desc = { ent-ClothingUnderTopBraAssblastusa.desc }
|
||||
ent-ClothingUnderTopBraNekoBlack = лифчик
|
||||
ent-ClothingUnderTopBraNekoBlack = лифчик-неко чёрный
|
||||
.desc = { ent-ClothingUnderTopBraAssblastusa.desc }
|
||||
ent-ClothingUnderTopBraNekoWhite = лифчик
|
||||
ent-ClothingUnderTopBraNekoWhite = лифчик-неко белый
|
||||
.desc = { ent-ClothingUnderTopBraAssblastusa.desc }
|
||||
ent-ClothingUnderTopBraSport = спортивный лифчик
|
||||
ent-ClothingUnderTopBraSport = спортивный топ
|
||||
.desc = { ent-ClothingUnderTopBraAssblastusa.desc }
|
||||
ent-ClothingUnderTopBraStrapless = лифчик без брютелек
|
||||
ent-ClothingUnderTopBraStrapless = лифчик без бретелек
|
||||
.desc = { ent-ClothingUnderTopBraAssblastusa.desc }
|
||||
ent-ClothingUnderTopBraThong = лифчик
|
||||
ent-ClothingUnderTopBraThong = лифчик без бретелек
|
||||
.desc = { ent-ClothingUnderTopBraAssblastusa.desc }
|
||||
ent-ClothingUnderTopBraBso = лифчик синего щита
|
||||
.desc = { ent-ClothingUnderTopBraAssblastusa.desc }
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
ent-SpawnPointBarber = барбер
|
||||
.desc = { ent-SpawnPointJobBase.desc }
|
||||
@@ -0,0 +1,12 @@
|
||||
ent-DrinkAperolBottleFull = бутылка апероля
|
||||
.desc = Аперитив с ярким апельсиновым вкусом и горьковатым послевкусием. Идеален для летних коктейлей.
|
||||
ent-DrinkJagermeisterBottleFull = бутылка джагермейстера
|
||||
.desc = Легендарный ликёр с насыщенным травяным вкусом. Часто употребляется в чистом виде или в составе коктейлей.
|
||||
ent-DrinkSchnapsBottleFull = бутылка шнапса
|
||||
.desc = Крепкий алкогольный напиток, обычно фруктовый, с ярким ароматом и резким вкусом.
|
||||
ent-DrinkSambukaBottleFull = бутылка самбуки
|
||||
.desc = Анисовый ликёр с характерным сладковатым вкусом. Часто подаётся с кофейными зёрнами.
|
||||
ent-DrinkBitterBottleFull = бутылка горького
|
||||
.desc = Крепкий алкогольный напиток с горьковатым травяным вкусом. Используется как дижестив или компонент коктейлей.
|
||||
ent-DrinkSheridanBottleFull = бутылка шеридана
|
||||
.desc = Слоистый кофейно-сливочный ликёр с нежным вкусом. Идеален для десертов или в качестве самостоятельного напитка.
|
||||
@@ -0,0 +1,12 @@
|
||||
ent-DrinkAperolBottle = бутылка от апероля
|
||||
.desc = { ent-DrinkBottleBaseEmpty.desc }
|
||||
ent-DrinkJagermeisterBottle = бутылка от джагермейстера
|
||||
.desc = { ent-DrinkBottleBaseEmpty.desc }
|
||||
ent-DrinkSchnapsBottle = бутылка от шнапса
|
||||
.desc = { ent-DrinkBottleBaseEmpty.desc }
|
||||
ent-DrinkSambukaBottle = бутылка от самбуки
|
||||
.desc = { ent-DrinkBottleBaseEmpty.desc }
|
||||
ent-DrinkBitterBottle = бутылка от горького
|
||||
.desc = { ent-DrinkBottleBaseEmpty.desc }
|
||||
ent-DrinkSheridanBottle = бутылка от шеридана
|
||||
.desc = { ent-DrinkBottleBaseEmpty.desc }
|
||||
@@ -0,0 +1,17 @@
|
||||
ent-DoughDangoBall = шарик данго
|
||||
.desc = Выглядит как шарик из теста.
|
||||
ent-RawNoodles = сухая лапша для рамэна
|
||||
.desc = Сухая лапша.
|
||||
ent-HanamiDango = трёхцветное данго
|
||||
.desc = Похоже что тебе нравятся разные цвета, не так ли?
|
||||
ent-MitarashiDango = митараши данго
|
||||
.desc = Рисовая сладость, манящая за собой
|
||||
ent-Onigiri = онигири
|
||||
.desc = Лучший рис в галактике!
|
||||
ent-SpicyPorkRamenNoodles = острый рамэн
|
||||
.desc = Выглядит так горячо... И так аппетитно!
|
||||
ent-PorkRamenNoodles = свиной рамэн
|
||||
.desc = Оу, да я вижу вы человек высокой культуры...
|
||||
ent-ChocolatePockyPack = коробочка шоколадных покки
|
||||
ent-Chocopocky = шоколадная палочка покки
|
||||
.desc = Не забудьте поиграть в игру со своим спутником...
|
||||
@@ -0,0 +1,8 @@
|
||||
ent-FlowerRose = роза
|
||||
.desc = Нечто прекрасное.
|
||||
ent-FlowerSunflower = подсолнух
|
||||
.desc = Желтый яркий, как звезды в космосе.
|
||||
ent-FlowerPeaceFlower = пион
|
||||
.desc = Нечто прекрасное.
|
||||
ent-FlowerClown = цветок клоуна
|
||||
.desc = Нечто ужасающее.
|
||||
@@ -0,0 +1,2 @@
|
||||
ent-BarberPDA = КПК барбера
|
||||
.desc = Почему он не зеленый?
|
||||
@@ -0,0 +1,8 @@
|
||||
ent-FlowerBouquetRose = букет роз
|
||||
.desc = Красиво выглядит и приятно пахнет.
|
||||
ent-FlowerBouquetSunflower = букет подсолнухов
|
||||
.desc = Красиво выглядит и приятно пахнет.
|
||||
ent-FlowerBouquetPoppy = букет маков
|
||||
.desc = Красиво выглядит и приятно пахнет.
|
||||
ent-FlowerBouquetMixed = смешанный букет
|
||||
.desc = Красиво выглядит и приятно пахнет.
|
||||
@@ -0,0 +1,2 @@
|
||||
ent-BarberIDCard = ID карта барбера
|
||||
.desc = { ent-IDCardStandard.desc }
|
||||
@@ -0,0 +1,2 @@
|
||||
ent-PaperTicket = тикет
|
||||
.desc = Следующий!
|
||||
@@ -0,0 +1,2 @@
|
||||
ent-SoilBag = мешок почвы
|
||||
.desc = Грязь.
|
||||
@@ -0,0 +1,2 @@
|
||||
ent-BarberRazor = бритва
|
||||
.desc = Бззззззззззз.
|
||||
@@ -0,0 +1,6 @@
|
||||
ent-RoseSeeds = пакет семян (розы)
|
||||
.desc = { ent-SeedBase.desc }
|
||||
ent-SunflowerSeeds = пакет семян (подсолнух)
|
||||
.desc = { ent-SeedBase.desc }
|
||||
ent-ClownflowerSeeds = пакет семян (цветка клоуна)
|
||||
.desc = { ent-SeedBase.desc }
|
||||
@@ -0,0 +1,2 @@
|
||||
ent-TicketMachine = машина тикетов
|
||||
.desc = СЛЕДУЮЩИЙ!
|
||||
@@ -15,3 +15,6 @@ general-station-record-dna-filter = ДНК
|
||||
general-station-record-console-search-records = Поиск
|
||||
general-station-record-console-reset-filters = Сброс
|
||||
general-station-record-console-delete = Удалить
|
||||
general-station-record-console-access-denied = В доступе отказано
|
||||
general-station-record-console-job-slot-limit = Нельзя превышать лимит должностей.
|
||||
general-station-record-console-error = Ошибка: консоль не отвечает. Возможны неполадки в системе связи.
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -20,6 +20,12 @@
|
||||
amount: 2
|
||||
- id: BungoSeeds
|
||||
amount: 2
|
||||
# Corvax-Wega-start
|
||||
- id: RoseSeeds
|
||||
amount: 2
|
||||
- id: SunflowerSeeds
|
||||
amount: 2
|
||||
# Corvax-Wega-end
|
||||
|
||||
- type: entity
|
||||
id: CrateHydroponicsSeedsMedicinal
|
||||
|
||||
@@ -96,6 +96,11 @@
|
||||
- id: WeaponDisabler
|
||||
- id: TrackingImplanter
|
||||
amount: 2
|
||||
- id: ClothingMaskBreathMedicalSecurity # Corvax-Wega-Brigmedic
|
||||
- id: BoxBodyBag # Corvax-Wega-Brigmedic
|
||||
- id: Defibrillator # Corvax-Wega-Brigmedic
|
||||
- id: PowerCellHigh # Corvax-Wega-Brigmedic
|
||||
amount: 2 # Corvax-Wega-Brigmedic
|
||||
- id: ClothingOuterHardsuitBrigmedic
|
||||
- id: BoxSterileMask
|
||||
- id: ClothingHeadHatBeretBrigmedic
|
||||
|
||||
@@ -36,3 +36,9 @@
|
||||
- DrinkVodkaBottleFull
|
||||
- DrinkWhiskeyBottleFull
|
||||
- DrinkWineBottleFull
|
||||
- DrinkAperolBottleFull # Corvax-Wega
|
||||
- DrinkJagermeisterBottleFull # Corvax-Wega
|
||||
- DrinkSchnapsBottleFull # Corvax-Wega
|
||||
- DrinkSambukaBottleFull # Corvax-Wega
|
||||
- DrinkBitterBottleFull # Corvax-Wega
|
||||
- DrinkSheridanBottleFull # Corvax-Wega
|
||||
|
||||
@@ -45,6 +45,12 @@
|
||||
DrinkWineBottleFull: 5
|
||||
DrinkChampagneBottleFull: 2 #because the premium drink
|
||||
DrinkSakeBottleFull: 3
|
||||
DrinkAperolBottleFull: 5 # Corvax-Wega
|
||||
DrinkJagermeisterBottleFull: 5 # Corvax-Wega
|
||||
DrinkSchnapsBottleFull: 5 # Corvax-Wega
|
||||
DrinkSambukaBottleFull: 5 # Corvax-Wega
|
||||
DrinkBitterBottleFull: 5 # Corvax-Wega
|
||||
DrinkSheridanBottleFull: 5 # Corvax-Wega
|
||||
DrinkBeerCan: 5
|
||||
DrinkWineCan: 5
|
||||
emaggedInventory:
|
||||
|
||||
@@ -108,3 +108,4 @@
|
||||
- Document
|
||||
storage:
|
||||
Paper: 0
|
||||
- type: Printer # Corvax-Wega
|
||||
|
||||
@@ -241,8 +241,8 @@
|
||||
- type: DiseaseProtection # Corvax-Wega-Disease
|
||||
protection: 0.2 # Corvax-Wega-Disease
|
||||
- type: ClothingSpeedModifier
|
||||
walkModifier: 0.65
|
||||
sprintModifier: 0.65
|
||||
walkModifier: 0.9 # Corvax-Wega-Brigmedic
|
||||
sprintModifier: 0.9 # Corvax-Wega-Brigmedic
|
||||
- type: HeldSpeedModifier
|
||||
- type: ToggleableClothing
|
||||
clothingPrototype: ClothingHeadHelmetHardsuitBrigmedic
|
||||
|
||||
@@ -491,6 +491,8 @@
|
||||
parent: SpawnPointJobBase
|
||||
name: brigmedic
|
||||
components:
|
||||
- type: SpawnPoint # Corvax-Wega-Brigmedic
|
||||
job_id: Brigmedic # Corvax-Wega-Brigmedic
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: green
|
||||
|
||||
@@ -462,6 +462,8 @@
|
||||
layers:
|
||||
- state: default
|
||||
- state: idbrigmedic
|
||||
- type: PresetIdCard # Corvax-Wega-Brigmedic
|
||||
job: Brigmedic # Corvax-Wega-Brigmedic
|
||||
|
||||
- type: entity
|
||||
parent: IDCardStandard
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
maxDistance: 2
|
||||
- type: UseDelay
|
||||
delay: 1.5
|
||||
- type: Pen # Corvax-Wega-Bureaucracy
|
||||
|
||||
- type: entity
|
||||
parent: Pen
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
radius: 5
|
||||
energy: 3
|
||||
color: "#FFC90C"
|
||||
- type: NightLightBlocked # Corvax-Wega-NightLight
|
||||
- type: Damageable
|
||||
damageContainer: StructuralInorganic
|
||||
damageModifierSet: Wood
|
||||
|
||||
@@ -55,3 +55,8 @@
|
||||
solution: soil
|
||||
- type: Appearance
|
||||
- type: PlantHolderVisuals
|
||||
# Corvax-Wega-start
|
||||
- type: Construction
|
||||
graph: SoilGraph
|
||||
node: soil
|
||||
# Corvax-Wega-end
|
||||
|
||||
@@ -196,6 +196,7 @@
|
||||
name: loadout-group-hop-outerclothing
|
||||
minLimit: 0
|
||||
loadouts:
|
||||
- HoPCoat # Corvax-Wega
|
||||
- HoPWintercoat
|
||||
|
||||
# Civilian
|
||||
@@ -394,6 +395,9 @@
|
||||
loadouts:
|
||||
- JanitorJumpsuit
|
||||
- JanitorJumpskirt
|
||||
- JanitorJanimaid # Corvax-Wega
|
||||
- JanitorJanimaidmini # Corvax-Wega
|
||||
- JanitorElegantMaid # Corvax-Wega
|
||||
|
||||
- type: loadoutGroup
|
||||
id: JanitorGloves
|
||||
|
||||
@@ -116,21 +116,21 @@
|
||||
- WeaponMeleeToolboxRobust
|
||||
|
||||
#Brigmedic
|
||||
|
||||
- type: startingGear
|
||||
id: BrigmedicGear
|
||||
equipment:
|
||||
jumpsuit: ClothingUniformJumpsuitBrigmedic
|
||||
outerClothing: ClothingOuterCoatAMG
|
||||
back: ClothingBackpackBrigmedic
|
||||
shoes: ClothingShoesColorRed
|
||||
gloves: ClothingHandsGlovesNitrile
|
||||
eyes: ClothingEyesHudMedical
|
||||
head: ClothingHeadHatBeretBrigmedic
|
||||
id: BrigmedicPDA
|
||||
ears: ClothingHeadsetBrigmedic
|
||||
mask: ClothingMaskBreathMedicalSecurity
|
||||
belt: ClothingBeltMedicalFilled
|
||||
# Corvax-Wega-Brigmedic / Fuck this shit
|
||||
#- type: startingGear
|
||||
# id: BrigmedicGear
|
||||
# equipment:
|
||||
# jumpsuit: ClothingUniformJumpsuitBrigmedic
|
||||
# outerClothing: ClothingOuterCoatAMG
|
||||
# back: ClothingBackpackBrigmedic
|
||||
# shoes: ClothingShoesColorRed
|
||||
# gloves: ClothingHandsGlovesNitrile
|
||||
# eyes: ClothingEyesHudMedical
|
||||
# head: ClothingHeadHatBeretBrigmedic
|
||||
# id: BrigmedicPDA
|
||||
# ears: ClothingHeadsetBrigmedic
|
||||
# mask: ClothingMaskBreathMedicalSecurity
|
||||
# belt: ClothingBeltMedicalFilled
|
||||
|
||||
# Aghost
|
||||
- type: startingGear
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
- Visitor
|
||||
- Zookeeper
|
||||
- ServiceWorker
|
||||
- Barber # Corvax-Wega-Barber
|
||||
|
||||
- type: department
|
||||
id: CentralCommand
|
||||
@@ -111,6 +112,7 @@
|
||||
- HeadOfSecurity
|
||||
- SecurityCadet
|
||||
- SecurityOfficer
|
||||
- Brigmedic # Corvax-Wega-Brigmedic
|
||||
- Pilot # Corvax-Pilot
|
||||
- Detective
|
||||
- Warden
|
||||
@@ -146,4 +148,5 @@
|
||||
- Zookeeper
|
||||
- Psychologist
|
||||
- Pilot # Corvax-Pilot
|
||||
- Barber # Corvax-Wega-Barber
|
||||
primary: false
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
- type: cargoProduct
|
||||
id: HydroponicsSoil
|
||||
icon:
|
||||
sprite: _Wega/Objects/Misc/soilbag.rsi
|
||||
state: icon
|
||||
product: CrateHydroponicsSoil
|
||||
cost: 5000
|
||||
category: cargoproduct-category-name-hydroponics
|
||||
group: market
|
||||
10
Resources/Prototypes/_Wega/Catalog/Fills/Crates/botany.yml
Normal file
10
Resources/Prototypes/_Wega/Catalog/Fills/Crates/botany.yml
Normal file
@@ -0,0 +1,10 @@
|
||||
- type: entity
|
||||
id: CrateHydroponicsSoil
|
||||
parent: CrateHydroponics
|
||||
name: soil crate
|
||||
description: "A crate with plain soil."
|
||||
components:
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- id: SoilBag
|
||||
amount: 2
|
||||
@@ -0,0 +1,11 @@
|
||||
- type: entity
|
||||
id: SpawnPointBarber
|
||||
parent: SpawnPointJobBase
|
||||
name: barber
|
||||
components:
|
||||
- type: SpawnPoint
|
||||
job_id: Barber
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: green
|
||||
- state: serviceworker
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,3 +1,4 @@
|
||||
# Basic
|
||||
- type: marking
|
||||
id: HairSkrellExcited
|
||||
bodyPart: Hair
|
||||
@@ -5,7 +6,7 @@
|
||||
speciesRestriction: [Skrell]
|
||||
sprites:
|
||||
- sprite: _Wega/Mobs/Customization/skrell_hair.rsi
|
||||
state: skrell_hair_excited
|
||||
state: excited
|
||||
|
||||
- type: marking
|
||||
id: HairSkrellInsulate
|
||||
@@ -14,7 +15,7 @@
|
||||
speciesRestriction: [Skrell]
|
||||
sprites:
|
||||
- sprite: _Wega/Mobs/Customization/skrell_hair.rsi
|
||||
state: skrell_hair_insulate
|
||||
state: insulate
|
||||
|
||||
- type: marking
|
||||
id: HairSkrellLong
|
||||
@@ -23,7 +24,7 @@
|
||||
speciesRestriction: [Skrell]
|
||||
sprites:
|
||||
- sprite: _Wega/Mobs/Customization/skrell_hair.rsi
|
||||
state: skrell_hair_long
|
||||
state: long
|
||||
|
||||
- type: marking
|
||||
id: HairSkrellLongbun
|
||||
@@ -32,7 +33,7 @@
|
||||
speciesRestriction: [Skrell]
|
||||
sprites:
|
||||
- sprite: _Wega/Mobs/Customization/skrell_hair.rsi
|
||||
state: skrell_hair_longbun
|
||||
state: longbun
|
||||
|
||||
- type: marking
|
||||
id: HairSkrellLongtuux
|
||||
@@ -41,7 +42,7 @@
|
||||
speciesRestriction: [Skrell]
|
||||
sprites:
|
||||
- sprite: _Wega/Mobs/Customization/skrell_hair.rsi
|
||||
state: skrell_hair_longtuux
|
||||
state: longtuux
|
||||
|
||||
- type: marking
|
||||
id: HairSkrellLoose
|
||||
@@ -50,7 +51,7 @@
|
||||
speciesRestriction: [Skrell]
|
||||
sprites:
|
||||
- sprite: _Wega/Mobs/Customization/skrell_hair.rsi
|
||||
state: skrell_hair_loose
|
||||
state: loose
|
||||
|
||||
- type: marking
|
||||
id: HairSkrellLowbun
|
||||
@@ -59,7 +60,7 @@
|
||||
speciesRestriction: [Skrell]
|
||||
sprites:
|
||||
- sprite: _Wega/Mobs/Customization/skrell_hair.rsi
|
||||
state: skrell_hair_lowbun
|
||||
state: lowbun
|
||||
|
||||
- type: marking
|
||||
id: HairSkrellMidbun
|
||||
@@ -68,7 +69,7 @@
|
||||
speciesRestriction: [Skrell]
|
||||
sprites:
|
||||
- sprite: _Wega/Mobs/Customization/skrell_hair.rsi
|
||||
state: skrell_hair_midbun
|
||||
state: midbun
|
||||
|
||||
- type: marking
|
||||
id: HairSkrellMullet
|
||||
@@ -77,7 +78,7 @@
|
||||
speciesRestriction: [Skrell]
|
||||
sprites:
|
||||
- sprite: _Wega/Mobs/Customization/skrell_hair.rsi
|
||||
state: skrell_hair_mullet
|
||||
state: mullet
|
||||
|
||||
- type: marking
|
||||
id: HairSkrellReserve
|
||||
@@ -86,7 +87,7 @@
|
||||
speciesRestriction: [Skrell]
|
||||
sprites:
|
||||
- sprite: _Wega/Mobs/Customization/skrell_hair.rsi
|
||||
state: skrell_hair_reserve
|
||||
state: reserve
|
||||
|
||||
- type: marking
|
||||
id: HairSkrellShort
|
||||
@@ -95,7 +96,7 @@
|
||||
speciesRestriction: [Skrell]
|
||||
sprites:
|
||||
- sprite: _Wega/Mobs/Customization/skrell_hair.rsi
|
||||
state: skrell_hair_short
|
||||
state: short
|
||||
|
||||
- type: marking
|
||||
id: HairSkrellShortbun
|
||||
@@ -104,7 +105,7 @@
|
||||
speciesRestriction: [Skrell]
|
||||
sprites:
|
||||
- sprite: _Wega/Mobs/Customization/skrell_hair.rsi
|
||||
state: skrell_hair_shortbun
|
||||
state: shortbun
|
||||
|
||||
- type: marking
|
||||
id: HairSkrellTuux
|
||||
@@ -113,7 +114,7 @@
|
||||
speciesRestriction: [Skrell]
|
||||
sprites:
|
||||
- sprite: _Wega/Mobs/Customization/skrell_hair.rsi
|
||||
state: skrell_hair_tuux
|
||||
state: tuux
|
||||
|
||||
- type: marking
|
||||
id: HairSkrellVeryLong
|
||||
@@ -122,7 +123,7 @@
|
||||
speciesRestriction: [Skrell]
|
||||
sprites:
|
||||
- sprite: _Wega/Mobs/Customization/skrell_hair.rsi
|
||||
state: skrell_hair_verylong
|
||||
state: verylong
|
||||
|
||||
- type: marking
|
||||
id: HairSkrellVeryShort
|
||||
@@ -131,4 +132,170 @@
|
||||
speciesRestriction: [Skrell]
|
||||
sprites:
|
||||
- sprite: _Wega/Mobs/Customization/skrell_hair.rsi
|
||||
state: skrell_hair_veryshort
|
||||
state: veryshort
|
||||
|
||||
# Gradient
|
||||
- type: marking
|
||||
id: HairSkrellExcitedGradient
|
||||
bodyPart: Hair
|
||||
markingCategory: Hair
|
||||
speciesRestriction: [Skrell]
|
||||
sprites:
|
||||
- sprite: _Wega/Mobs/Customization/skrell_hair.rsi
|
||||
state: excited
|
||||
- sprite: _Wega/Mobs/Customization/skrell_hair.rsi
|
||||
state: excited_secondary
|
||||
|
||||
- type: marking
|
||||
id: HairSkrellInsulateGradient
|
||||
bodyPart: Hair
|
||||
markingCategory: Hair
|
||||
speciesRestriction: [Skrell]
|
||||
sprites:
|
||||
- sprite: _Wega/Mobs/Customization/skrell_hair.rsi
|
||||
state: insulate
|
||||
- sprite: _Wega/Mobs/Customization/skrell_hair.rsi
|
||||
state: insulate_secondary
|
||||
|
||||
- type: marking
|
||||
id: HairSkrellLongGradient
|
||||
bodyPart: Hair
|
||||
markingCategory: Hair
|
||||
speciesRestriction: [Skrell]
|
||||
sprites:
|
||||
- sprite: _Wega/Mobs/Customization/skrell_hair.rsi
|
||||
state: long
|
||||
- sprite: _Wega/Mobs/Customization/skrell_hair.rsi
|
||||
state: long_secondary
|
||||
|
||||
- type: marking
|
||||
id: HairSkrellLongbunGradient
|
||||
bodyPart: Hair
|
||||
markingCategory: Hair
|
||||
speciesRestriction: [Skrell]
|
||||
sprites:
|
||||
- sprite: _Wega/Mobs/Customization/skrell_hair.rsi
|
||||
state: longbun
|
||||
- sprite: _Wega/Mobs/Customization/skrell_hair.rsi
|
||||
state: longbun_secondary
|
||||
|
||||
- type: marking
|
||||
id: HairSkrellLongtuuxGradient
|
||||
bodyPart: Hair
|
||||
markingCategory: Hair
|
||||
speciesRestriction: [Skrell]
|
||||
sprites:
|
||||
- sprite: _Wega/Mobs/Customization/skrell_hair.rsi
|
||||
state: longtuux
|
||||
- sprite: _Wega/Mobs/Customization/skrell_hair.rsi
|
||||
state: longtuux_secondary
|
||||
|
||||
- type: marking
|
||||
id: HairSkrellLooseGradient
|
||||
bodyPart: Hair
|
||||
markingCategory: Hair
|
||||
speciesRestriction: [Skrell]
|
||||
sprites:
|
||||
- sprite: _Wega/Mobs/Customization/skrell_hair.rsi
|
||||
state: loose
|
||||
- sprite: _Wega/Mobs/Customization/skrell_hair.rsi
|
||||
state: loose_secondary
|
||||
|
||||
- type: marking
|
||||
id: HairSkrellLowbunGradient
|
||||
bodyPart: Hair
|
||||
markingCategory: Hair
|
||||
speciesRestriction: [Skrell]
|
||||
sprites:
|
||||
- sprite: _Wega/Mobs/Customization/skrell_hair.rsi
|
||||
state: lowbun
|
||||
- sprite: _Wega/Mobs/Customization/skrell_hair.rsi
|
||||
state: lowbun_secondary
|
||||
|
||||
- type: marking
|
||||
id: HairSkrellMidbunGradient
|
||||
bodyPart: Hair
|
||||
markingCategory: Hair
|
||||
speciesRestriction: [Skrell]
|
||||
sprites:
|
||||
- sprite: _Wega/Mobs/Customization/skrell_hair.rsi
|
||||
state: midbun
|
||||
- sprite: _Wega/Mobs/Customization/skrell_hair.rsi
|
||||
state: midbun_secondary
|
||||
|
||||
- type: marking
|
||||
id: HairSkrellMulletGradient
|
||||
bodyPart: Hair
|
||||
markingCategory: Hair
|
||||
speciesRestriction: [Skrell]
|
||||
sprites:
|
||||
- sprite: _Wega/Mobs/Customization/skrell_hair.rsi
|
||||
state: mullet
|
||||
- sprite: _Wega/Mobs/Customization/skrell_hair.rsi
|
||||
state: mullet_secondary
|
||||
|
||||
- type: marking
|
||||
id: HairSkrellReserveGradient
|
||||
bodyPart: Hair
|
||||
markingCategory: Hair
|
||||
speciesRestriction: [Skrell]
|
||||
sprites:
|
||||
- sprite: _Wega/Mobs/Customization/skrell_hair.rsi
|
||||
state: reserve
|
||||
- sprite: _Wega/Mobs/Customization/skrell_hair.rsi
|
||||
state: reserve_secondary
|
||||
|
||||
- type: marking
|
||||
id: HairSkrellShortGradient
|
||||
bodyPart: Hair
|
||||
markingCategory: Hair
|
||||
speciesRestriction: [Skrell]
|
||||
sprites:
|
||||
- sprite: _Wega/Mobs/Customization/skrell_hair.rsi
|
||||
state: short
|
||||
- sprite: _Wega/Mobs/Customization/skrell_hair.rsi
|
||||
state: short_secondary
|
||||
|
||||
- type: marking
|
||||
id: HairSkrellShortbunGradient
|
||||
bodyPart: Hair
|
||||
markingCategory: Hair
|
||||
speciesRestriction: [Skrell]
|
||||
sprites:
|
||||
- sprite: _Wega/Mobs/Customization/skrell_hair.rsi
|
||||
state: shortbun
|
||||
- sprite: _Wega/Mobs/Customization/skrell_hair.rsi
|
||||
state: shortbun_secondary
|
||||
|
||||
- type: marking
|
||||
id: HairSkrellTuuxGradient
|
||||
bodyPart: Hair
|
||||
markingCategory: Hair
|
||||
speciesRestriction: [Skrell]
|
||||
sprites:
|
||||
- sprite: _Wega/Mobs/Customization/skrell_hair.rsi
|
||||
state: tuux
|
||||
- sprite: _Wega/Mobs/Customization/skrell_hair.rsi
|
||||
state: tuux_secondary
|
||||
|
||||
- type: marking
|
||||
id: HairSkrellVeryLongGradient
|
||||
bodyPart: Hair
|
||||
markingCategory: Hair
|
||||
speciesRestriction: [Skrell]
|
||||
sprites:
|
||||
- sprite: _Wega/Mobs/Customization/skrell_hair.rsi
|
||||
state: verylong
|
||||
- sprite: _Wega/Mobs/Customization/skrell_hair.rsi
|
||||
state: verylong_secondary
|
||||
|
||||
- type: marking
|
||||
id: HairSkrellVeryShortGradient
|
||||
bodyPart: Hair
|
||||
markingCategory: Hair
|
||||
speciesRestriction: [Skrell]
|
||||
sprites:
|
||||
- sprite: _Wega/Mobs/Customization/skrell_hair.rsi
|
||||
state: veryshort
|
||||
- sprite: _Wega/Mobs/Customization/skrell_hair.rsi
|
||||
state: veryshort_secondary
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
species: Skrell
|
||||
- type: Carriable
|
||||
- type: DiseaseCarrier
|
||||
- type: Skrell
|
||||
- type: Thirst
|
||||
baseDecayRate: 0.4
|
||||
- type: Hunger
|
||||
@@ -49,6 +50,8 @@
|
||||
types:
|
||||
Heat: -0.25
|
||||
Blunt: -0.25
|
||||
- type: Inventory
|
||||
templateId: skrell
|
||||
- type: Butcherable
|
||||
butcheringType: Spike
|
||||
spawned:
|
||||
|
||||
@@ -0,0 +1,107 @@
|
||||
- type: entity
|
||||
parent: [DrinkBottleVisualsOpenable, DrinkBottleGlassBaseFull]
|
||||
id: DrinkAperolBottleFull
|
||||
name: aperol bottle
|
||||
description: "An aperitif with a bright orange flavor and a bitter aftertaste. Perfect for summer cocktails."
|
||||
components:
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
drink:
|
||||
reagents:
|
||||
- ReagentId: Aperol
|
||||
Quantity: 100
|
||||
- type: Label
|
||||
currentLabel: reagent-name-aperol
|
||||
- type: Sprite
|
||||
sprite: _Wega/Objects/Consumable/Drinks/aperolbottle.rsi
|
||||
- type: Sealable
|
||||
|
||||
- type: entity
|
||||
parent: [DrinkBottleVisualsOpenable, DrinkBottleGlassBaseFull]
|
||||
id: DrinkJagermeisterBottleFull
|
||||
name: jagermeister bottle
|
||||
description: "A legendary herbal liqueur with a rich, complex flavor. Often consumed neat or in cocktails."
|
||||
components:
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
drink:
|
||||
reagents:
|
||||
- ReagentId: Jagermeister
|
||||
Quantity: 100
|
||||
- type: Label
|
||||
currentLabel: reagent-name-jagermeister
|
||||
- type: Sprite
|
||||
sprite: _Wega/Objects/Consumable/Drinks/jagermeisterbottle.rsi
|
||||
- type: Sealable
|
||||
|
||||
- type: entity
|
||||
parent: [DrinkBottleVisualsOpenable, DrinkBottleGlassBaseFull]
|
||||
id: DrinkSchnapsBottleFull
|
||||
name: schnaps bottle
|
||||
description: "A strong alcoholic drink, usually fruit-based, with a bold aroma and sharp taste."
|
||||
components:
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
drink:
|
||||
reagents:
|
||||
- ReagentId: Schnaps
|
||||
Quantity: 100
|
||||
- type: Label
|
||||
currentLabel: reagent-name-schnaps
|
||||
- type: Sprite
|
||||
sprite: _Wega/Objects/Consumable/Drinks/schnapsbottle.rsi
|
||||
- type: Sealable
|
||||
|
||||
- type: entity
|
||||
parent: [DrinkBottleVisualsOpenable, DrinkBottleGlassBaseFull]
|
||||
id: DrinkSambukaBottleFull
|
||||
name: sambuka bottle
|
||||
description: "An anise-flavored liqueur with a characteristic sweetish taste. Often served with coffee beans."
|
||||
components:
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
drink:
|
||||
reagents:
|
||||
- ReagentId: Sambuka
|
||||
Quantity: 100
|
||||
- type: Label
|
||||
currentLabel: reagent-name-sambuka
|
||||
- type: Sprite
|
||||
sprite: _Wega/Objects/Consumable/Drinks/sambukabottle.rsi
|
||||
- type: Sealable
|
||||
|
||||
- type: entity
|
||||
parent: [DrinkBottleVisualsOpenable, DrinkBottleGlassBaseFull]
|
||||
id: DrinkBitterBottleFull
|
||||
name: bitter bottle
|
||||
description: "A strong alcoholic drink with a bitter herbal flavor. Used as a digestif or cocktail ingredient."
|
||||
components:
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
drink:
|
||||
reagents:
|
||||
- ReagentId: Bitter
|
||||
Quantity: 100
|
||||
- type: Label
|
||||
currentLabel: reagent-name-bitter
|
||||
- type: Sprite
|
||||
sprite: _Wega/Objects/Consumable/Drinks/bitterbottle.rsi
|
||||
- type: Sealable
|
||||
|
||||
- type: entity
|
||||
parent: [DrinkBottleVisualsOpenable, DrinkBottleGlassBaseFull]
|
||||
id: DrinkSheridanBottleFull
|
||||
name: sheridan bottle
|
||||
description: "A layered coffee-cream liqueur with a delicate flavor. Ideal for desserts or as a standalone drink."
|
||||
components:
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
drink:
|
||||
reagents:
|
||||
- ReagentId: Sheridan
|
||||
Quantity: 100
|
||||
- type: Label
|
||||
currentLabel: reagent-name-sheridan
|
||||
- type: Sprite
|
||||
sprite: _Wega/Objects/Consumable/Drinks/sheridanbottle.rsi
|
||||
- type: Sealable
|
||||
@@ -0,0 +1,47 @@
|
||||
- type: entity
|
||||
name: aperol bottle
|
||||
parent: DrinkBottleBaseEmpty
|
||||
id: DrinkAperolBottle
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Wega/Objects/Consumable/Drinks/aperolbottle.rsi
|
||||
|
||||
- type: entity
|
||||
name: aperol bottle
|
||||
parent: DrinkBottleBaseEmpty
|
||||
id: DrinkJagermeisterBottle
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Wega/Objects/Consumable/Drinks/jagermeisterbottle.rsi
|
||||
|
||||
- type: entity
|
||||
name: aperol bottle
|
||||
parent: DrinkBottleBaseEmpty
|
||||
id: DrinkSchnapsBottle
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Wega/Objects/Consumable/Drinks/schnapsbottle.rsi
|
||||
|
||||
- type: entity
|
||||
name: aperol bottle
|
||||
parent: DrinkBottleBaseEmpty
|
||||
id: DrinkSambukaBottle
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Wega/Objects/Consumable/Drinks/sambukabottle.rsi
|
||||
|
||||
- type: entity
|
||||
name: aperol bottle
|
||||
parent: DrinkBottleBaseEmpty
|
||||
id: DrinkBitterBottle
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Wega/Objects/Consumable/Drinks/bitterbottle.rsi
|
||||
|
||||
- type: entity
|
||||
name: aperol bottle
|
||||
parent: DrinkBottleBaseEmpty
|
||||
id: DrinkSheridanBottle
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Wega/Objects/Consumable/Drinks/sheridanbottle.rsi
|
||||
@@ -0,0 +1,30 @@
|
||||
- type: entity
|
||||
name: chocolate pocky
|
||||
parent: FoodBakedBase
|
||||
id: Chocopocky
|
||||
description: Don't forget to play the game with your date...
|
||||
components:
|
||||
- type: Item
|
||||
storedRotation: -90
|
||||
- type: Food
|
||||
- type: Sprite
|
||||
sprite: _Wega/Objects/Consumable/Food/japanfood.rsi
|
||||
state: chocopocky
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
food:
|
||||
maxVol: 15
|
||||
reagents:
|
||||
- ReagentId: Nutriment
|
||||
Quantity: 10
|
||||
- ReagentId: Theobromine
|
||||
Quantity: 3
|
||||
- ReagentId: CocoaPowder
|
||||
Quantity: 1
|
||||
- type: Tag
|
||||
tags:
|
||||
- Cigarette
|
||||
- type: Clothing
|
||||
sprite: _Wega\Objects\Consumable\Food\pockypacks.rsi
|
||||
slots: [ mask ]
|
||||
equippedPrefix: unlit
|
||||
@@ -0,0 +1,52 @@
|
||||
- type: entity
|
||||
name: dango ball
|
||||
parent: FoodBakingBase
|
||||
id: DoughDangoBall
|
||||
description: "It looks like a ball of dough."
|
||||
components:
|
||||
- type: FlavorProfile
|
||||
flavors:
|
||||
- dough
|
||||
- type: Sprite
|
||||
sprite: _Wega/Objects/Consumable/Food/ingredients.rsi
|
||||
state: doughdangoball
|
||||
|
||||
- type: entity
|
||||
name: tricolor dango
|
||||
parent: FoodBakedBase
|
||||
id: HanamiDango
|
||||
description: You like that colors, don't you?
|
||||
components:
|
||||
- type: Item
|
||||
storedRotation: -90
|
||||
- type: Food
|
||||
- type: Sprite
|
||||
sprite: _Wega/Objects/Consumable/Food/japanfood.rsi
|
||||
state: hanamidango
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
food:
|
||||
maxVol: 20
|
||||
reagents:
|
||||
- ReagentId: Nutriment
|
||||
Quantity: 15
|
||||
|
||||
- type: entity
|
||||
name: mitarashi dango
|
||||
parent: FoodBakedBase
|
||||
id: MitarashiDango
|
||||
description: "Rice sweetness that beckons."
|
||||
components:
|
||||
- type: Item
|
||||
storedRotation: -90
|
||||
- type: Food
|
||||
- type: Sprite
|
||||
sprite: _Wega/Objects/Consumable/Food/japanfood.rsi
|
||||
state: mitarashidango
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
food:
|
||||
maxVol: 20
|
||||
reagents:
|
||||
- ReagentId: Nutriment
|
||||
Quantity: 15
|
||||
@@ -0,0 +1,19 @@
|
||||
- type: entity
|
||||
name: onigiri
|
||||
parent: FoodBakedBase
|
||||
id: Onigiri
|
||||
description: "Best fried geometric shape in the galaxy."
|
||||
components:
|
||||
- type: Item
|
||||
storedRotation: -90
|
||||
- type: Food
|
||||
- type: Sprite
|
||||
sprite: _Wega/Objects/Consumable/Food/japanfood.rsi
|
||||
state: onigiri
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
food:
|
||||
maxVol: 25
|
||||
reagents:
|
||||
- ReagentId: Nutriment
|
||||
Quantity: 20
|
||||
@@ -0,0 +1,65 @@
|
||||
- type: entity
|
||||
id: PockyPackBase
|
||||
parent: [ BaseStorageItem, BaseBagOpenClose ]
|
||||
name: pocky pack
|
||||
abstract: true
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: closed
|
||||
- state: open
|
||||
map: ["openLayer"]
|
||||
visible: false
|
||||
- state: pok1
|
||||
map: ["pok1"]
|
||||
sprite: _Wega/Objects/Consumable/Food/pokvisualizer.rsi
|
||||
visible: false
|
||||
- state: pok2
|
||||
map: ["pok2"]
|
||||
sprite: _Wega/Objects/Consumable/Food/pokvisualizer.rsi
|
||||
visible: false
|
||||
- state: pok3
|
||||
map: ["pok3"]
|
||||
sprite: _Wega/Objects/Consumable/Food/pokvisualizer.rsi
|
||||
visible: false
|
||||
- type: Tag
|
||||
tags:
|
||||
- CigPack
|
||||
- Trash
|
||||
- type: PhysicalComposition
|
||||
materialComposition:
|
||||
Steel: 50
|
||||
- type: SpaceGarbage
|
||||
- type: Item
|
||||
size: Tiny
|
||||
shape:
|
||||
- 0,0,0,1
|
||||
- type: Storage
|
||||
grid:
|
||||
- 0,0,4,1
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- id: Chocopocky
|
||||
amount: 10
|
||||
- type: ItemCounter
|
||||
count:
|
||||
tags: [Cigarette]
|
||||
composite: true
|
||||
layerStates:
|
||||
- pok1
|
||||
- pok2
|
||||
- pok3
|
||||
- type: Appearance
|
||||
- type: StaticPrice
|
||||
price: 150
|
||||
|
||||
- type: entity
|
||||
id: ChocolatePockyPack
|
||||
parent: PockyPackBase
|
||||
name: chocolate pocky pack
|
||||
description:
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Wega/Objects/Consumable/Food/pockypacks.rsi
|
||||
- type: Item
|
||||
sprite: _Wega/Objects/Consumable/Food/pockypacks.rsi
|
||||
@@ -0,0 +1,76 @@
|
||||
- type: entity
|
||||
parent: BaseItem
|
||||
id: FlowerRose
|
||||
name: rose
|
||||
description: "Something beautiful."
|
||||
components:
|
||||
- type: Clothing
|
||||
slots:
|
||||
- HEAD
|
||||
quickEquip: false
|
||||
- type: Sprite
|
||||
sprite: _Wega/Objects/Specific/Hydroponics/rose.rsi
|
||||
state: produce
|
||||
- type: Produce
|
||||
seedId: rose
|
||||
- type: PotencyVisuals
|
||||
- type: Appearance
|
||||
- type: Tag
|
||||
tags:
|
||||
- Rose
|
||||
|
||||
- type: entity
|
||||
parent: BaseItem
|
||||
id: FlowerSunflower
|
||||
name: sunflower
|
||||
description: "Yellow is bright, like stars in space."
|
||||
components:
|
||||
- type: Clothing
|
||||
slots:
|
||||
- HEAD
|
||||
quickEquip: false
|
||||
- type: Sprite
|
||||
sprite: _Wega/Objects/Specific/Hydroponics/sunflower.rsi
|
||||
state: produce
|
||||
- type: Produce
|
||||
seedId: sunflower
|
||||
- type: PotencyVisuals
|
||||
- type: Appearance
|
||||
- type: Tag
|
||||
tags:
|
||||
- Sunflower
|
||||
|
||||
- type: entity
|
||||
parent: BaseItem
|
||||
id: FlowerPeaceFlower
|
||||
name: peaceflower
|
||||
description: "Something beautiful."
|
||||
components:
|
||||
- type: Clothing
|
||||
slots:
|
||||
- HEAD
|
||||
quickEquip: false
|
||||
- type: Sprite
|
||||
sprite: _Wega/Objects/Specific/Hydroponics/peaceflower.rsi
|
||||
state: produce
|
||||
- type: Tag
|
||||
tags:
|
||||
- Peaceflower
|
||||
|
||||
- type: entity
|
||||
parent: BaseItem
|
||||
id: FlowerClown
|
||||
name: clown flower
|
||||
description: "Something terrible."
|
||||
components:
|
||||
- type: Clothing
|
||||
slots:
|
||||
- HEAD
|
||||
quickEquip: false
|
||||
- type: Sprite
|
||||
sprite: _Wega/Objects/Specific/Hydroponics/clownflower.rsi
|
||||
state: produce
|
||||
- type: Produce
|
||||
seedId: clownflower
|
||||
- type: PotencyVisuals
|
||||
- type: Appearance
|
||||
@@ -0,0 +1,70 @@
|
||||
- type: entity
|
||||
name: dry ramen noodles
|
||||
parent: FoodBakingBase
|
||||
id: RawNoodles
|
||||
description: "Dry noodles."
|
||||
components:
|
||||
- type: FlavorProfile
|
||||
- type: Sprite
|
||||
sprite: _Wega/Objects/Consumable/Food/ingredients.rsi
|
||||
state: rawnoodles
|
||||
|
||||
- type: entity
|
||||
name: pork ramen
|
||||
parent: FoodBowlBase
|
||||
id: PorkRamenNoodles
|
||||
description: "Ah, I See You're a Man of Culture As Well..."
|
||||
components:
|
||||
- type: Item
|
||||
- type: Food
|
||||
- type: Sprite
|
||||
sprite: _Wega/Objects/Consumable/Food/japanfood.rsi
|
||||
state: porkramen
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
food:
|
||||
maxVol: 30
|
||||
reagents:
|
||||
- ReagentId: Nutriment
|
||||
Quantity: 10
|
||||
- ReagentId: Protein
|
||||
Quantity: 3
|
||||
- ReagentId: Flavorol
|
||||
Quantity: 5
|
||||
- ReagentId: Soysauce
|
||||
Quantity: 2
|
||||
- type: Tag
|
||||
tags:
|
||||
- Meat
|
||||
- Soup
|
||||
|
||||
- type: entity
|
||||
name: spicy ramen
|
||||
parent: FoodBowlBase
|
||||
id: SpicyPorkRamenNoodles
|
||||
description: So hot and so cute!
|
||||
components:
|
||||
- type: Item
|
||||
- type: Food
|
||||
- type: Sprite
|
||||
sprite: _Wega/Objects/Consumable/Food/japanfood.rsi
|
||||
state: spicyporkramen
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
food:
|
||||
maxVol: 30
|
||||
reagents:
|
||||
- ReagentId: Nutriment
|
||||
Quantity: 10
|
||||
- ReagentId: Protein
|
||||
Quantity: 3
|
||||
- ReagentId: Flavorol
|
||||
Quantity: 5
|
||||
- ReagentId: CapsaicinOil
|
||||
Quantity: 2
|
||||
- ReagentId: Soysauce
|
||||
Quantity: 2
|
||||
- type: Tag
|
||||
tags:
|
||||
- Meat
|
||||
- Soup
|
||||
18
Resources/Prototypes/_Wega/Entities/Objects/Devices/pda.yml
Normal file
18
Resources/Prototypes/_Wega/Entities/Objects/Devices/pda.yml
Normal file
@@ -0,0 +1,18 @@
|
||||
- type: entity
|
||||
parent: BasePDA
|
||||
id: BarberPDA
|
||||
name: barber PDA
|
||||
description: "Why isn't it green?"
|
||||
components:
|
||||
- type: Pda
|
||||
id: BarberIDCard
|
||||
- type: Appearance
|
||||
appearanceDataInit:
|
||||
enum.PdaVisuals.PdaType:
|
||||
!type:String
|
||||
pda-barber
|
||||
- type: PdaBorderColor
|
||||
borderColor: "#44843c"
|
||||
accentHColor: "#00cc35"
|
||||
- type: Icon
|
||||
state: pda-barber
|
||||
@@ -0,0 +1,71 @@
|
||||
- type: entity
|
||||
name: bouquet roses
|
||||
parent: BaseItem
|
||||
id: FlowerBouquetRose
|
||||
description: "It looks beautiful and smells good."
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Wega/Objects/Misc/rosebouquet.rsi
|
||||
state: icon
|
||||
scale: 1.3,1.3
|
||||
- type: Item
|
||||
size: Normal
|
||||
- type: Construction
|
||||
graph: FlowerRoseBouquetCraft
|
||||
node: rosebouquet
|
||||
containers:
|
||||
- entity_storage
|
||||
|
||||
- type: entity
|
||||
name: bouquet sunflowers
|
||||
parent: BaseItem
|
||||
id: FlowerBouquetSunflower
|
||||
description: "It looks beautiful and smells good."
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Wega/Objects/Misc/sunbouquet.rsi
|
||||
state: icon
|
||||
scale: 1.15,1.15
|
||||
- type: Item
|
||||
size: Normal
|
||||
- type: Construction
|
||||
graph: FlowerSunflowerBouquetCraft
|
||||
node: sunflowerbouquet
|
||||
containers:
|
||||
- entity_storage
|
||||
|
||||
- type: entity
|
||||
name: bouquet poppies
|
||||
parent: BaseItem
|
||||
id: FlowerBouquetPoppy
|
||||
description: "It looks beautiful and smells good."
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Wega/Objects/Misc/poppybouquet.rsi
|
||||
state: icon
|
||||
scale: 1.15,1.15
|
||||
- type: Item
|
||||
size: Normal
|
||||
- type: Construction
|
||||
graph: PoppyFlowerBouquetCraft
|
||||
node: poppybouquet
|
||||
containers:
|
||||
- entity_storage
|
||||
|
||||
- type: entity
|
||||
name: mixed bouquet
|
||||
parent: BaseItem
|
||||
id: FlowerBouquetMixed
|
||||
description: "It looks beautiful and smells good."
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Wega/Objects/Misc/mixedbouquet.rsi
|
||||
state: icon
|
||||
scale: 1.15,1.15
|
||||
- type: Item
|
||||
size: Normal
|
||||
- type: Construction
|
||||
graph: MixedFlowerBouquetCraft
|
||||
node: bouquetmixed
|
||||
containers:
|
||||
- entity_storage
|
||||
@@ -0,0 +1,28 @@
|
||||
- type: entity
|
||||
parent: BaseItem
|
||||
id: BarberRazor
|
||||
name: razor
|
||||
description: "Bzzzzzzzzzzz."
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Wega/Objects/Misc/razor.rsi
|
||||
state: icon
|
||||
- type: MagicMirror
|
||||
changeHairSound: "/Audio/_Wega/Items/hair-clippers.ogg"
|
||||
addSlotTime: 4
|
||||
removeSlotTime: 4
|
||||
selectSlotTime: 4
|
||||
changeSlotTime: 4
|
||||
- type: ActivatableUI
|
||||
key: enum.MagicMirrorUiKey.Key
|
||||
inHandsOnly: true
|
||||
requireActiveHand: true
|
||||
- type: UserInterface
|
||||
interfaces:
|
||||
enum.MagicMirrorUiKey.Key:
|
||||
type: MagicMirrorBoundUserInterface
|
||||
- type: MeleeWeapon
|
||||
attackRate: 1
|
||||
damage:
|
||||
types:
|
||||
Blunt: 5
|
||||
@@ -0,0 +1,11 @@
|
||||
- type: entity
|
||||
parent: IDCardStandard
|
||||
id: BarberIDCard
|
||||
name: barber ID card
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: default
|
||||
- state: idbarber
|
||||
- type: PresetIdCard
|
||||
job: Barber
|
||||
22
Resources/Prototypes/_Wega/Entities/Objects/Misc/paper.yml
Normal file
22
Resources/Prototypes/_Wega/Entities/Objects/Misc/paper.yml
Normal file
@@ -0,0 +1,22 @@
|
||||
- type: entity
|
||||
name: ticket
|
||||
parent: Paper
|
||||
id: PaperTicket
|
||||
description: "Next!"
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: paper_ticket
|
||||
color: "#e6e6fa"
|
||||
- state: paper_ticket_words
|
||||
map: ["enum.PaperVisualLayers.Writing"]
|
||||
color: "#e6e6fa"
|
||||
visible: false
|
||||
- state: paper_stamp-generic
|
||||
map: ["enum.PaperVisualLayers.Stamp"]
|
||||
visible: false
|
||||
- type: PaperVisuals
|
||||
backgroundModulate: "#d9d9d9"
|
||||
backgroundPatchMargin: 16.0, 16.0, 16.0, 16.0
|
||||
contentMargin: 32.0, 16.0, 32.0, 0.0
|
||||
maxWritableArea: 400.0, 200.0
|
||||
14
Resources/Prototypes/_Wega/Entities/Objects/Misc/soil.yml
Normal file
14
Resources/Prototypes/_Wega/Entities/Objects/Misc/soil.yml
Normal file
@@ -0,0 +1,14 @@
|
||||
- type: entity
|
||||
parent: BaseItem
|
||||
id: SoilBag
|
||||
name: bag soil
|
||||
description: "Mud."
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Wega/Objects/Misc/soilbag.rsi
|
||||
state: icon
|
||||
- type: Item
|
||||
size: Ginormous
|
||||
- type: Tag
|
||||
tags:
|
||||
- SoilBag
|
||||
@@ -0,0 +1,29 @@
|
||||
- type: entity
|
||||
parent: SeedBase
|
||||
name: packet of roses seeds
|
||||
id: RoseSeeds
|
||||
components:
|
||||
- type: Seed
|
||||
seedId: rose
|
||||
- type: Sprite
|
||||
sprite: _Wega/Objects/Specific/Hydroponics/rose.rsi
|
||||
|
||||
- type: entity
|
||||
parent: SeedBase
|
||||
name: packet of sunflower seeds
|
||||
id: SunflowerSeeds
|
||||
components:
|
||||
- type: Seed
|
||||
seedId: sunflower
|
||||
- type: Sprite
|
||||
sprite: _Wega/Objects/Specific/Hydroponics/sunflower.rsi
|
||||
|
||||
- type: entity
|
||||
parent: SeedBase
|
||||
name: packet of clownflower seeds
|
||||
id: ClownflowerSeeds
|
||||
components:
|
||||
- type: Seed
|
||||
seedId: clownflower
|
||||
- type: Sprite
|
||||
sprite: _Wega/Objects/Specific/Hydroponics/clownflower.rsi
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user