Merge remote-tracking branch 'upstream/master' into ups
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -50,6 +50,7 @@
|
||||
StyleClasses="LabelKeyText"/>
|
||||
<CheckBox Name="ShowHeldItemCheckBox" Text="{Loc 'ui-options-show-held-item'}" />
|
||||
<CheckBox Name="ShowCombatModeIndicatorsCheckBox" Text="{Loc 'ui-options-show-combat-mode-indicators'}" />
|
||||
<CheckBox Name="ShowOfferModeIndicatorsCheckBox" Text="{Loc 'ui-options-show-offer-mode-indicators'}" />
|
||||
<Label Text="{Loc 'ui-options-general-storage'}"
|
||||
FontColorOverride="{xNamespace:Static s:StyleNano.NanoGold}"
|
||||
StyleClasses="LabelKeyText"/>
|
||||
|
||||
@@ -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 &&
|
||||
|
||||
@@ -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<SpriteSystem>();
|
||||
_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);
|
||||
}
|
||||
}
|
||||
52
Content.Client/_White/OfferItem/OfferItemSystem.cs
Normal file
52
Content.Client/_White/OfferItem/OfferItemSystem.cs
Normal file
@@ -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<OfferItemIndicatorsOverlay>();
|
||||
|
||||
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<OfferItemIndicatorsOverlay>();
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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;
|
||||
|
||||
24
Content.Server/_White/Alert/Click/AcceptOffer.cs
Normal file
24
Content.Server/_White/Alert/Click/AcceptOffer.cs
Normal file
@@ -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;
|
||||
|
||||
/// <summary>
|
||||
/// Accepting the offer and receive item
|
||||
/// </summary>
|
||||
[UsedImplicitly]
|
||||
[DataDefinition]
|
||||
public sealed partial class AcceptOffer : IAlertClick
|
||||
{
|
||||
public void AlertClicked(EntityUid player)
|
||||
{
|
||||
var entManager = IoCManager.Resolve<IEntityManager>();
|
||||
|
||||
if (entManager.TryGetComponent(player, out OfferItemComponent? offerItem))
|
||||
{
|
||||
entManager.System<OfferItemSystem>().Receive(player, offerItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
83
Content.Server/_White/OfferItem/OfferItemSystem.cs
Normal file
83
Content.Server/_White/OfferItem/OfferItemSystem.cs
Normal file
@@ -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<OfferItemComponent>();
|
||||
while (query.MoveNext(out var uid, out var offerItem))
|
||||
{
|
||||
if (!TryComp<HandsComponent>(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);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Accepting the offer and receive item
|
||||
/// </summary>
|
||||
public void Receive(EntityUid uid, OfferItemComponent? component = null)
|
||||
{
|
||||
if (!Resolve(uid, ref component) ||
|
||||
!TryComp<OfferItemComponent>(component.Target, out var offerItem) ||
|
||||
offerItem.Hand == null ||
|
||||
component.Target == null ||
|
||||
!TryComp<HandsComponent>(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);
|
||||
}
|
||||
}
|
||||
@@ -179,6 +179,12 @@ public sealed class WizardSpellsSystem : EntitySystem
|
||||
if (!userHasMind)
|
||||
return;
|
||||
|
||||
SwapComponent<WizardComponent>(uid, target);
|
||||
SwapComponent<RevolutionaryComponent>(uid, target);
|
||||
SwapComponent<HeadRevolutionaryComponent>(uid, target);
|
||||
SwapComponent<PentagramComponent>(uid, target);
|
||||
SwapComponent<CultistComponent>(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<WizardComponent>(uid, target);
|
||||
SwapComponent<RevolutionaryComponent>(uid, target);
|
||||
SwapComponent<HeadRevolutionaryComponent>(uid, target);
|
||||
SwapComponent<PentagramComponent>(uid, target);
|
||||
SwapComponent<CultistComponent>(uid, target);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -159,7 +159,8 @@ public sealed class WizardRuleSystem : GameRuleSystem<WizardRuleComponent>
|
||||
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<WizardRuleComponent>
|
||||
}
|
||||
}
|
||||
|
||||
private void AddRole(EntityUid mindId, MindComponent mind, WizardRuleComponent wizardRule)
|
||||
private bool AddRole(EntityUid mindId, MindComponent mind, WizardRuleComponent wizardRule)
|
||||
{
|
||||
if (_roles.MindHasRole<WizardRoleComponent>(mindId))
|
||||
return;
|
||||
return false;
|
||||
|
||||
wizardRule.WizardMinds.Add(mindId);
|
||||
|
||||
@@ -182,6 +183,8 @@ public sealed class WizardRuleSystem : GameRuleSystem<WizardRuleComponent>
|
||||
_roles.MindAddRole(mindId, new WizardRoleComponent {PrototypeId = role});
|
||||
|
||||
GiveObjectives(mindId, mind, wizardRule);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private void GiveObjectives(EntityUid mindId, MindComponent mind, WizardRuleComponent wizardRule)
|
||||
@@ -280,14 +283,18 @@ public sealed class WizardRuleSystem : GameRuleSystem<WizardRuleComponent>
|
||||
private HumanoidCharacterProfile SetupWizardEntity(
|
||||
EntityUid mob,
|
||||
StartingGearPrototype gear,
|
||||
bool endRoundOnDeath)
|
||||
bool endRoundOnDeath,
|
||||
bool randomPtofile = true)
|
||||
{
|
||||
EnsureComp<WizardComponent>(mob, out var component);
|
||||
component.EndRoundOnDeath = endRoundOnDeath;
|
||||
EnsureComp<GlobalAntagonistComponent>(mob).AntagonistPrototype = "globalAntagonistWizard";
|
||||
|
||||
if (randomPtofile)
|
||||
{
|
||||
var random = IoCManager.Resolve<IRobustRandom>();
|
||||
var profile = HumanoidCharacterProfile.RandomWithSpecies().WithAge(random.Next(component.MinAge, component.MaxAge));
|
||||
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");
|
||||
@@ -304,6 +311,7 @@ public sealed class WizardRuleSystem : GameRuleSystem<WizardRuleComponent>
|
||||
_humanoid.LoadProfile(mob, profile);
|
||||
|
||||
_metaData.SetEntityName(mob, GetRandom(component.Name, ""));
|
||||
}
|
||||
|
||||
_stationSpawning.EquipStartingGear(mob, gear);
|
||||
|
||||
|
||||
@@ -69,7 +69,8 @@ namespace Content.Shared.Alert
|
||||
SuitPower,
|
||||
BorgHealth,
|
||||
BorgCrit,
|
||||
BorgDead
|
||||
BorgDead,
|
||||
Offer // WD EDITS
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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<AirlockComponent>(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);
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ public sealed partial class ToolTileCompatibleComponent : Component
|
||||
/// The time it takes to modify the tile.
|
||||
/// </summary>
|
||||
[DataField, ViewVariables(VVAccess.ReadWrite)]
|
||||
public TimeSpan Delay = TimeSpan.FromSeconds(1);
|
||||
public TimeSpan Delay = TimeSpan.FromSeconds(0);
|
||||
|
||||
/// <summary>
|
||||
/// Whether or not the tile being modified must be unobstructed
|
||||
|
||||
26
Content.Shared/_White/OfferItem/OfferItemComponent.cs
Normal file
26
Content.Shared/_White/OfferItem/OfferItemComponent.cs
Normal file
@@ -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;
|
||||
}
|
||||
@@ -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<SharedOfferItemSystem>();
|
||||
}
|
||||
|
||||
public override void Shutdown()
|
||||
{
|
||||
base.Shutdown();
|
||||
|
||||
CommandBinds.Unregister<SharedOfferItemSystem>();
|
||||
}
|
||||
|
||||
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<OfferItemComponent>(uid, out var offerItem))
|
||||
return;
|
||||
|
||||
if (!TryComp<HandsComponent>(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);
|
||||
}
|
||||
}
|
||||
158
Content.Shared/_White/OfferItem/SharedOfferItemSystem.cs
Normal file
158
Content.Shared/_White/OfferItem/SharedOfferItemSystem.cs
Normal file
@@ -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<OfferItemComponent, InteractUsingEvent>(SetInReceiveMode);
|
||||
SubscribeLocalEvent<OfferItemComponent, MoveEvent>(OnMove);
|
||||
|
||||
InitializeInteractions();
|
||||
}
|
||||
|
||||
|
||||
private void SetInReceiveMode(EntityUid uid, OfferItemComponent component, InteractUsingEvent args)
|
||||
{
|
||||
if (!TryComp<OfferItemComponent>(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);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Resets the <see cref="OfferItemComponent"/> of the user and the target
|
||||
/// </summary>
|
||||
protected void UnOffer(EntityUid uid, OfferItemComponent component)
|
||||
{
|
||||
if (!TryComp<HandsComponent>(uid, out var hands) || hands.ActiveHand == null)
|
||||
return;
|
||||
|
||||
|
||||
if (TryComp<OfferItemComponent>(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);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Cancels the transfer of the item
|
||||
/// </summary>
|
||||
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<HandsComponent>(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);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns true if <see cref="OfferItemComponent.IsInOfferMode"/> = true
|
||||
/// </summary>
|
||||
protected bool IsInOfferMode(EntityUid? entity, OfferItemComponent? component = null)
|
||||
{
|
||||
return entity != null && Resolve(entity.Value, ref component, false) && component.IsInOfferMode;
|
||||
}
|
||||
}
|
||||
@@ -19,6 +19,13 @@ public sealed class WhiteCVars
|
||||
public static readonly CVarDef<bool> ShowTrails =
|
||||
CVarDef.Create("white.show_trails", true, CVar.CLIENTONLY | CVar.ARCHIVE);
|
||||
|
||||
/*
|
||||
* Offer Indicator
|
||||
*/
|
||||
|
||||
public static readonly CVarDef<bool> OfferModeIndicatorsPointShow =
|
||||
CVarDef.Create("white.offer_mode_indicators_point_show", true, CVar.ARCHIVE | CVar.CLIENTONLY);
|
||||
|
||||
/*
|
||||
* Wiki rules
|
||||
*/
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
9
Resources/Locale/en-US/interaction/offer-item-system.ftl
Normal file
9
Resources/Locale/en-US/interaction/offer-item-system.ftl
Normal file
@@ -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
|
||||
@@ -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 = Муз. инструменты
|
||||
|
||||
@@ -113,3 +113,6 @@ alerts-changeling-chemicals-desc = Наши химикаты.
|
||||
|
||||
alerts-cult-buff-name = Усиление
|
||||
alerts-cult-buff-desc = Подготовка заклинаний крови занимает гораздо меньше времени, и вы не теряете столько крови при этом. Также вы неуязвимы к низкому давлению.
|
||||
|
||||
alerts-offer-name = Предложение
|
||||
alerts-offer-desc = Кто-то предлагает вам предмет.
|
||||
|
||||
@@ -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 = Умная экипировка на пояс
|
||||
|
||||
9
Resources/Locale/ru-RU/interaction/offer-item-system.ftl
Normal file
9
Resources/Locale/ru-RU/interaction/offer-item-system.ftl
Normal file
@@ -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}
|
||||
@@ -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
|
||||
|
||||
@@ -248,6 +248,7 @@
|
||||
- WetFloorSign
|
||||
- HolosignProjector
|
||||
- Plunger
|
||||
- Bucket
|
||||
components:
|
||||
- LightReplacer
|
||||
- SmokeOnTrigger
|
||||
|
||||
@@ -1338,8 +1338,6 @@
|
||||
id: MobMonkeySyndicateAgentNukeops # Reinforcement exclusive to nukeops uplink
|
||||
parent: MobBaseSyndicateMonkey
|
||||
suffix: NukeOps
|
||||
components:
|
||||
- type: NukeOperative
|
||||
|
||||
- type: entity
|
||||
name: kobold
|
||||
|
||||
@@ -279,7 +279,6 @@
|
||||
parent: BorgChassisSyndicateAssault
|
||||
suffix: Battery, Module, Operative
|
||||
components:
|
||||
- type: NukeOperative
|
||||
- type: ContainerFill
|
||||
containers:
|
||||
borg_brain:
|
||||
|
||||
@@ -279,6 +279,7 @@
|
||||
- type: InteractionPanel
|
||||
actionListPrototype: Humanoid
|
||||
- type: RoleplayInfo
|
||||
- type: OfferItem # WD-EDIT
|
||||
|
||||
- type: entity
|
||||
save: false
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
- Belt
|
||||
- type: Gun
|
||||
resetOnHandSelected: false
|
||||
fireRate: 0.5
|
||||
fireRate: 0.4
|
||||
soundGunshot:
|
||||
path: /Audio/Weapons/click.ogg
|
||||
- type: RechargeBasicEntityAmmo
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
- BaseStationAllEventsEligible
|
||||
- BaseStationNanotrasen
|
||||
- BaseRandomStation
|
||||
- BaseStationTeleportLocation
|
||||
noSpawn: true
|
||||
components:
|
||||
- type: Transform
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -19,8 +19,6 @@
|
||||
conditions:
|
||||
- !type:StorageWelded
|
||||
welded: false
|
||||
- !type:Locked
|
||||
locked: false
|
||||
completed:
|
||||
- !type:SpawnPrototype
|
||||
prototype: SheetSteel1
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -27,6 +27,3 @@
|
||||
belt: WeaponPistolN1984
|
||||
pocket1: BoxFolderBlack
|
||||
pocket2: PenCentcom
|
||||
underwearb: ClothingUnderwearBottomBoxersWhite # White-Underwear
|
||||
underweart: ClothingUnderwearTopBraWhite # White-Underwear
|
||||
underwearb: ClothingUnderwearBottomPantiesWhite # White-Underwear
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
description: Mini cassette player
|
||||
suffix: Empty
|
||||
components:
|
||||
- type: Jukebox
|
||||
- type: WhiteJukebox
|
||||
maxAudioRange: 5
|
||||
rolloffFactor: 3.5
|
||||
- type: Sprite
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 556 B |
BIN
Resources/Textures/White/Interface/give_item.rsi/give_item.png
Normal file
BIN
Resources/Textures/White/Interface/give_item.rsi/give_item.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 7.1 KiB |
14
Resources/Textures/White/Interface/give_item.rsi/meta.json
Normal file
14
Resources/Textures/White/Interface/give_item.rsi/meta.json
Normal file
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user