Разное (#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:
Aviu00
2024-06-26 11:56:29 +00:00
committed by GitHub
parent afa3325f60
commit 649ded64d6
21 changed files with 91 additions and 64 deletions

View File

@@ -93,11 +93,14 @@ namespace Content.Client.Popups
_aliveWorldLabels.Add(label);
// START WhiteDream
// START WhiteDream
if (!_isLogging)
return;
if (!_examine.InRangeUnOccluded(_playerManager.LocalEntity!.Value, coordinates, 10))
if (_playerManager.LocalEntity == null)
return;
if (!_examine.InRangeUnOccluded(_playerManager.LocalEntity.Value, coordinates, 10))
return;
var fontSizeDict = new Dictionary<PopupType, string>
@@ -117,7 +120,7 @@ namespace Content.Client.Popups
var chatMsg = new ChatMessage(ChatChannel.Emotes, message, wrappedMEssage,
GetNetEntity(EntityUid.Invalid), null);
_uiManager.GetUIController<ChatUIController>().ProcessChatMessage(chatMsg);
// END WhiteDream
}

View File

@@ -32,6 +32,9 @@ public sealed class FlipOnHitSystem : SharedFlipOnHitSystem
if (!_timing.IsFirstTimePredicted)
return;
if (TerminatingOrDeleted(user))
return;
if (_animationSystem.HasRunningAnimation(user, EmoteAnimationSystem.AnimationKey))
{
EnsureComp<FlippingComponent>(user);

View File

@@ -1,10 +1,13 @@
using System.Linq;
using Content.Server.Administration.Logs;
using Content.Server.Body.Systems;
using Content.Server.Kitchen.Components;
using Content.Server.Popups;
using Content.Shared.Body.Components;
using Content.Shared.Database;
using Content.Shared.DoAfter;
using Content.Shared.DragDrop;
using Content.Shared.Examine;
using Content.Shared.IdentityManagement;
using Content.Shared.Interaction;
using Content.Shared.Interaction.Events;
@@ -50,9 +53,21 @@ namespace Content.Server.Kitchen.EntitySystems
SubscribeLocalEvent<KitchenSpikeComponent, SuicideEvent>(OnSuicide);
SubscribeLocalEvent<KitchenSpikeComponent, ExaminedEvent>(OnExamine);
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)
{
args.Handled = true;
@@ -152,7 +167,8 @@ namespace Content.Server.Kitchen.EntitySystems
// THE WHAT?
// TODO: Need to be able to leave them on the spike to do DoT, see ss13.
var gibs = _bodySystem.GibBody(victimUid);
foreach (var gib in gibs) {
foreach (var gib in gibs.Where(HasComp<BodyComponent>)) // WD EDIT
{
QueueDel(gib);
}
@@ -236,21 +252,23 @@ namespace Content.Server.Kitchen.EntitySystems
// THE WHAT? (again)
// 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))
{
_popupSystem.PopupEntity(Loc.GetString("comp-kitchen-spike-deny-not-dead", ("victim", Identity.Entity(victimUid, EntityManager))),
victimUid, userUid);
return true;
}
}*/
// WD EDIT
if (userUid != victimUid)
{
_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
// 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
else
{
_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;
component.InUse = true;

View File

@@ -63,9 +63,6 @@ namespace Content.Server.Light.Components
[DataField("togglePort", customTypeSerializer: typeof(PrototypeIdSerializer<SinkPortPrototype>))]
public string TogglePort = "Toggle";
[DataField("statusPort", customTypeSerializer: typeof(PrototypeIdSerializer<SourcePortPrototype>))]
public string StatusPort = "LightStatus";
/// <summary>
/// How long it takes to eject a bulb from this
/// </summary>

View File

@@ -76,7 +76,6 @@ namespace Content.Server.Light.EntitySystems
{
light.LightBulbContainer = _containerSystem.EnsureContainer<ContainerSlot>(uid, LightBulbContainer);
_signalSystem.EnsureSinkPorts(uid, light.OnPort, light.OffPort, light.TogglePort);
_signalSystem.EnsureSourcePorts(uid, light.StatusPort); // WD
}
private void OnMapInit(EntityUid uid, PoweredLightComponent light, MapInitEvent args)
@@ -447,14 +446,6 @@ namespace Content.Server.Light.EntitySystems
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);
}

View File

@@ -12,6 +12,7 @@ using Content.Shared.Physics;
using Content.Shared.StatusEffect;
using Content.Shared._White.Cult;
using Content.Shared._White.Cult.Components;
using Content.Shared.Throwing;
namespace Content.Server._White.Cult.Runes.Systems;
@@ -34,6 +35,7 @@ public partial class CultSystem
SubscribeLocalEvent<WraithPhaseActionEvent>(OnWraithPhase);
SubscribeLocalEvent<IncorporealComponent, AttackAttemptEvent>(OnAttackAttempt);
SubscribeLocalEvent<IncorporealComponent, ThrowAttemptEvent>(OnThrowAttempt);
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)
{
if (!TrySpawnWall(ev.Performer, ev.WallPrototypeId))

View File

@@ -1,20 +1,25 @@
using System.Linq;
using Content.Server.Actions;
using Content.Shared._White.Wizard.Magic;
using Content.Shared.Actions;
using Content.Shared.Eye;
using Content.Shared.Movement.Pulling.Components;
using Content.Shared.Movement.Pulling.Systems;
using Content.Shared.Movement.Systems;
using Content.Shared.Physics;
using Content.Shared.Stealth;
using Content.Shared.Stealth.Components;
using Robust.Server.GameObjects;
using Robust.Shared.Physics;
using Robust.Shared.Physics.Systems;
using Robust.Shared.Timing;
namespace Content.Server._White.IncorporealSystem;
public sealed class IncorporealSystem : EntitySystem
{
[Dependency] private readonly IGameTiming _timing = default!;
[Dependency] private readonly MovementSpeedModifierSystem _movement = default!;
[Dependency] private readonly ActionsSystem _actions = default!;
[Dependency] private readonly SharedPhysicsSystem _physics = default!;
[Dependency] private readonly VisibilitySystem _visibilitySystem = default!;
[Dependency] private readonly SharedStealthSystem _stealth = default!;
@@ -78,6 +83,21 @@ public sealed class IncorporealSystem : EntitySystem
_stealth.SetVisibility(uid, 1);
RemComp<StealthComponent>(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)

View File

@@ -24,7 +24,7 @@ public sealed class AmaterasuSystem : EntitySystem
if (flammable.OnFire)
{
_bodySystem.GibBody(uid);
_bodySystem.GibBody(uid, true);
return;
}

View File

@@ -9,7 +9,7 @@ namespace Content.Shared.Kitchen.Components;
public sealed partial class KitchenSpikeComponent : Component
{
[DataField("delay")]
public float SpikeDelay = 7.0f;
public float SpikeDelay = 2.0f;
[ViewVariables(VVAccess.ReadWrite)]
[DataField("sound")]

View File

@@ -285,6 +285,7 @@ public abstract partial class SharedProjectileSystem : EntitySystem
new RemoveEmbeddedProjectileEvent(), eventTarget: uid, target: uid)
{
DistanceThreshold = SharedInteractionSystem.InteractionRange,
CancelDuplicate = false
}, doAfter);
return true;

View File

@@ -4,13 +4,13 @@ namespace Content.Shared._White.Cult.Components;
public sealed partial class CultBuffComponent : Component
{
[ViewVariables(VVAccess.ReadOnly), DataField]
public TimeSpan BuffTime = TimeSpan.FromSeconds(60);
public TimeSpan BuffTime = TimeSpan.FromSeconds(20);
[ViewVariables(VVAccess.ReadOnly), DataField]
public TimeSpan StartingBuffTime = TimeSpan.FromSeconds(60);
public TimeSpan StartingBuffTime = TimeSpan.FromSeconds(20);
[ViewVariables(VVAccess.ReadOnly), DataField]
public TimeSpan BuffLimit = TimeSpan.FromSeconds(55);
public TimeSpan BuffLimit = TimeSpan.FromSeconds(10);
public static float NearbyTilesBuffRadius = 1f;

View File

@@ -11,3 +11,4 @@ comp-kitchen-spike-knife-needed = Вам нужен нож для этого.
comp-kitchen-spike-remove-meat = Вы срезаете немного мяса с { $victim }.
comp-kitchen-spike-remove-meat-last = Вы срезаете последний кусок мяса с { $victim }!
comp-kitchen-spike-meat-name = мясо { $victim }
comp-kitchen-spike-examine = На { CAPITALIZE($this) } висит туша { CAPITALIZE($victim) }.

View File

@@ -156,12 +156,6 @@
description: Передатчик сигнала ХимМастера
# WD
- type: sourcePort
id: LightStatus
name: Статус светильника
description: Этот порт вызывается всякий раз, когда меняется статус светильника
defaultLinks: [ Toggle ]
- type: sourcePort
id: BodyScannerSender
name: Сканер тела

View File

@@ -1,7 +1,7 @@
- type: entity
name: laser raptor
id: MobLaserRaptor
parent: SimpleMobBase
parent: SimpleSpaceMobBase
description: From the Viking age.
components:
- type: NpcFactionMember
@@ -36,7 +36,7 @@
- type: MobThresholds
thresholds:
0: Alive
100: Dead
50: Dead
- type: MovementSpeedModifier
baseWalkSpeed: 2
baseSprintSpeed: 5

View File

@@ -29,10 +29,10 @@
visible: false
- map: [ "underwearb" ] #White
- map: [ "underweart" ] #White
- map: ["jumpsuit"]
- map: [ "enum.HumanoidVisualLayers.LFoot" ]
- map: [ "enum.HumanoidVisualLayers.RFoot" ]
- map: [ "socks" ] #White
- map: ["jumpsuit"]
- map: ["enum.HumanoidVisualLayers.LHand"]
- map: ["enum.HumanoidVisualLayers.RHand"]
- map: [ "gloves" ]

View File

@@ -74,8 +74,6 @@
- map: [ "enum.HumanoidVisualLayers.LArm" ]
- map: [ "enum.HumanoidVisualLayers.RLeg" ]
- map: [ "enum.HumanoidVisualLayers.LLeg" ]
- map: [ "underwearb" ] #White
- map: [ "underweart" ] #White
- 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
# 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
state: unisex_full
visible: false
- map: [ "jumpsuit" ]
- map: [ "enum.HumanoidVisualLayers.LHand" ]
- map: [ "enum.HumanoidVisualLayers.RHand" ]
- map: [ "underwearb" ] #White
- map: [ "underweart" ] #White
- map: [ "enum.HumanoidVisualLayers.LFoot" ]
- map: [ "enum.HumanoidVisualLayers.RFoot" ]
- map: [ "socks" ] #White
- map: [ "enum.HumanoidVisualLayers.Handcuffs" ]
color: "#ffffff"
sprite: Objects/Misc/handcuffs.rsi
state: body-overlay-2
visible: false
- map: [ "jumpsuit" ]
- map: [ "enum.HumanoidVisualLayers.LHand" ]
- map: [ "enum.HumanoidVisualLayers.RHand" ]
- map: [ "gloves" ]
- map: [ "shoes" ]
- map: [ "ears" ]
@@ -115,6 +110,11 @@
- map: [ "head" ]
- map: [ "pocket1" ]
- map: [ "pocket2" ]
- map: [ "enum.HumanoidVisualLayers.Handcuffs" ]
color: "#ffffff"
sprite: Objects/Misc/handcuffs.rsi
state: body-overlay-2
visible: false
- map: [ "clownedon" ] # Dynamically generated
sprite: "Effects/creampie.rsi"
state: "creampie_moth"

View File

@@ -40,7 +40,7 @@
- type: RCDDeconstructable
cost: 4
delay: 2
fx: EffectRCDDeconstruct2
fx: EffectRCDDeconstruct2
- type: Destructible
thresholds:
- trigger:
@@ -72,7 +72,7 @@
mode: SnapgridCenter
snap:
- Wallmount
- type: entity
name: light
description: "A light fixture. Draws power and produces light when equipped with a light tube."
@@ -100,9 +100,6 @@
receiveFrequencyId: SmartLight
- type: WirelessNetworkConnection
range: 200
- type: DeviceLinkSource
ports:
- LightStatus
- type: DeviceLinkSink
ports:
- On
@@ -294,9 +291,6 @@
receiveFrequencyId: SmartLight
- type: WirelessNetworkConnection
range: 200
- type: DeviceLinkSource
ports:
- LightStatus
- type: Appearance
- type: PoweredLightVisuals
- type: DeviceLinkSink

View File

@@ -87,9 +87,6 @@
receiveFrequencyId: SmartLight
- type: WirelessNetworkConnection
range: 200
- type: DeviceLinkSource
ports:
- LightStatus
- type: DeviceLinkSink
ports:
- On

View File

@@ -12,8 +12,8 @@
southRotation: true
steps:
- material: Steel
amount: 15
doAfter: 2
amount: 5
doAfter: 5
- node: MeatSpike
entity: KitchenSpike
edges:
@@ -21,7 +21,7 @@
completed:
- !type:SpawnPrototype
prototype: SheetSteel1
amount: 15
amount: 5
steps:
- tool: Screwing
doAfter: 1
doAfter: 5

View File

@@ -13,8 +13,6 @@
femaleFirstNames: names_arachnid_first
maleLastNames: names_arachnid_last
femaleLastNames: names_arachnid_last
sexes:
- Unsexed
- type: markingPoints
id: MobArachnidMarkingLimits

Binary file not shown.

Before

Width:  |  Height:  |  Size: 761 B

After

Width:  |  Height:  |  Size: 512 B