# SPDX-FileCopyrightText: 2023 Colin-Tel <113523727+Colin-Tel@users.noreply.github.com>
# SPDX-FileCopyrightText: 2023 EnDecc <33369477+Endecc@users.noreply.github.com>
# SPDX-FileCopyrightText: 2023 Morb <14136326+Morb0@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Aiden <aiden@djkraz.com>
# SPDX-FileCopyrightText: 2024 Alzore <140123969+Blackern5000@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Aviu00 <93730715+Aviu00@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Boaz1111 <149967078+Boaz1111@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Brandon Hu <103440971+Brandon-Huu@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 CaasGit <87243814+CaasGit@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Chief-Engineer <119664036+Chief-Engineer@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Cojoke <83733158+Cojoke-dot@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 DrSmugleaf <10968691+DrSmugleaf@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 DrSmugleaf <DrSmugleaf@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Ed <96445749+TheShuEd@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Emisse <99158783+Emisse@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 EmoGarbage404 <retron404@gmail.com>
# SPDX-FileCopyrightText: 2024 Eoin Mcloughlin <helloworld@eoinrul.es>
# SPDX-FileCopyrightText: 2024 Errant <35878406+Errant-4@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Flareguy <78941145+Flareguy@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Hrosts <35345601+Hrosts@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 IProduceWidgets <107586145+IProduceWidgets@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Ian <ignaz.k@live.de>
# SPDX-FileCopyrightText: 2024 Ilya246 <57039557+Ilya246@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Joel Zimmerman <JoelZimmerman@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 JustCone <141039037+JustCone14@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Killerqu00 <47712032+Killerqu00@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Ko4ergaPunk <62609550+Ko4ergaPunk@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Kukutis96513 <146854220+Kukutis96513@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Leon Friedrich <60421075+ElectroJr@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Lye <128915833+Lyroth001@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 MerrytheManokit <167581110+MerrytheManokit@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Mervill <mervills.email@gmail.com>
# SPDX-FileCopyrightText: 2024 Mr. 27 <45323883+Dutch-VanDerLinde@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 MureixloI <132683811+MureixloI@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 NakataRin <45946146+NakataRin@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Nemanja <98561806+EmoGarbage404@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 OrangeMoronage9622 <whyteterry0092@gmail.com>
# SPDX-FileCopyrightText: 2024 PJBot <pieterjan.briers+bot@gmail.com>
# SPDX-FileCopyrightText: 2024 Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
# SPDX-FileCopyrightText: 2024 Plykiya <58439124+Plykiya@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Preston Smith <92108534+thetolbean@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Psychpsyo <60073468+Psychpsyo@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Repo <47093363+Titian3@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 RiceMar1244 <138547931+RiceMar1244@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 ShadowCommander <10494922+ShadowCommander@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Simon <63975668+Simyon264@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Stalen <33173619+stalengd@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 TakoDragon <69509841+BackeTako@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Thomas <87614336+Aeshus@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 TsjipTsjip <19798667+TsjipTsjip@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Ubaser <134914314+UbaserB@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Vasilis <vasilis@pikachu.systems>
# SPDX-FileCopyrightText: 2024 Vigers Ray <60344369+VigersRay@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 Whisper <121047731+QuietlyWhisper@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 beck-thompson <107373427+beck-thompson@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 deathride58 <deathride58@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 deltanedas <39013340+deltanedas@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 deltanedas <@deltanedas:kde.org>
# SPDX-FileCopyrightText: 2024 dffdff2423 <dffdff2423@gmail.com>
# SPDX-FileCopyrightText: 2024 eoineoineoin <github@eoinrul.es>
# SPDX-FileCopyrightText: 2024 foboscheshir <156405958+foboscheshir@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 lzk <124214523+lzk228@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 metalgearsloth <comedian_vs_clown@hotmail.com>
# SPDX-FileCopyrightText: 2024 nikthechampiongr <32041239+nikthechampiongr@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 plykiya <plykiya@protonmail.com>
# SPDX-FileCopyrightText: 2024 saintmuntzer <47153094+saintmuntzer@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 shamp <140359015+shampunj@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 strO0pwafel <153459934+strO0pwafel@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 stroopwafel <j.o.luijkx@student.tudelft.nl>
# SPDX-FileCopyrightText: 2024 themias <89101928+themias@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 to4no_fix <156101927+chavonadelal@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 username <113782077+whateverusername0@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 voidnull000 <18663194+voidnull000@users.noreply.github.com>
# SPDX-FileCopyrightText: 2024 whateverusername0 <whateveremail>
# SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 GoobBot <uristmchands@proton.me>
# SPDX-FileCopyrightText: 2025 Jackson Langley <tripwiregamer@gmail.com>
# SPDX-FileCopyrightText: 2025 ScarKy0 <106310278+ScarKy0@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Solstice <solsticeofthewinter@gmail.com>
# SPDX-FileCopyrightText: 2025 SolsticeOfTheWinter <solsticeofthewinter@gmail.com>
# SPDX-FileCopyrightText: 2025 Ted Lukin <66275205+pheenty@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Unkn0wn_Gh0st <shadowstalkermll@gmail.com>
# SPDX-FileCopyrightText: 2025 Winkarst <74284083+Winkarst-cpu@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 loltart <lo1tartyt@gmail.com>
# SPDX-FileCopyrightText: 2025 pheenty <fedorlukin2006@gmail.com>
# SPDX-FileCopyrightText: 2025 slarticodefast <161409025+slarticodefast@users.noreply.github.com>
#
# SPDX-License-Identifier: AGPL-3.0-or-later

- type: entity
  abstract: true
  parent: BaseObjective
  id: BaseTraitorObjective
  components:
  - type: Objective
    issuer: objective-issuer-syndicate
  - type: RoleRequirement
    roles:
    - TraitorRole

- type: entity
  abstract: true
  parent: [BaseTraitorObjective, BaseSocialObjective]
  id: BaseTraitorSocialObjective
  components:
  - type: Objective
    icon:
      sprite: Objects/Misc/folders.rsi
      state: folder-white
  - type: MultipleTraitorsRequirement

- type: entity
  abstract: true
  parent: [BaseTraitorObjective, BaseStealObjective]
  id: BaseTraitorStealObjective
  components:
  - type: StealCondition
    verifyMapExistence: false
  - type: Objective
    difficulty: 2.75
  - type: ObjectiveLimit
    limit: 2 # there is usually only 1 of each steal objective, have 2 max for drama

# state

- type: entity
  parent: [BaseTraitorObjective, BaseLivingObjective]
  id: EscapeShuttleObjective
  name: Escape to centcomm alive and unrestrained.
  description: One of our undercover agents will debrief you when you arrive on the evacuation shuttle. Don't show up in cuffs. # Goobstation
  components:
  - type: Objective
    difficulty: 1.3
    icon:
      sprite: Structures/Furniture/chairs.rsi
      state: shuttle
  - type: EscapeShuttleCondition

- type: entity
  parent: BaseTraitorObjective
  id: DieObjective
  name: Die a glorious death
  description: Die.
  components:
  - type: Objective
    difficulty: 0.5
    icon:
      sprite: Mobs/Ghosts/ghost_human.rsi
      state: icon
  - type: ObjectiveBlacklistRequirement
    blacklist:
      components:
      - EscapeShuttleCondition
      - StealCondition
  - type: DieCondition

- type: entity
  parent: [BaseTraitorObjective, BaseLivingObjective]
  id: HijackShuttleObjective
  name: Hijack emergency shuttle
  description: Leave on the shuttle free and clear of the loyal Nanotrasen crew on board. Use ANY methods available to you. Syndicate agents, Nanotrasen enemies, and handcuffed hostages may remain alive on the shuttle. Ignore assistance from anyone other than a support agent.
  components:
    - type: Objective
      difficulty: 5 # insane, default config max difficulty
      icon:
        sprite: Objects/Tools/emag.rsi
        state: icon
    - type: HijackShuttleCondition

# kill

- type: entity
  parent: [BaseTraitorObjective, BaseKillObjective]
  id: KillRandomPersonObjective
  description: Do it however you like, just make sure they don't get off the station.
  components:
  - type: Objective
    difficulty: 1.75
    unique: false
  - type: TargetObjective
    title: objective-condition-maroon-person-title
  - type: PickRandomPerson
  - type: KillPersonCondition
    requireMaroon: true

- type: entity
  parent: [BaseTraitorObjective, BaseKillObjective]
  id: KillRandomHeadObjective
  description: We need this head gone and you probably know why. Make sure they don't make it to CentComm, even if they're dead. Good luck, agent.
  components:
  - type: Objective
    # technically its still possible for KillRandomPersonObjective to roll a head but this is guaranteed, so higher difficulty
    difficulty: 3.0
    # killing 1 head is enough
    unique: true
  - type: TargetObjective
    title: objective-condition-kill-maroon-title
  - type: PickRandomHead
  - type: KillPersonCondition
    # don't count missing evac as killing as heads are higher profile, so you really need to do the dirty work
    # if ce flies a shittle to centcom you better find a way onto it
    requireDead: true
    requireMaroon: true

# social

- type: entity
  parent: [BaseTraitorSocialObjective, BaseKeepAliveObjective]
  id: RandomTraitorAliveObjective
  description: Identify yourself at your own risk. We just need them alive.
  components:
  - type: Objective
    difficulty: 1.75
  - type: TargetObjective
    title: objective-condition-other-traitor-alive-title
  - type: RandomTraitorAlive

- type: entity
  parent: [BaseTraitorSocialObjective, BaseHelpProgressObjective]
  id: RandomTraitorProgressObjective
  description: Identify yourself at your own risk. We just need them to succeed.
  components:
  - type: Objective
    difficulty: 2.5
  - type: TargetObjective
    title: objective-condition-other-traitor-progress-title
  - type: RandomTraitorProgress

# steal

## cmo

- type: entity
  abstract: true
  parent: BaseTraitorStealObjective
  id: BaseCMOStealObjective
  components:
  - type: NotJobRequirement
    job: ChiefMedicalOfficer
  - type: StealCondition
    owner: job-name-cmo

- type: entity
  parent: BaseCMOStealObjective
  id: CMOHyposprayStealObjective
  components:
  - type: StealCondition
    stealGroup: Hypospray

#- type: entity # Goobstation - made this public
#  parent: BaseCMOStealObjective
#  id: CMOCrewMonitorStealObjective
#  components:
#  - type: StealCondition
#    stealGroup: HandheldCrewMonitor

## rd

- type: entity
  abstract: true
  parent: BaseTraitorStealObjective
  id: BaseRDStealObjective
  components:
  - type: NotJobRequirement
    job: ResearchDirector
  - type: StealCondition
    owner: job-name-rd

- type: entity
  parent: BaseRDStealObjective
  id: RDHardsuitStealObjective
  components:
  - type: StealCondition
    stealGroup: ClothingOuterHardsuitRd
  - type: Objective
    # This item must be worn or stored in a slowing duffelbag, very hard to hide.
    difficulty: 3

- type: entity
  parent: BaseRDStealObjective
  id: HandTeleporterStealObjective
  components:
  - type: StealCondition
    stealGroup: HandTeleporter

## warden

- type: entity
  parent: BaseTraitorStealObjective
  id: EnergyShotgunStealObjective
  components:
  - type: Objective
    # Warden will have this on them a lot of the time so..
    difficulty: 3
  - type: NotJobRequirement
    job: Warden # Goob edit
  - type: StealCondition
    stealGroup: WeaponEnergyShotgun
    owner: job-name-warden # Goob edit

## ce

- type: entity
  abstract: true
  parent: BaseTraitorStealObjective
  id: BaseCEStealObjective
  components:
  - type: NotJobRequirement
    job: ChiefEngineer
  - type: StealCondition
    owner: job-name-ce

- type: entity
  parent: BaseCEStealObjective
  id: MagbootsStealObjective
  components:
  - type: StealCondition
    stealGroup: ClothingShoesBootsMagAdv

## qm

- type: entity
  parent: BaseTraitorStealObjective
  id: ClipboardStealObjective
  components:
  - type: NotJobRequirement
    job: Quartermaster
  - type: StealCondition
    stealGroup: BoxFolderQmClipboard
    owner: job-name-qm

- type: entity
  parent: BaseTraitorStealObjective
  id: KnuckleDustersStealObjective
  components:
  - type: NotJobRequirement
    job: Quartermaster
  - type: StealCondition
    stealGroup: ClothingHandsKnuckleDustersQM
    owner: job-name-qm

## hop

- type: entity
  parent: BaseTraitorStealObjective
  id: CorgiMeatStealObjective
  components:
  - type: NotJobRequirement
    job: HeadOfPersonnel
  - type: ObjectiveLimit
    limit: 3 # ian only has 2 slices, 3 obj for drama
  - type: StealCondition
    stealGroup: FoodMeatCorgi
    owner: objective-condition-steal-Ian

## cap

- type: entity
  abstract: true
  parent: BaseTraitorStealObjective
  id: BaseCaptainObjective
  components:
  - type: Objective
    # sorry ce but your jordans are not as high security as the caps gear
    difficulty: 3.5
  - type: NotJobRequirement
    job: Captain

- type: entity
  parent: BaseCaptainObjective
  id: CaptainIDStealObjective
  components:
  - type: StealCondition
    stealGroup: CaptainIDCard

- type: entity
  parent: BaseCaptainObjective
  id: CaptainJetpackStealObjective
  components:
  - type: StealCondition
    stealGroup: JetpackCaptainFilled

- type: entity
  parent: BaseCaptainObjective
  id: CaptainGunStealObjective
  components:
  - type: StealCondition
    stealGroup: WeaponAntiqueLaser
    owner: job-name-captain

- type: entity
  parent: BaseCaptainObjective
  id: NukeDiskStealObjective
  components:
  - type: Objective
    # high difficulty since the hardest item both to steal, and to not get caught down the road,
    # since anyone with a pinpointer can track you down and kill you
    # it's close to being a stealth loneop
    difficulty: 4
  - type: NotCommandRequirement
  - type: StealCondition
    stealGroup: NukeDisk
    owner: objective-condition-steal-station
