mirror of
https://github.com/WWhiteDreamProject/wwdpublic.git
synced 2026-04-17 05:27:38 +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>
64 lines
1.7 KiB
C#
64 lines
1.7 KiB
C#
using Content.Shared.Physics;
|
|
using Robust.Shared.GameStates;
|
|
using Robust.Shared.Serialization;
|
|
|
|
namespace Content.Shared.Flash
|
|
{
|
|
[RegisterComponent, NetworkedComponent]
|
|
public sealed partial class FlashableComponent : Component
|
|
{
|
|
public float Duration;
|
|
public TimeSpan LastFlash;
|
|
|
|
// <summary>
|
|
// Chance to get EyeDamage on flash
|
|
// </summary>
|
|
[DataField]
|
|
public float EyeDamageChance;
|
|
|
|
// <summary>
|
|
// How many EyeDamage when flashed? (If EyeDamageChance check passed)
|
|
// </summary>
|
|
[DataField]
|
|
public int EyeDamage;
|
|
|
|
// How much to modify the duration of flashes against this entity.
|
|
// </summary>
|
|
[DataField]
|
|
public float DurationMultiplier = 1f;
|
|
|
|
[DataField]
|
|
public CollisionGroup CollisionGroup = CollisionGroup.Opaque;
|
|
|
|
public override bool SendOnlyToOwner => true;
|
|
}
|
|
|
|
[Serializable, NetSerializable]
|
|
public sealed class FlashableComponentState : ComponentState
|
|
{
|
|
public float Duration { get; }
|
|
public TimeSpan Time { get; }
|
|
public float EyeDamageChance { get; }
|
|
public int EyeDamage { get; }
|
|
public float DurationMultiplier { get; }
|
|
|
|
public FlashableComponentState(float duration, TimeSpan time, float eyeDamageChance, int eyeDamage, float durationMultiplier)
|
|
{
|
|
Duration = duration;
|
|
Time = time;
|
|
EyeDamageChance = eyeDamageChance;
|
|
EyeDamage = eyeDamage;
|
|
DurationMultiplier = durationMultiplier;
|
|
}
|
|
}
|
|
|
|
[Serializable, NetSerializable]
|
|
public enum FlashVisuals : byte
|
|
{
|
|
BaseLayer,
|
|
LightLayer,
|
|
Burnt,
|
|
Flashing,
|
|
}
|
|
}
|