* Add data field for id card microwave behaviour (#28087) * Move replacement chance from ReplacementAccentComponent to ReplacementAccentPrototype (#28049) Move replacement chance to ReplacementAccentPrototype * Resolves Bible summon message being sent to all users (#28104) * Changed PopupEntity overload used to ensure message is only sent to user * Updated uid for PopupEntity call * Updating _popupSystem.PopupEntity call in AttemptSummon * Random book story generator refactor (#28082) * Randomized book overhaul * Fix prototype names * Improved setting paper content * Praise Ratvar * Fix activatable UI popup message spam (#28123) Fixed activatable UI popup message spam * Modify battery assert to avoid floating point errors (#28007) * Update component query benchmarks (#27967) * Add more component query benchmarks. * Rename benchmark * Use non-generic `TryComp()` for metadata & transform (#28133) * sleeper agent appear later into the round and only once (#28160) --------- Co-authored-by: DrSmugleaf <10968691+DrSmugleaf@users.noreply.github.com> Co-authored-by: lzk <124214523+lzk228@users.noreply.github.com> Co-authored-by: double_b <40827162+benjamin-burges@users.noreply.github.com> Co-authored-by: Tayrtahn <tayrtahn@gmail.com> Co-authored-by: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com> Co-authored-by: Killerqu00 <47712032+Killerqu00@users.noreply.github.com>
62 lines
1.9 KiB
C#
62 lines
1.9 KiB
C#
using System.Numerics;
|
|
using Content.Shared.Camera;
|
|
using Content.Shared.Gravity;
|
|
using Robust.Client.Player;
|
|
using Robust.Shared.Audio;
|
|
using Robust.Shared.Audio.Systems;
|
|
using Robust.Shared.Player;
|
|
using Robust.Shared.Random;
|
|
|
|
namespace Content.Client.Gravity;
|
|
|
|
public sealed partial class GravitySystem
|
|
{
|
|
[Dependency] private readonly IPlayerManager _playerManager = default!;
|
|
[Dependency] private readonly IRobustRandom _random = default!;
|
|
[Dependency] private readonly SharedAudioSystem _audio = default!;
|
|
[Dependency] private readonly SharedCameraRecoilSystem _sharedCameraRecoil = default!;
|
|
|
|
private void InitializeShake()
|
|
{
|
|
SubscribeLocalEvent<GravityShakeComponent, ComponentInit>(OnShakeInit);
|
|
}
|
|
|
|
private void OnShakeInit(EntityUid uid, GravityShakeComponent component, ComponentInit args)
|
|
{
|
|
var localPlayer = _playerManager.LocalEntity;
|
|
|
|
if (!TryComp(localPlayer, out TransformComponent? xform) ||
|
|
xform.GridUid != uid && xform.MapUid != uid)
|
|
{
|
|
return;
|
|
}
|
|
|
|
if (Timing.IsFirstTimePredicted && TryComp<GravityComponent>(uid, out var gravity))
|
|
{
|
|
_audio.PlayGlobal(gravity.GravityShakeSound, Filter.Local(), true, AudioParams.Default.WithVolume(-2f));
|
|
}
|
|
}
|
|
|
|
protected override void ShakeGrid(EntityUid uid, GravityComponent? gravity = null)
|
|
{
|
|
base.ShakeGrid(uid, gravity);
|
|
|
|
if (!Resolve(uid, ref gravity) || !Timing.IsFirstTimePredicted)
|
|
return;
|
|
|
|
var localPlayer = _playerManager.LocalEntity;
|
|
|
|
if (!TryComp(localPlayer, out TransformComponent? xform))
|
|
return;
|
|
|
|
if (xform.GridUid != uid ||
|
|
xform.GridUid == null && xform.MapUid != uid)
|
|
{
|
|
return;
|
|
}
|
|
|
|
var kick = new Vector2(_random.NextFloat(), _random.NextFloat()) * GravityKick;
|
|
_sharedCameraRecoil.KickCamera(localPlayer.Value, kick);
|
|
}
|
|
}
|