Files
tbd-station-14/Content.Shared/Implants/ChameleonOutfitPrototype.cs
beck-thompson 05fac53de6 Chameleon controller implant (Clothing fast switch) (#33887)
* Add the chameleon controller implant

* address the issues (Git please dont kill me)

* Address the review and fix some merge conflicts!

* Cleanup

* Add use delay

* Silly mistakes

* Making a PR at 2 am: Gone wrong

* Predict use delay and disable the buttons until you can choose another

* First phase custom clothing

* Better system, now relays to agent id and mindshield. Chameleon loadouts are a lot better to work with as well

* Address the review! No more evil goto

* Slams way is better I should have read more closely xD

* Some of the jobs

* Add to Cargo, CentComm, Service, Passenger, Ninja, Cluwne, Wizard + Minor changes to existing; Add chameleon to bandanas, medals, jugsuits and HUDs

* Add everything else

* Fix test

* Job name

* This looks better

* Add department organization

* Minor cleanup

* Added some mindshields

* Remove redudent comment and change funcion name to be clearer

* Fix cluwne outfit

* fix merge conflicts

---------

Co-authored-by: SlamBamActionman <slambamactionman@gmail.com>
2025-05-30 12:07:25 +02:00

65 lines
2.2 KiB
C#

using Content.Shared.Roles;
using Content.Shared.StatusIcon;
using Robust.Shared.Prototypes;
namespace Content.Shared.Implants;
/// <summary>
/// A chameleon clothing outfit. Used for the chameleon controller jobs! Has various fields to help describe a full
/// job - all the fields are optional and override each other if necessary so you should fill out the maximum amount
/// that make sense for the best outcome.
/// </summary>
[Prototype]
public sealed partial class ChameleonOutfitPrototype : IPrototype
{
/// <inheritdoc/>
[ViewVariables, IdDataField]
public string ID { get; private set; } = string.Empty;
/// <summary>
/// Job this outfit is based off of. Will use various things (job icon, job name, loadout etc...) for the outfit.
/// This has the lowest priority for clothing if the user has no custom loadout, but highest if they do.
/// </summary>
[DataField]
public ProtoId<JobPrototype>? Job;
/// <summary>
/// Name of the outfit. This will be used for varous things like the chameleon controller UI and the agent IDs job
/// name.
/// </summary>
[DataField]
public LocId? Name;
/// <summary>
/// This name is only used in the chameleon controller UI.
/// </summary>
[DataField]
public LocId? LoadoutName;
/// <summary>
/// Generic staring gear. Sometimes outfits don't have jobs but do have starting gear (E.g. Cluwne).
/// </summary>
[DataField]
public ProtoId<StartingGearPrototype>? StartingGear;
/// <summary>
/// Icon for the outfit - used for stuff like the UI or agent ID.
/// </summary>
[DataField]
public ProtoId<JobIconPrototype>? Icon;
[DataField]
public List<ProtoId<DepartmentPrototype>>? Departments;
[DataField]
public bool HasMindShield;
/// <summary>
/// Custom equipment for this specific chameleon outfit. If your making a new outfit that's just for the controller
/// use this! It can be mixed with the rest of the fields though, it just takes highest priority right under
/// user specified loadouts.
/// </summary>
[DataField]
public Dictionary<string, EntProtoId> Equipment { get; set; } = new();
}