using Content.Shared.Objectives;
using Content.Shared.Objectives.Systems;
using Robust.Shared.Utility;
+using Robust.Shared.Prototypes;
namespace Content.Shared.Objectives.Components;
/// Required component for an objective entity prototype.
/// </summary>
[RegisterComponent, Access(typeof(SharedObjectivesSystem))]
+[EntityCategory("Objectives")]
public sealed partial class ObjectiveComponent : Component
{
/// <summary>
/// Difficulty rating used to avoid assigning too many difficult objectives.
/// </summary>
- [DataField(required: true), ViewVariables(VVAccess.ReadWrite)]
+ [DataField(required: true)]
public float Difficulty;
/// <summary>
/// Organisation that issued this objective, used for grouping and as a header above common objectives.
/// </summary>
- [DataField(required: true), ViewVariables(VVAccess.ReadWrite)]
+ [DataField(required: true)]
public string Issuer = string.Empty;
/// <summary>
/// Unique objectives can only have 1 per prototype id.
/// Set this to false if you want multiple objectives of the same prototype.
/// </summary>
- [DataField, ViewVariables(VVAccess.ReadWrite)]
+ [DataField]
public bool Unique = true;
/// <summary>
/// Icon of this objective to display in the character menu.
/// Can be specified by an <see cref="ObjectiveGetInfoEvent"/> handler but is usually done in the prototype.
/// </summary>
- [DataField, ViewVariables(VVAccess.ReadWrite)]
+ [DataField]
public SpriteSpecifier? Icon;
}
entity-category-name-actions = Actions
entity-category-name-game-rules = Game Rules
+entity-category-name-objectives = Objectives
\ No newline at end of file
id: GameRules
name: entity-category-name-game-rules
hideSpawnMenu: true
+
+- type: entityCategory
+ id: Objectives
+ name: entity-category-name-objectives
+ hideSpawnMenu: true
\ No newline at end of file
# OBJECTIVE STYLE
-# in comments anything that says final prototype means the objective that isnt abstract
-# the final prototype must be noSpawn to avoid showing in f5
+# in comments anything that says final prototype means the objective that isnt abstract.
+# you dont need noSpawn because Objectives category is automatically added, which has hideSpawnmenu
# components are listed in this order:
# 1. Objective
# 2. requirement components
# 4. the condition component
# all objectives should inherit this at some point
-# then have its difficulty etc fields set in the final objective prototypes
+# then have its icon etc fields set in the final objective prototypes
- type: entity
abstract: true
id: BaseObjective
- DragonRole
- type: entity
- noSpawn: true
parent: BaseDragonObjective
id: CarpRiftsObjective
components:
- type: CarpRiftsCondition
- type: entity
- noSpawn: true
parent: [BaseDragonObjective, BaseSurviveObjective]
id: DragonSurviveObjective
name: Survive
- NinjaRole
- type: entity
- noSpawn: true
parent: BaseNinjaObjective
id: DoorjackObjective
components:
- type: DoorjackCondition
- type: entity
- noSpawn: true
parent: BaseNinjaObjective
id: StealResearchObjective
description: Your gloves can be used to hack a research server and steal its precious data. If science has been slacking you'll have to get to work.
- type: StealResearchCondition
- type: entity
- noSpawn: true
parent: [BaseNinjaObjective, BaseCodeObjective]
id: SpiderChargeObjective
description: This bomb can be detonated in a specific location. Note that the bomb will not work anywhere else!
state: icon
- type: entity
- noSpawn: true
parent: [BaseNinjaObjective, BaseSurviveObjective]
id: NinjaSurviveObjective
name: Survive
state: icon
- type: entity
- noSpawn: true
parent: [BaseNinjaObjective, BaseCodeObjective]
id: TerrorObjective
name: Call in a threat
state: red_phone
- type: entity
- noSpawn: true
parent: [BaseNinjaObjective, BaseCodeObjective]
id: MassArrestObjective
name: Set everyone to wanted
# Collections
- type: entity
- noSpawn: true
parent: BaseThiefStealCollectionObjective
id: FigurineStealCollectionObjective
components:
difficulty: 0.25
- type: entity
- noSpawn: true
parent: BaseThiefStealCollectionObjective
id: HeadCloakStealCollectionObjective
components:
difficulty: 1.5
- type: entity
- noSpawn: true
parent: BaseThiefStealCollectionObjective
id: HeadBedsheetStealCollectionObjective
components:
difficulty: 1.0
- type: entity
- noSpawn: true
parent: BaseThiefStealCollectionObjective
id: StampStealCollectionObjective
components:
difficulty: 1.0
- type: entity
- noSpawn: true
parent: BaseThiefStealCollectionObjective
id: DoorRemoteStealCollectionObjective
components:
difficulty: 1.5
- type: entity
- noSpawn: true
parent: BaseThiefStealCollectionObjective
id: TechnologyDiskStealCollectionObjective
components:
difficulty: 0.8
- type: entity
- noSpawn: true
parent: BaseThiefStealCollectionObjective
id: IDCardsStealCollectionObjective
components:
- type: entity
- noSpawn: true
parent: BaseThiefStealCollectionObjective
id: LAMPStealCollectionObjective
components:
# steal item
- type: entity #Security subgroup
- noSpawn: true
parent: BaseThiefStealObjective
id: ForensicScannerStealObjective
components:
difficulty: 1
- type: entity
- noSpawn: true
parent: BaseThiefStealObjective
id: FlippoEngravedLighterStealObjective
components:
difficulty: 0.8
- type: entity
- noSpawn: true
parent: BaseThiefStealObjective
id: ClothingHeadHatWardenStealObjective
components:
difficulty: 1.2
- type: entity #Medical subgroup
- noSpawn: true
parent: BaseThiefStealObjective
id: ClothingOuterHardsuitVoidParamedStealObjective
components:
difficulty: 1
- type: entity
- noSpawn: true
parent: BaseThiefStealObjective
id: MedicalTechFabCircuitboardStealObjective
components:
difficulty: 1
- type: entity
- noSpawn: true
parent: BaseThiefStealObjective
id: ClothingHeadsetAltMedicalStealObjective
components:
difficulty: 1
- type: entity #Engineering subgroup
- noSpawn: true
parent: BaseThiefStealObjective
id: FireAxeStealObjective
components:
difficulty: 0.8
- type: entity
- noSpawn: true
parent: BaseThiefStealObjective
id: AmePartFlatpackStealObjective
components:
difficulty: 1
- type: entity #Cargo subgroup
- noSpawn: true
parent: BaseThiefStealObjective
id: ExpeditionsCircuitboardStealObjective
components:
difficulty: 0.7
- type: entity
- noSpawn: true
parent: BaseThiefStealObjective
id: CargoShuttleCircuitboardStealObjective
components:
difficulty: 0.7
- type: entity
- noSpawn: true
parent: BaseThiefStealObjective
id: SalvageShuttleCircuitboardStealObjective
components:
difficulty: 0.7
- type: entity #Service subgroup
- noSpawn: true
parent: BaseThiefStealObjective
id: ClothingEyesHudBeerStealObjective
components:
difficulty: 0.3
- type: entity
- noSpawn: true
parent: BaseThiefStealObjective
id: BibleStealObjective
components:
difficulty: 0.4
- type: entity #Other subgroup
- noSpawn: true
parent: BaseThiefStealObjective
id: ClothingNeckGoldmedalStealObjective
components:
difficulty: 1
- type: entity
- noSpawn: true
parent: BaseThiefStealObjective
id: ClothingNeckClownmedalStealObjective
components:
# Structures
- type: entity
- noSpawn: true
parent: BaseThiefStealStructureObjective
id: NuclearBombStealObjective
components:
difficulty: 2.5 #Good luck
- type: entity
- noSpawn: true
parent: BaseThiefStealStructureObjective
id: FaxMachineCaptainStealObjective
components:
difficulty: 2
- type: entity
- noSpawn: true
parent: BaseThiefStealStructureObjective
id: ChemDispenserStealObjective
components:
difficulty: 1
- type: entity
- noSpawn: true
parent: BaseThiefStealStructureObjective
id: XenoArtifactStealObjective
components:
difficulty: 0.5
- type: entity
- noSpawn: true
parent: BaseThiefStealStructureObjective
id: FreezerHeaterStealObjective
components:
difficulty: 0.5
- type: entity
- noSpawn: true
parent: BaseThiefStealStructureObjective
id: TegStealObjective
components:
difficulty: 1
- type: entity
- noSpawn: true
parent: BaseThiefStealStructureObjective
id: BoozeDispenserStealObjective
components:
difficulty: 0.5
- type: entity
- noSpawn: true
parent: BaseThiefStealStructureObjective
id: AltarNanotrasenStealObjective
components:
difficulty: 0.5
- type: entity
- noSpawn: true
parent: BaseThiefStealStructureObjective
id: PlantRDStealObjective
components:
# Animal
- type: entity
- noSpawn: true
parent: BaseThiefStealAnimalObjective
id: IanStealObjective
components:
difficulty: 2.5
- type: entity
- noSpawn: true
parent: BaseThiefStealAnimalObjective
id: BingusStealObjective
components:
difficulty: 1
- type: entity
- noSpawn: true
parent: BaseThiefStealAnimalObjective
id: McGriffStealObjective
components:
difficulty: 1
- type: entity
- noSpawn: true
parent: BaseThiefStealAnimalObjective
id: WalterStealObjective
components:
difficulty: 1
- type: entity
- noSpawn: true
parent: BaseThiefStealAnimalObjective
id: MortyStealObjective
components:
difficulty: 0.5
- type: entity
- noSpawn: true
parent: BaseThiefStealAnimalObjective
id: RenaultStealObjective
components:
difficulty: 2
- type: entity
- noSpawn: true
parent: BaseThiefStealAnimalObjective
id: ShivaStealObjective
components:
difficulty: 2
- type: entity
- noSpawn: true
parent: BaseThiefStealAnimalObjective
id: TropicoStealObjective
components:
# Escape
- type: entity
- noSpawn: true
parent: [BaseThiefObjective, BaseLivingObjective]
id: EscapeThiefShuttleObjective
name: Escape to centcom alive and unrestrained.
# state
- type: entity
- noSpawn: true
parent: [BaseTraitorObjective, BaseLivingObjective]
id: EscapeShuttleObjective
name: Escape to centcom alive and unrestrained.
- type: EscapeShuttleCondition
- type: entity
- noSpawn: true
parent: BaseTraitorObjective
id: DieObjective
name: Die a glorious death
- type: DieCondition
#- type: entity
-# noSpawn: true
# parent: [BaseTraitorObjective, BaseLivingObjective]
# id: HijackShuttleObjective
# name: Hijack emergency shuttle
# kill
- type: entity
- noSpawn: true
parent: [BaseTraitorObjective, BaseKillObjective]
id: KillRandomPersonObjective
description: Do it however you like, just make sure they don't make it to centcom.
- type: PickRandomPerson
- type: entity
- noSpawn: true
parent: [BaseTraitorObjective, BaseKillObjective]
id: KillRandomHeadObjective
description: We need this head gone and you probably know why. Good luck, agent.
# social
- type: entity
- noSpawn: true
parent: [BaseTraitorSocialObjective, BaseKeepAliveObjective]
id: RandomTraitorAliveObjective
description: Identify yourself at your own risk. We just need them alive.
- type: RandomTraitorAlive
- type: entity
- noSpawn: true
parent: [BaseTraitorSocialObjective, BaseHelpProgressObjective]
id: RandomTraitorProgressObjective
description: Identify yourself at your own risk. We just need them to succeed.
owner: job-name-cmo
- type: entity
- noSpawn: true
parent: BaseCMOStealObjective
id: CMOHyposprayStealObjective
components:
stealGroup: Hypospray
- type: entity
- noSpawn: true
parent: BaseCMOStealObjective
id: CMOCrewMonitorStealObjective
components:
owner: job-name-rd
- type: entity
- noSpawn: true
parent: BaseRDStealObjective
id: RDHardsuitStealObjective
components:
difficulty: 3
- type: entity
- noSpawn: true
parent: BaseRDStealObjective
id: HandTeleporterStealObjective
components:
## hos
- type: entity
- noSpawn: true
parent: BaseTraitorStealObjective
id: SecretDocumentsStealObjective
components:
## ce
- type: entity
- noSpawn: true
parent: BaseTraitorStealObjective
id: MagbootsStealObjective
components:
## qm
- type: entity
- noSpawn: true
parent: BaseTraitorStealObjective
id: ClipboardStealObjective
components:
## hop
- type: entity
- noSpawn: true
parent: BaseTraitorStealObjective
id: CorgiMeatStealObjective
components:
job: Captain
- type: entity
- noSpawn: true
parent: BaseCaptainObjective
id: CaptainIDStealObjective
components:
stealGroup: CaptainIDCard
- type: entity
- noSpawn: true
parent: BaseCaptainObjective
id: CaptainJetpackStealObjective
components:
stealGroup: JetpackCaptainFilled
- type: entity
- noSpawn: true
parent: BaseCaptainObjective
id: CaptainGunStealObjective
components:
owner: job-name-captain
- type: entity
- noSpawn: true
parent: BaseCaptainObjective
id: NukeDiskStealObjective
components: