Fixes (#73)
* - fix: Genitals sprite shit and meow for tajaran * - add: fart sound if kicked from server * - tweak: vulpies and tajaran now for donaters!!! * - fix: Fart on exit * - add: roleplay think * - fix: database shit and loc * - add: ears for slime * - fix: LOC interaction fix * - add: height setting * - fix: height for felinids * - fix: nigga fix * - fix: no bitches on captain * - fix: interaction panel animation shit
This commit is contained in:
79
Content.Shared/_Amour/CustomHeight/CustomHeightSystem.cs
Normal file
79
Content.Shared/_Amour/CustomHeight/CustomHeightSystem.cs
Normal file
@@ -0,0 +1,79 @@
|
||||
using Content.Shared._Amour.HumanoidAppearanceExtension;
|
||||
using Content.Shared.Humanoid;
|
||||
using Robust.Shared.Random;
|
||||
using Robust.Shared.Serialization;
|
||||
|
||||
namespace Content.Shared._Amour.CustomHeight;
|
||||
|
||||
public abstract class SharedCustomHeightSystem : EntitySystem
|
||||
{
|
||||
[Dependency] protected readonly SharedAppearanceSystem AppearanceSystem = default!;
|
||||
[Dependency] private readonly IRobustRandom _robustRandom = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
SubscribeLocalEvent<CustomHeightComponent,ComponentInit>(OnInit);
|
||||
SubscribeLocalEvent<CustomHeightComponent,HumanoidAppearanceLoadedEvent>(OnLoaded);
|
||||
}
|
||||
|
||||
private void OnLoaded(EntityUid uid, CustomHeightComponent component, HumanoidAppearanceLoadedEvent args)
|
||||
{
|
||||
SetHeight(uid,GetHeightFromByte(uid,args.Profile.Appearance.Height));
|
||||
}
|
||||
|
||||
private void OnInit(EntityUid uid, CustomHeightComponent component, ComponentInit args)
|
||||
{
|
||||
if(HasComp<HumanoidAppearanceComponent>(uid))
|
||||
return;
|
||||
|
||||
if (component.Random)
|
||||
component.Starting = _robustRandom.NextFloat(component.Min, component.Max);
|
||||
|
||||
if(component.Starting == 1f)
|
||||
return;
|
||||
|
||||
SetHeight(uid,component.Starting);
|
||||
}
|
||||
|
||||
public void SetHeight(Entity<CustomHeightComponent?> entity, float height)
|
||||
{
|
||||
if (!Resolve(entity, ref entity.Comp))
|
||||
entity.Comp = EnsureComp<CustomHeightComponent>(entity);
|
||||
|
||||
height = Math.Clamp(height, entity.Comp.Min, entity.Comp.Max);
|
||||
|
||||
AppearanceSystem.SetData(entity,HeightVisuals.State, height);
|
||||
}
|
||||
|
||||
public float GetHeightFromByte(Entity<CustomHeightComponent?> entity, byte per)
|
||||
{
|
||||
if (!Resolve(entity, ref entity.Comp))
|
||||
entity.Comp = EnsureComp<CustomHeightComponent>(entity);
|
||||
|
||||
var percent = (float)per / byte.MaxValue;
|
||||
var min = entity.Comp.Min;
|
||||
var max = entity.Comp.Max;
|
||||
|
||||
return min + (max - min) * percent;
|
||||
}
|
||||
|
||||
public byte GetByteFromHeight(Entity<CustomHeightComponent?> entity,float? varheight = null)
|
||||
{
|
||||
if (!Resolve(entity, ref entity.Comp))
|
||||
entity.Comp = EnsureComp<CustomHeightComponent>(entity);
|
||||
|
||||
var min = entity.Comp.Min;
|
||||
var max = entity.Comp.Max;
|
||||
|
||||
varheight ??= AppearanceSystem.TryGetData<float>(entity, HeightVisuals.State, out var height) ? height : min;
|
||||
|
||||
return (byte) ((varheight.Value - min) / (max - min) * byte.MaxValue);
|
||||
}
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public enum HeightVisuals : byte
|
||||
{
|
||||
State
|
||||
}
|
||||
Reference in New Issue
Block a user