Paradox Clone (#35794)

* polymorph fixes

* paradox clone

* forensics cleanup

* bump doors

* 4

* attribution

* polymorphn't

* clean up objectives

* Update Resources/ServerInfo/Guidebook/Antagonist/MinorAntagonists.xml

* review

* add virtual items to blacklist

* allow them to roll sleeper agent
This commit is contained in:
slarticodefast
2025-03-13 18:09:07 +01:00
committed by GitHub
parent 1b2d3d6ab9
commit bce9b4b05b
23 changed files with 498 additions and 17 deletions

View File

@@ -22,7 +22,7 @@
prob: 0.15
- id: HarmonicaInstrument
prob: 0.15
- type: entity
id: ToolboxElectricalFilled
name: electrical toolbox
@@ -82,7 +82,7 @@
- id: MysteryFigureBox
prob: 0.5
- id: BookRandom
amount: 2
amount: 2
- id: CrayonMime
- id: CrayonRainbow
@@ -105,6 +105,21 @@
- id: ClothingHeadHatHardhatBlue
prob: 0.5
- type: entity
id: ToolboxMechanicalFilledAllTools
name: mechanical toolbox
suffix: Filled, all tools
parent: ToolboxMechanical
components:
- type: StorageFill
contents:
- id: Crowbar
- id: Wrench
- id: Screwdriver
- id: Wirecutter
- id: Welder
- id: Multitool
- type: entity
parent: ToolboxSyndicate
id: ToolboxSyndicateFilled

View File

@@ -191,6 +191,26 @@
- sprite: Objects/Weapons/Melee/energykatana.rsi
state: icon
- type: entity
categories: [ HideSpawnMenu, Spawner ]
parent: BaseAntagSpawner
id: SpawnPointGhostParadoxClone
components:
- type: GhostRole
name: ghost-role-information-paradox-clone-name
description: ghost-role-information-paradox-clone-description
rules: ghost-role-information-antagonist-rules
mindRoles:
- MindRoleGhostRoleSoloAntagonist
raffle:
settings: default
- type: Sprite
layers:
- sprite: Markers/jobs.rsi
state: green
- sprite: Mobs/Aliens/paradox_clone.rsi
state: preview
- type: entity
categories: [ HideSpawnMenu, Spawner ]
parent: BaseAntagSpawner

View File

@@ -56,6 +56,7 @@
blacklist:
components:
- AttachedClothing # helmets, which are part of the suit
- VirtualItem
- type: cloningSettings
id: Antag
@@ -78,7 +79,7 @@
suffix: Non-Antag
components:
- type: Sprite
sprite: Markers/paradox_clone.rsi
sprite: Mobs/Aliens/paradox_clone.rsi
state: preview
- type: RandomCloneSpawner
settings: BaseClone

View File

@@ -0,0 +1,37 @@
# Mob
- type: entity
parent: BaseMob
id: MobParadox
name: space-time paradox
description: A big ball of wibbly wobbly, timey wimey stuff.
components:
- type: Sprite
drawdepth: Mobs
layers:
- sprite: Mobs/Aliens/paradox_clone.rsi
state: paradox
shader: unshaded
- type: RotationVisuals
horizontalRotation: 90
- type: Pullable
- type: Tag
tags:
- DoorBumpOpener
- type: entity
parent: MobParadox
id: MobParadoxTimed # visual effect when gibbing on round end
components:
- type: TimedDespawn
lifetime: 10
# guidebook dummy
- type: entity
id: ParadoxCloneDummy
categories: [ HideSpawnMenu ]
name: Paradox Clone
components:
- type: Sprite
sprite: Mobs/Aliens/paradox_clone.rsi
state: preview

View File

@@ -232,6 +232,39 @@
mindRoles:
- MindRoleNinja
- type: entity
parent: BaseGameRule
id: ParadoxCloneSpawn
components:
- type: StationEvent
weight: 4 # should not happen every round
duration: null
earliestStart: 30
reoccurrenceDelay: 20
minimumPlayers: 15
- type: ParadoxCloneRule
- type: AntagObjectives
objectives:
- ParadoxCloneKillObjective
- ParadoxCloneLivingObjective
- type: AntagRandomSpawn # TODO: improve spawning so they only start in maints
- type: AntagSelection
agentName: paradox-clone-round-end-agent-name
definitions:
- spawnerPrototype: SpawnPointGhostParadoxClone
min: 1
max: 1
pickPlayer: false
startingGear: ParadoxCloneGear
roleLoadout:
- RoleSurvivalStandard # give vox something to breath in case they don't get a copy
briefing:
text: paradox-clone-role-greeting
color: lightblue
sound: /Audio/Misc/paradox_clone_greeting.ogg
mindRoles:
- MindRoleParadoxClone
- type: entity
parent: BaseGameRule
id: RevenantSpawn

View File

@@ -0,0 +1,38 @@
- type: entity
abstract: true
parent: BaseObjective
id: BaseParadoxCloneObjective
components:
- type: Objective
# required but not used
difficulty: 1
issuer: objective-issuer-paradox
- type: RoleRequirement
roles:
mindRoles:
- ParadoxCloneRole
- type: entity
parent: [BaseParadoxCloneObjective, BaseLivingObjective]
id: ParadoxCloneLivingObjective
name: Escape to centcomm alive and unrestrained.
description: Return to your old life.
components:
- type: Objective
icon:
sprite: Structures/Furniture/chairs.rsi
state: shuttle
- type: EscapeShuttleCondition
- type: entity
parent: [BaseParadoxCloneObjective, BaseKillObjective]
id: ParadoxCloneKillObjective
name: Fix the space-time paradox.
description: Replace your original to fix the paradox. Remember, your mission is to blend in, do not kill anyone else unless you have to!
components:
- type: PickSpecificPerson
- type: KillPersonCondition
requireDead: true # don't count missing evac as killing
- type: TargetObjective
title: objective-condition-kill-head-title # kill <name>, <job>

View File

@@ -0,0 +1,16 @@
- type: antag
id: ParadoxClone
name: roles-antag-paradox-clone-name
antagonist: true
objective: roles-antag-paradox-clone-objective
setPreference: false
# they need to be able to espace when spawning inside a locked room
# TODO: remove this once we got a better spawning loacation selection
- type: startingGear
id: ParadoxCloneGear
inhand:
- ToolboxMechanicalFilledAllTools
storage:
back:
- ClothingHandsGlovesColorYellow

View File

@@ -143,6 +143,17 @@
exclusiveAntag: true
- type: NinjaRole
# Paradox Clone
- type: entity
parent: BaseMindRoleAntag
id: MindRoleParadoxClone
name: Paradox Clone Role
components:
- type: MindRole
antagPrototype: ParadoxClone
roleType: SoloAntagonist
- type: ParadoxCloneRole
# Nukies
- type: entity
parent: BaseMindRoleAntag