diff --git a/Content.Client/Input/ContentContexts.cs b/Content.Client/Input/ContentContexts.cs
index 8753654fc3..fd6eee0e7b 100644
--- a/Content.Client/Input/ContentContexts.cs
+++ b/Content.Client/Input/ContentContexts.cs
@@ -81,6 +81,7 @@ namespace Content.Client.Input
human.AddFunction(ContentKeyFunctions.Arcade2);
human.AddFunction(ContentKeyFunctions.Arcade3);
human.AddFunction(ContentKeyFunctions.LieDown); // WD EDIT
+ human.AddFunction(ContentKeyFunctions.OfferItem); // WD EDIT
// actions should be common (for ghosts, mobs, etc)
common.AddFunction(ContentKeyFunctions.OpenActionsMenu);
diff --git a/Content.Client/Options/UI/Tabs/KeyRebindTab.xaml.cs b/Content.Client/Options/UI/Tabs/KeyRebindTab.xaml.cs
index b5449c99d2..7cd48d338f 100644
--- a/Content.Client/Options/UI/Tabs/KeyRebindTab.xaml.cs
+++ b/Content.Client/Options/UI/Tabs/KeyRebindTab.xaml.cs
@@ -191,6 +191,7 @@ namespace Content.Client.Options.UI.Tabs
AddButton(ContentKeyFunctions.MoveStoredItem);
AddButton(ContentKeyFunctions.RotateStoredItem);
AddButton(ContentKeyFunctions.SaveItemLocation);
+ AddButton(ContentKeyFunctions.OfferItem); // WD EDIT
AddButton(ContentKeyFunctions.LieDown); // WD EDIT
AddCheckBox("ui-options-function-auto-get-up", _cfg.GetCVar(WhiteCVars.AutoGetUp), HandleToggleAutoGetUp); // WD EDIT
diff --git a/Content.Client/Options/UI/Tabs/MiscTab.xaml b/Content.Client/Options/UI/Tabs/MiscTab.xaml
index 3810cddbb9..815254b788 100644
--- a/Content.Client/Options/UI/Tabs/MiscTab.xaml
+++ b/Content.Client/Options/UI/Tabs/MiscTab.xaml
@@ -50,6 +50,7 @@
StyleClasses="LabelKeyText"/>
+
diff --git a/Content.Client/Options/UI/Tabs/MiscTab.xaml.cs b/Content.Client/Options/UI/Tabs/MiscTab.xaml.cs
index b1724753ce..29ba230d1e 100644
--- a/Content.Client/Options/UI/Tabs/MiscTab.xaml.cs
+++ b/Content.Client/Options/UI/Tabs/MiscTab.xaml.cs
@@ -1,5 +1,6 @@
using System.Linq;
using Content.Client.UserInterface.Screens;
+using Content.Shared._White;
using Content.Shared.CCVar;
using Content.Shared.HUD;
using Robust.Client.AutoGenerated;
@@ -69,6 +70,7 @@ namespace Content.Client.Options.UI.Tabs
ShowLoocAboveHeadCheckBox.OnToggled += OnCheckBoxToggled;
ShowHeldItemCheckBox.OnToggled += OnCheckBoxToggled;
ShowCombatModeIndicatorsCheckBox.OnToggled += OnCheckBoxToggled;
+ ShowOfferModeIndicatorsCheckBox.OnToggled += OnCheckBoxToggled; // WD EDIT
OpaqueStorageWindowCheckBox.OnToggled += OnCheckBoxToggled;
FancySpeechBubblesCheckBox.OnToggled += OnCheckBoxToggled;
FancyNameBackgroundsCheckBox.OnToggled += OnCheckBoxToggled;
@@ -85,6 +87,7 @@ namespace Content.Client.Options.UI.Tabs
ShowLoocAboveHeadCheckBox.Pressed = _cfg.GetCVar(CCVars.LoocAboveHeadShow);
ShowHeldItemCheckBox.Pressed = _cfg.GetCVar(CCVars.HudHeldItemShow);
ShowCombatModeIndicatorsCheckBox.Pressed = _cfg.GetCVar(CCVars.CombatModeIndicatorsPointShow);
+ ShowOfferModeIndicatorsCheckBox.Pressed = _cfg.GetCVar(WhiteCVars.OfferModeIndicatorsPointShow); // WD EDIT
OpaqueStorageWindowCheckBox.Pressed = _cfg.GetCVar(CCVars.OpaqueStorageWindow);
FancySpeechBubblesCheckBox.Pressed = _cfg.GetCVar(CCVars.ChatEnableFancyBubbles);
FancyNameBackgroundsCheckBox.Pressed = _cfg.GetCVar(CCVars.ChatFancyNameBackground);
@@ -130,6 +133,7 @@ namespace Content.Client.Options.UI.Tabs
_cfg.SetCVar(CVars.DiscordEnabled, DiscordRich.Pressed);
_cfg.SetCVar(CCVars.HudHeldItemShow, ShowHeldItemCheckBox.Pressed);
_cfg.SetCVar(CCVars.CombatModeIndicatorsPointShow, ShowCombatModeIndicatorsCheckBox.Pressed);
+ _cfg.SetCVar(WhiteCVars.OfferModeIndicatorsPointShow, ShowOfferModeIndicatorsCheckBox.Pressed); // WD EDIT
_cfg.SetCVar(CCVars.OpaqueStorageWindow, OpaqueStorageWindowCheckBox.Pressed);
_cfg.SetCVar(CCVars.ShowOocPatronColor, ShowOocPatronColor.Pressed);
_cfg.SetCVar(CCVars.LoocAboveHeadShow, ShowLoocAboveHeadCheckBox.Pressed);
@@ -158,6 +162,7 @@ namespace Content.Client.Options.UI.Tabs
var isDiscordSame = DiscordRich.Pressed == _cfg.GetCVar(CVars.DiscordEnabled);
var isShowHeldItemSame = ShowHeldItemCheckBox.Pressed == _cfg.GetCVar(CCVars.HudHeldItemShow);
var isCombatModeIndicatorsSame = ShowCombatModeIndicatorsCheckBox.Pressed == _cfg.GetCVar(CCVars.CombatModeIndicatorsPointShow);
+ var isOfferModeIndicatorsSame = ShowOfferModeIndicatorsCheckBox.Pressed == _cfg.GetCVar(WhiteCVars.OfferModeIndicatorsPointShow); // WD EDIT
var isOpaqueStorageWindow = OpaqueStorageWindowCheckBox.Pressed == _cfg.GetCVar(CCVars.OpaqueStorageWindow);
var isOocPatronColorShowSame = ShowOocPatronColor.Pressed == _cfg.GetCVar(CCVars.ShowOocPatronColor);
var isLoocShowSame = ShowLoocAboveHeadCheckBox.Pressed == _cfg.GetCVar(CCVars.LoocAboveHeadShow);
@@ -175,6 +180,7 @@ namespace Content.Client.Options.UI.Tabs
isDiscordSame &&
isShowHeldItemSame &&
isCombatModeIndicatorsSame &&
+ isOfferModeIndicatorsSame && // WD EDIT
isOpaqueStorageWindow &&
isOocPatronColorShowSame &&
isLoocShowSame &&
diff --git a/Content.Client/_White/OfferItem/OfferItemIndicatorsOverlay.cs b/Content.Client/_White/OfferItem/OfferItemIndicatorsOverlay.cs
new file mode 100644
index 0000000000..b5d8137ff8
--- /dev/null
+++ b/Content.Client/_White/OfferItem/OfferItemIndicatorsOverlay.cs
@@ -0,0 +1,72 @@
+using System.Numerics;
+using Robust.Client.GameObjects;
+using Robust.Client.Graphics;
+using Robust.Client.Input;
+using Robust.Client.UserInterface;
+using Robust.Shared.Enums;
+using Robust.Shared.Utility;
+
+namespace Content.Client._White.OfferItem;
+
+public sealed class OfferItemIndicatorsOverlay : Overlay
+{
+ private readonly IInputManager _inputManager;
+ private readonly IEntityManager _entMan;
+ private readonly IEyeManager _eye;
+ private readonly OfferItemSystem _offer;
+
+ private readonly Texture _sight;
+
+ public override OverlaySpace Space => OverlaySpace.ScreenSpace;
+
+ private readonly Color _mainColor = Color.White.WithAlpha(0.3f);
+ private readonly Color _strokeColor = Color.Black.WithAlpha(0.5f);
+ private readonly float _scale = 0.6f; // 1 is a little big
+
+ public OfferItemIndicatorsOverlay(IInputManager input, IEntityManager entMan,
+ IEyeManager eye, OfferItemSystem offerSys)
+ {
+ _inputManager = input;
+ _entMan = entMan;
+ _eye = eye;
+ _offer = offerSys;
+
+ var spriteSys = _entMan.EntitySysManager.GetEntitySystem();
+ _sight = spriteSys.Frame0(new SpriteSpecifier.Rsi(new ResPath("/Textures/White/Interface/give_item.rsi"),
+ "give_item"));
+ }
+
+ protected override bool BeforeDraw(in OverlayDrawArgs args)
+ {
+ if (!_offer.IsInOfferMode())
+ return false;
+
+ return base.BeforeDraw(in args);
+ }
+
+ protected override void Draw(in OverlayDrawArgs args)
+ {
+ var mouseScreenPosition = _inputManager.MouseScreenPosition;
+ var mousePosMap = _eye.PixelToMap(mouseScreenPosition);
+ if (mousePosMap.MapId != args.MapId)
+ return;
+
+
+ var mousePos = mouseScreenPosition.Position;
+ var uiScale = (args.ViewportControl as Control)?.UIScale ?? 1f;
+ var limitedScale = uiScale > 1.25f ? 1.25f : uiScale;
+
+ DrawSight(_sight, args.ScreenHandle, mousePos, limitedScale * _scale);
+ }
+
+ private void DrawSight(Texture sight, DrawingHandleScreen screen, Vector2 centerPos, float scale)
+ {
+ var sightSize = sight.Size * scale;
+ var expandedSize = sightSize + new Vector2(7f, 7f);
+
+ screen.DrawTextureRect(sight,
+ UIBox2.FromDimensions(centerPos - sightSize * 0.5f, sightSize), _strokeColor);
+ screen.DrawTextureRect(sight,
+ UIBox2.FromDimensions(centerPos - expandedSize * 0.5f, expandedSize), _mainColor);
+ }
+}
diff --git a/Content.Client/_White/OfferItem/OfferItemSystem.cs b/Content.Client/_White/OfferItem/OfferItemSystem.cs
new file mode 100644
index 0000000000..dd2fbc163a
--- /dev/null
+++ b/Content.Client/_White/OfferItem/OfferItemSystem.cs
@@ -0,0 +1,52 @@
+using Content.Shared._White;
+using Content.Shared._White.OfferItem;
+using Content.Shared.CCVar;
+using Robust.Client.Graphics;
+using Robust.Client.Input;
+using Robust.Client.Player;
+using Robust.Shared.Configuration;
+
+namespace Content.Client._White.OfferItem;
+
+public sealed class OfferItemSystem : SharedOfferItemSystem
+{
+ [Dependency] private readonly IOverlayManager _overlayManager = default!;
+ [Dependency] private readonly IPlayerManager _playerManager = default!;
+ [Dependency] private readonly IConfigurationManager _cfg = default!;
+ [Dependency] private readonly IInputManager _inputManager = default!;
+ [Dependency] private readonly IEyeManager _eye = default!;
+
+ public override void Initialize()
+ {
+ Subs.CVar(_cfg, WhiteCVars.OfferModeIndicatorsPointShow, OnShowOfferIndicatorsChanged, true);
+ }
+ public override void Shutdown()
+ {
+ _overlayManager.RemoveOverlay();
+
+ base.Shutdown();
+ }
+
+ public bool IsInOfferMode()
+ {
+ var entity = _playerManager.LocalEntity;
+
+ if (entity == null)
+ return false;
+
+ return IsInOfferMode(entity.Value);
+ }
+ private void OnShowOfferIndicatorsChanged(bool isShow)
+ {
+ if (isShow)
+ {
+ _overlayManager.AddOverlay(new OfferItemIndicatorsOverlay(
+ _inputManager,
+ EntityManager,
+ _eye,
+ this));
+ }
+ else
+ _overlayManager.RemoveOverlay();
+ }
+}
diff --git a/Content.Server/Administration/Systems/AdminVerbSystem.Antags.cs b/Content.Server/Administration/Systems/AdminVerbSystem.Antags.cs
index 604a6f922f..5599b8cbd4 100644
--- a/Content.Server/Administration/Systems/AdminVerbSystem.Antags.cs
+++ b/Content.Server/Administration/Systems/AdminVerbSystem.Antags.cs
@@ -117,7 +117,7 @@ public sealed partial class AdminVerbSystem
{
Text = Loc.GetString("admin-verb-text-make-thief"),
Category = VerbCategory.Antag,
- Icon = new SpriteSpecifier.Rsi(new ResPath("/Textures/Clothing/Hands/Gloves/ihscombat.rsi"), "icon"),
+ Icon = new SpriteSpecifier.Rsi(new ResPath("/Textures/Clothing/Hands/Gloves/Color/black.rsi"), "icon"),
Act = () =>
{
_thief.AdminMakeThief(args.Target, false); //Midround add pacified is bad
diff --git a/Content.Server/Body/Systems/InternalsSystem.cs b/Content.Server/Body/Systems/InternalsSystem.cs
index 23c48721fe..8783f14a57 100644
--- a/Content.Server/Body/Systems/InternalsSystem.cs
+++ b/Content.Server/Body/Systems/InternalsSystem.cs
@@ -241,7 +241,7 @@ public sealed class InternalsSystem : EntitySystem
// 3. in-hand tanks
// 4. pocket/belt tanks
- if (!Resolve(user, ref user.Comp1, ref user.Comp2, ref user.Comp3))
+ if (!Resolve(user, ref user.Comp2, ref user.Comp3, false)) // WD EDIT
return null;
if (_inventory.TryGetSlotEntity(user, "back", out var backEntity, user.Comp2, user.Comp3) &&
@@ -258,6 +258,9 @@ public sealed class InternalsSystem : EntitySystem
return (entity.Value, gasTank);
}
+ if (!Resolve(user, ref user.Comp1, false)) // WD EDIT
+ return null;
+
foreach (var item in _inventory.GetHandOrInventoryEntities((user.Owner, user.Comp1, user.Comp2)))
{
if (TryComp(item, out gasTank) && _gasTank.CanConnectToInternals(gasTank))
diff --git a/Content.Server/Store/Systems/StoreSystem.Ui.cs b/Content.Server/Store/Systems/StoreSystem.Ui.cs
index 9c741f864f..77526a43f9 100644
--- a/Content.Server/Store/Systems/StoreSystem.Ui.cs
+++ b/Content.Server/Store/Systems/StoreSystem.Ui.cs
@@ -278,7 +278,7 @@ public sealed partial class StoreSystem
_audio.PlayEntity(component.BuySuccessSound, msg.Session, uid); //cha-ching!
//WD START
- if (listing.SaleLimit != 0 && listing.SaleAmount > 0 && listing.PurchaseAmount >= listing.SaleLimit && listing.ProductAction.HasValue)
+ if (listing.SaleLimit != 0 && listing.SaleAmount > 0 && listing.PurchaseAmount >= listing.SaleLimit)
{
listing.SaleAmount = 0;
listing.Cost = listing.OldCost;
diff --git a/Content.Server/_White/Alert/Click/AcceptOffer.cs b/Content.Server/_White/Alert/Click/AcceptOffer.cs
new file mode 100644
index 0000000000..2d38173c6e
--- /dev/null
+++ b/Content.Server/_White/Alert/Click/AcceptOffer.cs
@@ -0,0 +1,24 @@
+using Content.Server._White.OfferItem;
+using Content.Shared._White.OfferItem;
+using Content.Shared.Alert;
+using JetBrains.Annotations;
+
+namespace Content.Server._White.Alert.Click;
+
+///
+/// Accepting the offer and receive item
+///
+[UsedImplicitly]
+[DataDefinition]
+public sealed partial class AcceptOffer : IAlertClick
+{
+ public void AlertClicked(EntityUid player)
+ {
+ var entManager = IoCManager.Resolve();
+
+ if (entManager.TryGetComponent(player, out OfferItemComponent? offerItem))
+ {
+ entManager.System().Receive(player, offerItem);
+ }
+ }
+}
diff --git a/Content.Server/_White/OfferItem/OfferItemSystem.cs b/Content.Server/_White/OfferItem/OfferItemSystem.cs
new file mode 100644
index 0000000000..23df303bea
--- /dev/null
+++ b/Content.Server/_White/OfferItem/OfferItemSystem.cs
@@ -0,0 +1,83 @@
+using Content.Server.Popups;
+using Content.Shared.Hands.Components;
+using Content.Shared.Alert;
+using Content.Shared.Hands.EntitySystems;
+using Content.Shared._White.OfferItem;
+using Content.Shared.IdentityManagement;
+using Robust.Shared.Player;
+
+namespace Content.Server._White.OfferItem;
+
+public sealed class OfferItemSystem : SharedOfferItemSystem
+{
+ [Dependency] private readonly AlertsSystem _alertsSystem = default!;
+ [Dependency] private readonly SharedHandsSystem _hands = default!;
+ [Dependency] private readonly PopupSystem _popup = default!;
+
+ public override void Update(float frameTime)
+ {
+ base.Update(frameTime);
+
+ var query = EntityQueryEnumerator();
+ while (query.MoveNext(out var uid, out var offerItem))
+ {
+ if (!TryComp(uid, out var hands) || hands.ActiveHand == null)
+ continue;
+
+ if (offerItem.Hand != null &&
+ hands.Hands[offerItem.Hand].HeldEntity == null)
+ {
+ if (offerItem.Target != null)
+ {
+ UnReceive(offerItem.Target.Value, offerItem: offerItem);
+ offerItem.IsInOfferMode = false;
+ Dirty(uid, offerItem);
+ }
+ else
+ UnOffer(uid, offerItem);
+ }
+
+ if (!offerItem.IsInReceiveMode)
+ {
+ _alertsSystem.ClearAlert(uid, AlertType.Offer);
+ continue;
+ }
+
+ _alertsSystem.ShowAlert(uid, AlertType.Offer);
+ }
+ }
+
+ ///
+ /// Accepting the offer and receive item
+ ///
+ public void Receive(EntityUid uid, OfferItemComponent? component = null)
+ {
+ if (!Resolve(uid, ref component) ||
+ !TryComp(component.Target, out var offerItem) ||
+ offerItem.Hand == null ||
+ component.Target == null ||
+ !TryComp(uid, out var hands))
+ return;
+
+ if (offerItem.Item != null)
+ {
+ if (!_hands.TryPickup(uid, offerItem.Item.Value, handsComp: hands))
+ {
+ _popup.PopupEntity(Loc.GetString("offer-item-full-hand"), uid, uid);
+ return;
+ }
+
+ _popup.PopupEntity(Loc.GetString("offer-item-give",
+ ("item", Identity.Entity(offerItem.Item.Value, EntityManager)),
+ ("target", Identity.Entity(uid, EntityManager))), component.Target.Value, component.Target.Value);
+ _popup.PopupEntity(Loc.GetString("offer-item-give-other",
+ ("user", Identity.Entity(component.Target.Value, EntityManager)),
+ ("item", Identity.Entity(offerItem.Item.Value, EntityManager)),
+ ("target", Identity.Entity(uid, EntityManager)))
+ , component.Target.Value, Filter.PvsExcept(component.Target.Value, entityManager: EntityManager), true);
+ }
+
+ offerItem.Item = null;
+ UnReceive(uid, component, offerItem);
+ }
+}
diff --git a/Content.Server/_White/Wizard/Magic/WizardSpellsSystem.cs b/Content.Server/_White/Wizard/Magic/WizardSpellsSystem.cs
index f2852a95e8..aaea67ab96 100644
--- a/Content.Server/_White/Wizard/Magic/WizardSpellsSystem.cs
+++ b/Content.Server/_White/Wizard/Magic/WizardSpellsSystem.cs
@@ -179,6 +179,12 @@ public sealed class WizardSpellsSystem : EntitySystem
if (!userHasMind)
return;
+ SwapComponent(uid, target);
+ SwapComponent(uid, target);
+ SwapComponent(uid, target);
+ SwapComponent(uid, target);
+ SwapComponent(uid, target);
+
_mindSystem.TransferTo(mindId, target, mind: mind);
if (targetHasMind)
@@ -193,12 +199,6 @@ public sealed class WizardSpellsSystem : EntitySystem
_standing.TryLieDown(target);
Cast(msg);
-
- SwapComponent(uid, target);
- SwapComponent(uid, target);
- SwapComponent(uid, target);
- SwapComponent(uid, target);
- SwapComponent(uid, target);
}
#endregion
diff --git a/Content.Server/_White/Wizard/WizardRuleSystem.cs b/Content.Server/_White/Wizard/WizardRuleSystem.cs
index da3b3c3289..170e1a3b54 100644
--- a/Content.Server/_White/Wizard/WizardRuleSystem.cs
+++ b/Content.Server/_White/Wizard/WizardRuleSystem.cs
@@ -159,7 +159,8 @@ public sealed class WizardRuleSystem : GameRuleSystem
var query = QueryActiveRules();
while (query.MoveNext(out _, out _, out var wizardRule, out _))
{
- AddRole(mindId, mind, wizardRule);
+ if (!AddRole(mindId, mind, wizardRule))
+ return;
if (mind.Session is not { } playerSession)
return;
@@ -171,10 +172,10 @@ public sealed class WizardRuleSystem : GameRuleSystem
}
}
- private void AddRole(EntityUid mindId, MindComponent mind, WizardRuleComponent wizardRule)
+ private bool AddRole(EntityUid mindId, MindComponent mind, WizardRuleComponent wizardRule)
{
if (_roles.MindHasRole(mindId))
- return;
+ return false;
wizardRule.WizardMinds.Add(mindId);
@@ -182,6 +183,8 @@ public sealed class WizardRuleSystem : GameRuleSystem
_roles.MindAddRole(mindId, new WizardRoleComponent {PrototypeId = role});
GiveObjectives(mindId, mind, wizardRule);
+
+ return true;
}
private void GiveObjectives(EntityUid mindId, MindComponent mind, WizardRuleComponent wizardRule)
@@ -280,30 +283,35 @@ public sealed class WizardRuleSystem : GameRuleSystem
private HumanoidCharacterProfile SetupWizardEntity(
EntityUid mob,
StartingGearPrototype gear,
- bool endRoundOnDeath)
+ bool endRoundOnDeath,
+ bool randomPtofile = true)
{
EnsureComp(mob, out var component);
component.EndRoundOnDeath = endRoundOnDeath;
EnsureComp(mob).AntagonistPrototype = "globalAntagonistWizard";
- var random = IoCManager.Resolve();
- var profile = HumanoidCharacterProfile.RandomWithSpecies().WithAge(random.Next(component.MinAge, component.MaxAge));
+ if (randomPtofile)
+ {
+ var random = IoCManager.Resolve();
+ var profile = HumanoidCharacterProfile.RandomWithSpecies()
+ .WithAge(random.Next(component.MinAge, component.MaxAge));
- var color = Color.FromHex(GetRandom(component.Color, "#B5B8B1"));
- var hair = GetRandom(component.Hair, "HumanHairAfricanPigtails");
- var facialHair = GetRandom(component.FacialHair, "HumanFacialHairAbe");
- profile = profile.WithCharacterAppearance(
- profile.WithCharacterAppearance(
+ var color = Color.FromHex(GetRandom(component.Color, "#B5B8B1"));
+ var hair = GetRandom(component.Hair, "HumanHairAfricanPigtails");
+ var facialHair = GetRandom(component.FacialHair, "HumanFacialHairAbe");
+ profile = profile.WithCharacterAppearance(
profile.WithCharacterAppearance(
- profile.WithCharacterAppearance(
- profile.Appearance.WithHairStyleName(hair))
- .Appearance.WithFacialHairStyleName(facialHair))
- .Appearance.WithHairColor(color))
- .Appearance.WithFacialHairColor(color));
+ profile.WithCharacterAppearance(
+ profile.WithCharacterAppearance(
+ profile.Appearance.WithHairStyleName(hair))
+ .Appearance.WithFacialHairStyleName(facialHair))
+ .Appearance.WithHairColor(color))
+ .Appearance.WithFacialHairColor(color));
- _humanoid.LoadProfile(mob, profile);
+ _humanoid.LoadProfile(mob, profile);
- _metaData.SetEntityName(mob, GetRandom(component.Name, ""));
+ _metaData.SetEntityName(mob, GetRandom(component.Name, ""));
+ }
_stationSpawning.EquipStartingGear(mob, gear);
diff --git a/Content.Shared/Alert/AlertType.cs b/Content.Shared/Alert/AlertType.cs
index f78375fd73..e335289881 100644
--- a/Content.Shared/Alert/AlertType.cs
+++ b/Content.Shared/Alert/AlertType.cs
@@ -69,7 +69,8 @@ namespace Content.Shared.Alert
SuitPower,
BorgHealth,
BorgCrit,
- BorgDead
+ BorgDead,
+ Offer // WD EDITS
}
}
diff --git a/Content.Shared/Input/ContentKeyFunctions.cs b/Content.Shared/Input/ContentKeyFunctions.cs
index 59c784cd43..56c0299c82 100644
--- a/Content.Shared/Input/ContentKeyFunctions.cs
+++ b/Content.Shared/Input/ContentKeyFunctions.cs
@@ -58,6 +58,7 @@ namespace Content.Shared.Input
public static readonly BoundKeyFunction ZoomIn = "ZoomIn";
public static readonly BoundKeyFunction ResetZoom = "ResetZoom";
public static readonly BoundKeyFunction LieDown = "LieDown"; // WD EDIT
+ public static readonly BoundKeyFunction OfferItem = "OfferItem"; // WD EDIT
public static readonly BoundKeyFunction ArcadeUp = "ArcadeUp";
public static readonly BoundKeyFunction ArcadeDown = "ArcadeDown";
diff --git a/Content.Shared/Prying/Systems/PryingSystem.cs b/Content.Shared/Prying/Systems/PryingSystem.cs
index 69a63f72b5..aefec3e211 100644
--- a/Content.Shared/Prying/Systems/PryingSystem.cs
+++ b/Content.Shared/Prying/Systems/PryingSystem.cs
@@ -99,7 +99,7 @@ public sealed class PryingSystem : EntitySystem
// to be marked as handled.
return true;
- return StartPry(target, user, null, 0.1f, out id); // hand-prying is much slower
+ return StartPry(target, user, null, 10f, out id); // hand-prying is much slower
}
private bool CanPry(EntityUid target, EntityUid user, out string? message, PryingComponent? comp = null)
@@ -133,7 +133,10 @@ public sealed class PryingSystem : EntitySystem
var modEv = new GetPryTimeModifierEvent(user);
RaiseLocalEvent(target, ref modEv);
- var doAfterArgs = new DoAfterArgs(EntityManager, user, TimeSpan.FromSeconds(modEv.BaseTime * modEv.PryTimeModifier / toolModifier), new DoorPryDoAfterEvent(), target, target, tool)
+
+ var time = TimeSpan.FromSeconds(!TryComp(target, out var airlock) || !airlock.Powered ? 0 : modEv.BaseTime * modEv.PryTimeModifier * toolModifier); // WD EDIT
+
+ var doAfterArgs = new DoAfterArgs(EntityManager, user, time, new DoorPryDoAfterEvent(), target, target, tool)
{
BreakOnDamage = true,
BreakOnMove = true,
@@ -166,7 +169,7 @@ public sealed class PryingSystem : EntitySystem
return;
}
- if (args.Used != null && comp != null)
+ if (args.Used != null && comp != null && door.State is not DoorState.Closing and not DoorState.Opening)
{
_audioSystem.PlayPredicted(comp.UseSound, args.Used.Value, args.User);
}
diff --git a/Content.Shared/Tools/Components/ToolTileCompatibleComponent.cs b/Content.Shared/Tools/Components/ToolTileCompatibleComponent.cs
index caac41a3de..679ad424ee 100644
--- a/Content.Shared/Tools/Components/ToolTileCompatibleComponent.cs
+++ b/Content.Shared/Tools/Components/ToolTileCompatibleComponent.cs
@@ -18,7 +18,7 @@ public sealed partial class ToolTileCompatibleComponent : Component
/// The time it takes to modify the tile.
///
[DataField, ViewVariables(VVAccess.ReadWrite)]
- public TimeSpan Delay = TimeSpan.FromSeconds(1);
+ public TimeSpan Delay = TimeSpan.FromSeconds(0);
///
/// Whether or not the tile being modified must be unobstructed
diff --git a/Content.Shared/_White/OfferItem/OfferItemComponent.cs b/Content.Shared/_White/OfferItem/OfferItemComponent.cs
new file mode 100644
index 0000000000..fe1c455b6f
--- /dev/null
+++ b/Content.Shared/_White/OfferItem/OfferItemComponent.cs
@@ -0,0 +1,26 @@
+using Robust.Shared.GameStates;
+
+namespace Content.Shared._White.OfferItem;
+
+[RegisterComponent, NetworkedComponent, AutoGenerateComponentState(true)]
+[Access(typeof(SharedOfferItemSystem))]
+public sealed partial class OfferItemComponent : Component
+{
+ [ViewVariables(VVAccess.ReadWrite), DataField, AutoNetworkedField]
+ public bool IsInOfferMode;
+
+ [DataField, AutoNetworkedField]
+ public bool IsInReceiveMode;
+
+ [DataField, AutoNetworkedField]
+ public string? Hand;
+
+ [DataField, AutoNetworkedField]
+ public EntityUid? Item;
+
+ [DataField, AutoNetworkedField]
+ public EntityUid? Target;
+
+ [DataField]
+ public float MaxOfferDistance = 2f;
+}
diff --git a/Content.Shared/_White/OfferItem/SharedOfferItemSystem.Interactions.cs b/Content.Shared/_White/OfferItem/SharedOfferItemSystem.Interactions.cs
new file mode 100644
index 0000000000..39367951c7
--- /dev/null
+++ b/Content.Shared/_White/OfferItem/SharedOfferItemSystem.Interactions.cs
@@ -0,0 +1,74 @@
+using Content.Shared.Popups;
+using Content.Shared.ActionBlocker;
+using Content.Shared.Input;
+using Content.Shared.Hands.Components;
+using Robust.Shared.Input.Binding;
+using Robust.Shared.Player;
+
+namespace Content.Shared._White.OfferItem;
+
+public abstract partial class SharedOfferItemSystem
+{
+ [Dependency] private readonly ActionBlockerSystem _actionBlocker = default!;
+ [Dependency] private readonly SharedPopupSystem _popup = default!;
+
+ private void InitializeInteractions()
+ {
+ CommandBinds.Builder
+ .Bind(ContentKeyFunctions.OfferItem, InputCmdHandler.FromDelegate(SetInOfferMode, handle: false, outsidePrediction: false))
+ .Register();
+ }
+
+ public override void Shutdown()
+ {
+ base.Shutdown();
+
+ CommandBinds.Unregister();
+ }
+
+ private void SetInOfferMode(ICommonSession? session)
+ {
+ if (session is not { } playerSession)
+ return;
+
+ if ((playerSession.AttachedEntity is not { Valid: true } uid || !Exists(uid)) ||
+ !_actionBlocker.CanInteract(uid, null))
+ return;
+
+ if (!TryComp(uid, out var offerItem))
+ return;
+
+ if (!TryComp(uid, out var hands) || hands.ActiveHand == null)
+ return;
+
+ offerItem.Item = hands.ActiveHand.HeldEntity;
+
+ if (offerItem.IsInOfferMode == false)
+ {
+ if (offerItem.Item == null)
+ {
+ _popup.PopupEntity(Loc.GetString("offer-item-empty-hand"), uid, uid);
+ return;
+ }
+
+ if (offerItem.Hand == null || offerItem.Target == null)
+ {
+ offerItem.IsInOfferMode = true;
+ offerItem.Hand = hands.ActiveHand.Name;
+
+ Dirty(uid, offerItem);
+ return;
+ }
+ }
+
+ if (offerItem.Target != null)
+ {
+ UnReceive(offerItem.Target.Value, offerItem: offerItem);
+ offerItem.IsInOfferMode = false;
+ Dirty(uid, offerItem);
+ return;
+ }
+
+ UnOffer(uid, offerItem);
+ }
+}
diff --git a/Content.Shared/_White/OfferItem/SharedOfferItemSystem.cs b/Content.Shared/_White/OfferItem/SharedOfferItemSystem.cs
new file mode 100644
index 0000000000..4a471028cc
--- /dev/null
+++ b/Content.Shared/_White/OfferItem/SharedOfferItemSystem.cs
@@ -0,0 +1,158 @@
+using Content.Shared.Interaction;
+using Content.Shared.IdentityManagement;
+using Content.Shared.Hands.Components;
+
+namespace Content.Shared._White.OfferItem;
+
+public abstract partial class SharedOfferItemSystem : EntitySystem
+{
+ [Dependency] private readonly SharedTransformSystem _transform = default!;
+
+ public override void Initialize()
+ {
+ SubscribeLocalEvent(SetInReceiveMode);
+ SubscribeLocalEvent(OnMove);
+
+ InitializeInteractions();
+ }
+
+
+ private void SetInReceiveMode(EntityUid uid, OfferItemComponent component, InteractUsingEvent args)
+ {
+ if (!TryComp(args.User, out var offerItem))
+ return;
+
+ if (args.User == uid || component.IsInReceiveMode || !offerItem.IsInOfferMode ||
+ (offerItem.IsInReceiveMode && offerItem.Target != uid))
+ return;
+
+ component.IsInReceiveMode = true;
+ component.Target = args.User;
+
+ Dirty(uid, component);
+
+ offerItem.Target = uid;
+ offerItem.IsInOfferMode = false;
+
+ Dirty(args.User, offerItem);
+
+ if (offerItem.Item == null)
+ return;
+
+ _popup.PopupEntity(Loc.GetString("offer-item-try-give",
+ ("item", Identity.Entity(offerItem.Item.Value, EntityManager)),
+ ("target", Identity.Entity(uid, EntityManager))), component.Target.Value, component.Target.Value);
+ _popup.PopupEntity(Loc.GetString("offer-item-try-give-target",
+ ("user", Identity.Entity(component.Target.Value, EntityManager)),
+ ("item", Identity.Entity(offerItem.Item.Value, EntityManager))), component.Target.Value, uid);
+
+ args.Handled = true;
+ }
+
+ private void OnMove(EntityUid uid, OfferItemComponent component, MoveEvent args)
+ {
+ if (component.Target == null ||
+ args.NewPosition.InRange(EntityManager, _transform,
+ Transform(component.Target.Value).Coordinates, component.MaxOfferDistance))
+ return;
+
+ UnOffer(uid, component);
+ }
+
+ ///
+ /// Resets the of the user and the target
+ ///
+ protected void UnOffer(EntityUid uid, OfferItemComponent component)
+ {
+ if (!TryComp(uid, out var hands) || hands.ActiveHand == null)
+ return;
+
+
+ if (TryComp(component.Target, out var offerItem) && component.Target != null)
+ {
+
+ if (component.Item != null)
+ {
+ _popup.PopupEntity(Loc.GetString("offer-item-no-give",
+ ("item", Identity.Entity(component.Item.Value, EntityManager)),
+ ("target", Identity.Entity(component.Target.Value, EntityManager))), uid, uid);
+ _popup.PopupEntity(Loc.GetString("offer-item-no-give-target",
+ ("user", Identity.Entity(uid, EntityManager)),
+ ("item", Identity.Entity(component.Item.Value, EntityManager))), uid, component.Target.Value);
+ }
+
+ else if (offerItem.Item != null)
+ {
+ _popup.PopupEntity(Loc.GetString("offer-item-no-give",
+ ("item", Identity.Entity(offerItem.Item.Value, EntityManager)),
+ ("target", Identity.Entity(uid, EntityManager))), component.Target.Value, component.Target.Value);
+ _popup.PopupEntity(Loc.GetString("offer-item-no-give-target",
+ ("user", Identity.Entity(component.Target.Value, EntityManager)),
+ ("item", Identity.Entity(offerItem.Item.Value, EntityManager))), component.Target.Value, uid);
+ }
+
+ offerItem.IsInOfferMode = false;
+ offerItem.IsInReceiveMode = false;
+ offerItem.Hand = null;
+ offerItem.Target = null;
+ offerItem.Item = null;
+
+ Dirty(component.Target.Value, offerItem);
+ }
+
+ component.IsInOfferMode = false;
+ component.IsInReceiveMode = false;
+ component.Hand = null;
+ component.Target = null;
+ component.Item = null;
+
+ Dirty(uid, component);
+ }
+
+
+ ///
+ /// Cancels the transfer of the item
+ ///
+ protected void UnReceive(EntityUid uid, OfferItemComponent? component = null, OfferItemComponent? offerItem = null)
+ {
+ if (component == null && !TryComp(uid, out component))
+ return;
+
+ if (offerItem == null && !TryComp(component.Target, out offerItem))
+ return;
+
+ if (!TryComp(uid, out var hands) || hands.ActiveHand == null ||
+ component.Target == null)
+ return;
+
+ if (offerItem.Item != null)
+ {
+ _popup.PopupEntity(Loc.GetString("offer-item-no-give",
+ ("item", Identity.Entity(offerItem.Item.Value, EntityManager)),
+ ("target", Identity.Entity(uid, EntityManager))), component.Target.Value, component.Target.Value);
+ _popup.PopupEntity(Loc.GetString("offer-item-no-give-target",
+ ("user", Identity.Entity(component.Target.Value, EntityManager)),
+ ("item", Identity.Entity(offerItem.Item.Value, EntityManager))), component.Target.Value, uid);
+ }
+
+ if (!offerItem.IsInReceiveMode)
+ {
+ offerItem.Target = null;
+ component.Target = null;
+ }
+
+ offerItem.Item = null;
+ offerItem.Hand = null;
+ component.IsInReceiveMode = false;
+
+ Dirty(uid, component);
+ }
+
+ ///
+ /// Returns true if = true
+ ///
+ protected bool IsInOfferMode(EntityUid? entity, OfferItemComponent? component = null)
+ {
+ return entity != null && Resolve(entity.Value, ref component, false) && component.IsInOfferMode;
+ }
+}
diff --git a/Content.Shared/_White/WhiteCVars.cs b/Content.Shared/_White/WhiteCVars.cs
index da434e771b..d2a3b360d8 100644
--- a/Content.Shared/_White/WhiteCVars.cs
+++ b/Content.Shared/_White/WhiteCVars.cs
@@ -19,6 +19,13 @@ public sealed class WhiteCVars
public static readonly CVarDef ShowTrails =
CVarDef.Create("white.show_trails", true, CVar.CLIENTONLY | CVar.ARCHIVE);
+ /*
+ * Offer Indicator
+ */
+
+ public static readonly CVarDef OfferModeIndicatorsPointShow =
+ CVarDef.Create("white.offer_mode_indicators_point_show", true, CVar.ARCHIVE | CVar.CLIENTONLY);
+
/*
* Wiki rules
*/
diff --git a/Resources/Changelog/ChangelogWhite.yml b/Resources/Changelog/ChangelogWhite.yml
index f5beb56f42..0dc6923ae6 100644
--- a/Resources/Changelog/ChangelogWhite.yml
+++ b/Resources/Changelog/ChangelogWhite.yml
@@ -5986,3 +5986,123 @@
id: 390
time: '2024-07-17T18:06:22.0000000+00:00'
url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/459
+- author: ThereDrD
+ changes:
+ - message: "\u041F\u0435\u0440\u0435\u0440\u0430\u0431\u043E\u0442\u0430\u043D \u043C\
+ \u0435\u0448\u043E\u043A \u0434\u043B\u044F \u043C\u0443\u0441\u043E\u0440\u0430\
+ , \u0442\u0435\u043F\u0435\u0440\u044C \u043E\u043D \u043C\u043E\u0436\u0435\
+ \u0442 \u043F\u043E\u0434\u0431\u0438\u0440\u0430\u0442\u044C \u0430\u0431\u0441\
+ \u043E\u043B\u044E\u0442\u043D\u043E \u0432\u0441\u0435 \u043F\u0440\u0435\u0434\
+ \u043C\u0435\u0442\u044B. \u0425\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0435\
+ \ \u0441\u0442\u0430\u043B\u043E \u0432\u0435\u0440\u0442\u0438\u043A\u0430\u043B\
+ \u044C\u043D\u044B\u043C, \u0447\u0442\u043E\u0431\u044B \u0431\u043E\u043B\u044C\
+ \u0448\u0435 \u0431\u044B\u0442\u044C \u043F\u043E\u0445\u043E\u0436\u0438\u043C\
+ \ \u043D\u0430 \u043C\u0435\u0448\u043E\u043A \u0434\u043B\u044F \u043C\u0443\
+ \u0441\u043E\u0440\u0430. \u0410 \u0435\u0449\u0435 \u0435\u0433\u043E \u0442\
+ \u0435\u043F\u0435\u0440\u044C \u043D\u0435\u043B\u044C\u0437\u044F \u043D\u0430\
+ \u0434\u0435\u0442\u044C \u043D\u0430 \u043F\u043E\u044F\u0441 \u0432 \u0440\
+ \u0430\u043C\u043A\u0430\u0445 \u0431\u0430\u043B\u0430\u043D\u0441\u0430"
+ type: Tweak
+ - message: "\u0420\u0430\u0437\u043C\u0435\u0440\u044B \u043B\u0430\u043C\u043F\u043E\
+ \u0447\u0435\u043A \u0438 \u043C\u0435\u0447\u0430 \u0441 \u043A\u0438\u043D\
+ \u0436\u0430\u043B\u043E\u043C \u043A\u0443\u043B\u044C\u0442\u0430 \u0438\u0437\
+ \u043C\u0435\u043D\u0438\u043B\u0438\u0441\u044C \u0438 \u0441\u0442\u0430\u043B\
+ \u0438 \u043B\u0443\u0447\u0448\u0435."
+ type: Tweak
+ - message: "\u041F\u043E\u0444\u0438\u043A\u0448\u0435\u043D\u044B \u043B\u043E\u0430\
+ \u0434\u0430\u0443\u0442\u044B \u043A\u0430\u043F\u0438\u0442\u0430\u043D\u0441\
+ \u043A\u0438\u0445 \u043F\u0435\u0440\u0447\u0430\u0442\u043E\u043A, \u043D\u0435\
+ \u0434\u043E\u0441\u0442\u0430\u044E\u0449\u0438\u0435 \u0431\u043E\u0442\u0438\
+ \u043D\u043A\u0438 \u0443 \u0440\u0435\u043F\u043E\u0440\u0442\u0435\u0440\u0430\
+ \ \u0438 \u0445\u0440\u0430\u043D\u0438\u0442\u0435\u043B\u044F \u0437\u043E\
+ \u043E\u043F\u0430\u0440\u043A\u0430"
+ type: Fix
+ - message: "\u041F\u043E\u0444\u0438\u043A\u0448\u0435\u043D \u0441\u0442\u0430\u0442\
+ \u0438\u0447\u043D\u044B\u0439 \u043B\u0443\u0442 \u0443 \u0443\u0431\u043E\u0440\
+ \u0449\u0438\u043A\u0430, \u0442\u0435\u043F\u0435\u0440\u044C \u0443 \u043D\
+ \u0435\u0433\u043E \u043D\u0435\u0442 \u0432\u0442\u043E\u0440\u043E\u0433\u043E\
+ \ \u043F\u0434\u0430 \u0438 \u0433\u0430\u043B\u043E\u0448"
+ type: Fix
+ - message: "\u041F\u043E\u0444\u0438\u043A\u0448\u0435\u043D \u0434\u0438\u0434\u0436\
+ \u0435\u0439\u0441\u043A\u0438\u0435 \u043F\u043B\u0435\u0435\u0440"
+ type: Fix
+ id: 391
+ time: '2024-07-17T21:21:50.0000000+00:00'
+ url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/460
+- author: Spatison
+ changes:
+ - message: "\u0422\u0435\u043F\u0435\u0440\u044C \u043F\u0440\u0435\u0434\u043C\u0435\
+ \u0442\u044B \u043C\u043E\u0436\u043D\u043E \u043F\u0435\u0440\u0435\u0434\u0430\
+ \u0432\u0430\u0442\u044C \u0438\u0437 \u0440\u0443\u043A \u0432 \u0440\u0443\
+ \u043A\u0438"
+ type: Add
+ id: 392
+ time: '2024-07-17T22:33:28.0000000+00:00'
+ url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/462
+- author: Aviu
+ changes:
+ - message: "\u0412\u0435\u0434\u0440\u0430 \u0442\u0435\u043F\u0435\u0440\u044C\
+ \ \u043F\u043E\u043C\u0435\u0449\u044F\u044E\u0442\u0441\u044F \u0432 \u043F\
+ \u043E\u044F\u0441 \u0443\u0431\u043E\u0440\u0449\u0438\u043A\u0430."
+ type: Add
+ - message: "\u0423 \u043F\u0440\u043E\u0434\u0432\u0438\u043D\u0443\u0442\u043E\u0439\
+ \ \u0448\u0432\u0430\u0431\u0440\u044B \u0442\u0435\u043F\u0435\u0440\u044C\
+ \ \u0442\u0430\u043A\u043E\u0439 \u0436\u0435 \u0440\u0430\u0437\u043C\u0435\
+ \u0440, \u043A\u0430\u043A \u0438 \u0443 \u043E\u0431\u044B\u0447\u043D\u043E\
+ \u0439."
+ type: Fix
+ - message: "\u0424\u0438\u043A\u0441 \u0442\u0435\u043B\u0435\u043F\u043E\u0440\u0442\
+ \u0430 \u043C\u0430\u0433\u0430."
+ type: Fix
+ - message: "\u0424\u0438\u043A\u0441 \u0437\u0430\u043A\u043B\u0438\u043D\u0430\u043D\
+ \u0438\u0439 \u043A\u0430\u0441\u0430\u043D\u0438\u044F \u043C\u0430\u0433\u0430\
+ ."
+ type: Fix
+ - message: "\u0428\u043A\u0430\u0444\u044B \u0442\u0435\u043F\u0435\u0440\u044C\
+ \ \u0440\u0430\u0437\u0431\u0440\u0430\u044E\u0442\u0441\u044F."
+ type: Fix
+ - message: "\u041F\u043E\u0434\u043C\u0435\u043D\u0430 \u0440\u0430\u0437\u0443\u043C\
+ \u0430 \u0442\u0435\u043F\u0435\u0440\u044C \u043D\u0435 \u0434\u0430\u0451\u0442\
+ \ \u0440\u043E\u043B\u044C \u043C\u0430\u0433\u0430 \u0446\u0435\u043B\u0438\
+ ."
+ type: Fix
+ - message: "\u041D\u0430 \u0436\u0438\u0432\u043E\u0442\u043D\u044B\u0445 \u043C\
+ \u043E\u0436\u043D\u043E \u0432\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043A\
+ \u0438\u0441\u043B\u043E\u0440\u043E\u0434."
+ type: Fix
+ - message: "\u0424\u0438\u043A\u0441 \u0431\u0435\u0441\u043A\u043E\u043D\u0435\u0447\
+ \u043D\u044B\u0445 \u0441\u043A\u0438\u0434\u043E\u043A."
+ type: Fix
+ - message: "\u0424\u0438\u043A\u0441 \u0438\u043A\u043E\u043D\u043A\u0438 \u0432\
+ \u043E\u0440\u0430 \u0432 \u043C\u0435\u043D\u044E \u0430\u0434\u043C\u0438\u043D\
+ \u0430."
+ type: Fix
+ - message: "\u0422\u0435\u043F\u0435\u0440\u044C \u0441\u0438\u043D\u0434\u0438\u0431\
+ \u043E\u0440\u0433\u0438 \u0438 \u043E\u0431\u0435\u0437\u044C\u044F\u043D\u044B\
+ \ \u043D\u0435 \u0441\u0447\u0438\u0442\u0430\u044E\u0442\u0441\u044F \u0437\
+ \u0430 \u043E\u043F\u0435\u0440\u0430\u0442\u0438\u0432\u043D\u0438\u043A\u043E\
+ \u0432."
+ type: Tweak
+ - message: "\u041D\u0435\u043C\u043D\u043E\u0433\u043E \u0443\u043C\u0435\u043D\u044C\
+ \u0448\u0435\u043D\u0430 \u0441\u043A\u043E\u0440\u043E\u0441\u0442\u0440\u0435\
+ \u043B\u044C\u043D\u043E\u0441\u0442\u044C \u043C\u0438\u043D\u0438 \u0430\u0440\
+ \u0431\u0430\u043B\u0435\u0442\u0430."
+ type: Tweak
+ id: 393
+ time: '2024-07-19T12:52:40.0000000+00:00'
+ url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/464
+- author: Spatison
+ changes:
+ - message: "\u0418\u0441\u043F\u0440\u0430\u0432\u043B\u0435\u043D \u043F\u0435\u0440\
+ \u0435\u0432\u043E\u0434 \u043F\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043F\
+ \u0440\u0435\u0434\u043C\u0435\u0442\u043E\u0432"
+ type: Fix
+ - message: "\u0423\u0431\u0440\u0430\u043D \u0434\u0443\u0430\u0444\u0442\u0435\u0440\
+ \ \u043F\u0440\u0438 \u0441\u043D\u044F\u0442\u0438\u0438 \u043F\u043B\u0438\
+ \u0442\u043A\u0438 \u0438 \u043E\u0442\u043A\u0440\u044B\u0442\u0438\u0438 \u043E\
+ \u0431\u0435\u0441\u0442\u043E\u0447\u0435\u043D\u043D\u044B\u0445 \u0448\u043B\
+ \u044E\u0437\u043E\u0432"
+ type: Remove
+ id: 394
+ time: '2024-07-19T12:52:57.0000000+00:00'
+ url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/463
diff --git a/Resources/Locale/en-US/alerts/alerts.ftl b/Resources/Locale/en-US/alerts/alerts.ftl
index db4a58275f..fb72664f04 100644
--- a/Resources/Locale/en-US/alerts/alerts.ftl
+++ b/Resources/Locale/en-US/alerts/alerts.ftl
@@ -113,3 +113,6 @@ alerts-revenant-corporeal-desc = You have manifested physically. People around y
alerts-changeling-chemicals-name = Chemicals
alerts-changeling-chemicals-desc = Our chemicals.
+
+alerts-offer-name = Offer
+alerts-offer-desc = Someone offers you an item.
diff --git a/Resources/Locale/en-US/escape-menu/ui/options-menu.ftl b/Resources/Locale/en-US/escape-menu/ui/options-menu.ftl
index 19afd1efdb..743b2e785c 100644
--- a/Resources/Locale/en-US/escape-menu/ui/options-menu.ftl
+++ b/Resources/Locale/en-US/escape-menu/ui/options-menu.ftl
@@ -41,6 +41,7 @@ ui-options-volume-percent = { TOSTRING($volume, "P0") }
ui-options-show-held-item = Show held item next to cursor
ui-options-show-combat-mode-indicators = Show combat mode indicators with cursor
+ui-options-show-offer-mode-indicators = Show offer mode indicators with cursor
ui-options-opaque-storage-window = Opaque storage window
ui-options-show-ooc-patron-color = Show OOC Patreon color
ui-options-show-looc-on-head = Show LOOC chat above characters head
@@ -136,6 +137,7 @@ ui-options-function-examine-entity = Examine
ui-options-function-swap-hands = Swap hands
ui-options-function-move-stored-item = Move stored item
ui-options-function-rotate-stored-item = Rotate stored item
+ui-options-function-offer-item = Offer something
ui-options-function-lie-down = Lie down/Get up
ui-options-function-auto-get-up = Automatically get up when falling
ui-options-function-save-item-location = Save item location
diff --git a/Resources/Locale/en-US/interaction/offer-item-system.ftl b/Resources/Locale/en-US/interaction/offer-item-system.ftl
new file mode 100644
index 0000000000..128a196dc0
--- /dev/null
+++ b/Resources/Locale/en-US/interaction/offer-item-system.ftl
@@ -0,0 +1,9 @@
+offer-item-empty-hand = You don't have anything in your hand to give!
+offer-item-try-give = You offer {THE($item)} to {$target}
+offer-item-try-give-target = {$user} offers you {THE($item)}
+offer-item-try-give-target = {$user} offers you a {THE($item)}
+offer-item-give = You handed {THE($item)} to {$target}
+offer-item-give-other = {$user} handed {THE($item)} to {$target}
+offer-item-give-target = {$user} handed you {THE($item)}
+offer-item-no-give = You stop offering {THE($item)} to {$target}
+offer-item-no-give-target = {$user} is no longer offering {THE($item)} to you
\ No newline at end of file
diff --git a/Resources/Locale/ru-RU/_white/loadouts/loadoutGroups.ftl b/Resources/Locale/ru-RU/_white/loadouts/loadoutGroups.ftl
index c1545c9782..021fcb33b5 100644
--- a/Resources/Locale/ru-RU/_white/loadouts/loadoutGroups.ftl
+++ b/Resources/Locale/ru-RU/_white/loadouts/loadoutGroups.ftl
@@ -10,7 +10,7 @@ loadout-group-belt = Пояс
loadout-group-gloves = Перчатки
loadout-group-shoes = Ботинки
loadout-group-pda = ПДА
-loadout-group-job-trinkets = Уник. побрякушки
+loadout-group-job-trinkets = Рабочий инвентарь
loadout-group-inhand = В руках
loadout-group-trinkets = Побрякушки
loadout-group-instruments = Муз. инструменты
diff --git a/Resources/Locale/ru-RU/alerts/alerts.ftl b/Resources/Locale/ru-RU/alerts/alerts.ftl
index 274bc07519..eae57111eb 100644
--- a/Resources/Locale/ru-RU/alerts/alerts.ftl
+++ b/Resources/Locale/ru-RU/alerts/alerts.ftl
@@ -113,3 +113,6 @@ alerts-changeling-chemicals-desc = Наши химикаты.
alerts-cult-buff-name = Усиление
alerts-cult-buff-desc = Подготовка заклинаний крови занимает гораздо меньше времени, и вы не теряете столько крови при этом. Также вы неуязвимы к низкому давлению.
+
+alerts-offer-name = Предложение
+alerts-offer-desc = Кто-то предлагает вам предмет.
diff --git a/Resources/Locale/ru-RU/escape-menu/ui/options-menu.ftl b/Resources/Locale/ru-RU/escape-menu/ui/options-menu.ftl
index f87208afd3..16a8697fd0 100644
--- a/Resources/Locale/ru-RU/escape-menu/ui/options-menu.ftl
+++ b/Resources/Locale/ru-RU/escape-menu/ui/options-menu.ftl
@@ -41,6 +41,7 @@ ui-options-volume-percent = { TOSTRING($volume, "P0") }
ui-options-show-held-item = Показать удерживаемый элемент рядом с курсором?
ui-options-show-combat-mode-indicators = Показать индикатор боевого режима рядом с курсором
+ui-options-show-offer-mode-indicators = Показывать индикаторы передачи предмета рядом с курсором
ui-options-opaque-storage-window = Непрозрачность окна хранилища
ui-options-show-looc-on-head = Показывать LOOC-чат над головами персонажей
ui-options-fancy-speech = Показывать имена в облачках с текстом
@@ -142,6 +143,7 @@ ui-options-function-lie-down = Лечь/встать
ui-options-function-auto-get-up = Автоматически вставать при падении
ui-options-function-save-item-location = Сохранить позицию предмета
ui-options-static-storage-ui = Закрепить интерфейс хранилища на хотбаре
+ui-options-function-offer-item = Передать что-то
ui-options-function-smart-equip-backpack = Умная экипировка в рюкзак
ui-options-function-smart-equip-belt = Умная экипировка на пояс
diff --git a/Resources/Locale/ru-RU/interaction/offer-item-system.ftl b/Resources/Locale/ru-RU/interaction/offer-item-system.ftl
new file mode 100644
index 0000000000..aaf864c30b
--- /dev/null
+++ b/Resources/Locale/ru-RU/interaction/offer-item-system.ftl
@@ -0,0 +1,9 @@
+offer-item-empty-hand = У тебя в руках нет ничего, что ты мог бы отдать!
+offer-item-full-hand = Ваша рука занята
+offer-item-try-give = Вы предлагаете {$item} {$target}
+offer-item-try-give-target = {$user} предлагает вам {$item}
+offer-item-give = Вы передали {$item} {$target}
+offer-item-give-other = {$user} передал {$item} {$target}
+offer-item-give-target = {$user} передал вам {$item}
+offer-item-no-give = Вы прекращаете предлагать {$item} {$target}
+offer-item-no-give-target = {$user} прекращает предлагать вам {$item}
\ No newline at end of file
diff --git a/Resources/Prototypes/Alerts/alerts.yml b/Resources/Prototypes/Alerts/alerts.yml
index 8e5bcceed5..5ee698a3ec 100644
--- a/Resources/Prototypes/Alerts/alerts.yml
+++ b/Resources/Prototypes/Alerts/alerts.yml
@@ -28,6 +28,7 @@
- category: Thirst
- alertType: Magboots
- alertType: Pacified
+ - alertType: Offer
- type: entity
id: AlertSpriteView
@@ -491,3 +492,13 @@
icons: [ /Textures/Interface/Alerts/bleeding.png ]
name: alerts-bleeding-name
description: alerts-bleeding-desc
+
+# WD-EDIT
+- type: alert
+ id: Offer
+ onClick: !type:AcceptOffer { }
+ icons:
+ - sprite: /Textures/White/Interface/Alerts/offer_item.rsi
+ state: offer_item
+ name: alerts-offer-name
+ description: alerts-offer-desc
diff --git a/Resources/Prototypes/Entities/Clothing/Belt/belts.yml b/Resources/Prototypes/Entities/Clothing/Belt/belts.yml
index 1faa9f6572..6ec5abcda0 100644
--- a/Resources/Prototypes/Entities/Clothing/Belt/belts.yml
+++ b/Resources/Prototypes/Entities/Clothing/Belt/belts.yml
@@ -248,6 +248,7 @@
- WetFloorSign
- HolosignProjector
- Plunger
+ - Bucket
components:
- LightReplacer
- SmokeOnTrigger
diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml
index 2fc3ffa4d0..bed1941689 100644
--- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml
+++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml
@@ -1338,8 +1338,6 @@
id: MobMonkeySyndicateAgentNukeops # Reinforcement exclusive to nukeops uplink
parent: MobBaseSyndicateMonkey
suffix: NukeOps
- components:
- - type: NukeOperative
- type: entity
name: kobold
diff --git a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml
index 5f29bcbab7..57258f598f 100644
--- a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml
+++ b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml
@@ -279,7 +279,6 @@
parent: BorgChassisSyndicateAssault
suffix: Battery, Module, Operative
components:
- - type: NukeOperative
- type: ContainerFill
containers:
borg_brain:
diff --git a/Resources/Prototypes/Entities/Mobs/Species/base.yml b/Resources/Prototypes/Entities/Mobs/Species/base.yml
index 181e09ce7c..e582052037 100644
--- a/Resources/Prototypes/Entities/Mobs/Species/base.yml
+++ b/Resources/Prototypes/Entities/Mobs/Species/base.yml
@@ -279,6 +279,7 @@
- type: InteractionPanel
actionListPrototype: Humanoid
- type: RoleplayInfo
+ - type: OfferItem # WD-EDIT
- type: entity
save: false
diff --git a/Resources/Prototypes/Entities/Objects/Power/lights.yml b/Resources/Prototypes/Entities/Objects/Power/lights.yml
index a5cf712d09..55a0ee45a3 100644
--- a/Resources/Prototypes/Entities/Objects/Power/lights.yml
+++ b/Resources/Prototypes/Entities/Objects/Power/lights.yml
@@ -12,6 +12,8 @@
layers:
- map: [ enum.LightBulbVisualLayers.Base ]
state: normal
+ - type: Item
+ size: Tiny
- type: LightBulb
- type: Damageable
damageContainer: Inorganic
@@ -75,6 +77,9 @@
id: BaseLightTube
abstract: true
components:
+ - type: Item
+ size: Small
+ storedRotation: -44
- type: Sprite
sprite: Objects/Power/light_tube.rsi
- type: LightBulb
diff --git a/Resources/Prototypes/Entities/Objects/Specific/Janitorial/janitor.yml b/Resources/Prototypes/Entities/Objects/Specific/Janitorial/janitor.yml
index 706575f691..3239a001da 100644
--- a/Resources/Prototypes/Entities/Objects/Specific/Janitorial/janitor.yml
+++ b/Resources/Prototypes/Entities/Objects/Specific/Janitorial/janitor.yml
@@ -67,6 +67,9 @@
- type: Item
size: Large
sprite: Objects/Specific/Janitorial/advmop.rsi
+ storedRotation: -135
+ shape:
+ - 0, 0, 3, 0
- type: Absorbent
pickupAmount: 100
- type: UseDelay
diff --git a/Resources/Prototypes/Entities/Objects/Specific/Janitorial/trashbag.yml b/Resources/Prototypes/Entities/Objects/Specific/Janitorial/trashbag.yml
index c749102518..0be2889d18 100644
--- a/Resources/Prototypes/Entities/Objects/Specific/Janitorial/trashbag.yml
+++ b/Resources/Prototypes/Entities/Objects/Specific/Janitorial/trashbag.yml
@@ -9,19 +9,15 @@
- state: icon-0
map: ["enum.StorageFillLayers.Fill"]
- type: Storage
- maxItemSize: Normal
+ maxItemSize: Large
grid:
- - 0,0,7,5
+ - 0,0,3,8
quickInsert: true
areaInsert: true
storageOpenSound:
collection: trashBagRustle
storageInsertSound:
collection: trashBagRustle
- whitelist:
- tags:
- - Cartridge
- - Trash
- type: Tag
tags:
- TrashBag
@@ -31,11 +27,8 @@
maxFillLevels: 4
fillBaseName: icon
- type: Dumpable
- - type: Clothing
- slots: [belt]
- sprite: Objects/Specific/Janitorial/trashbag.rsi
- type: Item
- size: Normal
+ size: Huge
- type: entity
name: trash bag
diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/mini_ebow.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/mini_ebow.yml
index 9e058ee512..b58386aaf9 100644
--- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/mini_ebow.yml
+++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/mini_ebow.yml
@@ -15,7 +15,7 @@
- Belt
- type: Gun
resetOnHandSelected: false
- fireRate: 0.5
+ fireRate: 0.4
soundGunshot:
path: /Audio/Weapons/click.ogg
- type: RechargeBasicEntityAmmo
diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/cult.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/cult.yml
index 77ba283654..7961c3af43 100644
--- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/cult.yml
+++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/cult.yml
@@ -18,6 +18,9 @@
path: /Audio/Weapons/bladeslice.ogg
- type: Item
size: Normal
+ storedRotation: 47 # It just works
+ shape:
+ - 0, 0, 2, 0
- type: Clothing
sprite: Objects/Weapons/Melee/cult_dagger.rsi
quickEquip: false
@@ -68,6 +71,9 @@
path: /Audio/Weapons/bladeslice.ogg
- type: Item
size: Huge
+ storedRotation: 44 # It just works
+ shape:
+ - 0, 0, 4, 0
- type: Clothing
sprite: Objects/Weapons/Melee/cult_blade.rsi
quickEquip: false
diff --git a/Resources/Prototypes/Entities/Stations/nanotrasen.yml b/Resources/Prototypes/Entities/Stations/nanotrasen.yml
index 7e650d536f..262ca917af 100644
--- a/Resources/Prototypes/Entities/Stations/nanotrasen.yml
+++ b/Resources/Prototypes/Entities/Stations/nanotrasen.yml
@@ -26,6 +26,7 @@
- BaseStationAllEventsEligible
- BaseStationNanotrasen
- BaseRandomStation
+ - BaseStationTeleportLocation
noSpawn: true
components:
- type: Transform
diff --git a/Resources/Prototypes/Entities/Structures/Storage/Closets/Lockers/base_structurelockers.yml b/Resources/Prototypes/Entities/Structures/Storage/Closets/Lockers/base_structurelockers.yml
index 3d4fac8301..69e63b6c6e 100644
--- a/Resources/Prototypes/Entities/Structures/Storage/Closets/Lockers/base_structurelockers.yml
+++ b/Resources/Prototypes/Entities/Structures/Storage/Closets/Lockers/base_structurelockers.yml
@@ -45,7 +45,7 @@
min: 1
max: 2
- type: Construction
- graph: ClosetSteel
+ graph: ClosetSteelSecure
node: done
containers:
- entity_storage
@@ -71,8 +71,3 @@
behaviors:
- !type:DoActsBehavior
acts: ["Destruction"]
- - type: Construction
- graph: ClosetSteelSecure
- node: done
- containers:
- - entity_storage
diff --git a/Resources/Prototypes/Loadouts/Jobs/Cargo/common.yml b/Resources/Prototypes/Loadouts/Jobs/Cargo/common.yml
index a6c7cb10b9..932b5ee9a2 100644
--- a/Resources/Prototypes/Loadouts/Jobs/Cargo/common.yml
+++ b/Resources/Prototypes/Loadouts/Jobs/Cargo/common.yml
@@ -32,6 +32,16 @@
equipment:
head: ClothingHeadHatBeretMerc
+# Ears
+
+- type: itemLoadout # WD
+ id: CargoHeadset
+ equipment: CargoHeadset
+- type: startingGear
+ id: CargoHeadset
+ equipment:
+ ears: ClothingHeadsetCargo
+
# Eyes
- type: itemLoadout # WD
@@ -129,12 +139,13 @@
equipment:
back: ClothingBackpackMerc
-# Ears
+# Job Trinkets
- type: itemLoadout # WD
- id: CargoHeadset
- equipment: CargoHeadset
+ id: CargoAppraisalTool
+ equipment: CargoAppraisalTool
- type: startingGear
- id: CargoHeadset
- equipment:
- ears: ClothingHeadsetCargo
+ id: CargoAppraisalTool
+ storage:
+ back:
+ - AppraisalTool
diff --git a/Resources/Prototypes/Loadouts/Jobs/Justice/common.yml b/Resources/Prototypes/Loadouts/Jobs/Justice/common.yml
index 2cad6e6086..82a625d7d3 100644
--- a/Resources/Prototypes/Loadouts/Jobs/Justice/common.yml
+++ b/Resources/Prototypes/Loadouts/Jobs/Justice/common.yml
@@ -5,37 +5,42 @@
equipment: FolderBlack
- type: startingGear
id: FolderBlack
- equipment:
- id: BoxFolderBlack
+ storage:
+ back:
+ - BoxFolderBlack
- type: itemLoadout # WD
id: FolderWhite
equipment: FolderWhite
- type: startingGear
id: FolderWhite
- equipment:
- id: BoxFolderWhite
+ storage:
+ back:
+ - BoxFolderWhite
- type: itemLoadout # WD
id: FolderRed
equipment: FolderRed
- type: startingGear
id: FolderRed
- equipment:
- id: BoxFolderRed
+ storage:
+ back:
+ - BoxFolderRed
- type: itemLoadout # WD
id: Clipboard
equipment: Clipboard
- type: startingGear
id: Clipboard
- equipment:
- id: BoxFolderClipboard
+ storage:
+ back:
+ - BoxFolderClipboard
- type: itemLoadout # WD
id: JudgeHammer
equipment: JudgeHammer
- type: startingGear
id: JudgeHammer
- equipment:
- id: OmntnsHammer
+ storage:
+ back:
+ - OmntnsHammer
diff --git a/Resources/Prototypes/Loadouts/Jobs/Security/detective.yml b/Resources/Prototypes/Loadouts/Jobs/Security/detective.yml
index a02a791a71..28a6015c19 100644
--- a/Resources/Prototypes/Loadouts/Jobs/Security/detective.yml
+++ b/Resources/Prototypes/Loadouts/Jobs/Security/detective.yml
@@ -82,13 +82,22 @@
equipment:
outerClothing: ClothingOuterCoatDetective
-
# Gloves
-- type: itemLoadout
+- type: itemLoadout # WD
id: GlovesForensic
equipment: GlovesForensic
- type: startingGear
id: GlovesForensic
equipment:
gloves: ClothingHandsGlovesForensic
+
+# PDA
+
+- type: itemLoadout # WD
+ id: DetectivePDA
+ equipment: DetectivePDA
+- type: startingGear
+ id: DetectivePDA
+ equipment:
+ id: DetectivePDA
diff --git a/Resources/Prototypes/Loadouts/Jobs/common.yml b/Resources/Prototypes/Loadouts/Jobs/common.yml
index 931d85b89d..b51c76a769 100644
--- a/Resources/Prototypes/Loadouts/Jobs/common.yml
+++ b/Resources/Prototypes/Loadouts/Jobs/common.yml
@@ -173,6 +173,14 @@
equipment:
gloves: ClothingHandsGlovesColorBlack
+- type: itemLoadout
+ id: GlovesColorWhite
+ equipment: GlovesColorWhite
+- type: startingGear
+ id: GlovesColorWhite
+ equipment:
+ gloves: ClothingHandsGlovesColorWhite
+
- type: itemLoadout
id: GlovesLatex
equipment: GlovesLatex
diff --git a/Resources/Prototypes/Loadouts/loadout_groups.yml b/Resources/Prototypes/Loadouts/loadout_groups.yml
index 0407c9781b..97a6baf8aa 100644
--- a/Resources/Prototypes/Loadouts/loadout_groups.yml
+++ b/Resources/Prototypes/Loadouts/loadout_groups.yml
@@ -77,7 +77,7 @@
- CaptainWintercoat
- type: loadoutGroup
- id: CaptainOuterClothing
+ id: CaptainGloves
name: loadout-group-gloves
minLimit: 0
loadouts:
@@ -595,6 +595,15 @@
loadouts:
- MimeWintercoat
+- type: loadoutGroup
+ id: MimeGloves
+ name: loadout-group-gloves
+ minLimit: 0
+ loadouts:
+ - GlovesColorWhite
+ - GlovesColorBlack
+ - GlovesFingerless
+
- type: loadoutGroup # WD
id: MimePDA
name: loadout-group-pda
@@ -949,11 +958,20 @@
- SalvagePDA
- type: loadoutGroup # WD
- id: CommonCargoEars
+ id: CommonCargoHeadset
name: loadout-group-ears
loadouts:
- CargoHeadset
+- type: loadoutGroup # WD
+ id: CommonCargoJobTrinkets
+ name: loadout-group-job-trinkets
+ minLimit: 0
+ maxLimit: 2
+ loadouts:
+ - CargoAppraisalTool
+ - Clipboard
+
# Engineering
- type: loadoutGroup
id: ChiefEngineerHead
@@ -1518,6 +1536,12 @@
- ShoesLeather
- BootsJack
+- type: loadoutGroup # WD
+ id: DetectivePDA
+ name: loadout-group-pda
+ loadouts:
+ - DetectivePDA
+
- type: loadoutGroup
id: SecurityCadetJumpsuit
name: loadout-group-jumpsuit
diff --git a/Resources/Prototypes/Loadouts/role_loadouts.yml b/Resources/Prototypes/Loadouts/role_loadouts.yml
index eb9415617b..f14a9b5069 100644
--- a/Resources/Prototypes/Loadouts/role_loadouts.yml
+++ b/Resources/Prototypes/Loadouts/role_loadouts.yml
@@ -10,6 +10,7 @@
- CaptainJumpsuit
- CaptainBackpack
- CaptainOuterClothing
+ - CaptainGloves # WD
- CaptainShoes
- CaptainPDA # WD
- Trinkets
@@ -172,6 +173,7 @@
- MimeJumpsuit
- MimeBackpack
- MimeOuterClothing
+ - MimeGloves # WD
- CommonShoes # WD
- MimePDA
- Trinkets
@@ -204,13 +206,14 @@
- CommonGloves # WD
- QuartermasterShoes
- QuartermasterPDA # WD
+ - CommonCargoJobTrinkets
- Trinkets
- type: roleLoadout
id: JobCargoTechnician
groups:
- CargoTechnicianHead
- - CommonCargoEars # WD
+ - CommonCargoHeadset # WD
- CommonGlasses # WD
- CargoTechnicianJumpsuit
- CargoTechnicianBackpack
@@ -218,6 +221,7 @@
- CommonGloves # WD
- CargoTechnicianShoes
- CargoTechnicianPDA
+ - CommonCargoJobTrinkets
- Trinkets
- type: roleLoadout
@@ -434,6 +438,7 @@
- DetectiveOuterClothing
- DetectiveGloves
- DetectiveShoes
+ - DetectivePDA # WD
- Trinkets
- type: roleLoadout
@@ -584,6 +589,7 @@
- CommonGlasses # WD
- ZookeeperJumpsuit # WD
- CommonBackpack
+ - CommonShoes # WD
- ZookeeperPDA # WD
- Trinkets
@@ -597,6 +603,7 @@
- ReporterJumpsuit
- CommonGloves # WD
- CommonBackpack
+ - CommonShoes # WD
- ReporterPDA # WD
- Trinkets
diff --git a/Resources/Prototypes/Recipes/Crafting/Graphs/storage/tallbox.yml b/Resources/Prototypes/Recipes/Crafting/Graphs/storage/tallbox.yml
index 7e450513af..e72c56ff44 100644
--- a/Resources/Prototypes/Recipes/Crafting/Graphs/storage/tallbox.yml
+++ b/Resources/Prototypes/Recipes/Crafting/Graphs/storage/tallbox.yml
@@ -19,8 +19,6 @@
conditions:
- !type:StorageWelded
welded: false
- - !type:Locked
- locked: false
completed:
- !type:SpawnPrototype
prototype: SheetSteel1
diff --git a/Resources/Prototypes/Roles/Jobs/Cargo/cargo_technician.yml b/Resources/Prototypes/Roles/Jobs/Cargo/cargo_technician.yml
index 4270145345..8e52b4c3c3 100644
--- a/Resources/Prototypes/Roles/Jobs/Cargo/cargo_technician.yml
+++ b/Resources/Prototypes/Roles/Jobs/Cargo/cargo_technician.yml
@@ -3,7 +3,6 @@
name: job-name-cargotech
description: job-description-cargotech
playTimeTracker: JobCargoTechnician
- startingGear: CargoTechGear
icon: "JobIconCargoTechnician"
supervisors: job-supervisors-qm
access:
@@ -14,3 +13,10 @@
- type: startingGear
id: CargoTechGear
+ equipment:
+ jumpsuit: ClothingUniformJumpsuitCargo
+ back: ClothingBackpackCargoFilled
+ shoes: ClothingShoesColorBlack
+ id: CargoPDA
+ ears: ClothingHeadsetCargo
+ pocket1: AppraisalTool
diff --git a/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml b/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml
index 64e312f239..5ece5e04a3 100644
--- a/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml
+++ b/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml
@@ -13,7 +13,6 @@
- !type:OverallPlaytimeRequirement
time: 108000
weight: 10
- startingGear: QuartermasterGear
icon: "JobIconQuarterMaster"
arrivalNotificationPrototype: QuartermasterArrivalNotification
supervisors: job-supervisors-captain
@@ -37,3 +36,10 @@
- type: startingGear
id: QuartermasterGear
+ equipment:
+ head: ClothingHeadHatQMsoft
+ jumpsuit: ClothingUniformJumpsuitQM
+ back: ClothingBackpackQuartermasterFilled
+ shoes: ClothingShoesColorBrown
+ id: QuartermasterPDA
+ ears: ClothingHeadsetQM
diff --git a/Resources/Prototypes/Roles/Jobs/Cargo/salvage_specialist.yml b/Resources/Prototypes/Roles/Jobs/Cargo/salvage_specialist.yml
index fc4410d3fc..2f218b7727 100644
--- a/Resources/Prototypes/Roles/Jobs/Cargo/salvage_specialist.yml
+++ b/Resources/Prototypes/Roles/Jobs/Cargo/salvage_specialist.yml
@@ -10,7 +10,6 @@
- !type:OverallPlaytimeRequirement
time: 36000 #10 hrs
icon: "JobIconShaftMiner"
- startingGear: SalvageSpecialistGear
supervisors: job-supervisors-qm
access:
- Cargo
@@ -20,3 +19,9 @@
- type: startingGear
id: SalvageSpecialistGear
+ equipment:
+ jumpsuit: ClothingUniformJumpsuitSalvageSpecialist
+ back: ClothingBackpackSalvageFilled
+ shoes: ClothingShoesBootsSalvage
+ id: SalvagePDA
+ ears: ClothingHeadsetCargo
diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/assistant.yml b/Resources/Prototypes/Roles/Jobs/Civilian/assistant.yml
index 4333af2619..fc9b66a48c 100644
--- a/Resources/Prototypes/Roles/Jobs/Civilian/assistant.yml
+++ b/Resources/Prototypes/Roles/Jobs/Civilian/assistant.yml
@@ -3,7 +3,6 @@
name: job-name-passenger
description: job-description-passenger
playTimeTracker: JobPassenger
- startingGear: PassengerGear
icon: "JobIconPassenger"
supervisors: job-supervisors-everyone
access:
@@ -11,3 +10,9 @@
- type: startingGear
id: PassengerGear
+ equipment:
+ jumpsuit: ClothingUniformJumpsuitColorGrey
+ back: ClothingBackpackFilled
+ shoes: ClothingShoesColorBlack
+ id: PassengerPDA
+ ears: ClothingHeadsetGrey
diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/bartender.yml b/Resources/Prototypes/Roles/Jobs/Civilian/bartender.yml
index 5c0301413c..9af996fa45 100644
--- a/Resources/Prototypes/Roles/Jobs/Civilian/bartender.yml
+++ b/Resources/Prototypes/Roles/Jobs/Civilian/bartender.yml
@@ -7,7 +7,6 @@
- !type:DepartmentTimeRequirement
department: Civilian
time: 1800
- startingGear: BartenderGear
icon: "JobIconBartender"
supervisors: job-supervisors-hop
access:
@@ -20,3 +19,9 @@
- type: startingGear
id: BartenderGear
+ equipment:
+ jumpsuit: ClothingUniformJumpsuitBartender
+ back: ClothingBackpackFilled
+ shoes: ClothingShoesColorBlack
+ id: BartenderPDA
+ ears: ClothingHeadsetService
diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/botanist.yml b/Resources/Prototypes/Roles/Jobs/Civilian/botanist.yml
index 1472276802..813ada1025 100644
--- a/Resources/Prototypes/Roles/Jobs/Civilian/botanist.yml
+++ b/Resources/Prototypes/Roles/Jobs/Civilian/botanist.yml
@@ -3,7 +3,6 @@
name: job-name-botanist
description: job-description-botanist
playTimeTracker: JobBotanist
- startingGear: BotanistGear
icon: "JobIconBotanist"
supervisors: job-supervisors-hop
access:
@@ -16,3 +15,9 @@
- type: startingGear
id: BotanistGear
+ equipment:
+ jumpsuit: ClothingUniformJumpsuitHydroponics
+ back: ClothingBackpackHydroponicsFilled
+ shoes: ClothingShoesColorBrown
+ id: BotanistPDA
+ ears: ClothingHeadsetService
diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/chaplain.yml b/Resources/Prototypes/Roles/Jobs/Civilian/chaplain.yml
index 5ee56901b3..0e4af4377c 100644
--- a/Resources/Prototypes/Roles/Jobs/Civilian/chaplain.yml
+++ b/Resources/Prototypes/Roles/Jobs/Civilian/chaplain.yml
@@ -3,7 +3,9 @@
name: job-name-chaplain
description: job-description-chaplain
playTimeTracker: JobChaplain
- startingGear: ChaplainGear
+ requirements:
+ - !type:OverallPlaytimeRequirement
+ time: 18000 #5 hrs
icon: "JobIconChaplain"
supervisors: job-supervisors-hop
access:
@@ -16,3 +18,10 @@
- type: startingGear
id: ChaplainGear
+ equipment:
+ neck: ClothingNeckNecklaceSilver
+ jumpsuit: ClothingUniformJumpsuitChaplain
+ back: ClothingBackpackChaplainFilled
+ shoes: ClothingShoesColorBlack
+ id: ChaplainPDA
+ ears: ClothingHeadsetService
diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/chef.yml b/Resources/Prototypes/Roles/Jobs/Civilian/chef.yml
index 16e1aceb47..3d59c26b47 100644
--- a/Resources/Prototypes/Roles/Jobs/Civilian/chef.yml
+++ b/Resources/Prototypes/Roles/Jobs/Civilian/chef.yml
@@ -7,7 +7,6 @@
- !type:DepartmentTimeRequirement
department: Civilian
time: 1800
- startingGear: ChefGear
icon: "JobIconChef"
supervisors: job-supervisors-hop
access:
@@ -20,3 +19,9 @@
- type: startingGear
id: ChefGear
+ equipment:
+ jumpsuit: ClothingUniformJumpsuitChef
+ back: ClothingBackpackFilled
+ shoes: ClothingShoesColorBlack
+ id: ChefPDA
+ ears: ClothingHeadsetService
diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/clown.yml b/Resources/Prototypes/Roles/Jobs/Civilian/clown.yml
index e2f709f5bf..3322b9a948 100644
--- a/Resources/Prototypes/Roles/Jobs/Civilian/clown.yml
+++ b/Resources/Prototypes/Roles/Jobs/Civilian/clown.yml
@@ -3,7 +3,6 @@
name: job-name-clown
description: job-description-clown
playTimeTracker: JobClown
- startingGear: ClownGear
icon: "JobIconClown"
supervisors: job-supervisors-hop
access:
@@ -27,3 +26,12 @@
- type: startingGear
id: ClownGear
+ equipment:
+ jumpsuit: ClothingUniformJumpsuitClown
+ back: ClothingBackpackClownFilled
+ shoes: ClothingShoesClown
+ mask: ClothingMaskClown
+ pocket1: BikeHorn
+ pocket2: ClownRecorder
+ id: ClownPDA
+ ears: ClothingHeadsetService
diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/janitor.yml b/Resources/Prototypes/Roles/Jobs/Civilian/janitor.yml
index f10d47093b..04be6c56df 100644
--- a/Resources/Prototypes/Roles/Jobs/Civilian/janitor.yml
+++ b/Resources/Prototypes/Roles/Jobs/Civilian/janitor.yml
@@ -3,7 +3,6 @@
name: job-name-janitor
description: job-description-janitor
playTimeTracker: JobJanitor
- startingGear: JanitorGear
icon: "JobIconJanitor"
supervisors: job-supervisors-hop
access:
@@ -18,9 +17,19 @@
- type: startingGear
id: JanitorGear
equipment:
- shoes: ClothingShoesGaloshes
+ jumpsuit: ClothingUniformJumpsuitJanitor
+ back: ClothingBackpackFilled
+ shoes: ClothingShoesColorPurple
id: JanitorPDA
ears: ClothingHeadsetService
- type: startingGear
id: JanitorMaidGear
+ equipment:
+ jumpsuit: ClothingUniformJumpskirtJanimaid
+ back: ClothingBackpackFilled
+ id: JanitorPDA
+ gloves: ClothingHandsGlovesJanitor
+ head: ClothingHeadHatCatEars
+ ears: ClothingHeadsetService
+ belt: ClothingBeltJanitorFilled
diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/librarian.yml b/Resources/Prototypes/Roles/Jobs/Civilian/librarian.yml
index dd591b8631..fcf2e77923 100644
--- a/Resources/Prototypes/Roles/Jobs/Civilian/librarian.yml
+++ b/Resources/Prototypes/Roles/Jobs/Civilian/librarian.yml
@@ -3,7 +3,6 @@
name: job-name-librarian
description: job-description-librarian
playTimeTracker: JobLibrarian
- startingGear: LibrarianGear
icon: "JobIconLibrarian"
supervisors: job-supervisors-hop
access:
@@ -12,3 +11,11 @@
- type: startingGear
id: LibrarianGear
+ equipment:
+ jumpsuit: ClothingUniformJumpsuitLibrarian
+ back: ClothingBackpackLibrarianFilled
+ shoes: ClothingShoesBootsLaceup
+ id: LibrarianPDA
+ ears: ClothingHeadsetService
+ inhand:
+ - BriefcaseBrownFilled
diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/mime.yml b/Resources/Prototypes/Roles/Jobs/Civilian/mime.yml
index 6776f86a0c..377138701b 100644
--- a/Resources/Prototypes/Roles/Jobs/Civilian/mime.yml
+++ b/Resources/Prototypes/Roles/Jobs/Civilian/mime.yml
@@ -6,7 +6,6 @@
requirements:
- !type:OverallPlaytimeRequirement
time: 14400 #4 hrs
- startingGear: MimeGear
icon: "JobIconMime"
supervisors: job-supervisors-hop
access:
@@ -20,6 +19,16 @@
- type: startingGear
id: MimeGear
+ equipment:
+ jumpsuit: ClothingUniformJumpsuitMime
+ back: ClothingBackpackMimeFilled
+ head: ClothingHeadHatBeret
+ gloves: ClothingHandsGlovesLatex
+ shoes: ClothingShoesColorWhite
+ pocket1: CrayonMime
+ mask: ClothingMaskMime
+ id: MimePDA
+ ears: ClothingHeadsetService
- type: entity
id: ActionMimeInvisibleWall
diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/musician.yml b/Resources/Prototypes/Roles/Jobs/Civilian/musician.yml
index 4f96f362c4..a57a5b09cd 100644
--- a/Resources/Prototypes/Roles/Jobs/Civilian/musician.yml
+++ b/Resources/Prototypes/Roles/Jobs/Civilian/musician.yml
@@ -3,7 +3,6 @@
name: job-name-musician
description: job-description-musician
playTimeTracker: JobMusician
- startingGear: MusicianGear
icon: "JobIconMusician"
supervisors: job-supervisors-hire
access:
@@ -16,3 +15,9 @@
- type: startingGear
id: MusicianGear
+ equipment:
+ jumpsuit: ClothingUniformJumpsuitMusician
+ back: ClothingBackpackMusicianFilled
+ shoes: ClothingShoesBootsLaceup
+ id: MusicianPDA
+ ears: ClothingHeadsetService
diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/service_worker.yml b/Resources/Prototypes/Roles/Jobs/Civilian/service_worker.yml
index 0a562464a7..53b77b8a3c 100644
--- a/Resources/Prototypes/Roles/Jobs/Civilian/service_worker.yml
+++ b/Resources/Prototypes/Roles/Jobs/Civilian/service_worker.yml
@@ -3,7 +3,6 @@
name: job-name-serviceworker
description: job-description-serviceworker
playTimeTracker: JobServiceWorker
- startingGear: ServiceWorkerGear
icon: "JobIconServiceWorker"
supervisors: job-supervisors-service
access:
@@ -16,3 +15,9 @@
- type: startingGear
id: ServiceWorkerGear
+ equipment:
+ jumpsuit: ClothingUniformJumpsuitBartender
+ back: ClothingBackpackFilled
+ shoes: ClothingShoesColorBlack
+ id: ServiceWorkerPDA
+ ears: ClothingHeadsetService
diff --git a/Resources/Prototypes/Roles/Jobs/Command/captain.yml b/Resources/Prototypes/Roles/Jobs/Command/captain.yml
index c6effd9d74..c34ea2a466 100644
--- a/Resources/Prototypes/Roles/Jobs/Command/captain.yml
+++ b/Resources/Prototypes/Roles/Jobs/Command/captain.yml
@@ -17,7 +17,6 @@
department: Command
time: 18000 # 15 3
weight: 20
- startingGear: CaptainGear
icon: "JobIconCaptain"
requireAdminNotify: true
joinNotifyCrew: true
@@ -37,3 +36,9 @@
- type: startingGear
id: CaptainGear
+ equipment:
+ jumpsuit: ClothingUniformJumpsuitCaptain
+ back: ClothingBackpackCaptainFilled
+ shoes: ClothingShoesBootsLaceup
+ id: CaptainPDA
+ ears: ClothingHeadsetAltCommand
diff --git a/Resources/Prototypes/Roles/Jobs/Command/centcom_official.yml b/Resources/Prototypes/Roles/Jobs/Command/centcom_official.yml
index 3f29e44422..37c73f38e0 100644
--- a/Resources/Prototypes/Roles/Jobs/Command/centcom_official.yml
+++ b/Resources/Prototypes/Roles/Jobs/Command/centcom_official.yml
@@ -27,6 +27,3 @@
belt: WeaponPistolN1984
pocket1: BoxFolderBlack
pocket2: PenCentcom
- underwearb: ClothingUnderwearBottomBoxersWhite # White-Underwear
- underweart: ClothingUnderwearTopBraWhite # White-Underwear
- underwearb: ClothingUnderwearBottomPantiesWhite # White-Underwear
diff --git a/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml b/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml
index 422904db4a..29f3a99afe 100644
--- a/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml
+++ b/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml
@@ -17,7 +17,6 @@
department: Command
time: 3600
weight: 20
- startingGear: HoPGear
icon: "JobIconHeadOfPersonnel"
requireAdminNotify: true
arrivalNotificationPrototype: HeadOfPersonnelArrivalNotification
@@ -60,3 +59,9 @@
- type: startingGear
id: HoPGear
+ equipment:
+ jumpsuit: ClothingUniformJumpsuitHoP
+ back: ClothingBackpackHOPFilled
+ shoes: ClothingShoesColorBrown
+ id: HoPPDA
+ ears: ClothingHeadsetAltCommand
diff --git a/Resources/Prototypes/Roles/Jobs/Engineering/atmospheric_technician.yml b/Resources/Prototypes/Roles/Jobs/Engineering/atmospheric_technician.yml
index e33bba35aa..24be7b5358 100644
--- a/Resources/Prototypes/Roles/Jobs/Engineering/atmospheric_technician.yml
+++ b/Resources/Prototypes/Roles/Jobs/Engineering/atmospheric_technician.yml
@@ -7,7 +7,6 @@
- !type:DepartmentTimeRequirement
department: Engineering
time: 54000 # 15 hrs
- startingGear: AtmosphericTechnicianGear
icon: "JobIconAtmosphericTechnician"
supervisors: job-supervisors-ce
canBeAntag: true
@@ -19,3 +18,9 @@
- type: startingGear
id: AtmosphericTechnicianGear
+ equipment:
+ jumpsuit: ClothingUniformJumpsuitAtmos
+ back: ClothingBackpackAtmosphericsFilled
+ shoes: ClothingShoesColorWhite
+ id: AtmosPDA
+ ears: ClothingHeadsetEngineering
diff --git a/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml b/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml
index 1035754080..6849bf25e3 100644
--- a/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml
+++ b/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml
@@ -13,7 +13,6 @@
- !type:OverallPlaytimeRequirement
time: 108000
weight: 10
- startingGear: ChiefEngineerGear
icon: "JobIconChiefEngineer"
requireAdminNotify: true
arrivalNotificationPrototype: ChiefEngineerArrivalNotification
@@ -39,3 +38,9 @@
- type: startingGear
id: ChiefEngineerGear
+ equipment:
+ jumpsuit: ClothingUniformJumpsuitChiefEngineer
+ back: ClothingBackpackChiefEngineerFilled
+ shoes: ClothingShoesColorBrown
+ id: CEPDA
+ ears: ClothingHeadsetCE
diff --git a/Resources/Prototypes/Roles/Jobs/Engineering/senior_engineer.yml b/Resources/Prototypes/Roles/Jobs/Engineering/senior_engineer.yml
index b144755387..5741f8ac01 100644
--- a/Resources/Prototypes/Roles/Jobs/Engineering/senior_engineer.yml
+++ b/Resources/Prototypes/Roles/Jobs/Engineering/senior_engineer.yml
@@ -13,7 +13,6 @@
- !type:DepartmentTimeRequirement
department: Engineering
time: 216000 # 60 hrs
- startingGear: SeniorEngineerGear
icon: "JobIconSeniorEngineer"
supervisors: job-supervisors-ce
canBeAntag: false
@@ -28,3 +27,9 @@
- type: startingGear
id: SeniorEngineerGear
+ equipment:
+ jumpsuit: ClothingUniformJumpsuitSeniorEngineer
+ back: ClothingBackpackEngineeringFilled
+ shoes: ClothingShoesBootsMag
+ id: SeniorEngineerPDA
+ ears: ClothingHeadsetEngineering
diff --git a/Resources/Prototypes/Roles/Jobs/Engineering/station_engineer.yml b/Resources/Prototypes/Roles/Jobs/Engineering/station_engineer.yml
index 08c01873e4..569f063a2f 100644
--- a/Resources/Prototypes/Roles/Jobs/Engineering/station_engineer.yml
+++ b/Resources/Prototypes/Roles/Jobs/Engineering/station_engineer.yml
@@ -7,7 +7,6 @@
- !type:DepartmentTimeRequirement
department: Engineering
time: 14400 #4 hrs
- startingGear: StationEngineerGear
icon: "JobIconStationEngineer"
supervisors: job-supervisors-ce
access:
@@ -19,3 +18,9 @@
- type: startingGear
id: StationEngineerGear
+ equipment:
+ jumpsuit: ClothingUniformJumpsuitEngineering
+ back: ClothingBackpackEngineeringFilled
+ shoes: ClothingShoesBootsWork
+ id: EngineerPDA
+ ears: ClothingHeadsetEngineering
diff --git a/Resources/Prototypes/Roles/Jobs/Engineering/technical_assistant.yml b/Resources/Prototypes/Roles/Jobs/Engineering/technical_assistant.yml
index 3e8148ae26..e014755e86 100644
--- a/Resources/Prototypes/Roles/Jobs/Engineering/technical_assistant.yml
+++ b/Resources/Prototypes/Roles/Jobs/Engineering/technical_assistant.yml
@@ -1,4 +1,4 @@
-- type: job
+- type: job
id: TechnicalAssistant
name: job-name-technical-assistant
description: job-description-technical-assistant
@@ -10,7 +10,6 @@
department: Engineering
time: 54000 #15 hrs
inverted: true # stop playing intern if you're good at engineering!
- startingGear: TechnicalAssistantGear
icon: "JobIconTechnicalAssistant"
supervisors: job-supervisors-engineering
canBeAntag: true
@@ -21,3 +20,10 @@
- type: startingGear
id: TechnicalAssistantGear
+ equipment:
+ jumpsuit: ClothingUniformJumpsuitColorYellow
+ back: ClothingBackpackEngineeringFilled
+ shoes: ClothingShoesBootsWork
+ id: TechnicalAssistantPDA
+ ears: ClothingHeadsetEngineering
+ pocket1: BookEngineersHandbook
diff --git a/Resources/Prototypes/Roles/Jobs/Fun/cluwne.yml b/Resources/Prototypes/Roles/Jobs/Fun/cluwne.yml
index e85b495f94..512da68e11 100644
--- a/Resources/Prototypes/Roles/Jobs/Fun/cluwne.yml
+++ b/Resources/Prototypes/Roles/Jobs/Fun/cluwne.yml
@@ -8,9 +8,6 @@
id: CluwnePDA
gloves: ClothingHandsGlovesCluwne
pocket1: CluwneHorn
- underwearb: ClothingUnderwearBottomBoxersWhite # White-Underwear
- underweart: ClothingUnderwearTopBraWhite # White-Underwear
- underwearb: ClothingUnderwearBottomPantiesWhite # White-Underwear
- type: startingGear
id: HoloClownGear
diff --git a/Resources/Prototypes/Roles/Jobs/Fun/cult_startinggear.yml b/Resources/Prototypes/Roles/Jobs/Fun/cult_startinggear.yml
index a380c57270..7d9074c68d 100644
--- a/Resources/Prototypes/Roles/Jobs/Fun/cult_startinggear.yml
+++ b/Resources/Prototypes/Roles/Jobs/Fun/cult_startinggear.yml
@@ -1,21 +1,15 @@
#Cult outfit startingGear definitions.
-- type: startingGear
- id: CultLeaderGear
- equipment:
- jumpsuit: ClothingUniformJumpsuitColorBlack
- back: ClothingBackpackFilled
- head: ClothingHeadHelmetCult
- neck: BedsheetCult
- outerClothing: ClothingOuterArmorCult
- shoes: ClothingShoesCult
- id: PassengerPDA
- ears: ClothingHeadsetService
- underwearb: ClothingUnderwearBottomBoxersWhite # White-Underwear
- underweart: ClothingUnderwearTopBraWhite # White-Underwear
- underwearb: ClothingUnderwearBottomPantiesWhite # White-Underwear
- innerClothingSkirt: ClothingUniformJumpskirtColorBlack
- satchel: ClothingBackpackSatchelFilled
- duffelbag: ClothingBackpackDuffelFilled
+
+# - type: startingGear
+# id: CultLeaderGear
- type: startingGear
id: CultistGear
+ equipment:
+ jumpsuit: ClothingUniformJumpsuitColorBlack
+ back: ClothingBackpackFilled
+ head: ClothingHeadHatHoodCulthood
+ outerClothing: ClothingOuterRobesCult
+ shoes: ClothingShoesColorRed
+ id: PassengerPDA
+ ears: ClothingHeadsetService
diff --git a/Resources/Prototypes/Roles/Jobs/Fun/emergencyresponseteam.yml b/Resources/Prototypes/Roles/Jobs/Fun/emergencyresponseteam.yml
index 1f9193b58a..22d0a4d77f 100644
--- a/Resources/Prototypes/Roles/Jobs/Fun/emergencyresponseteam.yml
+++ b/Resources/Prototypes/Roles/Jobs/Fun/emergencyresponseteam.yml
@@ -29,9 +29,6 @@
belt: ClothingBeltSecurityFilled
pocket1: WeaponPistolN1984Nonlethal
pocket2: FlashlightSeclite
- underwearb: ClothingUnderwearBottomBoxersWhite # White-Underwear
- underweart: ClothingUnderwearTopBraWhite # White-Underwear
- underwearb: ClothingUnderwearBottomPantiesWhite # White-Underwear
- type: startingGear
id: ERTLeaderGearEVA
@@ -49,9 +46,6 @@
belt: ClothingBeltSecurityFilled
pocket1: WeaponPistolN1984Nonlethal
pocket2: FlashlightSeclite
- underwearb: ClothingUnderwearBottomBoxersWhite # White-Underwear
- underweart: ClothingUnderwearTopBraWhite # White-Underwear
- underwearb: ClothingUnderwearBottomPantiesWhite # White-Underwear
- type: startingGear
id: ERTLeaderGearEVALecter
@@ -69,9 +63,6 @@
belt: ClothingBeltSecurityFilled
pocket1: MagazineRifle
pocket2: MagazineRifle
- underwearb: ClothingUnderwearBottomBoxersWhite # White-Underwear
- underweart: ClothingUnderwearTopBraWhite # White-Underwear
- underwearb: ClothingUnderwearBottomPantiesWhite # White-Underwear
inhand:
- AirTankFilled
@@ -161,9 +152,6 @@
belt: ClothingBeltChiefEngineerFilled
pocket1: Flare
pocket2: GasAnalyzer
- underwearb: ClothingUnderwearBottomBoxersWhite # White-Underwear
- underweart: ClothingUnderwearTopBraWhite # White-Underwear
- underwearb: ClothingUnderwearBottomPantiesWhite # White-Underwear
- type: startingGear
id: ERTEngineerGearEVA
@@ -181,9 +169,6 @@
belt: ClothingBeltChiefEngineerFilled
pocket1: Flare
pocket2: GasAnalyzer
- underwearb: ClothingUnderwearBottomBoxersWhite # White-Underwear
- underweart: ClothingUnderwearTopBraWhite # White-Underwear
- underwearb: ClothingUnderwearBottomPantiesWhite # White-Underwear
# Security
- type: job
@@ -216,9 +201,6 @@
belt: ClothingBeltSecurityFilled
pocket1: WeaponPistolMk58Nonlethal
pocket2: FlashlightSeclite
- underwearb: ClothingUnderwearBottomBoxersWhite # White-Underwear
- underweart: ClothingUnderwearTopBraWhite # White-Underwear
- underwearb: ClothingUnderwearBottomPantiesWhite # White-Underwear
- type: startingGear
id: ERTSecurityGearEVA
@@ -236,9 +218,6 @@
belt: ClothingBeltSecurityFilled
pocket1: WeaponPistolMk58Nonlethal
pocket2: FlashlightSeclite
- underwearb: ClothingUnderwearBottomBoxersWhite # White-Underwear
- underweart: ClothingUnderwearTopBraWhite # White-Underwear
- underwearb: ClothingUnderwearBottomPantiesWhite # White-Underwear
- type: startingGear
id: ERTSecurityGearEVALecter
@@ -256,9 +235,6 @@
belt: ClothingBeltSecurityFilled
pocket1: MagazineRifle
pocket2: MagazineRifle
- underwearb: ClothingUnderwearBottomBoxersWhite # White-Underwear
- underweart: ClothingUnderwearTopBraWhite # White-Underwear
- underwearb: ClothingUnderwearBottomPantiesWhite # White-Underwear
inhand:
- AirTankFilled
@@ -292,9 +268,6 @@
ears: ClothingHeadsetAltCentCom
belt: ClothingBeltMedicalFilled
pocket1: Flare
- underwearb: ClothingUnderwearBottomBoxersWhite # White-Underwear
- underweart: ClothingUnderwearTopBraWhite # White-Underwear
- underwearb: ClothingUnderwearBottomPantiesWhite # White-Underwear
- type: startingGear
id: ERTMedicalGearEVA
@@ -311,9 +284,6 @@
ears: ClothingHeadsetAltCentCom
belt: ClothingBeltMedicalFilled
pocket1: Flare
- underwearb: ClothingUnderwearBottomBoxersWhite # White-Underwear
- underweart: ClothingUnderwearTopBraWhite # White-Underwear
- underwearb: ClothingUnderwearBottomPantiesWhite # White-Underwear
# Janitor
- type: job
@@ -344,9 +314,6 @@
ears: ClothingHeadsetAltCentCom
belt: ClothingBeltJanitorFilled
pocket1: Flare
- underwearb: ClothingUnderwearBottomBoxersWhite # White-Underwear
- underweart: ClothingUnderwearTopBraWhite # White-Underwear
- underwearb: ClothingUnderwearBottomPantiesWhite # White-Underwear
- type: startingGear
id: ERTJanitorGearEVA
@@ -362,6 +329,3 @@
ears: ClothingHeadsetAltCentCom
belt: ClothingBeltJanitorFilled
pocket1: Flare
- underwearb: ClothingUnderwearBottomBoxersWhite # White-Underwear
- underweart: ClothingUnderwearTopBraWhite # White-Underwear
- underwearb: ClothingUnderwearBottomPantiesWhite # White-Underwear
diff --git a/Resources/Prototypes/Roles/Jobs/Justice/inspector.yml b/Resources/Prototypes/Roles/Jobs/Justice/inspector.yml
index fa5df5d75a..e4fdf5d1c8 100644
--- a/Resources/Prototypes/Roles/Jobs/Justice/inspector.yml
+++ b/Resources/Prototypes/Roles/Jobs/Justice/inspector.yml
@@ -12,7 +12,6 @@
- !type:DepartmentTimeRequirement
department: Security
time: 36000 #10 hrs
- startingGear: InspectorGear
icon: "JobIconInspector"
arrivalNotificationPrototype: InspectorArrivalNotification
supervisors: job-supervisors-captain
@@ -24,3 +23,11 @@
- type: startingGear
id: InspectorGear
+ equipment:
+ jumpsuit: ClothingUniformJumpsuitWhiteInspectorFormal
+ back: ClothingBackpackFilled
+ shoes: ClothingShoesBootsInspector
+ id: InspectorPDA
+ ears: ClothingHeadsetAltSecurity
+ inhand:
+ - BriefcaseBrownFilled
diff --git a/Resources/Prototypes/Roles/Jobs/Justice/lawyer.yml b/Resources/Prototypes/Roles/Jobs/Justice/lawyer.yml
index b09986a17c..ff61c08baf 100644
--- a/Resources/Prototypes/Roles/Jobs/Justice/lawyer.yml
+++ b/Resources/Prototypes/Roles/Jobs/Justice/lawyer.yml
@@ -9,7 +9,6 @@
- !type:DepartmentTimeRequirement
department: Security
time: 18000 #5 hr
- startingGear: LawyerGear
icon: "JobIconLawyer"
supervisors: job-supervisors-inspector
access:
@@ -20,3 +19,11 @@
- type: startingGear
id: LawyerGear
+ equipment:
+ jumpsuit: ClothingUniformJumpsuitLawyerBlack
+ back: ClothingBackpackLawyerFilled
+ shoes: ClothingShoesBootsLaceup
+ id: LawyerPDA
+ ears: ClothingHeadsetSecurity
+ inhand:
+ - BriefcaseBrownFilled
diff --git a/Resources/Prototypes/Roles/Jobs/Medical/chemist.yml b/Resources/Prototypes/Roles/Jobs/Medical/chemist.yml
index 3129564811..cbd5da6cf0 100644
--- a/Resources/Prototypes/Roles/Jobs/Medical/chemist.yml
+++ b/Resources/Prototypes/Roles/Jobs/Medical/chemist.yml
@@ -7,7 +7,6 @@
- !type:DepartmentTimeRequirement
department: Medical
time: 14400 #4 hrs
- startingGear: ChemistGear
icon: "JobIconChemist"
supervisors: job-supervisors-cmo
access:
@@ -17,3 +16,9 @@
- type: startingGear
id: ChemistGear
+ equipment:
+ jumpsuit: ClothingUniformJumpsuitChemistry
+ back: ClothingBackpackChemistryFilled
+ shoes: ClothingShoesColorWhite
+ id: ChemistryPDA
+ ears: ClothingHeadsetMedical
diff --git a/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml b/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml
index fcba5438d4..f659057461 100644
--- a/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml
+++ b/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml
@@ -12,7 +12,6 @@
- !type:OverallPlaytimeRequirement
time: 108000
weight: 10
- startingGear: CMOGear
icon: "JobIconChiefMedicalOfficer"
arrivalNotificationPrototype: ChiefMedicalOfficerArrivalNotification
requireAdminNotify: true
@@ -36,3 +35,9 @@
- type: startingGear
id: CMOGear
+ equipment:
+ jumpsuit: ClothingUniformJumpsuitCMO
+ back: ClothingBackpackCMOFilled
+ shoes: ClothingShoesColorBrown
+ id: CMOPDA
+ ears: ClothingHeadsetCMO
diff --git a/Resources/Prototypes/Roles/Jobs/Medical/medical_doctor.yml b/Resources/Prototypes/Roles/Jobs/Medical/medical_doctor.yml
index 68609610ba..f2153a03d8 100644
--- a/Resources/Prototypes/Roles/Jobs/Medical/medical_doctor.yml
+++ b/Resources/Prototypes/Roles/Jobs/Medical/medical_doctor.yml
@@ -7,7 +7,6 @@
- !type:DepartmentTimeRequirement
department: Medical
time: 14400 #4 hrs
- startingGear: DoctorGear
icon: "JobIconMedicalDoctor"
supervisors: job-supervisors-cmo
access:
@@ -18,3 +17,9 @@
- type: startingGear
id: DoctorGear
+ equipment:
+ jumpsuit: ClothingUniformJumpsuitMedicalDoctor
+ back: ClothingBackpackMedicalFilled
+ shoes: ClothingShoesColorWhite
+ id: MedicalPDA
+ ears: ClothingHeadsetMedical
diff --git a/Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml b/Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml
index c26e7d5b47..c1adec1c37 100644
--- a/Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml
+++ b/Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml
@@ -1,4 +1,4 @@
-- type: job
+- type: job
id: MedicalIntern
name: job-name-intern
description: job-description-intern
@@ -8,7 +8,6 @@
department: Medical
time: 54000 # 15 hrs
inverted: true # stop playing intern if you're good at med!
- startingGear: MedicalInternGear
icon: "JobIconMedicalIntern"
supervisors: job-supervisors-medicine
canBeAntag: true
@@ -18,3 +17,10 @@
- type: startingGear
id: MedicalInternGear
+ equipment:
+ jumpsuit: ClothingUniformJumpsuitColorWhite
+ back: ClothingBackpackMedicalFilled
+ shoes: ClothingShoesColorWhite
+ id: MedicalInternPDA
+ ears: ClothingHeadsetMedical
+ pocket1: BookMedicalReferenceBook
diff --git a/Resources/Prototypes/Roles/Jobs/Medical/paramedic.yml b/Resources/Prototypes/Roles/Jobs/Medical/paramedic.yml
index f3dc6a9c0f..fb0b971868 100644
--- a/Resources/Prototypes/Roles/Jobs/Medical/paramedic.yml
+++ b/Resources/Prototypes/Roles/Jobs/Medical/paramedic.yml
@@ -9,7 +9,6 @@
time: 14400 #4 hrs
- !type:OverallPlaytimeRequirement
time: 54000 # 15 hrs
- startingGear: ParamedicGear
icon: "JobIconParamedic"
supervisors: job-supervisors-cmo
access:
@@ -20,3 +19,9 @@
- type: startingGear
id: ParamedicGear
+ equipment:
+ jumpsuit: ClothingUniformJumpsuitParamedic
+ back: ClothingBackpackParamedicFilled
+ shoes: ClothingShoesColorBlue
+ id: ParamedicPDA
+ ears: ClothingHeadsetMedical
diff --git a/Resources/Prototypes/Roles/Jobs/Medical/senior_physician.yml b/Resources/Prototypes/Roles/Jobs/Medical/senior_physician.yml
index 147ca100ca..ddad1b9043 100644
--- a/Resources/Prototypes/Roles/Jobs/Medical/senior_physician.yml
+++ b/Resources/Prototypes/Roles/Jobs/Medical/senior_physician.yml
@@ -13,7 +13,6 @@
- !type:DepartmentTimeRequirement
department: Medical
time: 216000 # 60 hrs
- startingGear: SeniorPhysicianGear
icon: "JobIconSeniorPhysician"
supervisors: job-supervisors-cmo
canBeAntag: false
@@ -27,3 +26,9 @@
- type: startingGear
id: SeniorPhysicianGear
+ equipment:
+ jumpsuit: ClothingUniformJumpsuitSeniorPhysician
+ back: ClothingBackpackMedicalFilled
+ shoes: ClothingShoesColorBlack
+ id: SeniorPhysicianPDA
+ ears: ClothingHeadsetMedical
diff --git a/Resources/Prototypes/Roles/Jobs/Science/research_assistant.yml b/Resources/Prototypes/Roles/Jobs/Science/research_assistant.yml
index 01637d2121..bb24408c7a 100644
--- a/Resources/Prototypes/Roles/Jobs/Science/research_assistant.yml
+++ b/Resources/Prototypes/Roles/Jobs/Science/research_assistant.yml
@@ -8,7 +8,6 @@
department: Science
time: 54000 #15 hrs
inverted: true # stop playing intern if you're good at science!
- startingGear: ResearchAssistantGear
icon: "JobIconResearchAssistant"
supervisors: job-supervisors-science
canBeAntag: true
@@ -18,3 +17,10 @@
- type: startingGear
id: ResearchAssistantGear
+ equipment:
+ jumpsuit: ClothingUniformJumpsuitColorWhite
+ back: ClothingBackpackScienceFilled
+ shoes: ClothingShoesColorWhite
+ id: ResearchAssistantPDA
+ ears: ClothingHeadsetScience
+ pocket1: BookScientistsGuidebook
diff --git a/Resources/Prototypes/Roles/Jobs/Science/research_director.yml b/Resources/Prototypes/Roles/Jobs/Science/research_director.yml
index e0d7b96483..9498e1a9e0 100644
--- a/Resources/Prototypes/Roles/Jobs/Science/research_director.yml
+++ b/Resources/Prototypes/Roles/Jobs/Science/research_director.yml
@@ -10,7 +10,6 @@
- !type:OverallPlaytimeRequirement
time: 108000
weight: 10
- startingGear: ResearchDirectorGear
icon: "JobIconResearchDirector"
requireAdminNotify: true
arrivalNotificationPrototype: ResearchDirectorArrivalNotification
@@ -33,3 +32,9 @@
- type: startingGear
id: ResearchDirectorGear
+ equipment:
+ jumpsuit: ClothingUniformJumpsuitResearchDirector
+ back: ClothingBackpackResearchDirectorFilled
+ shoes: ClothingShoesColorBrown
+ id: RnDPDA
+ ears: ClothingHeadsetRD
diff --git a/Resources/Prototypes/Roles/Jobs/Science/scientist.yml b/Resources/Prototypes/Roles/Jobs/Science/scientist.yml
index b5d6ff9f81..662473f2f7 100644
--- a/Resources/Prototypes/Roles/Jobs/Science/scientist.yml
+++ b/Resources/Prototypes/Roles/Jobs/Science/scientist.yml
@@ -7,7 +7,6 @@
- !type:DepartmentTimeRequirement
department: Science
time: 14400 #4 hrs
- startingGear: ScientistGear
icon: "JobIconScientist"
supervisors: job-supervisors-rd
access:
@@ -16,3 +15,9 @@
- type: startingGear
id: ScientistGear
+ equipment:
+ jumpsuit: ClothingUniformJumpsuitScientist
+ back: ClothingBackpackScienceFilled
+ shoes: ClothingShoesColorWhite
+ id: SciencePDA
+ ears: ClothingHeadsetScience
diff --git a/Resources/Prototypes/Roles/Jobs/Science/senior_researcher.yml b/Resources/Prototypes/Roles/Jobs/Science/senior_researcher.yml
index b8219b2361..880579a6c4 100644
--- a/Resources/Prototypes/Roles/Jobs/Science/senior_researcher.yml
+++ b/Resources/Prototypes/Roles/Jobs/Science/senior_researcher.yml
@@ -7,7 +7,6 @@
- !type:DepartmentTimeRequirement
department: Science
time: 216000 #60 hrs
- startingGear: SeniorResearcherGear
icon: "JobIconSeniorResearcher"
supervisors: job-supervisors-rd
canBeAntag: false
@@ -20,3 +19,9 @@
- type: startingGear
id: SeniorResearcherGear
+ equipment:
+ jumpsuit: ClothingUniformJumpsuitSeniorResearcher
+ back: ClothingBackpackScienceFilled
+ shoes: ClothingShoesColorBlack
+ id: SeniorResearcherPDA
+ ears: ClothingHeadsetScience
diff --git a/Resources/Prototypes/Roles/Jobs/Security/detective.yml b/Resources/Prototypes/Roles/Jobs/Security/detective.yml
index 8563e4fe21..4fd6c14a98 100644
--- a/Resources/Prototypes/Roles/Jobs/Security/detective.yml
+++ b/Resources/Prototypes/Roles/Jobs/Security/detective.yml
@@ -7,7 +7,6 @@
- !type:DepartmentTimeRequirement
department: Security
time: 54000 # 15 hours
- startingGear: DetectiveGear
icon: "JobIconDetective"
supervisors: job-supervisors-hos
whitelistedSpecies:
@@ -27,3 +26,9 @@
- type: startingGear
id: DetectiveGear
+ equipment:
+ jumpsuit: ClothingUniformJumpsuitDetective
+ back: ClothingBackpackSecurityFilledDetective
+ shoes: ClothingShoesBootsCombatFilled
+ id: DetectivePDA
+ ears: ClothingHeadsetSecurity
diff --git a/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml b/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml
index 0699c26725..eb2f6dee42 100644
--- a/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml
+++ b/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml
@@ -13,7 +13,6 @@
- !type:OverallPlaytimeRequirement
time: 108000
weight: 10
- startingGear: HoSGear
icon: "JobIconHeadOfSecurity"
requireAdminNotify: true
arrivalNotificationPrototype: HeadOfSecurityArrivalNotification
@@ -41,3 +40,9 @@
- type: startingGear
id: HoSGear
+ equipment:
+ jumpsuit: ClothingUniformJumpsuitHoS
+ back: ClothingBackpackHOSFilled
+ shoes: ClothingShoesBootsCombatFilled
+ id: HoSPDA
+ ears: ClothingHeadsetAltSecurity
diff --git a/Resources/Prototypes/Roles/Jobs/Security/security_cadet.yml b/Resources/Prototypes/Roles/Jobs/Security/security_cadet.yml
index aaea1d2465..c199f9bf06 100644
--- a/Resources/Prototypes/Roles/Jobs/Security/security_cadet.yml
+++ b/Resources/Prototypes/Roles/Jobs/Security/security_cadet.yml
@@ -10,7 +10,6 @@
department: Security
time: 54000 #15 hrs
inverted: true # stop playing intern if you're good at security!
- startingGear: SecurityCadetGear
icon: "JobIconSecurityCadet"
supervisors: job-supervisors-security
whitelistedSpecies:
@@ -29,3 +28,10 @@
- type: startingGear
id: SecurityCadetGear
+ equipment:
+ jumpsuit: ClothingUniformJumpsuitColorRed
+ back: ClothingBackpackSecurityFilled
+ shoes: ClothingShoesBootsCombatFilled
+ id: SecurityCadetPDA
+ ears: ClothingHeadsetSecurity
+ pocket1: BookSecurity
diff --git a/Resources/Prototypes/Roles/Jobs/Security/security_officer.yml b/Resources/Prototypes/Roles/Jobs/Security/security_officer.yml
index d262cab46e..3fb4fda7db 100644
--- a/Resources/Prototypes/Roles/Jobs/Security/security_officer.yml
+++ b/Resources/Prototypes/Roles/Jobs/Security/security_officer.yml
@@ -7,7 +7,6 @@
- !type:DepartmentTimeRequirement
department: Security
time: 36000 #10 hrs
- startingGear: SecurityOfficerGear
icon: "JobIconSecurityOfficer"
supervisors: job-supervisors-hos
whitelistedSpecies:
@@ -26,3 +25,9 @@
- type: startingGear
id: SecurityOfficerGear
+ equipment:
+ jumpsuit: ClothingUniformJumpsuitSec
+ back: ClothingBackpackSecurityFilled
+ shoes: ClothingShoesBootsCombatFilled
+ id: SecurityPDA
+ ears: ClothingHeadsetSecurity
diff --git a/Resources/Prototypes/Roles/Jobs/Security/senior_officer.yml b/Resources/Prototypes/Roles/Jobs/Security/senior_officer.yml
index 3b14f24d16..a519e086dd 100644
--- a/Resources/Prototypes/Roles/Jobs/Security/senior_officer.yml
+++ b/Resources/Prototypes/Roles/Jobs/Security/senior_officer.yml
@@ -16,7 +16,6 @@
- !type:DepartmentTimeRequirement
department: Security
time: 216000 # 60 hrs
- startingGear: SeniorOfficerGear
icon: "JobIconSeniorOfficer"
supervisors: job-supervisors-hos
whitelistedSpecies:
@@ -35,3 +34,9 @@
- type: startingGear
id: SeniorOfficerGear
+ equipment:
+ jumpsuit: ClothingUniformJumpsuitSeniorOfficer
+ back: ClothingBackpackSecurityFilled
+ shoes: ClothingShoesBootsCombatFilled
+ id: SeniorOfficerPDA
+ ears: ClothingHeadsetSecurity
diff --git a/Resources/Prototypes/Roles/Jobs/Security/warden.yml b/Resources/Prototypes/Roles/Jobs/Security/warden.yml
index f09eef8d4d..aaad42d38a 100644
--- a/Resources/Prototypes/Roles/Jobs/Security/warden.yml
+++ b/Resources/Prototypes/Roles/Jobs/Security/warden.yml
@@ -7,7 +7,6 @@
- !type:RoleTimeRequirement
role: JobSecurityOfficer
time: 36000 #10 hrs
- startingGear: WardenGear
icon: "JobIconWarden"
supervisors: job-supervisors-hos
whitelistedSpecies:
@@ -28,3 +27,9 @@
- type: startingGear
id: WardenGear
+ equipment:
+ jumpsuit: ClothingUniformJumpsuitWarden
+ back: ClothingBackpackSecurityFilled
+ shoes: ClothingShoesBootsCombatFilled
+ id: WardenPDA
+ ears: ClothingHeadsetSecurity
diff --git a/Resources/Prototypes/Roles/Jobs/Wildcards/boxer.yml b/Resources/Prototypes/Roles/Jobs/Wildcards/boxer.yml
index d45169a087..f5940185ed 100644
--- a/Resources/Prototypes/Roles/Jobs/Wildcards/boxer.yml
+++ b/Resources/Prototypes/Roles/Jobs/Wildcards/boxer.yml
@@ -3,7 +3,6 @@
name: job-name-boxer
description: job-description-boxer
playTimeTracker: JobBoxer
- startingGear: BoxerGear
icon: "JobIconBoxer"
supervisors: job-supervisors-hop
access:
@@ -12,3 +11,11 @@
- type: startingGear
id: BoxerGear
+ equipment:
+ jumpsuit: UniformShortsRed
+ back: ClothingBackpackFilled
+ id: BoxerPDA
+ ears: ClothingHeadsetService
+ gloves: ClothingHandsGlovesBoxingRed
+ shoes: ClothingShoesColorRed
+ belt: ClothingBeltChampion
diff --git a/Resources/Prototypes/Roles/Jobs/Wildcards/psychologist.yml b/Resources/Prototypes/Roles/Jobs/Wildcards/psychologist.yml
index 10001280ea..853f80c3f1 100644
--- a/Resources/Prototypes/Roles/Jobs/Wildcards/psychologist.yml
+++ b/Resources/Prototypes/Roles/Jobs/Wildcards/psychologist.yml
@@ -3,7 +3,6 @@
name: job-name-psychologist
description: job-description-psychologist
playTimeTracker: JobPsychologist
- startingGear: PsychologistGear
icon: "JobIconPsychologist"
supervisors: job-supervisors-cmo
access:
@@ -14,3 +13,9 @@
- type: startingGear
id: PsychologistGear
+ equipment:
+ jumpsuit: ClothingUniformJumpsuitPsychologist
+ back: ClothingBackpackMedicalFilled
+ shoes: ClothingShoesLeather
+ id: PsychologistPDA
+ ears: ClothingHeadsetMedical
diff --git a/Resources/Prototypes/Roles/Jobs/Wildcards/reporter.yml b/Resources/Prototypes/Roles/Jobs/Wildcards/reporter.yml
index cff1750f50..a379aca94d 100644
--- a/Resources/Prototypes/Roles/Jobs/Wildcards/reporter.yml
+++ b/Resources/Prototypes/Roles/Jobs/Wildcards/reporter.yml
@@ -3,7 +3,6 @@
name: job-name-reporter
description: job-description-reporter
playTimeTracker: JobReporter
- startingGear: ReporterGear
icon: "JobIconReporter"
supervisors: job-supervisors-hop
access:
@@ -12,3 +11,9 @@
- type: startingGear
id: ReporterGear
+ equipment:
+ jumpsuit: ClothingUniformJumpsuitReporter
+ back: ClothingBackpackFilled
+ shoes: ClothingShoesColorWhite
+ id: ReporterPDA
+ ears: ClothingHeadsetService
diff --git a/Resources/Prototypes/Roles/Jobs/Wildcards/zookeeper.yml b/Resources/Prototypes/Roles/Jobs/Wildcards/zookeeper.yml
index 016f1f7b07..fae96f2755 100644
--- a/Resources/Prototypes/Roles/Jobs/Wildcards/zookeeper.yml
+++ b/Resources/Prototypes/Roles/Jobs/Wildcards/zookeeper.yml
@@ -3,7 +3,6 @@
name: job-name-zookeeper
description: job-description-zookeeper
playTimeTracker: JobZookeeper
- startingGear: ZookeeperGear
icon: "JobIconZookeeper"
supervisors: job-supervisors-hop
access:
@@ -12,3 +11,10 @@
- type: startingGear
id: ZookeeperGear
+ equipment:
+ jumpsuit: ClothingUniformJumpsuitSafari
+ back: ClothingBackpackFilled
+ head: ClothingHeadSafari
+ shoes: ClothingShoesColorWhite
+ id: ZookeeperPDA
+ ears: ClothingHeadsetService
diff --git a/Resources/Prototypes/_White/JukeboxAndStuff/jukebox_stuff.yml b/Resources/Prototypes/_White/JukeboxAndStuff/jukebox_stuff.yml
index de5bcb675a..c763495388 100644
--- a/Resources/Prototypes/_White/JukeboxAndStuff/jukebox_stuff.yml
+++ b/Resources/Prototypes/_White/JukeboxAndStuff/jukebox_stuff.yml
@@ -36,7 +36,7 @@
description: Mini cassette player
suffix: Empty
components:
- - type: Jukebox
+ - type: WhiteJukebox
maxAudioRange: 5
rolloffFactor: 3.5
- type: Sprite
diff --git a/Resources/Textures/White/Interface/Alerts/offer_item.rsi/meta.json b/Resources/Textures/White/Interface/Alerts/offer_item.rsi/meta.json
new file mode 100644
index 0000000000..c5710a3a19
--- /dev/null
+++ b/Resources/Textures/White/Interface/Alerts/offer_item.rsi/meta.json
@@ -0,0 +1,14 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "https://github.com/ss220-space/Paradise/blob/master220/icons/mob/screen_alert.dmi",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "offer_item"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Resources/Textures/White/Interface/Alerts/offer_item.rsi/offer_item.png b/Resources/Textures/White/Interface/Alerts/offer_item.rsi/offer_item.png
new file mode 100644
index 0000000000..ce39fa9229
Binary files /dev/null and b/Resources/Textures/White/Interface/Alerts/offer_item.rsi/offer_item.png differ
diff --git a/Resources/Textures/White/Interface/give_item.rsi/give_item.png b/Resources/Textures/White/Interface/give_item.rsi/give_item.png
new file mode 100644
index 0000000000..26bc88fb22
Binary files /dev/null and b/Resources/Textures/White/Interface/give_item.rsi/give_item.png differ
diff --git a/Resources/Textures/White/Interface/give_item.rsi/meta.json b/Resources/Textures/White/Interface/give_item.rsi/meta.json
new file mode 100644
index 0000000000..a5d317bba8
--- /dev/null
+++ b/Resources/Textures/White/Interface/give_item.rsi/meta.json
@@ -0,0 +1,14 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "https://github.com/ss220-space/Paradise/blob/master220/icons/misc/mouse_icons/give_item.dmi",
+ "size": {
+ "x": 64,
+ "y": 64
+ },
+ "states": [
+ {
+ "name": "give_item"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Resources/keybinds.yml b/Resources/keybinds.yml
index 480f5a54ae..4b52ffe059 100644
--- a/Resources/keybinds.yml
+++ b/Resources/keybinds.yml
@@ -258,6 +258,9 @@ binds:
type: State
key: V
mod1: Shift
+- function: OfferItem
+ type: State
+ key: F
- function: ShowDebugConsole
type: State
key: Tilde