Merge branch 'master' into ed-17-07-2024-dungenagain

This commit is contained in:
Ed
2024-07-20 17:12:04 +03:00
committed by GitHub
159 changed files with 1039 additions and 391 deletions

View File

@@ -129,7 +129,7 @@ csharp_indent_braces = false
csharp_indent_switch_labels = true
# Space preferences
csharp_space_after_cast = true
csharp_space_after_cast = false
csharp_space_after_colon_in_inheritance_clause = true
csharp_space_after_comma = true
csharp_space_after_dot = false

View File

@@ -14,7 +14,6 @@ namespace Content.Client.Administration.UI.Tabs.ObjectsTab;
public sealed partial class ObjectsTab : Control
{
[Dependency] private readonly IEntityManager _entityManager = default!;
[Dependency] private readonly IGameTiming _timing = default!;
private readonly Color _altColor = Color.FromHex("#292B38");
private readonly Color _defaultColor = Color.FromHex("#2F2F3B");

View File

@@ -26,7 +26,6 @@ namespace Content.Client.Construction
{
[Dependency] private readonly IPlayerManager _playerManager = default!;
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
[Dependency] private readonly SharedInteractionSystem _interactionSystem = default!;
[Dependency] private readonly ExamineSystemShared _examineSystem = default!;
[Dependency] private readonly SharedTransformSystem _transformSystem = default!;
[Dependency] private readonly PopupSystem _popupSystem = default!;

View File

@@ -0,0 +1,29 @@
using Content.Shared.IconSmoothing;
using Robust.Client.GameObjects;
namespace Content.Client.IconSmoothing;
public sealed class ClientRandomIconSmoothSystem : SharedRandomIconSmoothSystem
{
[Dependency] private readonly IconSmoothSystem _iconSmooth = default!;
[Dependency] private readonly AppearanceSystem _appearance = default!;
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<RandomIconSmoothComponent, AppearanceChangeEvent>(OnAppearanceChange);
}
private void OnAppearanceChange(Entity<RandomIconSmoothComponent> ent, ref AppearanceChangeEvent args)
{
if (!TryComp<IconSmoothComponent>(ent, out var smooth))
return;
if (!_appearance.TryGetData<string>(ent, RandomIconSmoothState.State, out var state, args.Component))
return;
smooth.StateBase = state;
_iconSmooth.SetStateBase(ent, smooth, state);
}
}

View File

@@ -30,7 +30,7 @@ namespace Content.Client.IconSmoothing
/// Prepended to the RSI state.
/// </summary>
[ViewVariables(VVAccess.ReadWrite), DataField("base")]
public string StateBase { get; private set; } = string.Empty;
public string StateBase { get; set; } = string.Empty;
[DataField("shader", customTypeSerializer:typeof(PrototypeIdSerializer<ShaderPrototype>))]
public string? Shader;

View File

@@ -55,6 +55,33 @@ namespace Content.Client.IconSmoothing
if (component.Mode != IconSmoothingMode.Corners || !TryComp(uid, out SpriteComponent? sprite))
return;
SetCornerLayers(sprite, component);
if (component.Shader != null)
{
sprite.LayerSetShader(CornerLayers.SE, component.Shader);
sprite.LayerSetShader(CornerLayers.NE, component.Shader);
sprite.LayerSetShader(CornerLayers.NW, component.Shader);
sprite.LayerSetShader(CornerLayers.SW, component.Shader);
}
}
public void SetStateBase(EntityUid uid, IconSmoothComponent component, string newState)
{
if (!TryComp<SpriteComponent>(uid, out var sprite))
return;
component.StateBase = newState;
SetCornerLayers(sprite, component);
}
private void SetCornerLayers(SpriteComponent sprite, IconSmoothComponent component)
{
sprite.LayerMapRemove(CornerLayers.SE);
sprite.LayerMapRemove(CornerLayers.NE);
sprite.LayerMapRemove(CornerLayers.NW);
sprite.LayerMapRemove(CornerLayers.SW);
var state0 = $"{component.StateBase}0";
sprite.LayerMapSet(CornerLayers.SE, sprite.AddLayerState(state0));
sprite.LayerSetDirOffset(CornerLayers.SE, DirectionOffset.None);
@@ -64,14 +91,6 @@ namespace Content.Client.IconSmoothing
sprite.LayerSetDirOffset(CornerLayers.NW, DirectionOffset.Flip);
sprite.LayerMapSet(CornerLayers.SW, sprite.AddLayerState(state0));
sprite.LayerSetDirOffset(CornerLayers.SW, DirectionOffset.Clockwise);
if (component.Shader != null)
{
sprite.LayerSetShader(CornerLayers.SE, component.Shader);
sprite.LayerSetShader(CornerLayers.NE, component.Shader);
sprite.LayerSetShader(CornerLayers.NW, component.Shader);
sprite.LayerSetShader(CornerLayers.SW, component.Shader);
}
}
private void OnShutdown(EntityUid uid, IconSmoothComponent component, ComponentShutdown args)

View File

@@ -21,7 +21,6 @@ public sealed partial class LatheMenu : DefaultWindow
{
[Dependency] private readonly IEntityManager _entityManager = default!;
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
[Dependency] private readonly IResourceCache _resources = default!;
private EntityUid _owner;
private readonly SpriteSystem _spriteSystem;

View File

@@ -17,7 +17,6 @@ namespace Content.Client.VendingMachines.UI
{
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
[Dependency] private readonly IEntityManager _entityManager = default!;
[Dependency] private readonly IGameTiming _timing = default!;
private readonly Dictionary<EntProtoId, EntityUid> _dummies = [];

View File

@@ -22,8 +22,6 @@ namespace Content.Server.Ame.EntitySystems;
public sealed class AmeControllerSystem : EntitySystem
{
[Dependency] private readonly IAdminLogManager _adminLogger = default!;
[Dependency] private readonly IAdminManager _adminManager = default!;
[Dependency] private readonly IChatManager _chatManager = default!;
[Dependency] private readonly IGameTiming _gameTiming = default!;
[Dependency] private readonly AppearanceSystem _appearanceSystem = default!;
[Dependency] private readonly SharedAudioSystem _audioSystem = default!;

View File

@@ -60,7 +60,6 @@ public sealed partial class ChatSystem : SharedChatSystem
[Dependency] private readonly StationSystem _stationSystem = default!;
[Dependency] private readonly MobStateSystem _mobStateSystem = default!;
[Dependency] private readonly SharedAudioSystem _audio = default!;
[Dependency] private readonly SharedInteractionSystem _interactionSystem = default!;
[Dependency] private readonly ReplacementAccentSystem _wordreplacement = default!;
[Dependency] private readonly EntityWhitelistSystem _whitelistSystem = default!;
[Dependency] private readonly ExamineSystemShared _examineSystem = default!;

View File

@@ -29,7 +29,6 @@ public sealed class CluwneSystem : EntitySystem
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
[Dependency] private readonly ChatSystem _chat = default!;
[Dependency] private readonly AutoEmoteSystem _autoEmote = default!;
[Dependency] private readonly MetaDataSystem _metaData = default!;
[Dependency] private readonly NameModifierSystem _nameMod = default!;
public override void Initialize()

View File

@@ -60,12 +60,6 @@ namespace Content.Server.Damage.Systems
_sharedCameraRecoil.KickCamera(args.Target, direction);
}
}
// TODO: If more stuff touches this then handle it after.
if (TryComp<PhysicsComponent>(uid, out var physics))
{
_thrownItem.LandComponent(args.Thrown, args.Component, physics, false);
}
}
private void OnDamageExamine(EntityUid uid, DamageOtherOnHitComponent component, ref DamageExamineEvent args)

View File

@@ -423,11 +423,11 @@ public sealed class NetworkConfiguratorSystem : SharedNetworkConfiguratorSystem
if (Delay(configurator))
return;
if (!targetUid.HasValue || !configurator.ActiveDeviceLink.HasValue || !TryComp(userUid, out ActorComponent? actor) || !AccessCheck(targetUid.Value, userUid, configurator))
if (!targetUid.HasValue || !configurator.ActiveDeviceLink.HasValue || !AccessCheck(targetUid.Value, userUid, configurator))
return;
_uiSystem.OpenUi(configuratorUid, NetworkConfiguratorUiKey.Link, actor.PlayerSession);
_uiSystem.OpenUi(configuratorUid, NetworkConfiguratorUiKey.Link, userUid);
configurator.DeviceLinkTarget = targetUid;

View File

@@ -16,7 +16,6 @@ namespace Content.Server.Doors.Systems
public sealed class FirelockSystem : SharedFirelockSystem
{
[Dependency] private readonly SharedDoorSystem _doorSystem = default!;
[Dependency] private readonly AtmosAlarmableSystem _atmosAlarmable = default!;
[Dependency] private readonly AtmosphereSystem _atmosSystem = default!;
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
[Dependency] private readonly SharedMapSystem _mapping = default!;

View File

@@ -24,7 +24,6 @@ public sealed partial class DragonSystem : EntitySystem
[Dependency] private readonly MovementSpeedModifierSystem _movement = default!;
[Dependency] private readonly NpcFactionSystem _faction = default!;
[Dependency] private readonly PopupSystem _popup = default!;
[Dependency] private readonly RoleSystem _role = default!;
[Dependency] private readonly SharedActionsSystem _actions = default!;
[Dependency] private readonly SharedAudioSystem _audio = default!;
[Dependency] private readonly SharedTransformSystem _transform = default!;

View File

@@ -13,7 +13,6 @@ public sealed class LoadMapRuleSystem : GameRuleSystem<LoadMapRuleComponent>
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
[Dependency] private readonly MapSystem _map = default!;
[Dependency] private readonly MapLoaderSystem _mapLoader = default!;
[Dependency] private readonly MetaDataSystem _metaData = default!;
[Dependency] private readonly TransformSystem _transform = default!;
[Dependency] private readonly GridPreloaderSystem _gridPreloader = default!;

View File

@@ -21,7 +21,6 @@ public sealed class SecretRuleSystem : GameRuleSystem<SecretRuleComponent>
[Dependency] private readonly IRobustRandom _random = default!;
[Dependency] private readonly IConfigurationManager _configurationManager = default!;
[Dependency] private readonly IAdminLogManager _adminLogger = default!;
[Dependency] private readonly IChatManager _chatManager = default!;
[Dependency] private readonly IComponentFactory _compFact = default!;
private string _ruleCompName = default!;

View File

@@ -12,10 +12,8 @@ namespace Content.Server.GameTicking.Rules;
public sealed class ThiefRuleSystem : GameRuleSystem<ThiefRuleComponent>
{
[Dependency] private readonly IRobustRandom _random = default!;
[Dependency] private readonly MindSystem _mindSystem = default!;
[Dependency] private readonly AntagSelectionSystem _antag = default!;
[Dependency] private readonly ObjectivesSystem _objectives = default!;
public override void Initialize()
{

View File

@@ -29,7 +29,6 @@ public sealed class TraitorRuleSystem : GameRuleSystem<TraitorRuleComponent>
[Dependency] private readonly MindSystem _mindSystem = default!;
[Dependency] private readonly SharedRoleSystem _roleSystem = default!;
[Dependency] private readonly SharedJobSystem _jobs = default!;
[Dependency] private readonly ObjectivesSystem _objectives = default!;
public override void Initialize()
{

View File

@@ -0,0 +1,26 @@
using Content.Shared.IconSmoothing;
using Robust.Shared.Random;
namespace Content.Server.IconSmoothing;
public sealed partial class RandomIconSmoothSystem : SharedRandomIconSmoothSystem
{
[Dependency] private readonly IRobustRandom _random = default!;
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<RandomIconSmoothComponent, MapInitEvent>(OnMapInit);
}
private void OnMapInit(Entity<RandomIconSmoothComponent> ent, ref MapInitEvent args)
{
if (ent.Comp.RandomStates.Count == 0)
return;
var state = _random.Pick(ent.Comp.RandomStates);
_appearance.SetData(ent, RandomIconSmoothState.State, state);
}
}

View File

@@ -30,7 +30,6 @@ public sealed partial class InstrumentSystem : SharedInstrumentSystem
[Dependency] private readonly UserInterfaceSystem _bui = default!;
[Dependency] private readonly PopupSystem _popup = default!;
[Dependency] private readonly TransformSystem _transform = default!;
[Dependency] private readonly InteractionSystem _interactions = default!;
[Dependency] private readonly ExamineSystemShared _examineSystem = default!;
private const float MaxInstrumentBandRange = 10f;

View File

@@ -79,6 +79,7 @@ namespace Content.Server.Kitchen.EntitySystems
SubscribeLocalEvent<MicrowaveComponent, EntInsertedIntoContainerMessage>(OnContentUpdate);
SubscribeLocalEvent<MicrowaveComponent, EntRemovedFromContainerMessage>(OnContentUpdate);
SubscribeLocalEvent<MicrowaveComponent, InteractUsingEvent>(OnInteractUsing, after: new[] { typeof(AnchorableSystem) });
SubscribeLocalEvent<MicrowaveComponent, ContainerIsInsertingAttemptEvent>(OnInsertAttempt);
SubscribeLocalEvent<MicrowaveComponent, BreakageEventArgs>(OnBreak);
SubscribeLocalEvent<MicrowaveComponent, PowerChangedEvent>(OnPowerChanged);
SubscribeLocalEvent<MicrowaveComponent, AnchorStateChangedEvent>(OnAnchorChanged);
@@ -309,6 +310,32 @@ namespace Content.Server.Kitchen.EntitySystems
UpdateUserInterfaceState(uid, component);
}
private void OnInsertAttempt(Entity<MicrowaveComponent> ent, ref ContainerIsInsertingAttemptEvent args)
{
if (ent.Comp.Broken)
{
args.Cancel();
return;
}
if (TryComp<ItemComponent>(args.EntityUid, out var item))
{
if (_item.GetSizePrototype(item.Size) > _item.GetSizePrototype(ent.Comp.MaxItemSize))
{
args.Cancel();
return;
}
}
else
{
args.Cancel();
return;
}
if (ent.Comp.Storage.Count >= ent.Comp.Capacity)
args.Cancel();
}
private void OnInteractUsing(Entity<MicrowaveComponent> ent, ref InteractUsingEvent args)
{
if (args.Handled)

View File

@@ -46,7 +46,6 @@ public sealed class DefibrillatorSystem : EntitySystem
[Dependency] private readonly PowerCellSystem _powerCell = default!;
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
[Dependency] private readonly SharedAudioSystem _audio = default!;
[Dependency] private readonly UseDelaySystem _useDelay = default!;
[Dependency] private readonly SharedMindSystem _mind = default!;
/// <inheritdoc/>

View File

@@ -32,10 +32,7 @@ public sealed class SpaceNinjaSystem : SharedSpaceNinjaSystem
[Dependency] private readonly AlertsSystem _alerts = default!;
[Dependency] private readonly BatterySystem _battery = default!;
[Dependency] private readonly CodeConditionSystem _codeCondition = default!;
[Dependency] private readonly IChatManager _chatMan = default!;
[Dependency] private readonly PowerCellSystem _powerCell = default!;
[Dependency] private readonly RoleSystem _role = default!;
[Dependency] private readonly SharedAudioSystem _audio = default!;
[Dependency] private readonly SharedMindSystem _mind = default!;
public override void Initialize()

View File

@@ -10,7 +10,6 @@ using Content.Shared.Administration.Logs;
using Content.Shared.Body.Components;
using Content.Shared.Body.Organ;
using Content.Shared.Chemistry;
using Content.Shared.Chemistry.Reagent;
using Content.Shared.Database;
using Content.Shared.DoAfter;
using Content.Shared.FixedPoint;
@@ -31,6 +30,7 @@ using Robust.Shared.Audio;
using Robust.Shared.Audio.Systems;
using Robust.Shared.Utility;
using System.Linq;
using Content.Shared.Containers.ItemSlots;
using Robust.Server.GameObjects;
using Content.Shared.Whitelist;
@@ -138,6 +138,16 @@ public sealed class FoodSystem : EntitySystem
return (false, true);
}
// Checks for used item slots
if (TryComp<ItemSlotsComponent>(food, out var itemSlots))
{
if (itemSlots.Slots.Any(slot => slot.Value.HasItem))
{
_popup.PopupEntity(Loc.GetString("food-has-used-storage", ("food", food)), user, user);
return (false, true);
}
}
var flavors = _flavorProfile.GetLocalizedFlavorsMessage(food, user, foodSolution);
if (GetUsesRemaining(food, foodComp) <= 0)

View File

@@ -17,7 +17,6 @@ namespace Content.Server.Nutrition.EntitySystems
{
[Dependency] private readonly SolutionContainerSystem _solutionContainerSystem = default!;
[Dependency] private readonly SharedAudioSystem _audio = default!;
[Dependency] private readonly SharedContainerSystem _containerSystem = default!;
[Dependency] private readonly TransformSystem _xformSystem = default!;
public override void Initialize()

View File

@@ -35,7 +35,6 @@ public sealed class PlayTimeTrackingSystem : EntitySystem
[Dependency] private readonly MindSystem _minds = default!;
[Dependency] private readonly PlayTimeTrackingManager _tracking = default!;
[Dependency] private readonly IAdminManager _adminManager = default!;
[Dependency] private readonly SharedRoleSystem _role = default!;
public override void Initialize()
{

View File

@@ -152,9 +152,7 @@ namespace Content.Server.Pointing.EntitySystems
if (TryComp<PointingArrowComponent>(arrow, out var pointing))
{
if (TryComp(player, out TransformComponent? xformPlayer))
pointing.StartPosition = _transform.ToCoordinates((player, xformPlayer), _transform.ToMapCoordinates(xformPlayer.Coordinates)).Position;
pointing.StartPosition = _transform.ToCoordinates((arrow, Transform(arrow)), _transform.ToMapCoordinates(Transform(player).Coordinates)).Position;
pointing.EndTime = _gameTiming.CurTime + PointDuration;
Dirty(arrow, pointing);

View File

@@ -22,7 +22,6 @@ namespace Content.Server.Power.EntitySystems
[Dependency] private readonly PowerNetConnectorSystem _powerNetConnector = default!;
[Dependency] private readonly IConfigurationManager _cfg = default!;
[Dependency] private readonly IParallelManager _parMan = default!;
[Dependency] private readonly PowerReceiverSystem _powerReceiver = default!;
private readonly PowerState _powerState = new();
private readonly HashSet<PowerNet> _powerNetReconnectQueue = new();

View File

@@ -21,7 +21,6 @@ namespace Content.Server.Power.EntitySystems
{
[Dependency] private readonly IAdminLogManager _adminLogger = default!;
[Dependency] private readonly IAdminManager _adminManager = default!;
[Dependency] private readonly AppearanceSystem _appearance = default!;
[Dependency] private readonly AudioSystem _audio = default!;
private EntityQuery<ApcPowerReceiverComponent> _recQuery;
private EntityQuery<ApcPowerProviderComponent> _provQuery;

View File

@@ -9,7 +9,7 @@ public static class StaticPowerSystem
public static bool IsPowered(this EntitySystem system, EntityUid uid, IEntityManager entManager, ApcPowerReceiverComponent? receiver = null)
{
if (receiver == null && !entManager.TryGetComponent(uid, out receiver))
return false;
return true;
return receiver.Powered;
}

View File

@@ -118,7 +118,7 @@ public sealed partial class DungeonSystem
// go BRRNNTTT on existing stuff
if (clearExisting)
{
var gridBounds = new Box2(Vector2.Transform(-room.Size/2, roomTransform), Vector2.Transform(room.Size/2, roomTransform)); //CP14 bugfix
var gridBounds = new Box2(Vector2.Transform(-room.Size/2, roomTransform), Vector2.Transform(room.Size/2, roomTransform));
_entitySet.Clear();
// Polygon skin moment
gridBounds = gridBounds.Enlarged(-0.05f);

View File

@@ -33,7 +33,6 @@ public sealed partial class DungeonSystem : SharedDungeonSystem
[Dependency] private readonly AnchorableSystem _anchorable = default!;
[Dependency] private readonly DecalSystem _decals = default!;
[Dependency] private readonly EntityLookupSystem _lookup = default!;
[Dependency] private readonly TagSystem _tag = default!;
[Dependency] private readonly TileSystem _tile = default!;
[Dependency] private readonly MapLoaderSystem _loader = default!;
[Dependency] private readonly SharedMapSystem _maps = default!;

View File

@@ -40,7 +40,6 @@ public sealed partial class BorgSystem : SharedBorgSystem
[Dependency] private readonly IBanManager _banManager = default!;
[Dependency] private readonly IGameTiming _timing = default!;
[Dependency] private readonly IRobustRandom _random = default!;
[Dependency] private readonly SharedAccessSystem _access = default!;
[Dependency] private readonly ActionsSystem _actions = default!;
[Dependency] private readonly AlertsSystem _alerts = default!;
[Dependency] private readonly DeviceNetworkSystem _deviceNetwork = default!;

View File

@@ -17,7 +17,6 @@ public sealed partial class StationJobsSystem
{
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
[Dependency] private readonly IBanManager _banManager = default!;
[Dependency] private readonly PlayTimeTrackingSystem _playTime = default!;
private Dictionary<int, HashSet<string>> _jobsByWeight = default!;
private List<int> _orderedWeights = default!;

View File

@@ -27,10 +27,8 @@ namespace Content.Server.Station.Systems;
[PublicAPI]
public sealed class StationSystem : EntitySystem
{
[Dependency] private readonly IConfigurationManager _cfgManager = default!;
[Dependency] private readonly ILogManager _logManager = default!;
[Dependency] private readonly IPlayerManager _player = default!;
[Dependency] private readonly IRobustRandom _random = default!;
[Dependency] private readonly ChatSystem _chatSystem = default!;
[Dependency] private readonly GameTicker _ticker = default!;
[Dependency] private readonly SharedTransformSystem _transform = default!;

View File

@@ -11,7 +11,6 @@ namespace Content.Server.Traits;
public sealed class TraitSystem : EntitySystem
{
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
[Dependency] private readonly ISerializationManager _serializationManager = default!;
[Dependency] private readonly SharedHandsSystem _sharedHandsSystem = default!;
[Dependency] private readonly EntityWhitelistSystem _whitelistSystem = default!;

View File

@@ -155,7 +155,12 @@ public sealed class AccessReaderSystem : EntitySystem
return IsAllowedInternal(access, stationKeys, reader);
if (!_containerSystem.TryGetContainer(target, reader.ContainerAccessProvider, out var container))
return Paused(target); // when mapping, containers with electronics arent spawned
return false;
// If entity is paused then always allow it at this point.
// Door electronics is kind of a mess but yeah, it should only be an unpaused ent interacting with it
if (Paused(target))
return true;
foreach (var entity in container.ContainedEntities)
{

View File

@@ -25,7 +25,6 @@ public abstract class SharedActionsSystem : EntitySystem
[Dependency] private readonly ISharedAdminLogManager _adminLogger = default!;
[Dependency] private readonly SharedInteractionSystem _interactionSystem = default!;
[Dependency] private readonly ActionBlockerSystem _actionBlockerSystem = default!;
[Dependency] private readonly SharedContainerSystem _containerSystem = default!;
[Dependency] private readonly RotateToFaceSystem _rotateToFaceSystem = default!;
[Dependency] private readonly SharedAudioSystem _audio = default!;
[Dependency] private readonly SharedTransformSystem _transformSystem = default!;

View File

@@ -12,8 +12,6 @@ namespace Content.Shared.Beeper.Systems;
/// </summary>
public sealed class ProximityBeeperSystem : EntitySystem
{
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
[Dependency] private readonly ProximityDetectionSystem _proximity = default!;
[Dependency] private readonly BeeperSystem _beeper = default!;
/// <inheritdoc/>

View File

@@ -14,13 +14,10 @@ namespace Content.Shared.Clothing;
public sealed class ClothingSpeedModifierSystem : EntitySystem
{
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
[Dependency] private readonly ClothingSpeedModifierSystem _clothingSpeedModifier = default!;
[Dependency] private readonly SharedContainerSystem _container = default!;
[Dependency] private readonly ExamineSystemShared _examine = default!;
[Dependency] private readonly MovementSpeedModifierSystem _movementSpeed = default!;
[Dependency] private readonly ItemToggleSystem _toggle = default!;
[Dependency] private readonly SharedPowerCellSystem _powerCell = default!;
public override void Initialize()
{

View File

@@ -192,6 +192,11 @@ public sealed partial class StaminaSystem : EntitySystem
private void OnCollide(EntityUid uid, StaminaDamageOnCollideComponent component, EntityUid target)
{
// you can't inflict stamina damage on things with no stamina component
// this prevents stun batons from using up charges when throwing it at lockers or lights
if (!HasComp<StaminaComponent>(target))
return;
var ev = new StaminaDamageOnHitAttemptEvent();
RaiseLocalEvent(uid, ref ev);
if (ev.Cancelled)

View File

@@ -0,0 +1,16 @@
using Robust.Shared.GameStates;
namespace Content.Shared.IconSmoothing;
/// <summary>
/// Allow randomize StateBase of IconSmoothComponent for random visual variation
/// </summary>
[RegisterComponent, NetworkedComponent]
public sealed partial class RandomIconSmoothComponent : Component
{
/// <summary>
/// StateBase will be randomly selected from this list. Allows to randomize the visual.
/// </summary>
[DataField(required: true)]
public List<string> RandomStates = new();
}

View File

@@ -0,0 +1,12 @@
using Robust.Shared.Serialization;
namespace Content.Shared.IconSmoothing;
public abstract class SharedRandomIconSmoothSystem : EntitySystem
{
}
[Serializable, NetSerializable]
public enum RandomIconSmoothState : byte
{
State
}

View File

@@ -38,8 +38,6 @@ using Robust.Shared.Serialization;
using Robust.Shared.Timing;
using Robust.Shared.Utility;
#pragma warning disable 618
namespace Content.Shared.Interaction
{
/// <summary>
@@ -522,11 +520,11 @@ namespace Content.Shared.Interaction
protected bool ValidateInteractAndFace(EntityUid user, EntityCoordinates coordinates)
{
// Verify user is on the same map as the entity they clicked on
if (coordinates.GetMapId(EntityManager) != Transform(user).MapID)
if (_transform.GetMapId(coordinates) != Transform(user).MapID)
return false;
if (!HasComp<NoRotateOnInteractComponent>(user))
_rotateToFaceSystem.TryFaceCoordinates(user, coordinates.ToMapPos(EntityManager, _transform));
_rotateToFaceSystem.TryFaceCoordinates(user, _transform.ToMapCoordinates(coordinates).Position);
return true;
}
@@ -859,7 +857,7 @@ namespace Content.Shared.Interaction
Ignored? predicate = null,
bool popup = false)
{
return InRangeUnobstructed(origin, other.ToMap(EntityManager, _transform), range, collisionMask, predicate, popup);
return InRangeUnobstructed(origin, _transform.ToMapCoordinates(other), range, collisionMask, predicate, popup);
}
/// <summary>
@@ -966,7 +964,7 @@ namespace Content.Shared.Interaction
/// </summary>
public void InteractDoAfter(EntityUid user, EntityUid used, EntityUid? target, EntityCoordinates clickLocation, bool canReach)
{
if (target is {Valid: false})
if (target is { Valid: false })
target = null;
var afterInteractEvent = new AfterInteractEvent(user, used, target, clickLocation, canReach);

View File

@@ -10,7 +10,7 @@ namespace Content.Shared.Localizations
[Dependency] private readonly ILocalizationManager _loc = default!;
// If you want to change your codebase's language, do it here.
private const string Culture = "en-US"; // CrystallPunk-Localization. "ru-RU" or "en-US"
private const string Culture = "ru-RU"; // CrystallPunk-Localization. "ru-RU" or "en-US"
/// <summary>
/// Custom format strings used for parsing and displaying minutes:seconds timespans.
@@ -26,8 +26,14 @@ namespace Content.Shared.Localizations
public void Initialize()
{
var culture = new CultureInfo(Culture);
// Uncomment for Ru localization
_loc.LoadCulture(culture);
var fallbackCulture = new CultureInfo("en-US");
_loc.LoadCulture(fallbackCulture);
_loc.SetFallbackCluture(fallbackCulture);
//
_loc.AddFunction(culture, "PRESSURE", FormatPressure);
_loc.AddFunction(culture, "POWERWATTS", FormatPowerWatts);
_loc.AddFunction(culture, "POWERJOULES", FormatPowerJoules);

View File

@@ -43,7 +43,6 @@ public sealed class PullingSystem : EntitySystem
[Dependency] private readonly SharedHandsSystem _handsSystem = default!;
[Dependency] private readonly SharedInteractionSystem _interaction = default!;
[Dependency] private readonly SharedPhysicsSystem _physics = default!;
[Dependency] private readonly SharedPopupSystem _popup = default!;
[Dependency] private readonly HeldSpeedModifierSystem _clothingMoveSpeed = default!;
public override void Initialize()

View File

@@ -18,7 +18,6 @@ public sealed class DashAbilitySystem : EntitySystem
{
[Dependency] private readonly ActionContainerSystem _actionContainer = default!;
[Dependency] private readonly IGameTiming _timing = default!;
[Dependency] private readonly SharedAudioSystem _audio = default!;
[Dependency] private readonly SharedChargesSystem _charges = default!;
[Dependency] private readonly SharedHandsSystem _hands = default!;
[Dependency] private readonly ExamineSystemShared _examine = default!;

View File

@@ -150,8 +150,19 @@ public sealed class SwapTeleporterSystem : EntitySystem
return;
}
var teleEnt = GetTeleportingEntity((uid, xform));
var otherTeleEnt = GetTeleportingEntity((linkedEnt, Transform(linkedEnt)));
var (teleEnt, cont) = GetTeleportingEntity((uid, xform));
var (otherTeleEnt, otherCont) = GetTeleportingEntity((linkedEnt, Transform(linkedEnt)));
if (otherCont != null && !_container.CanInsert(teleEnt, otherCont) ||
cont != null && !_container.CanInsert(otherTeleEnt, cont))
{
_popup.PopupEntity(Loc.GetString("swap-teleporter-popup-teleport-fail",
("entity", Identity.Entity(linkedEnt, EntityManager))),
teleEnt,
teleEnt,
PopupType.MediumCaution);
return;
}
_popup.PopupEntity(Loc.GetString("swap-teleporter-popup-teleport-other",
("entity", Identity.Entity(linkedEnt, EntityManager))),
@@ -184,20 +195,20 @@ public sealed class SwapTeleporterSystem : EntitySystem
DestroyLink(linked, user); // the linked one is shown globally
}
private EntityUid GetTeleportingEntity(Entity<TransformComponent> ent)
private (EntityUid, BaseContainer?) GetTeleportingEntity(Entity<TransformComponent> ent)
{
var parent = ent.Comp.ParentUid;
if (_container.TryGetOuterContainer(ent, ent, out var container))
parent = container.Owner;
if (HasComp<MapGridComponent>(parent) || HasComp<MapComponent>(parent))
return ent;
return (ent, container);
if (!_xformQuery.TryGetComponent(parent, out var parentXform) || parentXform.Anchored)
return ent;
return (ent, container);
if (!TryComp<PhysicsComponent>(parent, out var body) || body.BodyType == BodyType.Static)
return ent;
return (ent, container);
return GetTeleportingEntity((parent, parentXform));
}

View File

@@ -1,48 +1,4 @@
Entries:
- author: EmoGarbage404
changes:
- message: Fixed cargo telepads not teleporting in orders from linked consoles.
type: Fix
id: 6429
time: '2024-04-23T12:07:12.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/27255
- author: Plykiya
changes:
- message: Do-after bars of other players are now shaded and harder to see in the
dark.
type: Tweak
id: 6430
time: '2024-04-24T02:42:34.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/27273
- author: Blackern5000
changes:
- message: The cargo telepad is now tier 2 technology rather than tier 3.
type: Tweak
id: 6431
time: '2024-04-24T13:21:29.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/26270
- author: FungiFellow
changes:
- message: Truncheon now fits in SecBelt
type: Tweak
id: 6432
time: '2024-04-24T13:43:56.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/27281
- author: pigeonpeas
changes:
- message: Adds a trash bag to the advanced cleaning module.
type: Add
id: 6433
time: '2024-04-24T21:27:34.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/27226
- author: Beck Thompson
changes:
- message: Radio jammer now has 3 selectable power operating levels and a battery
level led indicator!
type: Tweak
id: 6434
time: '2024-04-25T02:19:17.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/25912
- author: cooldolphin
changes:
- message: Three variants of glasses are now available in the loadout menu.
@@ -3804,3 +3760,48 @@
id: 6928
time: '2024-07-17T13:50:25.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/30033
- author: Errant
changes:
- message: Vox are temporarily removed from Space Ninjas and all Unknown Shuttle
ghostroles, until code supports giving them species-specific gear.
type: Tweak
id: 6929
time: '2024-07-17T22:04:51.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/30099
- author: Cojoke-dot
changes:
- message: You can no longer teleport objects that should not be in other objects
into other objects with the Quantum Spin Inverter
type: Fix
id: 6930
time: '2024-07-18T00:40:54.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/29200
- author: Plykiya
changes:
- message: Stun batons no longer use up charges when hitting objects without stamina.
type: Fix
id: 6931
time: '2024-07-18T00:48:09.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/30136
- author: Sh18RW
changes:
- message: Moth can't eat boots with an item more
type: Fix
id: 6932
time: '2024-07-18T22:34:18.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/30019
- author: portfiend
changes:
- message: Reptilians display correct mask sprites in character customization screen.
type: Fix
id: 6933
time: '2024-07-18T22:36:53.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/30095
- author: Plykiya
changes:
- message: You no longer deal double damage to your first target when throwing an
item.
type: Fix
id: 6934
time: '2024-07-19T01:08:52.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/30115

View File

@@ -1,5 +1,5 @@
department-CP14Free = Free civilians
department-CP14Free-desc = Individuals who are not burdened by contracts and work for the government, but do not receive free assistance from it either. Find your own way of earning a living.
department-CP14Mercenary = Mercenaries
department-CP14Mercenary-desc = People who joined the expedition to make some money.
department-CP14Command = Officers of the Law
department-CP14Command-desc = Persons working directly for government officials. Bound by a magical contract, they cannot act against the interests of the state.
department-CP14Command = Expedition organizers
department-CP14Command-desc = Persons responsible for carrying out the task assigned from the great house.

View File

@@ -1,3 +1,6 @@
cp14-job-name-captain = Expedition captain
cp14-job-desc-captain = You are the most important person in this expedition. Organize its participants and manage the processes to complete the task set from the management.
cp14-job-name-adventurer = Adventurer
cp14-job-desc-adventurer = A hunter of thrills, riches and fame, constantly risking his life. Search for valuables in dangerous places and sell them to the settlement.

View File

@@ -0,0 +1,15 @@
# Basic
cp14-loadout-basic-cloak = Cloak
cp14-loadout-basic-eyes = Goggles
cp14-loadout-basic-gloves = Gloves
cp14-loadout-basic-head = Head
cp14-loadout-basic-mask = Mask
cp14-loadout-basic-pants = Pants
cp14-loadout-basic-shirt = Shirt
cp14-loadout-basic-shoes = Shoes
# Org
cp14-loadout-captain-cloak = Captain's cloak
cp14-loadout-captain-head = Captain's head

View File

@@ -1,8 +0,0 @@
cp14-loadout-test-cloak = Cloak
cp14-loadout-test-eyes = Goggles
cp14-loadout-test-gloves = Gloves
cp14-loadout-test-head = Headgear
cp14-loadout-test-mask = Mask
cp14-loadout-test-pants = Pants
cp14-loadout-test-shirt = Shirt
cp14-loadout-test-shoes = Shoes

View File

@@ -5,6 +5,7 @@ swap-teleporter-popup-link-destroyed = Quantum link destroyed!
swap-teleporter-popup-teleport-cancel-time = It's still recharging!
swap-teleporter-popup-teleport-cancel-link = It's not linked with another device!
swap-teleporter-popup-teleport-other = {CAPITALIZE(THE($entity))} activates, and you find yourself somewhere else.
swap-teleporter-popup-teleport-fail = {CAPITALIZE(THE($entity))} activates and fails to transport you anywhere.
swap-teleporter-verb-destroy-link = Destroy Quantum Link

View File

@@ -1,3 +1,5 @@
ent-CP14SeedTest = FUCK test SEED
ent-CP14Fire = огонь
.desc = Это огонь!
.suffix = cp14
@@ -43,6 +45,9 @@ ent-CP14ClothingCloakSimpleWhite = белый плащ
ent-CP14ClothingCloakSimpleDarkBlue = { ent-CP14ClothingCloakSimpleWhite }
.desc = { ent-CP14ClothingCloakSimpleWhite.desc }
ent-CP14ClothingCloakCaptainJacket = капитанский жилет
.desc = Белое золото говорит о том, что вы смотрите на серьезного представителя власти.
ent-CP14ClothingEyesMonocle = монокль
.desc = Аристократично и красиво.
@@ -76,9 +81,18 @@ ent-CP14ClothingHeadRedBeret = красный берет
ent-CP14ClothingHeadPurpleBeret = фиолетовый берет
.desc = Это берет.
ent-CP14ClothingHeadWhiteBeret = белый берет
ent-CP14ClothingHeadYellowBeret = желтый берет
.desc = Это берет.
ent-CP14ClothingHeadBlueBeret = синий берет
.desc = Это берет.
ent-CP14ClothingHeadBlackBeret = черный берет
.desc = Это берет.
ent-CP14ClothingHeadCaptainCap = капитанская кепка
.desc = Нет, ну вы посмотрите какой красавчик!
ent-CP14ClothingMaskSinner = маска грешника
.desc = Маска предназначенная для ношения не самыми светлыми личностями. Палачи надевают их на себя и на жертву перед казнью.
@@ -95,9 +109,9 @@ ent-CP14ClothingPantsLoincloth = набедренная повязка
.desc = Свободные, ничего не мешает, да еще и выглядят экстремально брутально
ent-CP14ClothingShirtCottonBlue = хлопковая синяя рубаха
.desc = Приятный на ощупь материал, удобная свободная форма рубашки.
.desc = { ent-CP14ClothingShirtCottonBlue.desc }
ent-CP14ClothingShirtCottonBlueDark = хлопковая темная рубаха
ent-CP14ClothingShirtCottonBlack = хлопковая черная рубаха
.desc = { ent-CP14ClothingShirtCottonBlue.desc }
ent-CP14ClothingShirtCottonPurple = хлопковая фиолетовая рубаха
@@ -275,24 +289,6 @@ ent-CP14Nail110 = { ent-CP14Nail1 }
.desc = { ent-CP14Nail1.desc }
.suffix = 10
ent-CP14BloodGrass = кровьтрава
.desc = Самое скучное и распространенное растение, растущее в дикой природе. Известна своими питательными свойствами.
ent-CP14AgaricMushroom = мухомор
.desc = Этот ядовитый гриб часто можно встретить вблизи водоемов или других влажных мест. Не рекомендуется для употребления в пищу.
ent-CP14ChromiumSlime = хромиевая слизь
.desc = Это редкое густое вещество можно обнаружить в потоке воды, как будто оно обладает собственным разумом. При попытке изменить саму слизь - она меняет реагент, с которым взаимодействует.
ent-CP14WildSage = корень дикого шалфея
.desc = Корень повсеместно распространенного лекарственного растения, неплохо заживляющего физические повреждения и вызывающего откашливание.
ent-CP14QuartzShard = грубый кварц
.desc = природный кристалл, являющийся естественным накопителем магической энергии. Его цвет отражает качество кристалла - чем выше спектр излучения, тем выше уровень утечки энергии.
ent-CP14LumiMushroom = люмигриб
.desc = Слабо светящийся гриб. Часто используется алхимиками как средство для концентрации растворов.
ent-CP14Cauldron = котел
.desc = Тяжелый котелок. Он не такой громоздкий, как чан, но его можно нести в руках.
@@ -338,6 +334,27 @@ ent-CP14VialSmallLumiMushroom = { ent-CP14VialTiny }
.desc = { ent-CP14VialTiny.desc }
.suffix = Люмигриб
ent-CP14Wheat = сноп пшеницы
.desc = У вас есть выбор: посадить семена обратно в землю, либо пустить их в муку.
ent-CP14BloodGrass = кровьтрава
.desc = Самое скучное и распространенное растение, растущее в дикой природе. Известна своими питательными свойствами.
ent-CP14AgaricMushroom = мухомор
.desc = Этот ядовитый гриб часто можно встретить вблизи водоемов или других влажных мест. Не рекомендуется для употребления в пищу.
ent-CP14ChromiumSlime = хромиевая слизь
.desc = Это редкое густое вещество можно обнаружить в потоке воды, как будто оно обладает собственным разумом. При попытке изменить саму слизь - она меняет реагент, с которым взаимодействует.
ent-CP14WildSage = корень дикого шалфея
.desc = Корень повсеместно распространенного лекарственного растения, неплохо заживляющего физические повреждения и вызывающего откашливание.
ent-CP14QuartzShard = грубый кварц
.desc = природный кристалл, являющийся естественным накопителем магической энергии. Его цвет отражает качество кристалла - чем выше спектр излучения, тем выше уровень утечки энергии.
ent-CP14LumiMushroom = люмигриб
.desc = Слабо светящийся гриб. Часто используется алхимиками как средство для концентрации растворов.
ent-CP14EnergyCrystalBase = None
.desc = Обработанные кристаллы кварца являются прекрасными хранителями магической энергии. А специальные разъемы позволяют удобно вставлять их в магические устройства, превращая в энергетические батарейки.
@@ -364,12 +381,18 @@ ent-CP14Bucket = ведро
ent-CP14OldLantern = Старая Лампа
.desc = Пережиток прошлого техномагии. Большой, тяжелый, непрактичный. Таким приятно разве что бить по голове.
ent-CP14BaseSharpeningStone = точильный камень
.desc = Позволит заточить притупленное оружие. Если перестараться, вы вполне можете сточить оружие полностью.
ent-CP14Shovel = лопата
.desc = Орудие для вскапывания земли, рытья грядок или могил.
ent-CP14Hoe = мотыга
.desc = Фермерский инструмент для подготовки почвы под посадки, либо очистки от сорняков.
ent-CP14Rope = веревка
.desc = Многофункциональная веревка. Ей можно связать что-нить. Или кого-нибудь.
ent-CP14BaseSharpeningStone = точильный камень
.desc = Позволит заточить притупленное оружие. Если перестараться, вы вполне можете сточить оружие полностью.
ent-CP14BaseBattleHammer = боевой молот
.desc = A big heavy hammer! Bruh!
@@ -388,12 +411,18 @@ ent-CP14BaseLightHammer = легкий молот
ent-CP14BaseMace = булава
.desc = Тяжелый кусок металла на длинной палке. Что может быть проще?
ent-CP14BaseShield = щит
.desc = Деревянный щит, способный выдержать несколько ударов.
ent-CP14BaseSickle = серп
.desc = Изначально разработанное как оружие против травы, серп внезапно показал себя хорош и в более кровавой жатве.
ent-CP14BaseThrowableSpear = метательное копьё
.desc = Оружие, исправно выполняющее свой долг еще со времен эпохи великанов.
ent-CP14BaseSword = меч
.desc = Золотой стандарт холодного оружия. Средняя длина, удобная рукоять и никаких излишеств.
ent-CP14BaseTwoHandedSword = двуручный меч
.desc = Мощное оружие, требующее огромной силы и умения для эффективного использования.
@@ -695,6 +724,34 @@ ent-CP14WallmountBarShelfB = { ent-CP14WallmountBarShelfA }
ent-CP14FrameWooden = каркас деревянной стены
.desc = Деревянный каркас для деревянных стен любых видов.
ent-CP14AlchemyFurnaceDebug = { ent-CP14AlchemyFurnace }
.desc = { ent-CP14AlchemyFurnace.desc }
ent-CP14AlchemyFurnace = алхимическая печь
.desc = Печь, работающая на дровах, угле или любом другом горящем материале. Удобна для подогрева алхимических зелий.
ent-CP14AlchemyNormalizer = нормализатор растворов
.desc = Алхимический прибор, удаляющий мелкий осадок из растворов и стабилизирующий его для дальнейшей работы
ent-CP14BaseVat = чан
.desc = Очень большой чан для хранения огромного количества жидкости. Тяжелый, неудобный для переноски.
ent-CP14PloughedGround = вскопанная почва
ent-CP14SeedbedDefault = лоток для семян
ent-CP14GatherableWildBase = { ent-CP14GatherableBase }
.desc = { ent-CP14GatherableBase.desc }
ent-CP14GatherablePlantBase = { ent-CP14GatherableBase }
.desc = { ent-CP14GatherableBase.desc }
ent-CP14PlantWheat = пщеница
.desc = Наиболее популярная культура. Непритязательна, и открывает дорогу к разнообразию мучных изделий.
ent-CP14PlantWheatDeath = мертвая пшеница
.desc = Грустное зрелище потерянной еды.
ent-CP14GatherableBloodgrass = кровьтрава
.desc = Самое скучное и распространенное растение, которое можно встретить в природе, - это темно-коричневая трава.
.suffix = Gatherable
@@ -715,18 +772,6 @@ ent-CP14GatherableLumiMushroom = люмигрибы
.desc = Слабо светящийся гриб. Часто используется алхимиками как средство для концентрации растворов.
.suffix = Gatherable
ent-CP14AlchemyFurnaceDebug = { ent-CP14AlchemyFurnace }
.desc = { ent-CP14AlchemyFurnace.desc }
ent-CP14AlchemyFurnace = алхимическая печь
.desc = Печь, работающая на дровах, угле или любом другом горящем материале. Удобна для подогрева алхимических зелий.
ent-CP14AlchemyNormalizer = нормализатор растворов
.desc = Алхимический прибор, удаляющий мелкий осадок из растворов и стабилизирующий его для дальнейшей работы
ent-CP14BaseVat = чан
.desc = Очень большой чан для хранения огромного количества жидкости. Тяжелый, неудобный для переноски.
ent-CP14ChestGeneric = сундук
.desc = Chest.
@@ -811,6 +856,9 @@ ent-CP14WallWooden = деревянная стена
ent-CP14WallCardboard = картонная стена
.desc = Тонкая, непрочная стена из бумаги и картона. Популярна в теплых странах.
ent-CP14WallCyan = голубая стена
.desc = { ent-CP14BaseWall.desc }
ent-CP14BaseFenceWood = деревянный забор
.desc = Деревянный кусок ограды. Надеюсь, за ним находится сад бабушки.
@@ -853,6 +901,12 @@ ent-CP14WindowStoneBrick = окно в стене из каменного кир
ent-CP14WindowWooden = wooden window
.desc = A wooden wall with a glass window in it.
ent-CP14ClothingHeadWhiteBeret = белый берет
.desc = Это берет.
ent-CP14ClothingShirtCottonBlueDark = хлопковая темная рубаха
.desc = { ent-CP14ClothingShirtCottonBlue.desc }
ent-CP14ClothingEyesGoldGlasses = золотые очки
.desc = Аристократично, модно, да еще и с позолотой.

View File

@@ -1,5 +1,5 @@
department-CP14Free = Свободные гражданские
department-CP14Free-desc = Лица, не обремененные контрактами и работой на государство, но и не получающие от него бесплатной помощи. Найдите свой способ заработка.
department-CP14Mercenary = Наемники
department-CP14Mercenary-desc = Лица, присоединившиеся к экспедиции с целью подзаработать деньжат.
department-CP14Command = Служители закона
department-CP14Command-desc = Лица, напрямую работающие на представителей власти. Связанные магическим контрактом, они не могут действовать против интересов государства.
department-CP14Command = Организаторы экспедиции
department-CP14Command-desc = Лица, ответственные за выполнение поставленной от великого дома задачи.

View File

@@ -1,3 +1,6 @@
cp14-job-name-captain = Капитан экспедиции
cp14-job-desc-captain = Вы - самая важная персона в этой экспедиции. Организуйте ее участников и руководите процессами, чтобы выполнить поставленную от руководства задачу.
cp14-job-name-adventurer = Авантюрист
cp14-job-desc-adventurer = Охотник за острыми эмоциями, богатствами и славой, постоянно рискующий своей жизнью. Ищите ценности в опасных местах, и продавайте их поселению.

View File

@@ -0,0 +1,14 @@
# Basic
cp14-loadout-basic-cloak = Накидка
cp14-loadout-basic-eyes = Очки
cp14-loadout-basic-gloves = Перчатки
cp14-loadout-basic-head = Головa
cp14-loadout-basic-mask = Маска
cp14-loadout-basic-pants = Штаны
cp14-loadout-basic-shirt = Рубашка
cp14-loadout-basic-shoes = Обувь
# Org
cp14-loadout-captain-cloak = Капитанская накидка

View File

@@ -1,8 +0,0 @@
cp14-loadout-test-cloak = Накидка
cp14-loadout-test-eyes = Очки
cp14-loadout-test-gloves = Перчатки
cp14-loadout-test-head = Головной убор
cp14-loadout-test-mask = Маска
cp14-loadout-test-pants = Штаны
cp14-loadout-test-shirt = Рубашка
cp14-loadout-test-shoes = Обувь

View File

@@ -385,11 +385,11 @@ entities:
- type: Transform
- type: Map
- type: PhysicsMap
- type: GridTree
- type: MovedGrids
- type: Broadphase
- type: OccluderTree
- type: LoadedMap
- type: GridTree
- type: MovedGrids
- proto: AirAlarm
entities:
- uid: 800
@@ -401,8 +401,6 @@ entities:
- type: DeviceList
devices:
- 801
- type: AtmosDevice
joinedGrid: 179
- proto: AirCanister
entities:
- uid: 458
@@ -410,8 +408,6 @@ entities:
- type: Transform
pos: 7.5,-0.5
parent: 179
- type: AtmosDevice
joinedGrid: 179
- proto: Airlock
entities:
- uid: 48
@@ -901,33 +897,21 @@ entities:
- type: Transform
pos: -2.5,-14.5
parent: 179
- type: DeviceLinkSink
links:
- 1013
- uid: 697
components:
- type: Transform
pos: 1.5,-14.5
parent: 179
- type: DeviceLinkSink
links:
- 1014
- uid: 698
components:
- type: Transform
pos: 1.5,-16.5
parent: 179
- type: DeviceLinkSink
links:
- 1014
- uid: 984
components:
- type: Transform
pos: -2.5,-16.5
parent: 179
- type: DeviceLinkSink
links:
- 1013
- proto: BoozeDispenser
entities:
- uid: 752
@@ -2660,13 +2644,6 @@ entities:
- type: Transform
pos: 24.5,5.5
parent: 179
- proto: chem_master
entities:
- uid: 311
components:
- type: Transform
pos: 8.5,11.5
parent: 179
- proto: ChemDispenser
entities:
- uid: 583
@@ -2704,6 +2681,13 @@ entities:
- type: Transform
pos: 6.4651074,9.828774
parent: 179
- proto: ChemMaster
entities:
- uid: 311
components:
- type: Transform
pos: 8.5,11.5
parent: 179
- proto: ChemMasterMachineCircuitboard
entities:
- uid: 718
@@ -3031,27 +3015,18 @@ entities:
- type: Transform
pos: -2.5,-15.5
parent: 179
- type: DeviceLinkSink
links:
- 699
- uid: 259
components:
- type: Transform
rot: 3.141592653589793 rad
pos: 1.5,-14.5
parent: 179
- type: DeviceLinkSink
links:
- 983
- uid: 463
components:
- type: Transform
rot: 3.141592653589793 rad
pos: 1.5,-16.5
parent: 179
- type: DeviceLinkSink
links:
- 983
- uid: 677
components:
- type: Transform
@@ -3063,61 +3038,40 @@ entities:
rot: -1.5707963267948966 rad
pos: -1.5,11.5
parent: 179
- type: DeviceLinkSink
links:
- 722
- uid: 720
components:
- type: Transform
rot: -1.5707963267948966 rad
pos: -0.5,11.5
parent: 179
- type: DeviceLinkSink
links:
- 722
- uid: 721
components:
- type: Transform
rot: -1.5707963267948966 rad
pos: 0.5,11.5
parent: 179
- type: DeviceLinkSink
links:
- 722
- uid: 985
components:
- type: Transform
rot: 3.141592653589793 rad
pos: 1.5,-13.5
parent: 179
- type: DeviceLinkSink
links:
- 983
- uid: 989
components:
- type: Transform
rot: 3.141592653589793 rad
pos: 1.5,-15.5
parent: 179
- type: DeviceLinkSink
links:
- 983
- uid: 990
components:
- type: Transform
pos: -2.5,-13.5
parent: 179
- type: DeviceLinkSink
links:
- 699
- uid: 991
components:
- type: Transform
pos: -2.5,-16.5
parent: 179
- type: DeviceLinkSink
links:
- 699
- proto: CrateEngineeringToolbox
entities:
- uid: 692
@@ -3575,8 +3529,6 @@ entities:
rot: -1.5707963267948966 rad
pos: 3.5,-3.5
parent: 179
- type: AtmosDevice
joinedGrid: 179
- proto: GasMixer
entities:
- uid: 747
@@ -3585,8 +3537,6 @@ entities:
rot: -1.5707963267948966 rad
pos: 3.5,-2.5
parent: 179
- type: AtmosDevice
joinedGrid: 179
- proto: GasOutletInjector
entities:
- uid: 429
@@ -3595,8 +3545,6 @@ entities:
rot: -1.5707963267948966 rad
pos: 6.5,-1.5
parent: 179
- type: AtmosDevice
joinedGrid: 179
- proto: GasPipeBend
entities:
- uid: 727
@@ -3635,8 +3583,6 @@ entities:
rot: -1.5707963267948966 rad
pos: 6.5,-0.5
parent: 179
- type: AtmosDevice
joinedGrid: 179
- proto: GasPressurePump
entities:
- uid: 171
@@ -3645,8 +3591,6 @@ entities:
rot: -1.5707963267948966 rad
pos: 4.5,-3.5
parent: 179
- type: AtmosDevice
joinedGrid: 179
- proto: GasValve
entities:
- uid: 168
@@ -3655,8 +3599,6 @@ entities:
rot: -1.5707963267948966 rad
pos: 4.5,-2.5
parent: 179
- type: AtmosDevice
joinedGrid: 179
- proto: GasVentPump
entities:
- uid: 729
@@ -3665,8 +3607,6 @@ entities:
rot: -1.5707963267948966 rad
pos: 6.5,-3.5
parent: 179
- type: AtmosDevice
joinedGrid: 179
- proto: GasVentScrubber
entities:
- uid: 452
@@ -3675,8 +3615,6 @@ entities:
rot: -1.5707963267948966 rad
pos: 6.5,-2.5
parent: 179
- type: AtmosDevice
joinedGrid: 179
- proto: GasVolumePump
entities:
- uid: 160
@@ -3685,8 +3623,6 @@ entities:
rot: -1.5707963267948966 rad
pos: 4.5,-1.5
parent: 179
- type: AtmosDevice
joinedGrid: 179
- proto: GeigerCounter
entities:
- uid: 759
@@ -4223,9 +4159,6 @@ entities:
- type: Transform
pos: 12.5,24.5
parent: 179
- type: DeviceLinkSink
links:
- 1083
- proto: MachineFrame
entities:
- uid: 533
@@ -4379,8 +4312,6 @@ entities:
- type: Transform
pos: 7.5,-1.5
parent: 179
- type: AtmosDevice
joinedGrid: 179
- proto: Ointment
entities:
- uid: 148
@@ -4400,8 +4331,6 @@ entities:
- type: Transform
pos: 7.5,-3.5
parent: 179
- type: AtmosDevice
joinedGrid: 179
- proto: PaperBin10
entities:
- uid: 977
@@ -4435,8 +4364,6 @@ entities:
- type: Transform
pos: 7.5,-2.5
parent: 179
- type: AtmosDevice
joinedGrid: 179
- proto: PlasticFlapsAirtightClear
entities:
- uid: 997
@@ -5112,7 +5039,7 @@ entities:
- type: Transform
pos: -6.5,-12.5
parent: 179
- proto: soda_dispenser
- proto: SodaDispenser
entities:
- uid: 751
components:
@@ -5164,20 +5091,6 @@ entities:
- type: Transform
pos: -3.5,4.5
parent: 179
- proto: SpawnVehicleATV
entities:
- uid: 1176
components:
- type: Transform
pos: -7.5,1.5
parent: 179
- proto: SpawnVehicleJanicart
entities:
- uid: 904
components:
- type: Transform
pos: 5.5,16.5
parent: 179
- proto: Spear
entities:
- uid: 185
@@ -5809,20 +5722,6 @@ entities:
- type: Transform
pos: -7.5,4.5
parent: 179
- proto: VehicleKeyATV
entities:
- uid: 1187
components:
- type: Transform
pos: -6.8905525,1.5128828
parent: 179
- proto: VehicleKeyJanicart
entities:
- uid: 14
components:
- type: Transform
pos: 6.5,16.5
parent: 179
- proto: VendingMachineCigs
entities:
- uid: 870

View File

@@ -607,6 +607,8 @@
- type: randomHumanoidSettings
id: LostCargoTechnician
parent: EventHumanoid
speciesBlacklist:
- Vox
components:
- type: GhostRole
name: ghost-role-information-lost-cargo-technical-name
@@ -658,6 +660,8 @@
id: ClownTroupe
parent: EventHumanoid
randomizeName: false
speciesBlacklist:
- Vox
components:
- type: GhostRole
name: ghost-role-information-clown-troupe-name
@@ -708,6 +712,8 @@
- type: randomHumanoidSettings
id: TravelingChef
parent: EventHumanoid
speciesBlacklist:
- Vox
components:
- type: GhostRole
name: ghost-role-information-traveling-chef-name
@@ -768,6 +774,8 @@
- type: randomHumanoidSettings
id: DisasterVictimHead
parent: EventHumanoidMindShielded
speciesBlacklist:
- Vox
components:
- type: GhostRole
name: ghost-role-information-disaster-victim-name
@@ -826,6 +834,8 @@
- type: randomHumanoidSettings
id: SyndieDisasterVictim
parent: EventHumanoid
speciesBlacklist:
- Vox
components:
- type: NpcFactionMember
factions:

View File

@@ -71,5 +71,11 @@
components:
- type: HumanoidAppearance
species: Reptilian
hideLayersOnEquip:
- Snout
- HeadTop
- HeadSide
- type: Inventory
speciesId: reptilian
#Weh

View File

@@ -1109,6 +1109,11 @@
- type: IconSmooth
key: walls
base: mining
- type: RandomIconSmooth
randomStates:
- mining
- miningB
- type: Appearance
- type: entity
parent: WallShuttleDiagonal

View File

@@ -151,6 +151,10 @@
minimumPlayers: 30
- type: SpaceSpawnRule
- type: AntagLoadProfileRule
# Vox disabled until loadouts work on AntagSelection-based spawns
speciesOverride: Human
speciesOverrideBlacklist:
- Vox
- type: AntagObjectives
objectives:
- StealResearchObjective

View File

@@ -84,4 +84,17 @@
- type: Sprite
sprite: _CP14/Clothing/Cloak/Simple/dark_blue.rsi
- type: Clothing
sprite: _CP14/Clothing/Cloak/Simple/dark_blue.rsi
sprite: _CP14/Clothing/Cloak/Simple/dark_blue.rsi
- type: entity
parent:
- CP14ClothingCloakBase
- ClothingSlotBase
id: CP14ClothingCloakCaptainJacket
name: captain's jacket
description: the colors white and gold tell you that you're looking at a higher power.
components:
- type: Sprite
sprite: _CP14/Clothing/Cloak/captain_jacket.rsi
- type: Clothing
sprite: _CP14/Clothing/Cloak/captain_jacket.rsi

View File

@@ -71,11 +71,44 @@
- type: entity
parent: CP14ClothingHeadBase
id: CP14ClothingHeadWhiteBeret
name: white beret
id: CP14ClothingHeadYellowBeret
name: yellow beret
description: this is beret.
components:
- type: Sprite
sprite: _CP14/Clothing/Head/Beret/white.rsi
sprite: _CP14/Clothing/Head/Beret/yellow.rsi
- type: Clothing
sprite: _CP14/Clothing/Head/Beret/white.rsi
sprite: _CP14/Clothing/Head/Beret/yellow.rsi
- type: entity
parent: CP14ClothingHeadBase
id: CP14ClothingHeadBlueBeret
name: blue beret
description: this is beret.
components:
- type: Sprite
sprite: _CP14/Clothing/Head/Beret/blue.rsi
- type: Clothing
sprite: _CP14/Clothing/Head/Beret/blue.rsi
- type: entity
parent: CP14ClothingHeadBase
id: CP14ClothingHeadBlackBeret
name: black beret
description: this is beret.
components:
- type: Sprite
sprite: _CP14/Clothing/Head/Beret/black.rsi
- type: Clothing
sprite: _CP14/Clothing/Head/Beret/black.rsi
- type: entity
parent: CP14ClothingHeadBase
id: CP14ClothingHeadCaptainCap
name: captain's cap
description: No, look how handsome he is!
components:
- type: Sprite
sprite: _CP14/Clothing/Head/captain_cap.rsi
- type: Clothing
sprite: _CP14/Clothing/Head/captain_cap.rsi

View File

@@ -24,14 +24,14 @@
- type: entity
parent: CP14ClothingShirtBase
id: CP14ClothingShirtCottonBlueDark
name: cotton dark shirt
id: CP14ClothingShirtCottonBlack
name: cotton black shirt
description: Pleasant to the touch material, in a comfortable loose shirt shape.
components:
- type: Sprite
sprite: _CP14/Clothing/Shirt/Cotton/dark_blue.rsi
sprite: _CP14/Clothing/Shirt/Cotton/black.rsi
- type: Clothing
sprite: _CP14/Clothing/Shirt/Cotton/dark_blue.rsi
sprite: _CP14/Clothing/Shirt/Cotton/black.rsi
- type: entity
parent: CP14ClothingShirtBase

View File

@@ -83,13 +83,15 @@
- CP14ClothingHeadTriangularHatGolden
- CP14ClothingHeadRedBeret
- CP14ClothingHeadPurpleBeret
- CP14ClothingHeadWhiteBeret
- CP14ClothingHeadYellowBeret
- CP14ClothingHeadBlueBeret
- CP14ClothingHeadBlackBeret
- CP14ClothingPantsTrouserWhite
- CP14ClothingPantsTrouserDarkBlue
- CP14ClothingPantsAristocratic
- CP14ClothingPantsLoincloth
- CP14ClothingShirtCottonBlue
- CP14ClothingShirtCottonBlueDark
- CP14ClothingShirtCottonBlack
- CP14ClothingShirtCottonPurple
- CP14ClothingShirtCottonRed
- CP14ClothingShirtCottonWhite

View File

@@ -0,0 +1,34 @@
- type: entity
id: CP14Rope
parent: BaseItem
name: rope
description: Multifunctional rope. You can tie something with it. Or someone.
components:
- type: Item
size: Small
storedRotation: 90
- type: Handcuff
cuffedRSI: _CP14/Objects/Tools/rope.rsi
bodyIconState: body-overlay
startCuffSound:
path: /Audio/Items/Handcuffs/rope_start.ogg
endCuffSound:
path: /Audio/Items/Handcuffs/rope_end.ogg
startUncuffSound:
path: /Audio/Items/Handcuffs/rope_start.ogg
endUncuffSound:
path: /Audio/Items/Handcuffs/rope_breakout.ogg
startBreakoutSound:
path: /Audio/Items/Handcuffs/rope_takeoff.ogg
- type: Sprite
sprite: _CP14/Objects/Tools/rope.rsi
state: icon
- type: MeleeWeapon
wideAnimationRotation: 90
resetOnHandSelected: false
animation: WeaponArcDisarm
damage:
types:
Blunt: 0
- type: UseDelay
delay: 3

View File

@@ -0,0 +1,65 @@
- type: entity
id: CP14BaseShield
parent: BaseItem
name: shield
description: A wooden shield capable of withstanding multiple blows.
components:
- type: Sprite
sprite: _CP14/Objects/Weapons/Melee/Shield/shield.rsi
state: icon
- type: Item
sprite: _CP14/Objects/Weapons/Melee/Shield/shield.rsi
size: Ginormous
- type: Blocking
passiveBlockModifier:
coefficients:
Blunt: 0.9
Slash: 0.9
Piercing: 0.9
Heat: 0.9
activeBlockModifier:
coefficients:
Blunt: 0.8
Slash: 0.8
Piercing: 0.8
Heat: 0.8
flatReductions:
Blunt: 1
Slash: 1
Piercing: 1
Heat: 1
- type: Clothing
equipDelay: 0.45
unequipDelay: 0.45
sprite: _CP14/Objects/Weapons/Melee/Shield/shield.rsi
quickEquip: false
breakOnMove: false
slots:
- back
- type: Damageable
damageContainer: Shield
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 140
behaviors:
- !type:DoActsBehavior
acts: [ "Destruction" ]
- trigger:
!type:DamageTrigger
damage: 100 #This is probably enough damage before it breaks
behaviors:
- !type:DoActsBehavior
acts: [ "Destruction" ]
- !type:PlaySoundBehavior
sound:
collection: MetalBreak
- !type:SpawnEntitiesBehavior
spawn:
SheetSteel:
min: 2
max: 2
SheetGlass:
min: 2
max: 2

View File

@@ -0,0 +1,36 @@
- type: entity
id: CP14BaseSword
parent:
- BaseItem
- CP14BaseWeaponDestructible
- CP14BaseWeaponSharp
- CP14BaseWeaponChemical
- CP14BaseWeaponLight
name: sword
description: the gold standard of edged weapons. Medium length, comfortable grip. No frills.
components:
- type: Item
size: Normal
storedRotation: -45
- type: Clothing
equipDelay: 0.45
unequipDelay: 0.45
sprite: _CP14/Objects/Weapons/Melee/Sword/sword.rsi
quickEquip: false
breakOnMove: false
slots:
- back
- type: Sprite
sprite: _CP14/Objects/Weapons/Melee/Sword/sword.rsi
layers:
- state: icon
- type: MeleeWeapon
attackRate: 1.5
wideAnimationRotation: 210
wideAnimation: CP14WeaponArcSlash
cPAnimationLength: 0.18
damage:
types:
Slash: 12
soundHit:
collection: MetalThud

View File

@@ -116,4 +116,16 @@
acts: [ "Destruction" ]
- type: Construction
graph: CP14WallWood
node: WallCardboard
node: WallCardboard
- type: entity
id: CP14WallCyan
name: cyan wall
parent: CP14BaseWall
components:
- type: Sprite
sprite: _CP14/Structures/Walls/cyan_wall.rsi
- type: Icon
sprite: _CP14/Structures/Walls/cyan_wall.rsi
- type: IconSmooth
base: wall

View File

@@ -127,13 +127,31 @@
head: CP14ClothingHeadPurpleBeret
- type: loadout
id: CP14ClothingHeadWhiteBeret
equipment: CP14ClothingHeadWhiteBeret
id: CP14ClothingHeadYellowBeret
equipment: CP14ClothingHeadYellowBeret
- type: startingGear
id: CP14ClothingHeadWhiteBeret
id: CP14ClothingHeadYellowBeret
equipment:
head: CP14ClothingHeadWhiteBeret
head: CP14ClothingHeadYellowBeret
- type: loadout
id: CP14ClothingHeadBlueBeret
equipment: CP14ClothingHeadBlueBeret
- type: startingGear
id: CP14ClothingHeadBlueBeret
equipment:
head: CP14ClothingHeadBlueBeret
- type: loadout
id: CP14ClothingHeadBlackBeret
equipment: CP14ClothingHeadBlackBeret
- type: startingGear
id: CP14ClothingHeadBlackBeret
equipment:
head: CP14ClothingHeadBlackBeret
# Mask
@@ -200,13 +218,13 @@
- type: loadout
id: CP14ClothingShirtCottonBlueDark
equipment: CP14ClothingShirtCottonBlueDark
id: CP14ClothingShirtCottonBlack
equipment: CP14ClothingShirtCottonBlack
- type: startingGear
id: CP14ClothingShirtCottonBlueDark
id: CP14ClothingShirtCottonBlack
equipment:
shirt: CP14ClothingShirtCottonBlueDark
shirt: CP14ClothingShirtCottonBlack
- type: loadout

View File

@@ -0,0 +1,19 @@
# Head
- type: loadout
id: CP14ClothingHeadCaptainCap
equipment: CP14ClothingHeadCaptainCap
- type: startingGear
id: CP14ClothingHeadCaptainCap
equipment:
head: CP14ClothingHeadCaptainCap
# Cloak
- type: loadout
id: CP14ClothingCloakCaptainJacket
equipment: CP14ClothingCloakCaptainJacket
- type: startingGear
id: CP14ClothingCloakCaptainJacket
equipment:
cloak: CP14ClothingCloakCaptainJacket

View File

@@ -1,6 +1,8 @@
# Basic
- type: loadoutGroup
id: CP14TestCloak
name: cp14-loadout-test-cloak
id: CP14BasicCloak
name: cp14-loadout-basic-cloak
minLimit: 0
loadouts:
- CP14ClothingCloakSimpleWhite
@@ -10,23 +12,29 @@
- CP14ClothingCloakFurcapeBlue
- type: loadoutGroup
id: CP14TestEyes
name: cp14-loadout-test-eyes
id: CP14BasicEyes
name: cp14-loadout-basic-eyes
minLimit: 0
loadouts:
- CP14ClothingEyesMonocle
- CP14ClothingEyesGlasses
- type: loadoutGroup
id: CP14TestGloves
name: cp14-loadout-test-gloves
id: CP14BasicGloves
name: cp14-loadout-basic-gloves
minLimit: 0
loadouts:
- CP14Girdles
- type: loadoutGroup
id: CP14BasicMask
name: cp14-loadout-basic-mask
minLimit: 0
loadouts:
- CP14Sinner
- type: loadoutGroup
id: CP14TestHead
name: cp14-loadout-test-head
id: CP14BasicHead
name: cp14-loadout-basic-head
minLimit: 0
loadouts:
- CP14ClothingHeadMetalHeadband
@@ -34,18 +42,13 @@
- CP14ClothingHeadTriangularHatGolden
- CP14ClothingHeadRedBeret
- CP14ClothingHeadPurpleBeret
- CP14ClothingHeadWhiteBeret
- CP14ClothingHeadYellowBeret
- CP14ClothingHeadBlueBeret
- CP14ClothingHeadBlackBeret
- type: loadoutGroup
id: CP14TestMask
name: cp14-loadout-test-mask
minLimit: 0
loadouts:
- CP14Sinner
- type: loadoutGroup
id: CP14TestPants
name: cp14-loadout-test-pants
id: CP14BasicPants
name: cp14-loadout-basic-pants
loadouts:
- CP14ClothingPantsTrouserWhite
- CP14ClothingPantsTrouserDarkBlue
@@ -53,20 +56,34 @@
- CP14ClothingPantsLoincloth
- type: loadoutGroup
id: CP14TestShirt
name: cp14-loadout-test-shirt
id: CP14BasicShirt
name: cp14-loadout-basic-shirt
loadouts:
- CP14ClothingShirtCottonWhite
- CP14ClothingShirtCottonBlue
- CP14ClothingShirtCottonBlueDark
- CP14ClothingShirtCottonBlack
- CP14ClothingShirtCottonPurple
- CP14ClothingShirtCottonRed
- CP14ClothingShirtCottonYellow
- type: loadoutGroup
id: CP14TestShoes
name: cp14-loadout-test-shoes
id: CP14BasicShoes
name: cp14-loadout-basic-shoes
loadouts:
- CP14ShoesBlack
- CP14ShoesAristocraticBlack
- CP14ShoesSandals
- CP14ShoesSandals
# Command
- type: loadoutGroup
id: CP14CaptainHead
name: cp14-loadout-captain-head
loadouts:
- CP14ClothingHeadCaptainCap
- type: loadoutGroup
id: CP14CaptainCloak
name: cp14-loadout-captain-cloak
loadouts:
- CP14ClothingCloakCaptainJacket

View File

@@ -1,23 +1,35 @@
- type: roleLoadout
id: JobCP14Adventurer
groups:
- CP14TestHead
- CP14TestEyes
- CP14TestMask
- CP14TestCloak
- CP14TestGloves
- CP14TestShirt
- CP14TestPants
- CP14TestShoes
- CP14BasicHead
- CP14BasicEyes
- CP14BasicMask
- CP14BasicCloak
- CP14BasicGloves
- CP14BasicShirt
- CP14BasicPants
- CP14BasicShoes
- type: roleLoadout
id: JobCP14Alchemist
groups:
- CP14TestHead
- CP14TestEyes
- CP14TestMask
- CP14TestCloak
- CP14TestGloves
- CP14TestShirt
- CP14TestPants
- CP14TestShoes
- CP14BasicHead #TODO
- CP14BasicEyes
- CP14BasicMask
- CP14BasicCloak #TODO
- CP14BasicGloves
- CP14BasicShirt
- CP14BasicPants
- CP14BasicShoes
- type: roleLoadout
id: JobCP14Captain
groups:
- CP14CaptainHead
- CP14BasicEyes
- CP14BasicMask
- CP14CaptainCloak
- CP14BasicGloves
- CP14BasicShirt
- CP14BasicPants
- CP14BasicShoes

View File

@@ -0,0 +1,16 @@
- type: job
id: CP14Captain
name: cp14-job-name-captain
description: cp14-job-desc-captain
playTimeTracker: CP14JobCaptain
startingGear: CP14CaptainGear
icon: "CP14JobIconCaptain"
requireAdminNotify: true
joinNotifyCrew: true
canBeAntag: false
supervisors: cp14-job-supervisors-command
- type: startingGear
id: CP14CaptainGear
equipment:
belt1: CP14WalletFilledTest

View File

@@ -2,7 +2,7 @@
id: CP14DeathMatchGear
equipment:
cloak: CP14ClothingCloakFurcapeBlue
shirt: CP14ClothingShirtCottonBlueDark
shirt: CP14ClothingShirtCottonBlack
pants: CP14ClothingPantsLoincloth
shoes: CP14ClothingShoesSandals
inhand:

View File

@@ -11,19 +11,6 @@
skills:
- Warcraft
- type: job
id: CP14Alchemist
name: cp14-job-name-alchemist
description: cp14-job-desc-alchemist
playTimeTracker: CP14JobAlchemist
startingGear: CP14AdventurerGear #TODO
icon: "CP14JobIconAlchemist"
supervisors: cp14-job-supervisors-command
special:
- !type:CP14AddSkillSpecial
skills:
- Alchemy
- type: startingGear
id: CP14AdventurerGear
equipment:

View File

@@ -0,0 +1,17 @@
- type: job
id: CP14Alchemist
name: cp14-job-name-alchemist
description: cp14-job-desc-alchemist
playTimeTracker: CP14JobAlchemist
startingGear: CP14AlchemistGear
icon: "CP14JobIconAlchemist"
supervisors: cp14-job-supervisors-command
special:
- !type:CP14AddSkillSpecial
skills:
- Alchemy
- type: startingGear
id: CP14AlchemistGear
equipment:
belt1: CP14WalletFilledTest

View File

@@ -1,5 +1,5 @@
- type: department
id: CP14Free
id: CP14Mercenary
description: department-CP14Free-desc
color: "#429976"
roles:
@@ -10,3 +10,5 @@
id: CP14Command
description: department-CP14Command-desc
color: "#fadb3e"
roles:
- CP14Captain

View File

@@ -4,4 +4,7 @@
id: CP14JobAdventurer
- type: playTimeTracker
id: CP14JobAlchemist
id: CP14JobAlchemist
- type: playTimeTracker
id: CP14JobCaptain

View File

@@ -17,4 +17,11 @@
id: CP14JobIconAlchemist
icon:
sprite: /Textures/_CP14/Interface/Misc/job_icons.rsi
state: Alchemist
state: Alchemist
- type: statusIcon
parent: CP14JobIcon
id: CP14JobIconCaptain
icon:
sprite: /Textures/_CP14/Interface/Misc/job_icons.rsi
state: Captain

View File

@@ -18,7 +18,7 @@
<GuideEntityEmbed Entity="MobSlimesGeras" Caption="A typical geras."/>
</Box>
Slimepeople have an [bold]internal 2x2 storage inventory[/bold] inside of their slime membrane. Anyone can see what's inside and take it out of you without asking,
Slimepeople have an [bold]internal 2x3 storage inventory[/bold] inside of their slime membrane. Anyone can see what's inside and take it out of you without asking,
so be careful. They [bold]don't drop their internal storage when they morph into a geras, however![/bold]
Slimepeople have slight accelerated regeneration compared to other humanoids. They're also capable of hardening their fists, and as such have stronger punches,

View File

@@ -7,40 +7,72 @@
"y": 32
},
"states": [
{
{
"name": "full"
},
{
{
"name": "mining0",
"directions": 4
"directions": 4
},
{
{
"name": "mining1",
"directions": 4
"directions": 4
},
{
{
"name": "mining2",
"directions": 4
"directions": 4
},
{
{
"name": "mining3",
"directions": 4
"directions": 4
},
{
{
"name": "mining4",
"directions": 4
"directions": 4
},
{
{
"name": "mining5",
"directions": 4
"directions": 4
},
{
{
"name": "mining6",
"directions": 4
"directions": 4
},
{
{
"name": "mining7",
"directions": 4
"directions": 4
},
{
"name": "miningB0",
"directions": 4
},
{
"name": "miningB1",
"directions": 4
},
{
"name": "miningB2",
"directions": 4
},
{
"name": "miningB3",
"directions": 4
},
{
"name": "miningB4",
"directions": 4
},
{
"name": "miningB5",
"directions": 4
},
{
"name": "miningB6",
"directions": 4
},
{
"name": "miningB7",
"directions": 4
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 962 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 631 B

View File

@@ -11,7 +11,7 @@
"name": "icon"
},
{
"name": "equipped-SHIRT",
"name": "equipped-CLOAK",
"directions": 4
}
]

Binary file not shown.

After

Width:  |  Height:  |  Size: 463 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 224 B

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