mirror of
https://github.com/WWhiteDreamProject/wwdpublic.git
synced 2026-04-17 21:48:58 +03:00
 <!-- This is a semi-strict format, you can add/remove sections as needed but the order/format should be kept the same Remove these comments before submitting --> # Description <!-- Explain this PR in as much detail as applicable Some example prompts to consider: How might this affect the game? The codebase? What might be some alternatives to this? How/Who does this benefit/hurt [the game/codebase]? --> This PR is the rework regarding the unique feature for vulpkanins, this is mostly due to the "FORCED" Issue by VM: https://github.com/Simple-Station/Einstein-Engines/issues/711 This PR will mostly add the new features that will mostly make Vulpkanins unique. For Vulpkanin Stats changed please check this PR: https://github.com/Simple-Station/Einstein-Engines/pull/713 - Flash Damge: Flashable has 2 new variables "EyeDamageChance" (Float) and "EyeDamage" (int), those are default to 0 but if changed could give a chance from 0 to 1 to give EyeDamage from the EyeDamage Value, this is not fixed to vulpkanin and can be added to anything with the "Flashable" Component. - ScentTracker: Add a new Forensics type "Scent", scent will spread on everything you wear and only the ent with the "ScentTrackerSystem" can track a scent, tracking a scent will leave an effect on those who has or the item with the scent, scent can be cleaned away with soap or you can compleatly generate a new scent of a person by cleaning yourself, note: someone with a scent does not mean his the one making that scent, they may just have an item with the scent in their bag! - Vulpkanins Screams: I have 5 Fox Screams that need to be edited and need to be added in-game for vulpkanins with a lisence, just need to have the time to do it and this PR seem the perfect place for it. --- # TODO <!-- A list of everything you have to do before this PR is "complete" You probably won't have to complete everything before merging but it's good to leave future references --> - [x] Flash Damage - [x] Scent System - [x] ScentTracker System - [x] Vulpkanin Screams --- <!-- This is default collapsed, readers click to expand it and see all your media The PR media section can get very large at times, so this is a good way to keep it clean The title is written using HTML tags The title must be within the <summary> tags or you won't see it --> <details><summary><h1>Media</h1></summary> <p>     </p> </details> --- # Changelog <!-- You can add an author after the `🆑` to change the name that appears in the changelog (ex: `🆑 Death`) Leaving it blank will default to your GitHub display name This includes all available types for the changelog --> 🆑 FoxxoTrystan - add: Forensics Scent Type and Vulpkanins can now track scents, better keep yourself clean! - tweak: Vulpkanins eyes are sensetive, please dont flash them with lights as this could damage them. - add: Vulpkanins now has their own screams! --------- Signed-off-by: FoxxoTrystan <45297731+FoxxoTrystan@users.noreply.github.com> Co-authored-by: VMSolidus <evilexecutive@gmail.com> Co-authored-by: Danger Revolution! <142105406+DangerRevolution@users.noreply.github.com>
31 lines
1.2 KiB
C#
31 lines
1.2 KiB
C#
using Content.Shared.Forensics;
|
|
using Robust.Shared.Random;
|
|
using Robust.Shared.Timing;
|
|
using Robust.Client.Player;
|
|
|
|
namespace Content.Client.Forensics
|
|
{
|
|
public sealed class ScentTrackerSystem : EntitySystem
|
|
{
|
|
[Dependency] private readonly IGameTiming _timing = default!;
|
|
[Dependency] private readonly IRobustRandom _random = default!;
|
|
[Dependency] private readonly SharedTransformSystem _transform = default!;
|
|
[Dependency] private readonly IPlayerManager _playerManager = default!;
|
|
|
|
public override void Update(float frameTime)
|
|
{
|
|
base.Update(frameTime);
|
|
|
|
var query = AllEntityQuery<ForensicsComponent>();
|
|
while (query.MoveNext(out var uid, out var comp))
|
|
if (TryComp<ScentTrackerComponent>(_playerManager.LocalEntity, out var scentcomp)
|
|
&& scentcomp.Scent != string.Empty
|
|
&& scentcomp.Scent == comp.Scent
|
|
&& _timing.CurTime > comp.TargetTime)
|
|
{
|
|
comp.TargetTime = _timing.CurTime + TimeSpan.FromSeconds(1.0f);
|
|
Spawn("ScentTrackEffect", _transform.GetMapCoordinates(uid).Offset(_random.NextVector2(0.25f)));
|
|
}
|
|
}
|
|
}
|
|
} |