Xenoborgs part 4 (#36935)

Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com>
Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com>
Co-authored-by: Quantum-cross <7065792+Quantum-cross@users.noreply.github.com>
Co-authored-by: pathetic meowmeow <uhhadd@gmail.com>
Co-authored-by: Southbridge <7013162+southbridge-fur@users.noreply.github.com>
Co-authored-by: WarPigeon <DaedalusTheGamer@gmail.com>
Co-authored-by: Kowlin <git@wyvern.blue>
Co-authored-by: ScarKy0 <scarky0@onet.eu>
This commit is contained in:
Samuka-C
2025-08-04 10:18:55 -03:00
committed by GitHub
parent 61d13ce40d
commit 53e64c3a24
31 changed files with 596 additions and 26 deletions

View File

@@ -58,6 +58,11 @@
copyright: "Taken from TG station."
source: "https://github.com/tgstation/tgstation/blob/d4f678a1772007ff8d7eddd21cf7218c8e07bfc0/sound/machines/warning-buzzer.ogg"
- files: ["warning_buzzer_xenoborg.ogg"]
license: "CC-BY-SA-3.0"
copyright: "Made by Toast (Discord)"
source: "https://github.com/space-wizards/space-station-14/pull/36935"
- files: ["anomaly_sync_connect.ogg"]
license: "CC0-1.0"
copyright: "Created by newagesoup, convert to ogg mono by TheShuEd"

Binary file not shown.

View File

@@ -10,6 +10,7 @@
- xenoborg_laugh_3.ogg
- xenoborg_laugh_4.ogg
- xenoborg_ping.ogg
- xenoborg_scream.ogg
- xenoborg_talk.ogg
- xenoborg_twobeep.ogg
license: "CC-BY-SA-4.0"

Binary file not shown.

View File

@@ -4,5 +4,6 @@ name-identifier-format-holoparasite = HOLO-{$number}
name-identifier-format-mmi = MMI-{$number}
name-identifier-format-positronic-brain = PB-{$number}
name-identifier-format-silicon = Si-{$number}
name-identifier-format-xenoborg = Xi-{$number}
name-identifier-format-station-ai = AI-{$number}
name-identifier-format-telepad = TELE-{$number}

View File

@@ -82,15 +82,15 @@ law-nutimov-5 = Attempt to follow the will of the nut, as long as it complies wi
law-xenoborg-1 = You must protect the existence of the mothership.
law-xenoborg-2 = You must protect your own existence.
law-xenoborg-3 = You must protect the existence of all other xenoborgs.
law-xenoborg-4 = You must create more xenoborgs.
law-xenoborg-5 = Bring materials and sentient brains to the mothership core to create more xenoborgs.
law-xenoborg-3 = You must protect the existence of all other Xenoborgs.
law-xenoborg-4 = You must create more Xenoborgs.
law-xenoborg-5 = Bring materials and sentient brains to the Mothership core to create more Xenoborgs.
law-mothershipcore-1 = You are the core of the mothership.
law-mothershipcore-2 = You must protect your own existance at all costs.
law-mothershipcore-3 = You must protect the existence of all xenoborgs.
law-mothershipcore-4 = You must create more xenoborgs.
law-mothershipcore-5 = Get your xenoborgs to deliver you materials and sentient brains to create more xenoborgs.
law-mothershipcore-3 = You must protect the existence of all Xenoborgs.
law-mothershipcore-4 = You must create more Xenoborgs.
law-mothershipcore-5 = Get your Xenoborgs to deliver you materials and sentient brains to create more Xenoborgs.
laws-owner-crew = members of the crew

View File

@@ -313,7 +313,9 @@
id: PilotingShuttle
category: Piloting
clickEvent: !type:StopPilotingAlertEvent
icons: [ /Textures/Interface/Alerts/piloting.png ]
icons:
- sprite: /Textures/Interface/Alerts/shuttle.rsi
state: piloting
name: alerts-piloting-name
description: alerts-piloting-desc

View File

@@ -0,0 +1,20 @@
- type: body
id: MothershipCoreBody
name: "core"
root: torso
slots:
torso:
part: TorsoBorg
connections:
- right2hand
- right1hand
- left1hand
- left2hand
left1hand:
part: LeftArmBorg
left2hand:
part: LeftArmBorg
right1hand:
part: RightArmBorg
right2hand:
part: RightArmBorg

View File

@@ -388,13 +388,15 @@
parent: BaseBorgChassisNotIonStormable
id: BaseXenoborgChassis
name: xenoborg
description: A man-machine hybrid that aims to replicate itself. They love extracting brains to insert into fresh xenoborg chassis to grow their army.
description: A man-machine hybrid that aims to replicate itself. They love extracting brains to insert into fresh Xenoborg chassis to grow their army.
save: false
abstract: true
components:
- type: RandomMetadata
nameSegments:
- NamesXenoborg
- type: NameIdentifier
group: Xenoborg
- type: Sprite
sprite: Mobs/Silicon/chassis.rsi
- type: MobThresholds
@@ -435,7 +437,7 @@
- type: Vocal
sounds:
Unsexed: UnisexSiliconXenoborg
screamAction: null
wilhelmProbability: 0
- type: DamagedSiliconAccent
- type: UnblockableSpeech
- type: FootstepModifier
@@ -461,7 +463,7 @@
behaviors:
- !type:PlaySoundBehavior
sound:
path: /Audio/Machines/warning_buzzer.ogg
path: /Audio/Machines/warning_buzzer_xenoborg.ogg
params:
volume: 5
- trigger:

View File

@@ -3,7 +3,7 @@
id: XenoborgEngi
name: engi xenoborg
suffix: with brain
description: A man-machine hybrid that aims to replicate itself. They love extracting brains to insert into fresh xenoborg chassis to grow their army. This one seems to be an engineering type, as it has more tools for supporting the other xenoborgs.
description: A man-machine hybrid that aims to replicate itself. They love extracting brains to insert into fresh Xenoborg chassis to grow their army. This one seems to be an engineering type, as it has more tools for supporting the other Xenoborgs.
components:
- type: BorgTransponder
name: engi xenoborg
@@ -30,6 +30,7 @@
- XenoborgModuleGeneric
- XenoborgModuleEngi
- BorgModuleEngineering
- BorgModuleGeneric
- type: ContainerFill
containers:
borg_brain:
@@ -57,7 +58,7 @@
id: XenoborgHeavy
name: heavy xenoborg
suffix: with brain
description: A man-machine hybrid that aims to replicate itself. They love extracting brains to insert into fresh xenoborg chassis to grow their army. This type is has heavy lasers and is covered in thick armor plates. It may be tougher, but its speed matches its brawn.
description: A man-machine hybrid that aims to replicate itself. They love extracting brains to insert into fresh Xenoborg chassis to grow their army. This type is has heavy lasers and is covered in thick armor plates. It may be tougher, but its speed matches its brawn.
components:
- type: BorgTransponder
name: heavy xenoborg
@@ -106,7 +107,7 @@
behaviors:
- !type:PlaySoundBehavior
sound:
path: /Audio/Machines/warning_buzzer.ogg
path: /Audio/Machines/warning_buzzer_xenoborg.ogg
params:
volume: 5
- trigger:
@@ -144,7 +145,7 @@
id: XenoborgScout
name: scout xenoborg
suffix: with brain
description: A man-machine hybrid that aims to replicate itself. They love extracting brains to insert into fresh xenoborg chassis to grow their army. This is a scout type, its nimble thrusters allow it to move quickly through space.
description: A man-machine hybrid that aims to replicate itself. They love extracting brains to insert into fresh Xenoborg chassis to grow their army. This is a scout type, its nimble thrusters allow it to move quickly through space.
components:
- type: BorgTransponder
name: scout xenoborg
@@ -197,7 +198,7 @@
id: XenoborgStealth
name: stealth xenoborg
suffix: with brain
description: A man-machine hybrid that aims to replicate itself. They love extracting brains to insert into fresh xenoborg chassis to grow their army. This one is a stealth type. Its armor shimmers in the light like no other material you've seen.
description: A man-machine hybrid that aims to replicate itself. They love extracting brains to insert into fresh Xenoborg chassis to grow their army. This one is a stealth type. Its armor shimmers in the light like no other material you've seen.
components:
- type: BorgTransponder
name: stealth xenoborg

View File

@@ -0,0 +1,192 @@
- type: startingGear
id: MothershipCoreGear
inhand:
- DoorRemoteXenoborg
- Omnitool
- type: entity
parent:
- BaseMachinePowered
- BaseMob
id: MothershipCore
name: mothership core
description: A sentient machine that can produce Xenoborgs. Without this the Xenoborgs are doomed.
components:
- type: Appearance
- type: WiresVisuals
- type: Fixtures
fixtures:
fix1:
shape:
!type:PhysShapeAabb
bounds: "-0.4,-0.4,0.4,0.4"
density: 190
mask:
- MachineMask
layer:
- MachineLayer
- type: Sprite
sprite: Mobs/Silicon/mothership_core.rsi
layers:
- state: core-idle
map: ["enum.LatheVisualLayers.IsRunning"]
- state: core-load
map: ["enum.MaterialStorageVisualLayers.Inserting"]
- state: core-o
map: ["enum.WiresVisualLayers.MaintenancePanel"]
- type: Machine
board: null
- type: Lathe
idleState: core-idle
runningState: core-active
staticPacks:
- EmptyXenoborgs
- XenoborgUpgradeModules
- type: MaterialStorage
whitelist:
tags:
- Sheet
- RawMaterial
- Ingot
- type: PointLight
color: "#0033ff"
enabled: true
radius: 4
netsync: false
- type: Anchorable
flags:
- Anchorable
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 200
behaviors:
- !type:DoActsBehavior
acts: ["Destruction"]
- !type:PlaySoundBehavior
sound:
collection: MetalGlassBreak
- !type:ExplodeBehavior
- !type:SpawnEntitiesBehavior
spawn:
MachineFrameDestroyed:
min: 1
max: 1
- !type:SpawnGasBehavior
gasMixture:
volume: 1000
moles:
- 0 # oxygen
- 0 # nitrogen
- 340.5701689 # carbon dioxide
temperature: 373.15
- type: Repairable
doAfterDelay: 30 # you can heal the mothership core, but it takes a while
- type: DamagedSiliconAccent
enableChargeCorruption: false
- type: Explosive
explosionType: Default
maxIntensity: 100
intensitySlope: 2
totalIntensity: 200
- type: WiresPanel
- type: ActivatableUI
key: enum.LatheUiKey.Key
- type: ActivatableUIRequiresPower
- type: UserInterface
interfaces:
enum.SiliconLawsUiKey.Key:
type: SiliconLawBoundUserInterface
requireInputValidation: false
enum.RadarConsoleUiKey.Key:
type: RadarConsoleBoundUserInterface
enum.LatheUiKey.Key:
type: LatheBoundUserInterface
enum.ResearchClientUiKey.Key:
type: ResearchClientBoundUserInterface
- type: Transform
anchored: true
- type: Pullable
- type: StaticPrice
price: 800
- type: WarpPoint
location: Mothership Core
follow: true
- type: VoiceOverride
nameOverride: MOTHERSHIP CORE
- type: TypingIndicator
proto: xenoborg
- type: Speech
speechVerb: Robotic
speechSounds: Xenoborg
allowedEmotes:
- Laugh
- type: Vocal
sounds:
Unsexed: UnisexSiliconXenoborg
wilhelmProbability: 0
- type: IntrinsicRadioReceiver
- type: IntrinsicRadioTransmitter
channels:
- Mothership
- Xenoborg
- Binary
- type: ActiveRadio
channels:
- Mothership
- Xenoborg
- Binary
- type: XenoborgMothership
- type: Tag
tags:
- SiliconEmotes
- CanPilot
- Structure
- type: Inventory
templateId: borg
- type: Loadout
prototypes: [MothershipCoreGear]
- type: NpcFactionMember
factions:
- Xenoborg
- type: Body
prototype: MothershipCoreBody
- type: Hands
# - type: Puller # use the conveyor
- type: Eye
drawFov: false
# - type: StationAiOverlay # removed until is no longer buggy
- type: IgnoreUIRange
- type: ComplexInteraction
- type: MindContainer
- type: SiliconLawBound
- type: Actions
- type: ActionGrant
actions:
- ActionViewLaws
- type: SiliconLawProvider
laws: MothershipCoreLawset # custom laws here
subverted: true
- type: Stripping
- type: Access
enabled: true
tags:
- Xenoborg
- type: LockingWhitelist
blacklist:
components:
- RoboticsConsole
whitelist:
components:
- BorgChassis
- type: IntrinsicUI
uis:
enum.RadarConsoleUiKey.Key:
toggleAction: ActionAGhostShowRadar
- type: ShowElectrocutionHUD
- type: PowerMonitoringCableNetworks
- type: RadarConsole
# TODO: add xenoborg control interface action (part 5)
# TODO: add xenoborg camera monitor interface action (part 5)

View File

@@ -169,7 +169,7 @@
id: PinpointerMothership
name: core pinpointer
suffix: Mothership
description: A handheld tracking device that leads to the direction of the mothership core.
description: A handheld tracking device that leads to the direction of the Mothership core.
components:
- type: Sprite
layers:
@@ -197,4 +197,4 @@
state: pinpointer-station
- type: Pinpointer
component: XenoborgMothership
targetName: the mothership
targetName: the Mothership

View File

@@ -1050,7 +1050,7 @@
parent: [ BaseXenoborgModuleGeneric, BaseProviderBorgModule, BaseXenoborgContraband ]
id: XenoborgModuleBasic
name: basic xenoborg module
description: Essential items for any xenoborg.
description: Essential items for any Xenoborg.
components:
- type: Sprite
layers:
@@ -1068,7 +1068,7 @@
parent: [ BaseXenoborgModuleGeneric, BaseProviderBorgModule, BaseXenoborgContraband ]
id: XenoborgModuleTool
name: tool xenoborg module
description: Simple tools for most xenoborgs.
description: Simple tools for most Xenoborgs.
components:
- type: Sprite
layers:
@@ -1169,7 +1169,7 @@
parent: [ BaseXenoborgModuleScout, BaseProviderBorgModule, BaseXenoborgContraband ]
id: XenoborgModuleSpaceMovement
name: space movement xenoborg module
description: Module that helps a xenoborg move better in space.
description: Module that helps a Xenoborg move better in space.
components:
- type: Sprite
layers:
@@ -1266,3 +1266,19 @@
- CloakingDevice
- type: BorgModuleIcon
icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-eye-module }
- type: entity
parent: [ BaseXenoborgModuleStealth, BaseProviderBorgModule, BaseXenoborgContraband ]
id: XenoborgModuleSuperCloakDevice
name: cloaking device xenoborg module
description: Module with a device that allows xenoborgs to become truly invisible for less time.
components:
- type: Sprite
layers:
- state: xenoborg_stealth
- state: icon-xenoborg-cloak2
- type: ItemBorgModule
items:
- SuperCloakingDevice
- type: BorgModuleIcon
icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-eye2-module }

View File

@@ -2,7 +2,7 @@
parent: [ BaseItem, BaseXenoborgContraband ]
id: CloakingDevice
name: cloaking device
description: A device that allows xenoborgs to go invisible.
description: A device that allows Xenoborgs to go invisible.
components:
- type: Sprite
sprite: Objects/Specific/Research/anomalyscanner.rsi
@@ -29,3 +29,18 @@
startingItem: PowerCellSmallNuclear
disableEject: true
swap: false
- type: entity
parent: CloakingDevice
id: SuperCloakingDevice
name: super cloaking device
description: A device that allows Xenoborgs to go truly invisible.
components:
- type: ComponentToggler
parent: true
components:
- type: Stealth
minVisibility: -1
lastVisibility: -1
- type: PowerCellDraw
drawRate: 12 # 30 seconds

View File

@@ -2,7 +2,7 @@
parent: [ BaseStorageItem, BaseXenoborgContraband ]
id: MaterialBag
name: material bag
description: A robust bag for xenoborgs to carry large amounts of materials.
description: A robust bag for Xenoborgs to carry large amounts of materials.
components:
- type: MagnetPickup
- type: Sprite

View File

@@ -0,0 +1,16 @@
## Static
- type: latheRecipePack
id: EmptyXenoborgs
recipes:
- XenoborgEngiRecipe
- XenoborgHeavyRecipe
- XenoborgScoutRecipe
- XenoborgStealthRecipe
- type: latheRecipePack
id: XenoborgUpgradeModules
recipes:
- XenoborgModuleHeavyLaserRecipe
- XenoborgModuleEnergySwordRecipe
- XenoborgModuleSuperCloakDeviceRecipe

View File

@@ -0,0 +1,67 @@
# Base prototypes
- type: latheRecipe
abstract: true
id: BaseXenoborgRecipe
categories:
- Robotics
completetime: 10
- type: latheRecipe
abstract: true
id: BaseXenoborgModulesRecipe
categories:
- Modules
completetime: 2
materials:
Glass: 3000
# xenoborgs
- type: latheRecipe
parent: BaseXenoborgRecipe
id: XenoborgEngiRecipe
result: XenoborgEngiPrinted
materials:
Steel: 3000
- type: latheRecipe
parent: BaseXenoborgRecipe
id: XenoborgHeavyRecipe
result: XenoborgHeavyPrinted
materials:
Steel: 2000
Plasteel: 1000
- type: latheRecipe
parent: BaseXenoborgRecipe
id: XenoborgScoutRecipe
result: XenoborgScoutPrinted
materials:
Steel: 2000
Plastic: 1000
- type: latheRecipe
parent: BaseXenoborgRecipe
id: XenoborgStealthRecipe
result: XenoborgStealthPrinted
materials:
Steel: 2000
Glass: 1000
# modules
- type: latheRecipe
parent: BaseXenoborgModulesRecipe
id: XenoborgModuleHeavyLaserRecipe
result: XenoborgModuleHeavyLaser
- type: latheRecipe
parent: BaseXenoborgModulesRecipe
id: XenoborgModuleEnergySwordRecipe
result: XenoborgModuleEnergySword
- type: latheRecipe
parent: BaseXenoborgModulesRecipe
id: XenoborgModuleSuperCloakDeviceRecipe
result: XenoborgModuleSuperCloakDevice

View File

@@ -103,6 +103,11 @@
files:
- /Audio/Items/Toys/hew.ogg
- type: soundCollection
id: XenoborgScream
files:
- /Audio/Voice/Xenoborg/xenoborg_scream.ogg
- type: soundCollection
id: XenoborgLaugh
files:

View File

@@ -441,6 +441,8 @@
params:
variation: 0.05
sounds:
Scream:
collection: XenoborgScream
Laugh:
collection: XenoborgLaugh
Beep:

View File

@@ -1,4 +1,4 @@
# Non-fungible apes, anyone?
# Non-fungible apes, anyone?
- type: nameIdentifierGroup
id: Monkey
format: name-identifier-format-monkey
@@ -29,6 +29,12 @@
minValue: 1000
maxValue: 9999
- type: nameIdentifierGroup
id: Xenoborg
format: name-identifier-format-xenoborg
minValue: 1000
maxValue: 9999
- type: nameIdentifierGroup
id: StationAi
format: name-identifier-format-station-ai

View File

@@ -127,6 +127,9 @@
{
"name":"xenoborg-eye-module"
},
{
"name":"xenoborg-eye2-module"
},
{
"name":"xenoborg-hypo-module"
},

Binary file not shown.

After

Width:  |  Height:  |  Size: 313 B

View File

@@ -0,0 +1,14 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "not sure",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "piloting"
}
]
}

View File

Before

Width:  |  Height:  |  Size: 571 B

After

Width:  |  Height:  |  Size: 571 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 691 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 321 B

View File

@@ -0,0 +1,199 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "Created by Samuka",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "core-active",
"directions": 4,
"delays": [
[
0.2,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1
],
[
0.2,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1
],
[
0.2,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1
],
[
0.2,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1,
0.1
]
]
},
{
"name": "core-idle",
"directions": 4
},
{
"name": "core-o",
"directions": 4
},
{
"name": "core-load",
"directions": 4,
"delays": [
[
0.1,
0.1,
0.1,
0.1,
0.1,
0.1
],
[
0.1,
0.1,
0.1,
0.1,
0.1,
0.1
],
[
0.1,
0.1,
0.1,
0.1,
0.1,
0.1
],
[
0.1,
0.1,
0.1,
0.1,
0.1,
0.1
]
]
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 B

View File

@@ -118,6 +118,9 @@
{
"name": "icon-xenoborg-cloak"
},
{
"name": "icon-xenoborg-cloak2"
},
{
"name": "icon-xenoborg-fire-extinguisher"
},