Разное (#385)
* - add: Meatspike changes. * - fix: Fix socks. * - remove: No light status. * - tweak: Raptor tweak. * - fix: Fix exception. * - remove: Remove unsexed. * - tweak: Crossbow tweak. * - add: More meatspike. * - tweak: Nerf buff rune. * - tweak: No throwing during incorporeal. * - add: Incorporeal magic cooldown.
This commit is contained in:
@@ -93,11 +93,14 @@ namespace Content.Client.Popups
|
|||||||
|
|
||||||
_aliveWorldLabels.Add(label);
|
_aliveWorldLabels.Add(label);
|
||||||
|
|
||||||
// START WhiteDream
|
// START WhiteDream
|
||||||
if (!_isLogging)
|
if (!_isLogging)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!_examine.InRangeUnOccluded(_playerManager.LocalEntity!.Value, coordinates, 10))
|
if (_playerManager.LocalEntity == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!_examine.InRangeUnOccluded(_playerManager.LocalEntity.Value, coordinates, 10))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var fontSizeDict = new Dictionary<PopupType, string>
|
var fontSizeDict = new Dictionary<PopupType, string>
|
||||||
@@ -117,7 +120,7 @@ namespace Content.Client.Popups
|
|||||||
var chatMsg = new ChatMessage(ChatChannel.Emotes, message, wrappedMEssage,
|
var chatMsg = new ChatMessage(ChatChannel.Emotes, message, wrappedMEssage,
|
||||||
GetNetEntity(EntityUid.Invalid), null);
|
GetNetEntity(EntityUid.Invalid), null);
|
||||||
_uiManager.GetUIController<ChatUIController>().ProcessChatMessage(chatMsg);
|
_uiManager.GetUIController<ChatUIController>().ProcessChatMessage(chatMsg);
|
||||||
|
|
||||||
// END WhiteDream
|
// END WhiteDream
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -32,6 +32,9 @@ public sealed class FlipOnHitSystem : SharedFlipOnHitSystem
|
|||||||
if (!_timing.IsFirstTimePredicted)
|
if (!_timing.IsFirstTimePredicted)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (TerminatingOrDeleted(user))
|
||||||
|
return;
|
||||||
|
|
||||||
if (_animationSystem.HasRunningAnimation(user, EmoteAnimationSystem.AnimationKey))
|
if (_animationSystem.HasRunningAnimation(user, EmoteAnimationSystem.AnimationKey))
|
||||||
{
|
{
|
||||||
EnsureComp<FlippingComponent>(user);
|
EnsureComp<FlippingComponent>(user);
|
||||||
|
|||||||
@@ -1,10 +1,13 @@
|
|||||||
|
using System.Linq;
|
||||||
using Content.Server.Administration.Logs;
|
using Content.Server.Administration.Logs;
|
||||||
using Content.Server.Body.Systems;
|
using Content.Server.Body.Systems;
|
||||||
using Content.Server.Kitchen.Components;
|
using Content.Server.Kitchen.Components;
|
||||||
using Content.Server.Popups;
|
using Content.Server.Popups;
|
||||||
|
using Content.Shared.Body.Components;
|
||||||
using Content.Shared.Database;
|
using Content.Shared.Database;
|
||||||
using Content.Shared.DoAfter;
|
using Content.Shared.DoAfter;
|
||||||
using Content.Shared.DragDrop;
|
using Content.Shared.DragDrop;
|
||||||
|
using Content.Shared.Examine;
|
||||||
using Content.Shared.IdentityManagement;
|
using Content.Shared.IdentityManagement;
|
||||||
using Content.Shared.Interaction;
|
using Content.Shared.Interaction;
|
||||||
using Content.Shared.Interaction.Events;
|
using Content.Shared.Interaction.Events;
|
||||||
@@ -50,9 +53,21 @@ namespace Content.Server.Kitchen.EntitySystems
|
|||||||
|
|
||||||
SubscribeLocalEvent<KitchenSpikeComponent, SuicideEvent>(OnSuicide);
|
SubscribeLocalEvent<KitchenSpikeComponent, SuicideEvent>(OnSuicide);
|
||||||
|
|
||||||
|
SubscribeLocalEvent<KitchenSpikeComponent, ExaminedEvent>(OnExamine);
|
||||||
|
|
||||||
SubscribeLocalEvent<ButcherableComponent, CanDropDraggedEvent>(OnButcherableCanDrop);
|
SubscribeLocalEvent<ButcherableComponent, CanDropDraggedEvent>(OnButcherableCanDrop);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void OnExamine(Entity<KitchenSpikeComponent> ent, ref ExaminedEvent args)
|
||||||
|
{
|
||||||
|
var (uid, comp) = ent;
|
||||||
|
|
||||||
|
if (comp.Victim is not "?" or "")
|
||||||
|
{
|
||||||
|
args.PushMarkup(Loc.GetString("comp-kitchen-spike-examine", ("this", uid), ("victim", comp.Victim)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void OnButcherableCanDrop(EntityUid uid, ButcherableComponent component, ref CanDropDraggedEvent args)
|
private void OnButcherableCanDrop(EntityUid uid, ButcherableComponent component, ref CanDropDraggedEvent args)
|
||||||
{
|
{
|
||||||
args.Handled = true;
|
args.Handled = true;
|
||||||
@@ -152,7 +167,8 @@ namespace Content.Server.Kitchen.EntitySystems
|
|||||||
// THE WHAT?
|
// THE WHAT?
|
||||||
// TODO: Need to be able to leave them on the spike to do DoT, see ss13.
|
// TODO: Need to be able to leave them on the spike to do DoT, see ss13.
|
||||||
var gibs = _bodySystem.GibBody(victimUid);
|
var gibs = _bodySystem.GibBody(victimUid);
|
||||||
foreach (var gib in gibs) {
|
foreach (var gib in gibs.Where(HasComp<BodyComponent>)) // WD EDIT
|
||||||
|
{
|
||||||
QueueDel(gib);
|
QueueDel(gib);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -236,21 +252,23 @@ namespace Content.Server.Kitchen.EntitySystems
|
|||||||
|
|
||||||
// THE WHAT? (again)
|
// THE WHAT? (again)
|
||||||
// Prevent dead from being spiked TODO: Maybe remove when rounds can be played and DOT is implemented
|
// Prevent dead from being spiked TODO: Maybe remove when rounds can be played and DOT is implemented
|
||||||
if (Resolve(victimUid, ref mobState, false) &&
|
/*if (Resolve(victimUid, ref mobState, false) &&
|
||||||
_mobStateSystem.IsAlive(victimUid, mobState))
|
_mobStateSystem.IsAlive(victimUid, mobState))
|
||||||
{
|
{
|
||||||
_popupSystem.PopupEntity(Loc.GetString("comp-kitchen-spike-deny-not-dead", ("victim", Identity.Entity(victimUid, EntityManager))),
|
_popupSystem.PopupEntity(Loc.GetString("comp-kitchen-spike-deny-not-dead", ("victim", Identity.Entity(victimUid, EntityManager))),
|
||||||
victimUid, userUid);
|
victimUid, userUid);
|
||||||
return true;
|
return true;
|
||||||
}
|
}*/
|
||||||
|
// WD EDIT
|
||||||
|
|
||||||
if (userUid != victimUid)
|
if (userUid != victimUid)
|
||||||
{
|
|
||||||
_popupSystem.PopupEntity(Loc.GetString("comp-kitchen-spike-begin-hook-victim", ("user", Identity.Entity(userUid, EntityManager)), ("this", uid)), victimUid, victimUid, PopupType.LargeCaution);
|
_popupSystem.PopupEntity(Loc.GetString("comp-kitchen-spike-begin-hook-victim", ("user", Identity.Entity(userUid, EntityManager)), ("this", uid)), victimUid, victimUid, PopupType.LargeCaution);
|
||||||
}
|
|
||||||
// TODO: make it work when SuicideEvent is implemented
|
// TODO: make it work when SuicideEvent is implemented
|
||||||
// else
|
else
|
||||||
// _popupSystem.PopupEntity(Loc.GetString("comp-kitchen-spike-begin-hook-self", ("this", uid)), victimUid, Filter.Pvs(uid)); // This is actually unreachable and should be in SuicideEvent
|
{
|
||||||
|
_popupSystem.PopupEntity(Loc.GetString("comp-kitchen-spike-begin-hook-self", ("this", uid)), victimUid,
|
||||||
|
victimUid); // This is actually unreachable and should be in SuicideEvent
|
||||||
|
}
|
||||||
|
|
||||||
butcherable.BeingButchered = true;
|
butcherable.BeingButchered = true;
|
||||||
component.InUse = true;
|
component.InUse = true;
|
||||||
|
|||||||
@@ -63,9 +63,6 @@ namespace Content.Server.Light.Components
|
|||||||
[DataField("togglePort", customTypeSerializer: typeof(PrototypeIdSerializer<SinkPortPrototype>))]
|
[DataField("togglePort", customTypeSerializer: typeof(PrototypeIdSerializer<SinkPortPrototype>))]
|
||||||
public string TogglePort = "Toggle";
|
public string TogglePort = "Toggle";
|
||||||
|
|
||||||
[DataField("statusPort", customTypeSerializer: typeof(PrototypeIdSerializer<SourcePortPrototype>))]
|
|
||||||
public string StatusPort = "LightStatus";
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// How long it takes to eject a bulb from this
|
/// How long it takes to eject a bulb from this
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -76,7 +76,6 @@ namespace Content.Server.Light.EntitySystems
|
|||||||
{
|
{
|
||||||
light.LightBulbContainer = _containerSystem.EnsureContainer<ContainerSlot>(uid, LightBulbContainer);
|
light.LightBulbContainer = _containerSystem.EnsureContainer<ContainerSlot>(uid, LightBulbContainer);
|
||||||
_signalSystem.EnsureSinkPorts(uid, light.OnPort, light.OffPort, light.TogglePort);
|
_signalSystem.EnsureSinkPorts(uid, light.OnPort, light.OffPort, light.TogglePort);
|
||||||
_signalSystem.EnsureSourcePorts(uid, light.StatusPort); // WD
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnMapInit(EntityUid uid, PoweredLightComponent light, MapInitEvent args)
|
private void OnMapInit(EntityUid uid, PoweredLightComponent light, MapInitEvent args)
|
||||||
@@ -447,14 +446,6 @@ namespace Content.Server.Light.EntitySystems
|
|||||||
|
|
||||||
light.On = !light.On;
|
light.On = !light.On;
|
||||||
|
|
||||||
// WD START
|
|
||||||
var data = new NetworkPayload
|
|
||||||
{
|
|
||||||
{DeviceNetworkConstants.LogicState, light.On ? SignalState.High : SignalState.Low}
|
|
||||||
};
|
|
||||||
_signalSystem.InvokePort(uid, light.StatusPort, data);
|
|
||||||
// WD END
|
|
||||||
|
|
||||||
UpdateLight(uid, light);
|
UpdateLight(uid, light);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ using Content.Shared.Physics;
|
|||||||
using Content.Shared.StatusEffect;
|
using Content.Shared.StatusEffect;
|
||||||
using Content.Shared._White.Cult;
|
using Content.Shared._White.Cult;
|
||||||
using Content.Shared._White.Cult.Components;
|
using Content.Shared._White.Cult.Components;
|
||||||
|
using Content.Shared.Throwing;
|
||||||
|
|
||||||
namespace Content.Server._White.Cult.Runes.Systems;
|
namespace Content.Server._White.Cult.Runes.Systems;
|
||||||
|
|
||||||
@@ -34,6 +35,7 @@ public partial class CultSystem
|
|||||||
|
|
||||||
SubscribeLocalEvent<WraithPhaseActionEvent>(OnWraithPhase);
|
SubscribeLocalEvent<WraithPhaseActionEvent>(OnWraithPhase);
|
||||||
SubscribeLocalEvent<IncorporealComponent, AttackAttemptEvent>(OnAttackAttempt);
|
SubscribeLocalEvent<IncorporealComponent, AttackAttemptEvent>(OnAttackAttempt);
|
||||||
|
SubscribeLocalEvent<IncorporealComponent, ThrowAttemptEvent>(OnThrowAttempt);
|
||||||
|
|
||||||
SubscribeLocalEvent<JuggernautCreateWallActionEvent>(OnJuggernautCreateWall);
|
SubscribeLocalEvent<JuggernautCreateWallActionEvent>(OnJuggernautCreateWall);
|
||||||
|
|
||||||
@@ -163,6 +165,14 @@ public partial class CultSystem
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void OnThrowAttempt(Entity<IncorporealComponent> ent, ref ThrowAttemptEvent args)
|
||||||
|
{
|
||||||
|
if (_statusEffectsSystem.HasStatusEffect(args.Uid, "Incorporeal"))
|
||||||
|
{
|
||||||
|
_statusEffectsSystem.TryRemoveStatusEffect(args.Uid, "Incorporeal");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void OnJuggernautCreateWall(JuggernautCreateWallActionEvent ev)
|
private void OnJuggernautCreateWall(JuggernautCreateWallActionEvent ev)
|
||||||
{
|
{
|
||||||
if (!TrySpawnWall(ev.Performer, ev.WallPrototypeId))
|
if (!TrySpawnWall(ev.Performer, ev.WallPrototypeId))
|
||||||
|
|||||||
@@ -1,20 +1,25 @@
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using Content.Server.Actions;
|
||||||
|
using Content.Shared._White.Wizard.Magic;
|
||||||
|
using Content.Shared.Actions;
|
||||||
using Content.Shared.Eye;
|
using Content.Shared.Eye;
|
||||||
using Content.Shared.Movement.Pulling.Components;
|
using Content.Shared.Movement.Pulling.Components;
|
||||||
using Content.Shared.Movement.Pulling.Systems;
|
using Content.Shared.Movement.Pulling.Systems;
|
||||||
using Content.Shared.Movement.Systems;
|
using Content.Shared.Movement.Systems;
|
||||||
using Content.Shared.Physics;
|
|
||||||
using Content.Shared.Stealth;
|
using Content.Shared.Stealth;
|
||||||
using Content.Shared.Stealth.Components;
|
using Content.Shared.Stealth.Components;
|
||||||
using Robust.Server.GameObjects;
|
using Robust.Server.GameObjects;
|
||||||
using Robust.Shared.Physics;
|
using Robust.Shared.Physics;
|
||||||
using Robust.Shared.Physics.Systems;
|
using Robust.Shared.Physics.Systems;
|
||||||
|
using Robust.Shared.Timing;
|
||||||
|
|
||||||
namespace Content.Server._White.IncorporealSystem;
|
namespace Content.Server._White.IncorporealSystem;
|
||||||
|
|
||||||
public sealed class IncorporealSystem : EntitySystem
|
public sealed class IncorporealSystem : EntitySystem
|
||||||
{
|
{
|
||||||
|
[Dependency] private readonly IGameTiming _timing = default!;
|
||||||
[Dependency] private readonly MovementSpeedModifierSystem _movement = default!;
|
[Dependency] private readonly MovementSpeedModifierSystem _movement = default!;
|
||||||
|
[Dependency] private readonly ActionsSystem _actions = default!;
|
||||||
[Dependency] private readonly SharedPhysicsSystem _physics = default!;
|
[Dependency] private readonly SharedPhysicsSystem _physics = default!;
|
||||||
[Dependency] private readonly VisibilitySystem _visibilitySystem = default!;
|
[Dependency] private readonly VisibilitySystem _visibilitySystem = default!;
|
||||||
[Dependency] private readonly SharedStealthSystem _stealth = default!;
|
[Dependency] private readonly SharedStealthSystem _stealth = default!;
|
||||||
@@ -78,6 +83,21 @@ public sealed class IncorporealSystem : EntitySystem
|
|||||||
_stealth.SetVisibility(uid, 1);
|
_stealth.SetVisibility(uid, 1);
|
||||||
RemComp<StealthComponent>(uid);
|
RemComp<StealthComponent>(uid);
|
||||||
_movement.RefreshMovementSpeedModifiers(uid);
|
_movement.RefreshMovementSpeedModifiers(uid);
|
||||||
|
if (!TryComp(uid, out ActionsContainerComponent? container))
|
||||||
|
return;
|
||||||
|
|
||||||
|
var cooldown = TimeSpan.FromSeconds(3);
|
||||||
|
|
||||||
|
foreach (var action in container.Container.ContainedEntities.Where(HasComp<MagicComponent>))
|
||||||
|
{
|
||||||
|
if (!_actions.TryGetActionData(action, out var comp, false))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (comp.Cooldown.HasValue && comp.Cooldown.Value.End >= _timing.CurTime + cooldown)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
_actions.SetCooldown(action, cooldown);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnRefresh(EntityUid uid, IncorporealComponent component, RefreshMovementSpeedModifiersEvent args)
|
private void OnRefresh(EntityUid uid, IncorporealComponent component, RefreshMovementSpeedModifiersEvent args)
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ public sealed class AmaterasuSystem : EntitySystem
|
|||||||
|
|
||||||
if (flammable.OnFire)
|
if (flammable.OnFire)
|
||||||
{
|
{
|
||||||
_bodySystem.GibBody(uid);
|
_bodySystem.GibBody(uid, true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ namespace Content.Shared.Kitchen.Components;
|
|||||||
public sealed partial class KitchenSpikeComponent : Component
|
public sealed partial class KitchenSpikeComponent : Component
|
||||||
{
|
{
|
||||||
[DataField("delay")]
|
[DataField("delay")]
|
||||||
public float SpikeDelay = 7.0f;
|
public float SpikeDelay = 2.0f;
|
||||||
|
|
||||||
[ViewVariables(VVAccess.ReadWrite)]
|
[ViewVariables(VVAccess.ReadWrite)]
|
||||||
[DataField("sound")]
|
[DataField("sound")]
|
||||||
|
|||||||
@@ -285,6 +285,7 @@ public abstract partial class SharedProjectileSystem : EntitySystem
|
|||||||
new RemoveEmbeddedProjectileEvent(), eventTarget: uid, target: uid)
|
new RemoveEmbeddedProjectileEvent(), eventTarget: uid, target: uid)
|
||||||
{
|
{
|
||||||
DistanceThreshold = SharedInteractionSystem.InteractionRange,
|
DistanceThreshold = SharedInteractionSystem.InteractionRange,
|
||||||
|
CancelDuplicate = false
|
||||||
}, doAfter);
|
}, doAfter);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -4,13 +4,13 @@ namespace Content.Shared._White.Cult.Components;
|
|||||||
public sealed partial class CultBuffComponent : Component
|
public sealed partial class CultBuffComponent : Component
|
||||||
{
|
{
|
||||||
[ViewVariables(VVAccess.ReadOnly), DataField]
|
[ViewVariables(VVAccess.ReadOnly), DataField]
|
||||||
public TimeSpan BuffTime = TimeSpan.FromSeconds(60);
|
public TimeSpan BuffTime = TimeSpan.FromSeconds(20);
|
||||||
|
|
||||||
[ViewVariables(VVAccess.ReadOnly), DataField]
|
[ViewVariables(VVAccess.ReadOnly), DataField]
|
||||||
public TimeSpan StartingBuffTime = TimeSpan.FromSeconds(60);
|
public TimeSpan StartingBuffTime = TimeSpan.FromSeconds(20);
|
||||||
|
|
||||||
[ViewVariables(VVAccess.ReadOnly), DataField]
|
[ViewVariables(VVAccess.ReadOnly), DataField]
|
||||||
public TimeSpan BuffLimit = TimeSpan.FromSeconds(55);
|
public TimeSpan BuffLimit = TimeSpan.FromSeconds(10);
|
||||||
|
|
||||||
public static float NearbyTilesBuffRadius = 1f;
|
public static float NearbyTilesBuffRadius = 1f;
|
||||||
|
|
||||||
|
|||||||
@@ -11,3 +11,4 @@ comp-kitchen-spike-knife-needed = Вам нужен нож для этого.
|
|||||||
comp-kitchen-spike-remove-meat = Вы срезаете немного мяса с { $victim }.
|
comp-kitchen-spike-remove-meat = Вы срезаете немного мяса с { $victim }.
|
||||||
comp-kitchen-spike-remove-meat-last = Вы срезаете последний кусок мяса с { $victim }!
|
comp-kitchen-spike-remove-meat-last = Вы срезаете последний кусок мяса с { $victim }!
|
||||||
comp-kitchen-spike-meat-name = мясо { $victim }
|
comp-kitchen-spike-meat-name = мясо { $victim }
|
||||||
|
comp-kitchen-spike-examine = На { CAPITALIZE($this) } висит туша { CAPITALIZE($victim) }.
|
||||||
|
|||||||
@@ -156,12 +156,6 @@
|
|||||||
description: Передатчик сигнала ХимМастера
|
description: Передатчик сигнала ХимМастера
|
||||||
|
|
||||||
# WD
|
# WD
|
||||||
- type: sourcePort
|
|
||||||
id: LightStatus
|
|
||||||
name: Статус светильника
|
|
||||||
description: Этот порт вызывается всякий раз, когда меняется статус светильника
|
|
||||||
defaultLinks: [ Toggle ]
|
|
||||||
|
|
||||||
- type: sourcePort
|
- type: sourcePort
|
||||||
id: BodyScannerSender
|
id: BodyScannerSender
|
||||||
name: Сканер тела
|
name: Сканер тела
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
- type: entity
|
- type: entity
|
||||||
name: laser raptor
|
name: laser raptor
|
||||||
id: MobLaserRaptor
|
id: MobLaserRaptor
|
||||||
parent: SimpleMobBase
|
parent: SimpleSpaceMobBase
|
||||||
description: From the Viking age.
|
description: From the Viking age.
|
||||||
components:
|
components:
|
||||||
- type: NpcFactionMember
|
- type: NpcFactionMember
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
- type: MobThresholds
|
- type: MobThresholds
|
||||||
thresholds:
|
thresholds:
|
||||||
0: Alive
|
0: Alive
|
||||||
100: Dead
|
50: Dead
|
||||||
- type: MovementSpeedModifier
|
- type: MovementSpeedModifier
|
||||||
baseWalkSpeed: 2
|
baseWalkSpeed: 2
|
||||||
baseSprintSpeed: 5
|
baseSprintSpeed: 5
|
||||||
|
|||||||
@@ -29,10 +29,10 @@
|
|||||||
visible: false
|
visible: false
|
||||||
- map: [ "underwearb" ] #White
|
- map: [ "underwearb" ] #White
|
||||||
- map: [ "underweart" ] #White
|
- map: [ "underweart" ] #White
|
||||||
- map: ["jumpsuit"]
|
|
||||||
- map: [ "enum.HumanoidVisualLayers.LFoot" ]
|
- map: [ "enum.HumanoidVisualLayers.LFoot" ]
|
||||||
- map: [ "enum.HumanoidVisualLayers.RFoot" ]
|
- map: [ "enum.HumanoidVisualLayers.RFoot" ]
|
||||||
- map: [ "socks" ] #White
|
- map: [ "socks" ] #White
|
||||||
|
- map: ["jumpsuit"]
|
||||||
- map: ["enum.HumanoidVisualLayers.LHand"]
|
- map: ["enum.HumanoidVisualLayers.LHand"]
|
||||||
- map: ["enum.HumanoidVisualLayers.RHand"]
|
- map: ["enum.HumanoidVisualLayers.RHand"]
|
||||||
- map: [ "gloves" ]
|
- map: [ "gloves" ]
|
||||||
|
|||||||
@@ -74,8 +74,6 @@
|
|||||||
- map: [ "enum.HumanoidVisualLayers.LArm" ]
|
- map: [ "enum.HumanoidVisualLayers.LArm" ]
|
||||||
- map: [ "enum.HumanoidVisualLayers.RLeg" ]
|
- map: [ "enum.HumanoidVisualLayers.RLeg" ]
|
||||||
- map: [ "enum.HumanoidVisualLayers.LLeg" ]
|
- map: [ "enum.HumanoidVisualLayers.LLeg" ]
|
||||||
- map: [ "underwearb" ] #White
|
|
||||||
- map: [ "underweart" ] #White
|
|
||||||
- shader: StencilClear
|
- shader: StencilClear
|
||||||
sprite: Mobs/Species/Human/parts.rsi #PJB on stencil clear being on the left leg: "...this is 'fine'" -https://github.com/space-wizards/space-station-14/pull/12217#issuecomment-1291677115
|
sprite: Mobs/Species/Human/parts.rsi #PJB on stencil clear being on the left leg: "...this is 'fine'" -https://github.com/space-wizards/space-station-14/pull/12217#issuecomment-1291677115
|
||||||
# its fine, but its still very stupid that it has to be done like this instead of allowing sprites to just directly insert a stencil clear.
|
# its fine, but its still very stupid that it has to be done like this instead of allowing sprites to just directly insert a stencil clear.
|
||||||
@@ -86,17 +84,14 @@
|
|||||||
sprite: Mobs/Customization/masking_helpers.rsi
|
sprite: Mobs/Customization/masking_helpers.rsi
|
||||||
state: unisex_full
|
state: unisex_full
|
||||||
visible: false
|
visible: false
|
||||||
- map: [ "jumpsuit" ]
|
- map: [ "underwearb" ] #White
|
||||||
- map: [ "enum.HumanoidVisualLayers.LHand" ]
|
- map: [ "underweart" ] #White
|
||||||
- map: [ "enum.HumanoidVisualLayers.RHand" ]
|
|
||||||
- map: [ "enum.HumanoidVisualLayers.LFoot" ]
|
- map: [ "enum.HumanoidVisualLayers.LFoot" ]
|
||||||
- map: [ "enum.HumanoidVisualLayers.RFoot" ]
|
- map: [ "enum.HumanoidVisualLayers.RFoot" ]
|
||||||
- map: [ "socks" ] #White
|
- map: [ "socks" ] #White
|
||||||
- map: [ "enum.HumanoidVisualLayers.Handcuffs" ]
|
- map: [ "jumpsuit" ]
|
||||||
color: "#ffffff"
|
- map: [ "enum.HumanoidVisualLayers.LHand" ]
|
||||||
sprite: Objects/Misc/handcuffs.rsi
|
- map: [ "enum.HumanoidVisualLayers.RHand" ]
|
||||||
state: body-overlay-2
|
|
||||||
visible: false
|
|
||||||
- map: [ "gloves" ]
|
- map: [ "gloves" ]
|
||||||
- map: [ "shoes" ]
|
- map: [ "shoes" ]
|
||||||
- map: [ "ears" ]
|
- map: [ "ears" ]
|
||||||
@@ -115,6 +110,11 @@
|
|||||||
- map: [ "head" ]
|
- map: [ "head" ]
|
||||||
- map: [ "pocket1" ]
|
- map: [ "pocket1" ]
|
||||||
- map: [ "pocket2" ]
|
- map: [ "pocket2" ]
|
||||||
|
- map: [ "enum.HumanoidVisualLayers.Handcuffs" ]
|
||||||
|
color: "#ffffff"
|
||||||
|
sprite: Objects/Misc/handcuffs.rsi
|
||||||
|
state: body-overlay-2
|
||||||
|
visible: false
|
||||||
- map: [ "clownedon" ] # Dynamically generated
|
- map: [ "clownedon" ] # Dynamically generated
|
||||||
sprite: "Effects/creampie.rsi"
|
sprite: "Effects/creampie.rsi"
|
||||||
state: "creampie_moth"
|
state: "creampie_moth"
|
||||||
|
|||||||
@@ -40,7 +40,7 @@
|
|||||||
- type: RCDDeconstructable
|
- type: RCDDeconstructable
|
||||||
cost: 4
|
cost: 4
|
||||||
delay: 2
|
delay: 2
|
||||||
fx: EffectRCDDeconstruct2
|
fx: EffectRCDDeconstruct2
|
||||||
- type: Destructible
|
- type: Destructible
|
||||||
thresholds:
|
thresholds:
|
||||||
- trigger:
|
- trigger:
|
||||||
@@ -72,7 +72,7 @@
|
|||||||
mode: SnapgridCenter
|
mode: SnapgridCenter
|
||||||
snap:
|
snap:
|
||||||
- Wallmount
|
- Wallmount
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
name: light
|
name: light
|
||||||
description: "A light fixture. Draws power and produces light when equipped with a light tube."
|
description: "A light fixture. Draws power and produces light when equipped with a light tube."
|
||||||
@@ -100,9 +100,6 @@
|
|||||||
receiveFrequencyId: SmartLight
|
receiveFrequencyId: SmartLight
|
||||||
- type: WirelessNetworkConnection
|
- type: WirelessNetworkConnection
|
||||||
range: 200
|
range: 200
|
||||||
- type: DeviceLinkSource
|
|
||||||
ports:
|
|
||||||
- LightStatus
|
|
||||||
- type: DeviceLinkSink
|
- type: DeviceLinkSink
|
||||||
ports:
|
ports:
|
||||||
- On
|
- On
|
||||||
@@ -294,9 +291,6 @@
|
|||||||
receiveFrequencyId: SmartLight
|
receiveFrequencyId: SmartLight
|
||||||
- type: WirelessNetworkConnection
|
- type: WirelessNetworkConnection
|
||||||
range: 200
|
range: 200
|
||||||
- type: DeviceLinkSource
|
|
||||||
ports:
|
|
||||||
- LightStatus
|
|
||||||
- type: Appearance
|
- type: Appearance
|
||||||
- type: PoweredLightVisuals
|
- type: PoweredLightVisuals
|
||||||
- type: DeviceLinkSink
|
- type: DeviceLinkSink
|
||||||
|
|||||||
@@ -87,9 +87,6 @@
|
|||||||
receiveFrequencyId: SmartLight
|
receiveFrequencyId: SmartLight
|
||||||
- type: WirelessNetworkConnection
|
- type: WirelessNetworkConnection
|
||||||
range: 200
|
range: 200
|
||||||
- type: DeviceLinkSource
|
|
||||||
ports:
|
|
||||||
- LightStatus
|
|
||||||
- type: DeviceLinkSink
|
- type: DeviceLinkSink
|
||||||
ports:
|
ports:
|
||||||
- On
|
- On
|
||||||
|
|||||||
@@ -12,8 +12,8 @@
|
|||||||
southRotation: true
|
southRotation: true
|
||||||
steps:
|
steps:
|
||||||
- material: Steel
|
- material: Steel
|
||||||
amount: 15
|
amount: 5
|
||||||
doAfter: 2
|
doAfter: 5
|
||||||
- node: MeatSpike
|
- node: MeatSpike
|
||||||
entity: KitchenSpike
|
entity: KitchenSpike
|
||||||
edges:
|
edges:
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
completed:
|
completed:
|
||||||
- !type:SpawnPrototype
|
- !type:SpawnPrototype
|
||||||
prototype: SheetSteel1
|
prototype: SheetSteel1
|
||||||
amount: 15
|
amount: 5
|
||||||
steps:
|
steps:
|
||||||
- tool: Screwing
|
- tool: Screwing
|
||||||
doAfter: 1
|
doAfter: 5
|
||||||
|
|||||||
@@ -13,8 +13,6 @@
|
|||||||
femaleFirstNames: names_arachnid_first
|
femaleFirstNames: names_arachnid_first
|
||||||
maleLastNames: names_arachnid_last
|
maleLastNames: names_arachnid_last
|
||||||
femaleLastNames: names_arachnid_last
|
femaleLastNames: names_arachnid_last
|
||||||
sexes:
|
|
||||||
- Unsexed
|
|
||||||
|
|
||||||
- type: markingPoints
|
- type: markingPoints
|
||||||
id: MobArachnidMarkingLimits
|
id: MobArachnidMarkingLimits
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 761 B After Width: | Height: | Size: 512 B |
Reference in New Issue
Block a user