remove closet skeletong, add menace skeleton (#3660)

* add objectives to closet skeleton

* lowers skeletong weight by 2

* add drip objective

* skeletong

* menace skeletong

* add menace skeletong

* minimum player 30 real so there is security

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* remove skeletong from upstream namespace

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* revert to wiz default

* revert to wiz default

Signed-off-by: Lyndomen <49795619+Lyndomen@users.noreply.github.com>

* fix roles

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Update Resources/Locale/en-US/_DV/objectives/conditions/skeleton.ftl

Co-authored-by: Tobias Berger <toby@tobot.dev>
Signed-off-by: Lyndomen <49795619+Lyndomen@users.noreply.github.com>

* Update Resources/Prototypes/_DV/GameRules/events.yml

Co-authored-by: Tobias Berger <toby@tobot.dev>
Signed-off-by: Lyndomen <49795619+Lyndomen@users.noreply.github.com>

* Update objectiveGroups.yml

Signed-off-by: Lyndomen <49795619+Lyndomen@users.noreply.github.com>

* Update menaceskeleton.yml

Signed-off-by: Lyndomen <49795619+Lyndomen@users.noreply.github.com>

* Update objectiveGroups.yml

Signed-off-by: Lyndomen <49795619+Lyndomen@users.noreply.github.com>

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Update events.yml

Signed-off-by: Lyndomen <49795619+Lyndomen@users.noreply.github.com>

* Update events.yml

Signed-off-by: Lyndomen <49795619+Lyndomen@users.noreply.github.com>

* unfuck

Signed-off-by: Lyndomen <49795619+Lyndomen@users.noreply.github.com>

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

---------

Signed-off-by: Lyndomen <49795619+Lyndomen@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Tobias Berger <toby@tobot.dev>
This commit is contained in:
Lyndomen 2025-07-24 12:49:04 -04:00 committed by GitHub
parent 14ac8f1968
commit 793c90a472
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
15 changed files with 239 additions and 17 deletions

View File

@ -0,0 +1,6 @@
using Content.Shared.Roles;
namespace Content.Shared._DV.Roles;
[RegisterComponent]
public sealed partial class MenaceSkeletonRoleComponent : BaseMindRoleComponent;

View File

@ -1,4 +0,0 @@
ghost-role-information-closet-skeleton-rules = You are a old member of the station, try to get your previous job back or dwell in the maintenance tunnels!.
You are a [color=green][bold]Non-antagonist[/bold][/color]. You should generally not seek to harm the station and its crew.
You're allowed some minor mischief.
All normal rules apply unless an administrator tells you otherwise.

View File

@ -0,0 +1,6 @@
ghost-role-information-menace-skeleton-name = Menace Skeleton
ghost-role-information-menace-skeleton-description = Trapped in a closet for all eternity has left you remarkably light on calcium. Explore a new age, pilfer milk, and find your purpose.
ghost-role-information-menace-skeleton-rules = You are a [color=yellow][bold]Free-Agent[/bold][/color]. You are free to act as either an antagonist or a non-antagonist.
You should NOT seek violence and only use it as a last resort to resolve your encounters.
skeleton-role-briefing = You are now a skeleton, an undying representation of your will. Why have you just now awakened, what is your purpose, and what will you do with this new un-life?
menace-skeleton-round-end-name = Menace Skeleton

View File

@ -0,0 +1,3 @@
objective-issuer-skeleton = [color=#c8ffb5]Lord of Bones[/color]
objective-skeleton-frame-title = Frame {$targetName} for a crime
objective-skeleton-haunt-title = Rattle and haunt {$targetName}

View File

@ -18,3 +18,6 @@ roles-antag-roboneuroticist-objective = Conspiracy to Convert
roles-antag-nuclear-operative-corpsman-name = Nuclear operative corpsman
roles-antag-nuclear-operative-corpsman-objective = The team's combat medic tasked with keeping everyone alive and kicking.
roles-antag-menace-skeleton-name = Menace Skeleton
roles-antag-menace-skeleton-objective = Rattle 'Em

View File

@ -150,8 +150,7 @@ ghost-role-information-skeleton-biker-name = Skeleton Biker
ghost-role-information-skeleton-biker-description = Ride around on your sweet ride.
ghost-role-information-closet-skeleton-name = Closet Skeleton
# Delta V removed mention of "cause chaos" to avoid confusion.
ghost-role-information-closet-skeleton-description = You are arguably one of the oldest members of the station! Get your old job back, or dwell maintenance! The world is yours to shape.
ghost-role-information-closet-skeleton-description = You are arguably one of the oldest members of the station! Get your old job back, or cause chaos! The world is yours to shape.
ghost-role-information-remilia-name = Remilia, the Chaplain's Familiar
ghost-role-information-remilia-description = Follow and obey the chaplain. Eat fruit. Screech loudly into people's ears and write it off as echolocation.

View File

@ -54,14 +54,11 @@
- type: GhostRole
name: ghost-role-information-closet-skeleton-name
description: ghost-role-information-closet-skeleton-description
rules: ghost-role-information-closet-skeleton-rules # DeltaV - No longer free agent, now a non-antag (Some leeway given).
rules: ghost-role-information-freeagent-rules
mindRoles:
- MindRoleGhostRoleNeutral # DeltaV - neutral ghost role instead of free agent
- MindRoleGhostRoleFreeAgent
raffle:
settings: default
requirements: # DeltaV
- !type:OverallPlaytimeRequirement
time: 172800 # 48 hours overall
- type: GhostTakeoverAvailable
- type: Loadout
prototypes: [LimitedPassengerGear]

View File

@ -33,7 +33,7 @@
children:
- !type:NestedSelector # DeltaV
tableId: BasicAntagEventsTableDeltaV
- id: ClosetSkeleton
#- id: ClosetSkeleton # DeltaV - replaced with MenaceSkeleton
- id: DragonSpawn
- id: ColossusSpawn # DeltaV
#- id: KingRatMigration # DeltaV - disabled
@ -168,7 +168,7 @@
id: ClosetSkeleton
components:
- type: StationEvent
weight: 8 # DeltaV - was 10
weight: 5
duration: 1
minimumPlayers: 10
- type: PrecognitionResult # DeltaV - Precogniton

View File

@ -138,3 +138,19 @@
- !type:RoleTimeRequirement
role: JobRoboticist
time: 7200 # 2h roboticist so you know how to make robot
- type: entity
categories: [ HideSpawnMenu, Spawner ]
parent: BaseAntagSpawner
id: SpawnPointMenaceSkeleton
name: menace skeleton spawn point
components:
- type: GhostRole
name: ghost-role-information-menace-skeleton-name
description: ghost-role-information-menace-skeleton-description
rules: ghost-role-information-menace-skeleton-rules
mindRoles:
- MindRoleMenaceSkeleton
requirements: # keep in sync with the antag prototype
- !type:OverallPlaytimeRequirement
time: 172800 # 48h

View File

@ -0,0 +1,17 @@
- type: entity
parent: MobSkeletonPerson
id: MobMenaceSkeleton
name: menace skeleton
components:
- type: GhostRole
name: ghost-role-information-menace-skeleton-name
description: ghost-role-information-menace-skeleton-description
rules: ghost-role-information-menace-skeleton-rules
mindRoles:
- MindRoleMenaceSkeleton
raffle:
settings: default
- type: GhostTakeoverAvailable
- type: Loadout
prototypes: [MenaceSkeletonGear]
- type: RandomHumanoidAppearance

View File

@ -12,6 +12,7 @@
- id: Fugitive
- id: ListeningPost
- id: RoboNeuroticist
- id: MenaceSkeleton
# Replaces upstream meteor events until they're good
- type: entity
@ -34,8 +35,8 @@
- type: MeteorSwarmRule
- type: entity
id: XenoVents
parent: BaseGameRule
id: XenoVents
components:
- type: StationEvent
startAnnouncement: station-event-xeno-vent-start-announcement
@ -68,8 +69,8 @@
weight: 0.01
- type: entity
id: MothroachSpawn
parent: BaseGameRule
id: MothroachSpawn
components:
- type: StationEvent
earliestStart: 15
@ -86,8 +87,8 @@
id: MobMothroach
- type: entity
id: ListeningPost
parent: BaseGameRule
id: ListeningPost
components:
- type: StationEvent
earliestStart: 15
@ -236,8 +237,8 @@
- MindRoleRoboNeuroticist
- type: entity
id: NoosphericStorm
parent: BaseGameRule
id: NoosphericStorm
components:
- type: StationEvent
startAnnouncement: station-event-noospheric-storm-announcement
@ -246,3 +247,40 @@
weight: 5
earliestStart: 15
- type: NoosphericStormRule
- type: entity
parent: BaseMidRoundAntag
id: MenaceSkeleton
components:
- type: StationEvent
weight: 6
duration: 1
minimumPlayers: 30
- type: PrecognitionResult
message: psionic-power-precognition-closet-skeleton-result-message
- type: AntagSpawner
prototype: MobMenaceSkeleton
- type: AntagRandomObjectives
sets:
- groups: SkeletonObjectiveGroup
maxPicks: 2 # only pick 2 of 4
maxDifficulty: 100 # ignore difficulty, use maxPicks instead
- type: AntagSelection
agentName: menace-skeleton-round-end-name
definitions:
- spawnerPrototype: SpawnPointMenaceSkeleton
min: 1
max: 1
pickPlayer: false
components:
- type: RandomMetadata
nameSegments:
- NamesFakeHumanFirst
- NamesFakeHumanLast
nameFormat: name-format-standard
- type: RandomHumanoidAppearance
randomizeName: false
- type: EmitSoundOnSpawn # fell out of the ceiling
sound: /Audio/Effects/clang.ogg
mindRoles:
- MindRoleMenaceSkeleton

View File

@ -0,0 +1,77 @@
- type: entity
abstract: true
parent: BaseSurviveObjective
id: SkeletonBaseObjective
components:
- type: Objective
issuer: objective-issuer-skeleton
icon:
sprite: Objects/Consumable/Drinks/milk.rsi
state: icon
difficulty: 1 # difficulty is unused
- type: RoleRequirement
roles:
- MenaceSkeletonRole
- type: entity
parent: SkeletonBaseObjective
id: SkeletonMilkObjective
name: Milk Them Dry
description: You need milk to stay alive and fix up your bones. Get as much of it as you can!
components:
- type: Objective
icon:
sprite: Objects/Consumable/Drinks/milk.rsi
state: icon
- type: entity
parent: SkeletonBaseObjective
id: SkeletonHauntObjective
name: Rattle and Haunt
description: You're a spooky scary skeleton, scare the daylights out of them!
components:
- type: Objective
icon:
sprite: Mobs/Species/Skeleton/parts.rsi
state: skull_icon
- type: TargetObjective
title: objective-skeleton-haunt-title
- type: PickRandomPerson
onlyChoosableJobs: true
- type: entity
parent: SkeletonBaseObjective
id: SkeletonFrameObjective
name: Frame for Entombment
description: You believe you've narrowed down someone who might have been responsible for your entombment. Frame them for a crime.
components:
- type: Objective
icon:
sprite: Objects/Misc/handcuffs.rsi
state: handcuff
- type: TargetObjective
title: objective-skeleton-frame-title
- type: PickRandomPerson
onlyChoosableJobs: true
- type: entity
parent: SkeletonBaseObjective
id: SkeletonBoneObjective
name: Bonevelent Ruler
description: You believe you were previous the undisputed ruler of this station. Establish your claim and sway the station under your eternal rule.
components:
- type: Objective
icon:
sprite: Clothing/Head/Misc/fancycrown.rsi
state: icon
- type: entity
parent: SkeletonBaseObjective
id: SkeletonDripObjective
name: Burial Wealth
description: You are an immortal and undying being, and you should look the part. Amass only the most resplendent clothing.
components:
- type: Objective
icon:
sprite: Clothing/OuterClothing/Coats/expensive_coat.rsi
state: icon

View File

@ -34,11 +34,47 @@
NinjaLuckyBillStealObjective: 1
NinjaCaptainsCloakStealObjective: 0.75
## Traitor
- type: weightedRandom
id: TraitorObjectiveGroupSpecial
weights:
UploadAILawObjective: 1
## MenaceSkeleton
- type: weightedRandom
id: SkeletonObjectiveGroup
weights:
SkeletonObjectiveGroupMilk: 1
SkeletonObjectiveGroupHaunt: 1
SkeletonObjectiveGroupFrame: 1
SkeletonObjectiveGroupBone: 0.5
SkeletonObjectiveGroupDrip: 1
- type: weightedRandom
id: SkeletonObjectiveGroupMilk
weights:
SkeletonMilkObjective: 1
- type: weightedRandom
id: SkeletonObjectiveGroupHaunt
weights:
SkeletonHauntObjective: 1
- type: weightedRandom
id: SkeletonObjectiveGroupFrame
weights:
SkeletonFrameObjective: 1
- type: weightedRandom
id: SkeletonObjectiveGroupBone
weights:
SkeletonBoneObjective: 1
- type: weightedRandom
id: SkeletonObjectiveGroupDrip
weights:
SkeletonDripObjective: 1
## Wizard
- type: weightedRandom
id: WizardObjectiveGroupPrimaryDelta

View File

@ -0,0 +1,15 @@
- type: antag
id: MenaceSkeleton
name: roles-antag-menace-skeleton-name
objective: roles-antag-menace-skeleton-objective
antagonist: true
requirements:
- !type:OverallPlaytimeRequirement
time: 172800 # 48 hours overall
- type: startingGear
id: MenaceSkeletonGear
equipment:
jumpsuit: ClothingUniformJumpsuitColorGrey
ears: ClothingHeadsetGrey
shoes: ClothingShoesChameleonNoSlips

View File

@ -60,3 +60,16 @@
- type: RoboNeuroticistRole
- type: RoleBriefing
briefing: roboneuroticist-role-briefing
- type: entity
parent: BaseMindRoleAntag
id: MindRoleMenaceSkeleton
name: Menace Skeleton Role
components:
- type: MindRole
roleType: FreeAgent
antagPrototype: MenaceSkeleton
exclusiveAntag: true
- type: MenaceSkeletonRole
- type: RoleBriefing
briefing: skeleton-role-briefing