// using Content.Shared.GameTicking; // DeltaV - Traits rework // using Content.Shared.Hands.Components; // using Content.Shared.Hands.EntitySystems; // using Content.Shared.Roles; // using Content.Shared.Traits; // using Content.Shared.Whitelist; // using Robust.Shared.Prototypes; // // namespace Content.Server.Traits; // // public sealed class TraitSystem : EntitySystem // { // [Dependency] private readonly IPrototypeManager _prototypeManager = default!; // [Dependency] private readonly SharedHandsSystem _sharedHandsSystem = default!; // [Dependency] private readonly EntityWhitelistSystem _whitelistSystem = default!; // // public override void Initialize() // { // base.Initialize(); // // SubscribeLocalEvent(OnPlayerSpawnComplete); // } // // // When the player is spawned in, add all trait components selected during character creation // private void OnPlayerSpawnComplete(PlayerSpawnCompleteEvent args) // { // // Check if player's job allows to apply traits // if (args.JobId == null || // !_prototypeManager.Resolve(args.JobId, out var protoJob) || // !protoJob.ApplyTraits) // { // return; // } // // foreach (var traitId in args.Profile.TraitPreferences) // { // if (!_prototypeManager.TryIndex(traitId, out var traitPrototype)) // { // Log.Error($"No trait found with ID {traitId}!"); // return; // } // // if (_whitelistSystem.IsWhitelistFail(traitPrototype.Whitelist, args.Mob) || // _whitelistSystem.IsWhitelistPass(traitPrototype.Blacklist, args.Mob)) // continue; // // // Add all components required by the prototype // if (traitPrototype.Components.Count > 0) // EntityManager.AddComponents(args.Mob, traitPrototype.Components, false); // // // Add all JobSpecials required by the prototype // foreach (var special in traitPrototype.Specials) // { // special.AfterEquip(args.Mob); // } // // // Add item required by the trait // if (traitPrototype.TraitGear == null) // continue; // // if (!TryComp(args.Mob, out HandsComponent? handsComponent)) // continue; // // var coords = Transform(args.Mob).Coordinates; // var inhandEntity = Spawn(traitPrototype.TraitGear, coords); // _sharedHandsSystem.TryPickup(args.Mob, // inhandEntity, // checkActionBlocker: false, // handsComp: handsComponent); // } // } // } //