Разное (#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);
|
||||
|
||||
// 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
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -24,7 +24,7 @@ public sealed class AmaterasuSystem : EntitySystem
|
||||
|
||||
if (flammable.OnFire)
|
||||
{
|
||||
_bodySystem.GibBody(uid);
|
||||
_bodySystem.GibBody(uid, true);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -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")]
|
||||
|
||||
@@ -285,6 +285,7 @@ public abstract partial class SharedProjectileSystem : EntitySystem
|
||||
new RemoveEmbeddedProjectileEvent(), eventTarget: uid, target: uid)
|
||||
{
|
||||
DistanceThreshold = SharedInteractionSystem.InteractionRange,
|
||||
CancelDuplicate = false
|
||||
}, doAfter);
|
||||
|
||||
return true;
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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) }.
|
||||
|
||||
@@ -156,12 +156,6 @@
|
||||
description: Передатчик сигнала ХимМастера
|
||||
|
||||
# WD
|
||||
- type: sourcePort
|
||||
id: LightStatus
|
||||
name: Статус светильника
|
||||
description: Этот порт вызывается всякий раз, когда меняется статус светильника
|
||||
defaultLinks: [ Toggle ]
|
||||
|
||||
- type: sourcePort
|
||||
id: BodyScannerSender
|
||||
name: Сканер тела
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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" ]
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -87,9 +87,6 @@
|
||||
receiveFrequencyId: SmartLight
|
||||
- type: WirelessNetworkConnection
|
||||
range: 200
|
||||
- type: DeviceLinkSource
|
||||
ports:
|
||||
- LightStatus
|
||||
- type: DeviceLinkSink
|
||||
ports:
|
||||
- On
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 |
Reference in New Issue
Block a user