diff --git a/Content.Client/Shadowkin/ShadowkinSystem.cs b/Content.Client/Shadowkin/ShadowkinSystem.cs index bd63ca9f7bd..d8e1b69fc71 100644 --- a/Content.Client/Shadowkin/ShadowkinSystem.cs +++ b/Content.Client/Shadowkin/ShadowkinSystem.cs @@ -33,11 +33,11 @@ public override void Initialize() private void OnInit(EntityUid uid, ShadowkinComponent component, ComponentInit args) { - if (uid != _playerMan.LocalEntity) + if (uid != _playerMan.LocalEntity + || _cfg.GetCVar(CCVars.NoVisionFilters)) return; - if (!_cfg.GetCVar(CCVars.NoVisionFilters)) - _overlayMan.AddOverlay(_overlay); + _overlayMan.AddOverlay(_overlay); } private void Onhutdown(EntityUid uid, ShadowkinComponent component, ComponentShutdown args) @@ -50,8 +50,10 @@ private void Onhutdown(EntityUid uid, ShadowkinComponent component, ComponentShu private void OnPlayerAttached(EntityUid uid, ShadowkinComponent component, LocalPlayerAttachedEvent args) { - if (!_cfg.GetCVar(CCVars.NoVisionFilters)) - _overlayMan.AddOverlay(_overlay); + if (_cfg.GetCVar(CCVars.NoVisionFilters)) + return; + + _overlayMan.AddOverlay(_overlay); } private void OnPlayerDetached(EntityUid uid, ShadowkinComponent component, LocalPlayerDetachedEvent args) diff --git a/Content.Server/Shadowkin/EtherealStunItemSystem.cs b/Content.Server/Shadowkin/EtherealStunItemSystem.cs index a90329fd23f..b48b4d4fecf 100644 --- a/Content.Server/Shadowkin/EtherealStunItemSystem.cs +++ b/Content.Server/Shadowkin/EtherealStunItemSystem.cs @@ -30,7 +30,7 @@ private void OnUseInHand(EntityUid uid, EtherealStunItemComponent component, Use _stamina.TakeStaminaDamage(ent, stamina.CritThreshold, stamina, ent); if (TryComp(ent, out var magic)) - magic.Mana -= component.ManaDamage; + magic.Mana = 0; } if (!component.DeleteOnUse) diff --git a/Content.Server/Shadowkin/ShadowkinSystem.cs b/Content.Server/Shadowkin/ShadowkinSystem.cs index 8f1cb5a70bc..ee7d9e6055c 100644 --- a/Content.Server/Shadowkin/ShadowkinSystem.cs +++ b/Content.Server/Shadowkin/ShadowkinSystem.cs @@ -20,7 +20,6 @@ namespace Content.Server.Shadowkin; public sealed class ShadowkinSystem : EntitySystem { [Dependency] private readonly StaminaSystem _stamina = default!; - [Dependency] private readonly DamageableSystem _damageable = default!; [Dependency] private readonly PsionicAbilitiesSystem _psionicAbilitiesSystem = default!; [Dependency] private readonly AlertsSystem _alerts = default!; [Dependency] private readonly SharedActionsSystem _actionsSystem = default!; @@ -139,13 +138,6 @@ private void OnMindbreak(EntityUid uid, ShadowkinComponent component, ref OnMind if (TryComp(uid, out var stamina)) _stamina.TakeStaminaDamage(uid, stamina.CritThreshold, stamina, uid); - - if (!TryComp(uid, out var damageable)) - { - DamageSpecifier damage = new(); - damage.DamageDict.Add("Cellular", FixedPoint2.New(5)); - _damageable.TryChangeDamage(uid, damage); - } } private void OnRejuvenate(EntityUid uid, ShadowkinComponent component, RejuvenateEvent args) diff --git a/Content.Shared/Humanoid/SharedHumanoidAppearanceSystem.cs b/Content.Shared/Humanoid/SharedHumanoidAppearanceSystem.cs index 345cb139306..87b0508b980 100644 --- a/Content.Shared/Humanoid/SharedHumanoidAppearanceSystem.cs +++ b/Content.Shared/Humanoid/SharedHumanoidAppearanceSystem.cs @@ -345,9 +345,9 @@ public virtual void LoadProfile(EntityUid uid, HumanoidCharacterProfile? profile return; } + humanoid.EyeColor = profile.Appearance.EyeColor; SetSpecies(uid, profile.Species, false, humanoid); SetSex(uid, profile.Sex, false, humanoid); - humanoid.EyeColor = profile.Appearance.EyeColor; SetSkinColor(uid, profile.Appearance.SkinColor, false); diff --git a/Content.Shared/Shadowkin/EtherealComponent.cs b/Content.Shared/Shadowkin/EtherealComponent.cs index 1e6cc6dc274..0fc50c0f12e 100644 --- a/Content.Shared/Shadowkin/EtherealComponent.cs +++ b/Content.Shared/Shadowkin/EtherealComponent.cs @@ -32,4 +32,5 @@ public sealed partial class EtherealComponent : Component public int OldMobLayer; public List SuppressedFactions = new(); + public bool HasDoorBumpTag; } \ No newline at end of file diff --git a/Content.Shared/Shadowkin/EtherealStunItemComponent.cs b/Content.Shared/Shadowkin/EtherealStunItemComponent.cs index 00f7a294d52..053b5c11f67 100644 --- a/Content.Shared/Shadowkin/EtherealStunItemComponent.cs +++ b/Content.Shared/Shadowkin/EtherealStunItemComponent.cs @@ -6,9 +6,6 @@ public sealed partial class EtherealStunItemComponent : Component [DataField] public float Radius = 10; - [DataField] - public float ManaDamage = 50; - [DataField] public bool DeleteOnUse = true; } \ No newline at end of file diff --git a/Content.Shared/Shadowkin/SharedEtherealSystem.cs b/Content.Shared/Shadowkin/SharedEtherealSystem.cs index 41a09b72551..2ff3b6ce22e 100644 --- a/Content.Shared/Shadowkin/SharedEtherealSystem.cs +++ b/Content.Shared/Shadowkin/SharedEtherealSystem.cs @@ -13,6 +13,7 @@ using Content.Shared.CCVar; using Robust.Shared.Configuration; using Content.Shared.Abilities.Psionics; +using Content.Shared.Tag; namespace Content.Shared.Shadowkin; @@ -22,6 +23,7 @@ public abstract class SharedEtherealSystem : EntitySystem [Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly IGameTiming _gameTiming = default!; [Dependency] private readonly IConfigurationManager _cfg = default!; + [Dependency] private readonly TagSystem _tag = default!; public override void Initialize() { @@ -52,6 +54,10 @@ public virtual void OnStartup(EntityUid uid, EtherealComponent component, MapIni { _physics.SetCollisionMask(uid, fixture.Key, fixture.Value, (int) CollisionGroup.GhostImpassable, fixtures); _physics.SetCollisionLayer(uid, fixture.Key, fixture.Value, 0, fixtures); + + if (_tag.RemoveTag(uid, "DoorBumpOpener")) + component.HasDoorBumpTag = true; + return; } @@ -68,6 +74,9 @@ public virtual void OnShutdown(EntityUid uid, EtherealComponent component, Compo _physics.SetCollisionMask(uid, fixture.Key, fixture.Value, component.OldMobMask, fixtures); _physics.SetCollisionLayer(uid, fixture.Key, fixture.Value, component.OldMobLayer, fixtures); + + if (component.HasDoorBumpTag) + _tag.AddTag(uid, "DoorBumpOpener"); } private void OnMindbreak(EntityUid uid, EtherealComponent component, ref OnMindbreakEvent args) @@ -126,7 +135,7 @@ private void OnAttemptPowerUse(EntityUid uid, EtherealComponent component, OnAtt { if (args.Power == "DarkSwap") return; - + args.Cancel(); } } diff --git a/Resources/Prototypes/DeltaV/Entities/Mobs/Player/humanoid.yml b/Resources/Prototypes/DeltaV/Entities/Mobs/Player/humanoid.yml index 2c8b01553a7..4db83e9ab13 100644 --- a/Resources/Prototypes/DeltaV/Entities/Mobs/Player/humanoid.yml +++ b/Resources/Prototypes/DeltaV/Entities/Mobs/Player/humanoid.yml @@ -10,6 +10,8 @@ - type: randomHumanoidSettings id: SyndicateListener + speciesBlacklist: + - Shadowkin components: - type: Loadout prototypes: [SyndicateListenerGear] @@ -34,6 +36,8 @@ - type: randomHumanoidSettings id: Mobster randomizeName: false + speciesBlacklist: + - Shadowkin components: - type: GhostRole name: Mobster @@ -65,6 +69,8 @@ - type: randomHumanoidSettings id: MobsterAlt randomizeName: false + speciesBlacklist: + - Shadowkin components: - type: GhostRole name: Mobster diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/shadowkin.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/shadowkin.yml index b38b2d6030a..a5881972b32 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/shadowkin.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/shadowkin.yml @@ -5,6 +5,7 @@ bodyPart: HeadTop markingCategory: HeadTop speciesRestriction: [Shadowkin] + forcedColoring: true sprites: - sprite: Mobs/Customization/Shadowkin/ears.rsi state: shadowkin @@ -14,6 +15,15 @@ bodyPart: HeadTop markingCategory: HeadTop speciesRestriction: [Shadowkin] + coloring: + default: + type: + !type:SkinColoring + layers: + shadowkin_stripes: + type: + !type:SimpleColoring + color: "#FFFFFF" sprites: - sprite: Mobs/Customization/Shadowkin/ears.rsi state: shadowkin @@ -27,6 +37,7 @@ bodyPart: Tail markingCategory: Tail speciesRestriction: [Shadowkin] + forcedColoring: true sprites: - sprite: Mobs/Customization/Shadowkin/tails64x32.rsi state: shadowkin @@ -36,6 +47,7 @@ bodyPart: Tail markingCategory: Tail speciesRestriction: [Shadowkin] + forcedColoring: true sprites: - sprite: Mobs/Customization/Shadowkin/tails64x32.rsi state: shadowkin_big @@ -45,6 +57,7 @@ bodyPart: Tail markingCategory: Tail speciesRestriction: [Shadowkin, Reptilian] + forcedColoring: true sprites: - sprite: Mobs/Customization/Shadowkin/tails64x32.rsi state: shadowkin_big_fluff @@ -54,6 +67,7 @@ bodyPart: Tail markingCategory: Tail speciesRestriction: [Shadowkin] + forcedColoring: true sprites: - sprite: Mobs/Customization/Shadowkin/tails32x32.rsi state: shadowkin_shorter @@ -63,6 +77,7 @@ bodyPart: Tail markingCategory: Tail speciesRestriction: [Shadowkin] + forcedColoring: true sprites: - sprite: Mobs/Customization/Shadowkin/tails32x32.rsi - state: shadowkin_medium \ No newline at end of file + state: shadowkin_medium diff --git a/Resources/Prototypes/Entities/Mobs/Player/humanoid.yml b/Resources/Prototypes/Entities/Mobs/Player/humanoid.yml index 956e6f1260c..ab43256d628 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/humanoid.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/humanoid.yml @@ -21,6 +21,8 @@ - type: randomHumanoidSettings id: DeathSquad randomizeName: false + speciesBlacklist: + - Shadowkin components: - type: MindShield - type: GhostRole @@ -57,6 +59,8 @@ - type: randomHumanoidSettings id: ERTLeader randomizeName: false + speciesBlacklist: + - Shadowkin components: - type: MindShield - type: GhostRole @@ -456,6 +460,8 @@ - type: randomHumanoidSettings id: CBURNAgent + speciesBlacklist: + - Shadowkin components: - type: MindShield - type: Loadout @@ -484,6 +490,8 @@ - type: randomHumanoidSettings id: CentcomOfficial + speciesBlacklist: + - Shadowkin components: - type: MindShield - type: GhostRole @@ -510,6 +518,8 @@ - type: randomHumanoidSettings id: SyndicateAgent + speciesBlacklist: + - Shadowkin components: - type: Loadout prototypes: [SyndicateOperativeGearExtremelyBasic] @@ -526,6 +536,8 @@ - type: randomHumanoidSettings id: NukeOp + speciesBlacklist: + - Shadowkin components: - type: NukeOperative - type: Psionic @@ -548,6 +560,8 @@ - type: randomHumanoidSettings id: Cluwne + speciesBlacklist: + - Shadowkin randomizeName: false components: - type: GhostRole diff --git a/Resources/Prototypes/Species/species_weights.yml b/Resources/Prototypes/Species/species_weights.yml index 6722213a26d..72afce0a2c1 100644 --- a/Resources/Prototypes/Species/species_weights.yml +++ b/Resources/Prototypes/Species/species_weights.yml @@ -4,9 +4,10 @@ weights: Human: 5 Reptilian: 4 - SlimePerson: 4 + SlimePerson: 3 Oni: 3 #Nyanotrasen Oni, see Prototypes/Nyanotrasen/Entities/Mobs/Species/Oni.yml Felinid: 4 # Nyanotrasen - Felinid, see Prototypes/Nyanotrasen/Entities/Mobs/Species/felinid.yml Vulpkanin: 3 # DeltaV - Vulpkanin, see Prototypes/DeltaV/Entities/Mobs/Species/vulpkanin.yml Rodentia: 3 # DeltaV - Rodentia, see Prototypes/DeltaV/Entities/Mobs/Species/rodentia.yml Diona: 2 + Shadowkin: 0