Xenoborg module recipes and blacklists (#45329)

* add module blacklists

* add recipes

* make it nullable

* add guided missile to recipe list

* rocket recipe

* add bio knife recipe

* move tags down

* ops

* remove recipe from tile gun
This commit is contained in:
Samuka 2026-08-19 15:59:05 +00:00 • committed by GitHub
parent d1a53fcc54
commit 3e05e1adbd
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 246 additions and 24 deletions

View file

@ -15,7 +15,7 @@ public sealed partial class BorgModuleWhitelistComponent : Component
/// as well as which modules are incompatible or required
/// </summary>
[DataField]
public LocId WhitelistInfo;
public LocId? WhitelistInfo;
/// <summary>
/// List of module tags this module is incompatible with

View file

@ -51,6 +51,9 @@ public abstract partial class SharedBorgSystem
private void OnWhitelistExamine(Entity<BorgModuleWhitelistComponent> ent, ref ExaminedEvent args)
{
if (ent.Comp.WhitelistInfo is null)
return;
using (args.PushGroup(nameof(BorgModuleComponent), 1))
{
args.PushMarkup(Loc.GetString(ent.Comp.WhitelistInfo));

View file

@ -1538,11 +1538,19 @@
layers:
- state: xenoborg_engi
- state: icon-xenoborg-access-breaker
- type: BorgModuleWhitelist
moduleBlacklist:
tags:
- XenoborgModuleAccessBreaker
- type: ItemBorgModule
hands:
- item: XenoborgAccessBreaker
- type: BorgModuleIcon
icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-access-breaker-module }
- type: Tag
tags:
- XenoborgModuleEngi
- XenoborgModuleAccessBreaker
- type: entity
parent: [ BaseXenoborgModuleEngi, BaseProviderBorgModule, BaseXenoborgContraband ]
@ -1613,29 +1621,6 @@
- type: BorgModuleIcon
icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-deflector-module }
- type: entity
parent: [ BaseXenoborgModuleHeavy, BaseProviderBorgModule, BaseXenoborgContraband ]
id: XenoborgModuleRocket
name: rocket module
description: A module with a rocket launcher designed to destroy structures.
components:
- type: Sprite
layers:
- state: xenoborg_heavy
- state: icon-xenoborg-rocket
- type: ItemBorgModule
hands:
- item: WeaponRocketLauncherXenoborg
- item: WeaponRocketLauncherXenoborg
- type: BorgModuleIcon
icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-rocket-module }
- type: ComponentBorgModule
components:
- type: SimpleSpriteOverlay
overlaySprite:
sprite: Mobs/Silicon/rockets.rsi
state: heavy_xenoborg_rockets
- type: entity
parent: [ BaseXenoborgModuleEngi, BaseProviderBorgModule, BaseXenoborgContraband ]
id: XenoborgModuleDoorControl
@ -1646,6 +1631,10 @@
layers:
- state: xenoborg_engi
- state: icon-xenoborg-access-breaker
- type: BorgModuleWhitelist
moduleBlacklist:
tags:
- XenoborgModuleAccessBreaker
- type: ItemBorgModule
hands:
- item: DoorRemoteXenoborg
@ -1653,6 +1642,10 @@
- item: AccessConfiguratorXenoborg
- type: BorgModuleIcon
icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-door-remote-module }
- type: Tag
tags:
- XenoborgModuleEngi
- XenoborgModuleAccessBreaker
- type: entity
parent: [ BaseXenoborgModuleEngi, BaseProviderBorgModule, BaseXenoborgContraband ]
@ -1664,11 +1657,19 @@
layers:
- state: xenoborg_engi
- state: icon-xenoborg-tile
- type: BorgModuleWhitelist
moduleBlacklist: &secondaryWeapon
tags:
- XenoborgModuleSecondaryWeapon
- type: ItemBorgModule
hands:
- item: WeaponTileGun
- type: BorgModuleIcon
icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-tile-module }
- type: Tag
tags:
- XenoborgModuleEngi
- XenoborgModuleSecondaryWeapon
- type: entity
parent: [ BaseXenoborgModuleEngi, BaseXenoborgContraband ]
@ -1698,11 +1699,19 @@
layers:
- state: xenoborg_engi
- state: icon-xenoborg-oil
- type: BorgModuleWhitelist
moduleBlacklist: &primaryWeapon
tags:
- XenoborgModulePrimaryWeapon
- type: ItemBorgModule
hands:
- item: WeaponOilGun
- type: BorgModuleIcon
icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-oil-gun-module }
- type: Tag
tags:
- XenoborgModuleEngi
- XenoborgModulePrimaryWeapon
- type: entity
parent: [ BaseXenoborgModuleEngi, BaseProviderBorgModule, BaseXenoborgContraband ]
@ -1714,11 +1723,17 @@
layers:
- state: xenoborg_engi
- state: icon-xenoborg-nanite-gun
- type: BorgModuleWhitelist
moduleBlacklist: *primaryWeapon
- type: ItemBorgModule
hands:
- item: WeaponNaniteGun
- type: BorgModuleIcon
icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-nanite-module }
- type: Tag
tags:
- XenoborgModuleEngi
- XenoborgModulePrimaryWeapon
- type: entity
parent: [ BaseXenoborgModuleHeavy, BaseProviderBorgModule, BaseXenoborgContraband ]
@ -1746,11 +1761,17 @@
layers:
- state: xenoborg_heavy
- state: icon-xenoborg-laser
- type: BorgModuleWhitelist
moduleBlacklist: *primaryWeapon
- type: ItemBorgModule
hands:
- item: WeaponLaserGunXenoborg
- type: BorgModuleIcon
icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-laser-module }
- type: Tag
tags:
- XenoborgModuleHeavy
- XenoborgModulePrimaryWeapon
- type: entity
parent: [ BaseXenoborgModuleHeavy, BaseProviderBorgModule, BaseXenoborgContraband ]
@ -1762,11 +1783,17 @@
layers:
- state: xenoborg_heavy
- state: icon-xenoborg-laser2
- type: BorgModuleWhitelist
moduleBlacklist: *primaryWeapon
- type: ItemBorgModule
hands:
- item: WeaponLaserCannonXenoborg
- type: BorgModuleIcon
icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-laser2-module }
- type: Tag
tags:
- XenoborgModuleHeavy
- XenoborgModulePrimaryWeapon
- type: entity
parent: [ BaseXenoborgModuleHeavy, BaseProviderBorgModule, BaseXenoborgContraband ]
@ -1778,6 +1805,11 @@
layers:
- state: xenoborg_heavy
- state: icon-xenoborg-guided-missile
- type: BorgModuleWhitelist
moduleBlacklist:
tags:
- XenoborgModuleSecondaryWeapon
- XenoborgModuleWithSimpleOverlay
- type: ComponentBorgModule
components:
- type: SimpleSpriteOverlay
@ -1790,6 +1822,44 @@
- item: WeaponRangeFinderXenoborg
- type: BorgModuleIcon
icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-guided-missile-module }
- type: Tag
tags:
- XenoborgModuleHeavy
- XenoborgModuleSecondaryWeapon
- XenoborgModuleWithSimpleOverlay
- type: entity
parent: [ BaseXenoborgModuleHeavy, BaseProviderBorgModule, BaseXenoborgContraband ]
id: XenoborgModuleRocket
name: rocket module
description: A module with a rocket launcher designed to destroy structures.
components:
- type: Sprite
layers:
- state: xenoborg_heavy
- state: icon-xenoborg-rocket
- type: BorgModuleWhitelist
moduleBlacklist:
tags:
- XenoborgModuleSecondaryWeapon
- XenoborgModuleWithSimpleOverlay
- type: ItemBorgModule
hands:
- item: WeaponRocketLauncherXenoborg
- item: WeaponRocketLauncherXenoborg
- type: BorgModuleIcon
icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-rocket-module }
- type: ComponentBorgModule
components:
- type: SimpleSpriteOverlay
overlaySprite:
sprite: Mobs/Silicon/rockets.rsi
state: heavy_xenoborg_rockets
- type: Tag
tags:
- XenoborgModuleHeavy
- XenoborgModuleSecondaryWeapon
- XenoborgModuleWithSimpleOverlay
- type: entity
parent: [ BaseXenoborgModuleHeavy, BaseProviderBorgModule, BaseXenoborgContraband ]
@ -1801,11 +1871,17 @@
layers:
- state: xenoborg_heavy
- state: icon-xenoborg-laser3
- type: BorgModuleWhitelist
moduleBlacklist: *primaryWeapon
- type: ItemBorgModule
hands:
- item: WeaponBurstFireLaserXenoborg
- type: BorgModuleIcon
icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-laser3-module }
- type: Tag
tags:
- XenoborgModuleHeavy
- XenoborgModulePrimaryWeapon
- type: entity
parent: [ BaseXenoborgModuleHeavy, BaseXenoborgContraband ]
@ -1821,6 +1897,10 @@
layers:
- state: xenoborg_heavy
- state: icon-xenoborg-radioactive
- type: BorgModuleWhitelist
moduleBlacklist: &moduleWithSimpleOverlay
tags:
- XenoborgModuleWithSimpleOverlay
- type: ComponentBorgModule
components:
- type: SimpleSpriteOverlay
@ -1836,6 +1916,10 @@
volume: -3
sound:
path: /Audio/Ambience/Objects/xenoborg_radioactive.ogg
- type: Tag
tags:
- XenoborgModuleHeavy
- XenoborgModuleWithSimpleOverlay
- type: entity
parent: [ BaseXenoborgModuleScout, BaseProviderBorgModule, BaseXenoborgContraband ]
@ -1885,12 +1969,18 @@
layers:
- state: xenoborg_scout
- state: icon-xenoborg-sword
- type: BorgModuleWhitelist
moduleBlacklist: *primaryWeapon
- type: ItemBorgModule
hands:
- item: KukriKnife
- item: JetpackXenoborg
- type: BorgModuleIcon
icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-sword-module }
- type: Tag
tags:
- XenoborgModuleScout
- XenoborgModulePrimaryWeapon
- type: entity
parent: [ BaseXenoborgModuleScout, BaseProviderBorgModule, BaseXenoborgContraband ]
@ -1902,12 +1992,18 @@
layers:
- state: xenoborg_scout
- state: icon-xenoborg-sword2
- type: BorgModuleWhitelist
moduleBlacklist: *primaryWeapon
- type: ItemBorgModule
hands:
- item: EnergyDaggerLoudBlue
- item: JetpackXenoborg
- type: BorgModuleIcon
icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-sword2-module }
- type: Tag
tags:
- XenoborgModuleScout
- XenoborgModulePrimaryWeapon
- type: entity
parent: [ BaseXenoborgModuleScout, BaseProviderBorgModule, BaseXenoborgContraband ]
@ -1919,12 +2015,18 @@
layers:
- state: xenoborg_scout
- state: icon-xenoborg-sword2
- type: BorgModuleWhitelist
moduleBlacklist: *primaryWeapon
- type: ItemBorgModule
hands:
- item: XenoborgBioKnife
- item: JetpackXenoborg
- type: BorgModuleIcon
icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-bio-knife }
- type: Tag
tags:
- XenoborgModuleScout
- XenoborgModulePrimaryWeapon
- type: entity
parent: [ BaseXenoborgModuleStealth, BaseProviderBorgModule, BaseXenoborgContraband ]
@ -1936,11 +2038,17 @@
layers:
- state: xenoborg_stealth
- state: icon-xenoborg-hypo
- type: BorgModuleWhitelist
moduleBlacklist: *primaryWeapon
- type: ItemBorgModule
hands:
- item: NocturineHypo
- type: BorgModuleIcon
icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-hypo-module }
- type: Tag
tags:
- XenoborgModuleStealth
- XenoborgModulePrimaryWeapon
- type: entity
parent: [ BaseXenoborgModuleStealth, BaseProviderBorgModule, BaseXenoborgContraband ]
@ -1968,11 +2076,19 @@
layers:
- state: xenoborg_stealth
- state: icon-xenoborg-cloak
- type: BorgModuleWhitelist
moduleBlacklist:
tags:
- XenoborgModuleInvisibility
- type: ItemBorgModule
hands:
- item: CloakingDevice
- type: BorgModuleIcon
icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-eye-module }
- type: Tag
tags:
- XenoborgModuleStealth
- XenoborgModuleInvisibility
- type: entity
parent: [ BaseXenoborgModuleStealth, BaseProviderBorgModule, BaseXenoborgContraband ]
@ -1984,8 +2100,16 @@
layers:
- state: xenoborg_stealth
- state: icon-xenoborg-cloak2
- type: BorgModuleWhitelist
moduleBlacklist:
tags:
- XenoborgModuleInvisibility
- type: ItemBorgModule
hands:
- item: SuperCloakingDevice
- type: BorgModuleIcon
icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-eye2-module }
- type: Tag
tags:
- XenoborgModuleStealth
- XenoborgModuleInvisibility

View file

@ -18,9 +18,19 @@
recipes:
# engi xenoborg
- XenoborgModuleDoorControlRecipe
- XenoborgModuleDeflectorFieldRecipe
- XenoborgModuleZapRecipe
- XenoborgModuleOilGunRecipe
- XenoborgModuleNaniteGunRecipe
# heavy xenoborg
- XenoborgModuleHeavyLaserRecipe
- XenoborgModuleGuidedMissileLauncherRecipe
- XenoborgModuleRocketRecipe
- XenoborgModuleBurstFireLaserRecipe
- XenoborgModuleHeavyRadioactiveRecipe
# scout xenoborg
- XenoborgModuleEnergySwordRecipe
- XenoborgModuleJumpRecipe
- XenoborgModuleBioKinfeRecipe
# stealth xenoborg
- XenoborgModuleSuperCloakDeviceRecipe

View file

@ -71,6 +71,34 @@
materials:
XenoborgCrystal: 200
- type: latheRecipe
parent: BaseXenoborgModulesRecipe
id: XenoborgModuleDeflectorFieldRecipe
result: XenoborgModuleDeflectorField
materials:
XenoborgCrystal: 100
- type: latheRecipe
parent: BaseXenoborgModulesRecipe
id: XenoborgModuleZapRecipe
result: XenoborgModuleZap
materials:
XenoborgCrystal: 100
- type: latheRecipe
parent: BaseXenoborgModulesRecipe
id: XenoborgModuleOilGunRecipe
result: XenoborgModuleOilGun
materials:
XenoborgCrystal: 300
- type: latheRecipe
parent: BaseXenoborgModulesRecipe
id: XenoborgModuleNaniteGunRecipe
result: XenoborgModuleNaniteGun
materials:
XenoborgCrystal: 200
## heavy xenoborg modules
- type: latheRecipe
@ -80,6 +108,34 @@
materials:
XenoborgCrystal: 200
- type: latheRecipe
parent: BaseXenoborgModulesRecipe
id: XenoborgModuleGuidedMissileLauncherRecipe
result: XenoborgModuleGuidedMissileLauncher
materials:
XenoborgCrystal: 300
- type: latheRecipe
parent: BaseXenoborgModulesRecipe
id: XenoborgModuleRocketRecipe
result: XenoborgModuleRocket
materials:
XenoborgCrystal: 300
- type: latheRecipe
parent: BaseXenoborgModulesRecipe
id: XenoborgModuleBurstFireLaserRecipe
result: XenoborgModuleBurstFireLaser
materials:
XenoborgCrystal: 200
- type: latheRecipe
parent: BaseXenoborgModulesRecipe
id: XenoborgModuleHeavyRadioactiveRecipe
result: XenoborgModuleHeavyRadioactive
materials:
XenoborgCrystal: 100
## scout xenoborg modules
- type: latheRecipe
@ -89,6 +145,20 @@
materials:
XenoborgCrystal: 300
- type: latheRecipe
parent: BaseXenoborgModulesRecipe
id: XenoborgModuleJumpRecipe
result: XenoborgModuleJump
materials:
XenoborgCrystal: 100
- type: latheRecipe
parent: BaseXenoborgModulesRecipe
id: XenoborgModuleBioKinfeRecipe
result: XenoborgModuleBioKinfe
materials:
XenoborgCrystal: 200
## stealth xenoborg modules
- type: latheRecipe

View file

@ -1616,6 +1616,21 @@
- type: Tag
id: XenoborgModuleStealth # Cyborg module category for evil stealth xenoborg
- type: Tag
id: XenoborgModuleAccessBreaker # Used for module blacklisting
- type: Tag
id: XenoborgModuleInvisibility # Used for module blacklisting
- type: Tag
id: XenoborgModulePrimaryWeapon # Used for module blacklisting
- type: Tag
id: XenoborgModuleSecondaryWeapon # Used for module blacklisting
- type: Tag
id: XenoborgModuleWithSimpleOverlay # Used for module blacklisting
## Y ##
## Z ##
# ALPHABETICAL