Merge remote-tracking branch 'upstream/stable' into ed-11-12-2024-upstream

# Conflicts:
#	Content.IntegrationTests/Tests/PostMapInitTest.cs
#	Content.Shared/Lock/LockSystem.cs
#	Resources/Maps/oasis.yml
#	Resources/Prototypes/Maps/Pools/default.yml
#	Resources/Prototypes/audio.yml
This commit is contained in:
Ed
2024-12-11 14:49:02 +03:00
298 changed files with 153553 additions and 9112 deletions

View File

@@ -29,6 +29,8 @@
Quantity: 30
absorbed:
maxVol: 30
- type: UseDelay
delay: 1
- type: Fiber
fiberColor: fibers-white
- type: DnaSubstanceTrace

View File

@@ -348,7 +348,7 @@
sprite: Clothing/OuterClothing/Coats/clownpriest.rsi
- type: entity
parent: ClothingOuterStorageBase
parent: [ClothingOuterStorageBase, BaseMajorContraband]
id: ClothingOuterDogi
name: samurai dogi
description: Dogi is a type of traditional Japanese clothing. The dogi is made of heavy, durable fabric, it is practical in combat and stylish in appearance. It is decorated with intricate patterns and embroidery on the back.

View File

@@ -156,4 +156,5 @@
- PosterLegitSafetyMothMeth
- PosterLegitSafetyMothHardhat
- PosterLegitSafetyMothSSD
- PosterLegitOppenhopper
chance: 1

View File

@@ -100,7 +100,7 @@
- type: GhostRole
name: ghost-role-information-loneop-name
description: ghost-role-information-loneop-description
rules: ghost-role-information-rules-default-solo-antagonist
rules: ghost-role-information-loneop-rules
- type: Sprite
sprite: Markers/jobs.rsi
layers:
@@ -170,3 +170,21 @@
- state: green
- sprite: Objects/Weapons/Melee/energykatana.rsi
state: icon
- type: entity
categories: [ HideSpawnMenu, Spawner ]
parent: BaseAntagSpawner
id: SpawnPointGhostDerelictCyborg
components:
- type: GhostRole
name: ghost-role-information-derelict-cyborg-name
description: ghost-role-information-derelict-cyborg-description
rules: ghost-role-information-silicon-rules
raffle:
settings: default
- type: Sprite
sprite: Markers/jobs.rsi
layers:
- state: green
- sprite: Mobs/Silicon/chassis.rsi
state: derelict_icon

View File

@@ -880,3 +880,46 @@
- type: ConditionalSpawner
prototypes:
- MobHonkBot
- type: entity
name: gingerbread man Spawner
id: SpawnMobGingerbreadAI
suffix: Ghostrole
parent: MarkerBase
components:
- type: Sprite
layers:
- state: green
- state: full
sprite: Mobs/Species/Gingerbread/parts.rsi
- type: ConditionalSpawner
prototypes:
- MobGingerbreadAI
- type: entity
name: Reindeer Buck Spawner
id: SpawnMobReindeerBuck
parent: MarkerBase
components:
- type: Sprite
layers:
- state: green
- state: reindeer_buck_still
sprite: Mobs/Animals/reindeer_buck.rsi
- type: ConditionalSpawner
prototypes:
- MobReindeerBuck
- type: entity
name: Reindeer Doe Spawner
id: SpawnMobReindeerDoe
parent: MarkerBase
components:
- type: Sprite
layers:
- state: green
- state: reindeer_doe_still
sprite: Mobs/Animals/reindeer_doe.rsi
- type: ConditionalSpawner
prototypes:
- MobReindeerDoe

View File

@@ -279,6 +279,9 @@
parent: [BaseBorgChassis, BaseBorgTransponder]
abstract: true
components:
- type: RandomMetadata
nameSegments:
- names_borg
- type: NpcFactionMember
factions:
- NanoTrasen
@@ -325,3 +328,23 @@
Unsexed: UnisexSiliconSyndicate
- type: PointLight
color: "#dd200b"
- type: entity
id: BaseBorgChassisDerelict
parent: BaseBorgChassis
abstract: true
components:
- type: NpcFactionMember
factions:
- NanoTrasen #The seemingly best fit. It was a regular NT cyborg once, after all.
- type: Access
enabled: false
groups:
- AllAccess #Randomized access would be fun. AllAccess is the best i can think of right now that does make it too hard for it to enter the station or navigate it..
- type: AccessReader
access: [["Command"], ["Research"]]
- type: StartIonStormed
ionStormAmount: 3
- type: IonStormTarget
chance: 1
- type: ShowJobIcons

View File

@@ -187,3 +187,35 @@
interactFailureString: petting-failure-syndicate-cyborg
interactSuccessSound:
path: /Audio/Ambience/Objects/periodic_beep.ogg
- type: entity
id: BorgChassisDerelict
parent: BaseBorgChassisDerelict
name: derelict cyborg
description: A man-machine hybrid that assists in station activity. This one is in a state of great disrepair.
components:
- type: Sprite
layers:
- state: derelict
- state: derelict_e_r
map: ["enum.BorgVisualLayers.Light"]
shader: unshaded
visible: false
- state: derelict_l
shader: unshaded
map: ["light"]
visible: false
- type: BorgChassis
maxModules: 5 # the sixth one broke lol
moduleWhitelist:
tags:
- BorgModuleGeneric
hasMindState: derelict_e
noMindState: derelict_e_r
- type: Construction
node: derelictcyborg
- type: InteractionPopup
interactSuccessString: petting-success-derelict-cyborg
interactFailureString: petting-failure-derelict-cyborg
interactSuccessSound:
path: /Audio/Ambience/Objects/periodic_beep.ogg

View File

@@ -1393,7 +1393,7 @@
makeSentient: true
name: ghost-role-information-monkey-name
description: ghost-role-information-monkey-description
rules: ghost-role-information-syndicate-monkey-reinforcement-rules
rules: ghost-role-information-syndicate-reinforcement-rules
raffle:
settings: default
- type: GhostTakeoverAvailable
@@ -3468,3 +3468,97 @@
components:
- type: ReplacementAccent
accent: nymph
- type: entity
name: reindeer buck
parent: [ SimpleMobBase, MobCombat ]
id: MobReindeerBuck
description: You think it can pull a sleigh?
components:
- type: Sprite
drawdepth: Mobs
layers:
- map: ["enum.DamageStateVisualLayers.Base"]
state: reindeer_buck
sprite: Mobs/Animals/reindeer_buck.rsi
# - type: SpriteMovement # One day when this shit isnt broken as hell. For now they hoppity hop.
# movementLayers:
# movement:
# state: reindeer_buck
# noMovementLayers:
# movement:
# state: reindeer_buck_still
- type: Physics
- type: Fixtures
fixtures:
fix1:
shape:
!type:PhysShapeCircle
radius: 0.48
density: 200
mask:
- MobMask
layer:
- MobLayer
- type: DamageStateVisuals
states:
Alive:
Base: reindeer_buck
Critical:
Base: reindeer_buck_dead
Dead:
Base: reindeer_buck_dead
- type: Butcherable
spawned:
- id: FoodMeat
amount: 4
- type: Bloodstream
bloodMaxVolume: 300
# Horns though
- type: MeleeWeapon
damage:
types:
Piercing: 22
animation: WeaponArcFist
- type: NPCRetaliation
- type: FactionException
- type: NpcFactionMember
factions:
- Passive
- type: HTN
rootTask:
task: SimpleHostileCompound
- type: Puller
needsHands: false
- type: entity
name: reindeer doe
parent: MobReindeerBuck
id: MobReindeerDoe
components:
- type: MeleeWeapon
damage:
types:
Blunt: 15
animation: WeaponArcFist
- type: Sprite
drawdepth: Mobs
layers:
- map: ["enum.DamageStateVisualLayers.Base"]
state: reindeer_doe
sprite: Mobs/Animals/reindeer_doe.rsi
# - type: SpriteMovement # One day when this shit isnt broken as hell. For now they hoppity hop.
# movementLayers:
# movement:
# state: reindeer_doe
# noMovementLayers:
# movement:
# state: reindeer_doe_still
- type: DamageStateVisuals
states:
Alive:
Base: reindeer_doe
Critical:
Base: reindeer_doe_dead
Dead:
Base: reindeer_doe_dead

View File

@@ -99,7 +99,7 @@
makeSentient: true
name: ghost-role-information-xeno-name
description: ghost-role-information-xeno-description
rules: ghost-role-information-rules-default-team-antagonist
rules: ghost-role-information-xeno-rules
raffle:
settings: default
- type: GhostTakeoverAvailable

View File

@@ -11,3 +11,23 @@
damageRecovery:
types:
Asphyxiation: -1.0
- type: entity
name: gingerbread man
id: MobGingerbreadAI
parent: [ MobGingerbread, MobCombat]
components:
- type: GhostRole
name: ghost-role-information-gingerbread-name
description: ghost-role-information-gingerbread-description
rules: ghost-role-information-nonantagonist-rules
- type: GhostTakeoverAvailable
- type: NPCRetaliation
- type: FactionException
- type: NpcFactionMember
factions:
- Passive
- type: HTN
rootTask:
task: SimpleHostileCompound

View File

@@ -55,6 +55,7 @@
skipChecks: true
- type: Ghost
- type: GhostHearing
- type: ShowElectrocutionHUD
- type: IntrinsicRadioReceiver
- type: ActiveRadio
receiveAllChannels: true

View File

@@ -30,6 +30,7 @@
- type: IgnoreUIRange
- type: StationAiHeld
- type: StationAiOverlay
- type: ShowElectrocutionHUD
- type: ActionGrant
actions:
- ActionJumpToCore
@@ -525,3 +526,37 @@
- PlayerBorgSyndicateAssaultGhostRole
- PlayerBorgSyndicateAssaultGhostRole # Saboteurs are kinda like cyborg medics, we want less.
- PlayerBorgSyndicateSaboteurGhostRole
- type: entity
id: PlayerBorgDerelict
parent: BorgChassisDerelict
suffix: Battery, Module
components:
- type: ContainerFill
containers:
borg_brain:
- PositronicBrain
borg_module:
- BorgModuleTool
- BorgModuleFireExtinguisher
- BorgModuleGPS
- type: ItemSlots
slots:
cell_slot:
name: power-cell-slot-component-slot-name-default
startingItem: PowerCellHigh
- type: RandomMetadata
nameSegments: [names_borg]
- type: entity
id: PlayerBorgDerelictGhostRole
parent: PlayerBorgDerelict
suffix: Ghost role
components:
- type: GhostRole
name: ghost-role-information-derelict-cyborg-name
description: ghost-role-information-derelict-cyborg-description
rules: ghost-role-information-silicon-rules
raffle:
settings: default
- type: GhostTakeoverAvailable

View File

@@ -32,6 +32,18 @@
- type: Damageable
damageContainer: Biological
damageModifierSet: Vox
- type: PassiveDamage
# Augment normal health regen to be able to tank some Poison damage
# This allows Vox to take their mask off temporarily to eat something without needing a trip to medbay afterwards.
allowedStates:
- Alive
damageCap: 20
damage:
types:
Heat: -0.07
Poison: -0.2
groups:
Brute: -0.07
- type: DamageVisuals
damageOverlayGroups:
Brute:

View File

@@ -98,11 +98,25 @@
id: FoodMealNachos
description: Chips from Space Mexico.
components:
- type: Food
trash:
- FoodPlateSmall
- type: FlavorProfile
flavors:
- nachos
- type: Sprite
state: nachos
- type: SolutionContainerManager
solutions:
food:
maxVol: 11
reagents:
- ReagentId: Nutriment
Quantity: 4
- ReagentId: Vitamin
Quantity: 1
- ReagentId: TableSalt
Quantity: 1
# Tastes like nachos.
- type: entity
@@ -111,6 +125,9 @@
id: FoodMealNachosCheesy
description: The delicious combination of nachos and melting cheese.
components:
- type: Food
trash:
- FoodPlateSmall
- type: FlavorProfile
flavors:
- nachos
@@ -136,24 +153,27 @@
id: FoodMealNachosCuban
description: That's some dangerously spicy nachos.
components:
- type: Food
trash:
- FoodPlateSmall
- type: FlavorProfile
flavors:
- nachos
- cheesy
- tomato
- spicy
- type: Sprite
state: nachos-cuban
- type: SolutionContainerManager
solutions:
food:
maxVol: 15
maxVol: 25
reagents:
- ReagentId: Nutriment
Quantity: 7
- ReagentId: CapsaicinOil
Quantity: 8
- ReagentId: CapsaicinOil
Quantity: 7
- ReagentId: Vitamin
Quantity: 4
Quantity: 5
# Tastes like nachos, hot pepper.
- type: entity

View File

@@ -678,6 +678,11 @@
tags:
- Raw
- Meat
- type: Extractable
juiceSolution:
reagents:
- ReagentId: Slime
Quantity: 10
- type: Sprite
state: slime
@@ -1207,7 +1212,7 @@
name: anomalous steak
parent: FoodMeatBase
id: FoodMeatAnomalyCooked
description: A gigantic mass of cooked meat. A meal for a dinner party, or someone REALLY hungry.
description: A gigantic mass of cooked meat. A meal for a dinner party, or someone REALLY hungry.
components:
- type: Tag
tags:

View File

@@ -24,8 +24,8 @@
components:
- type: GhostRole
name: ghost-role-information-syndicate-reinforcement-spy-name
description: ghost-role-information-syndicate-reinforcement-description
rules: ghost-role-information-rules-default-solo-antagonist
description: ghost-role-information-syndicate-reinforcement-spy-description
rules: ghost-role-information-syndicate-reinforcement-rules
raffle:
settings: default
- type: GhostRoleMobSpawner
@@ -57,7 +57,7 @@
- type: GhostRole
name: ghost-role-information-syndicate-monkey-reinforcement-name
description: ghost-role-information-syndicate-monkey-reinforcement-description
rules: ghost-role-information-rules-default-familiar
rules: ghost-role-information-syndicate-reinforcement-rules
raffle:
settings: default
- type: GhostRoleMobSpawner
@@ -69,6 +69,8 @@
id: ReinforcementRadioSyndicateAncestorNukeops # Reinforcement radio exclusive to nukeops uplink
suffix: NukeOps
components:
- type: GhostRole
rules: ghost-role-information-nukeop-reinforcement-rules
- type: GhostRoleMobSpawner
prototype: MobMonkeySyndicateAgentNukeops
selectablePrototypes: ["SyndicateMonkeyNukeops", "SyndicateKoboldNukeops"]
@@ -82,7 +84,7 @@
- type: GhostRole
name: ghost-role-information-SyndiCat-name
description: ghost-role-information-SyndiCat-description
rules: ghost-role-information-rules-default-familiar
rules: ghost-role-information-syndicate-reinforcement-rules
raffle:
settings: default
- type: GhostRoleMobSpawner

View File

@@ -438,6 +438,14 @@
- type: NavMapBeacon
defaultText: station-beacon-gravgen
- type: entity
parent: DefaultStationBeaconEngineering
id: DefaultStationBeaconAnchor
suffix: Anchor
components:
- type: NavMapBeacon
defaultText: station-beacon-anchor
- type: entity
parent: DefaultStationBeaconEngineering
id: DefaultStationBeaconSingularity

View File

@@ -498,12 +498,22 @@
- type: Sprite
sprite: Objects/Fun/sharkplush.rsi
state: blue
- type: EmitSoundOnLand
sound:
path: /Audio/Items/Toys/rawr.ogg
- type: EmitSoundOnTrigger
sound:
path: /Audio/Items/Toys/rawr.ogg
- type: EmitSoundOnUse
sound:
path: /Audio/Items/Toys/rawr.ogg
- type: EmitSoundOnActivate
sound:
path: /Audio/Items/Toys/rawr.ogg
- type: MeleeWeapon
wideAnimationRotation: 180
soundHit:
path: /Audio/Items/Toys/rawr.ogg
- type: Item
heldPrefix: blue
storedRotation: -90

View File

@@ -54,6 +54,8 @@
reagents:
- ReagentId: Cellulose
Quantity: 6
- type: Item
heldPrefix: cardboard
- type: entity
parent: MaterialCardboard
@@ -135,6 +137,8 @@
- type: Construction
graph: WebObjects # not sure if I should either keep this here or just make another prototype. Will keep it here just in case.
node: cloth
- type: Item
heldPrefix: cloth
- type: entity
parent: MaterialCloth
@@ -195,6 +199,8 @@
tags:
- ClothMade
- RawMaterial
- type: Item
heldPrefix: durathread
- type: entity
parent: MaterialDurathread
@@ -335,8 +341,7 @@
sprite: Objects/Materials/materials.rsi
state: corgihide
- type: Item
sprite: Clothing/Head/Misc/hides.rsi
heldPrefix: corgi
heldPrefix: corgihide
- type: Clothing
sprite: Clothing/Head/Misc/hides.rsi
equippedPrefix: corgi2
@@ -428,6 +433,8 @@
tags:
- ClothMade
- RawMaterial
- type: Item
heldPrefix: cotton
- type: entity
parent: MaterialCotton
@@ -480,6 +487,8 @@
tags:
- ClothMade
- RawMaterial
- type: Item
heldPrefix: pyrotton
- type: entity
parent: MaterialPyrotton
@@ -539,6 +548,8 @@
- ReagentId: Honk
Quantity: 5
- type: Appearance
- type: Item
heldPrefix: bananium
- type: entity
parent: MaterialBananium
@@ -589,6 +600,9 @@
tags:
- ClothMade
- RawMaterial
- type: Item
sprite: Objects/Materials/silk.rsi
heldPrefix: silk
- type: entity
parent: MaterialWebSilk
@@ -711,6 +725,8 @@
reagents:
- ReagentId: Vitamin
Quantity: 3
- type: Item
heldPrefix: bones
- type: entity
parent: MaterialBones
@@ -765,6 +781,8 @@
- goliath_hide_3
- type: Item
size: Large
heldPrefix: goliathhide
sprite: Objects/Materials/hide.rsi
shape:
- 0,0,2,2

View File

@@ -46,6 +46,8 @@
reagents:
- ReagentId: Gold
Quantity: 10
- type: Item
heldPrefix: gold
- type: entity
parent: GoldOre
@@ -77,6 +79,8 @@
reagents:
- ReagentId: Carbon
Quantity: 20
- type: Item
heldPrefix: diamond
- type: entity
parent: DiamondOre
@@ -108,6 +112,8 @@
reagents:
- ReagentId: Iron
Quantity: 10
- type: Item
heldPrefix: iron
- type: entity
id: SteelOre1
@@ -144,6 +150,8 @@
reagents:
- ReagentId: Plasma
Quantity: 10
- type: Item
heldPrefix: plasma
- type: entity
parent: PlasmaOre
@@ -175,6 +183,8 @@
reagents:
- ReagentId: Silver
Quantity: 10
- type: Item
heldPrefix: silver
- type: entity
parent: SilverOre
@@ -206,6 +216,8 @@
reagents:
- ReagentId: Silicon
Quantity: 10
- type: Item
heldPrefix: spacequartz
- type: entity
parent: SpaceQuartz
@@ -245,6 +257,8 @@
- ReagentId: Radium
Quantity: 2
canReact: false
- type: Item
heldPrefix: uranium
- type: entity
parent: UraniumOre
@@ -285,6 +299,8 @@
Quantity: 2
- ReagentId: Honk
Quantity: 5
- type: Item
heldPrefix: bananium
- type: entity
parent: BananiumOre
@@ -324,6 +340,8 @@
- type: PhysicalComposition
materialComposition:
Coal: 100
- type: Item
heldPrefix: coal
- type: entity
parent: Coal
@@ -381,6 +399,8 @@
Quantity: 10
- ReagentId: Iodine
Quantity: 5
- type: Item
heldPrefix: salt
- type: entity
parent: SaltOre

View File

@@ -45,7 +45,7 @@
map: ["base"]
- type: Item
size: Normal
# heldPrefix: rods
heldPrefix: rods
- type: Construction
graph: MetalRod
node: MetalRod

View File

@@ -810,3 +810,4 @@
- CentralCommand
- NuclearOperative
- SyndicateAgent
- Wizard

View File

@@ -119,6 +119,7 @@
- CentralCommand
- NuclearOperative
- SyndicateAgent
- Wizard
privilegedIdSlot:
name: id-card-console-privileged-id
ejectSound: /Audio/Machines/id_swipe.ogg

View File

@@ -57,6 +57,42 @@
capacity: 5
count: 5
- type: entity
name: wand of the locker
description: Stuff nerds at a distance!
parent: WeaponWandBase
id: WeaponWandLocker
components:
- type: Sprite
layers:
- state: locker
map: ["base"]
- state: locker-effect
map: ["effect"]
- type: Gun
soundGunshot:
path: /Audio/Weapons/Guns/Gunshots/Magic/staff_animation.ogg
- type: BasicEntityAmmoProvider
proto: ProjectileLocker
capacity: 5
count: 5
- type: Item
size: Normal
inhandVisuals:
left:
- state: locker-inhand-left
right:
- state: locker-inhand-right
- type: GenericVisualizer
visuals:
enum.AmmoVisuals.HasAmmo:
effect:
True: { visible: False }
False: { visible: True }
base:
True: { visible: True }
False: { visible: False }
- type: entity
name: magical wand of instant death
parent: WeaponWandBase

View File

@@ -79,6 +79,86 @@
totalIntensity: 0.3
maxTileBreak: 0
- type: entity
id: ProjectileLocker
name: cursed locker
description: A cursed magical locker! Can you resist?
parent: ClosetSteelBase
categories: [ HideSpawnMenu ]
components:
- type: ResistLocker
resistTime: 30
- type: StoreOnCollide
lockOnCollide: true
disableWhenFirstOpened: true
whitelist:
components:
- Body
- type: LockVisuals
stateLocked: cursed_door
stateUnlocked: decursed_door
- type: Lock
breakOnEmag: false
- type: AccessReader
access: [["Wizard"]]
breakOnEmag: false
- type: Projectile
deleteOnCollide: false
onlyCollideWhenShot: true
damage:
types:
Brute: 0
- type: Sprite
noRot: true
sprite: Structures/Storage/closet.rsi
layers:
- state: cursed
map: [ "enum.StorageVisualLayers.Base" ]
- state: decursed_door
map: [ "enum.StorageVisualLayers.Door" ]
- state: paper
visible: false
sprite: Structures/Storage/closet_labels.rsi
map: [ "enum.PaperLabelVisuals.Layer" ]
- state: cursed_door
map: [ "enum.LockVisualLayers.Lock" ]
- state: welded
visible: false
map: [ "enum.WeldableLayers.BaseWelded" ]
#TODO: Will have to eventually make a custom visualizer for cursed lockers
- type: EntityStorageVisuals
stateBaseClosed: decursed
stateDoorOpen: decursed_open
stateDoorClosed: decursed_door
- type: Fixtures
fixtures:
fix1:
shape:
!type:PhysShapeAabb
bounds: "-0.25,-0.48,0.25,0.48"
density: 75
mask:
- MachineMask
layer:
- MachineLayer
projectile:
shape:
!type:PhysShapeAabb
bounds: "-0.15,-0.45,0.15,0.15"
hard: false
mask:
- Impassable
- BulletImpassable
fly-by: &flybyfixture
shape: !type:PhysShapeCircle
radius: 0.6
layer:
- Impassable
- MidImpassable
- HighImpassable
- LowImpassable
hard: false
- type: entity
id: ProjectilePolyboltBase
parent: BaseBullet

View File

@@ -5,7 +5,7 @@
- type: TimedDespawn
lifetime: 0.4
- type: Sprite
drawdepth: Effects
drawdepth: BelowMobs
layers:
- shader: unshaded
map: ["enum.EffectLayers.Unshaded"]
@@ -983,7 +983,7 @@
- HideContextMenu
- type: entity
name: laser bolt
name: laser bolt
id: BulletLaser
parent: BaseBullet
categories: [ HideSpawnMenu ]
@@ -1029,7 +1029,7 @@
- type: ProjectileSpread
proto: BulletLaser
count: 5 #65 heat damage if you hit all your shots, but wide spread
spread: 30
spread: 30
- type: entity
name: narrow laser barrage
@@ -1051,4 +1051,4 @@
- type: ProjectileSpread
proto: BulletDisablerSmg
count: 3 #bit stronger than a disabler if you hit your shots you goober, still not a 2 hit stun though
spread: 9
spread: 9

View File

@@ -274,6 +274,7 @@
components:
- type: ItemToggle
onUse: false # wielding events control it instead
onActivate: false # prevents the weapon from being able to be turned on when it is on the ground
soundActivate:
path: /Audio/Weapons/ebladeon.ogg
params:

View File

@@ -96,6 +96,7 @@
Slash: 12
- type: EmbeddableProjectile
sound: /Audio/Weapons/star_hit.ogg
offset: -0.15,0.0
- type: LandAtCursor
- type: DamageOtherOnHit
damage:
@@ -108,6 +109,8 @@
sprite: Objects/Weapons/Melee/combat_knife.rsi
- type: DisarmMalus
malus: 0.225
- type: ThrowingAngle
angle: 225
- type: entity
name: survival knife
@@ -140,6 +143,7 @@
Slash: 15
- type: Item
sprite: Objects/Weapons/Melee/kukri_knife.rsi
storedSprite: null
- type: entity
parent: ClothingHeadHatGreyFlatcap
@@ -286,6 +290,7 @@
Slash: 5
- type: EmbeddableProjectile
sound: /Audio/Weapons/star_hit.ogg
offset: -0.15,0.0
- type: LandAtCursor
- type: DamageOtherOnHit
ignoreResistances: true
@@ -295,3 +300,5 @@
Piercing: 15
- type: Item
sprite: Objects/Weapons/Melee/throwing_knife.rsi
- type: ThrowingAngle
angle: 225

View File

@@ -989,6 +989,15 @@
- type: Wires
layoutId: AirlockMedical
- type: entity
parent: AirlockMaintMedLocked
id: AirlockMedicalMorgueMaintLocked
suffix: Morgue, Locked
components:
- type: ContainerFill
containers:
board: [ DoorElectronicsMorgue ]
- type: entity
parent: AirlockMaintMedLocked
id: AirlockMaintChemLocked

View File

@@ -31,6 +31,11 @@
shader: unshaded
- state: panel_open
map: ["enum.WiresVisualLayers.MaintenancePanel"]
- state: electrified
sprite: Interface/Misc/ai_hud.rsi
shader: unshaded
visible: false
map: ["enum.ElectrifiedLayers.HUD"]
- type: AnimationPlayer
- type: Physics
- type: Fixtures
@@ -73,6 +78,7 @@
- type: DoorBolt
- type: Appearance
- type: WiresVisuals
- type: ElectrocutionHUDVisuals
- type: ApcPowerReceiver
powerLoad: 20
- type: ExtensionCableReceiver

View File

@@ -27,6 +27,11 @@
shader: unshaded
- state: panel_open
map: ["enum.WiresVisualLayers.MaintenancePanel"]
- state: electrified
sprite: Interface/Misc/ai_hud.rsi
shader: unshaded
visible: false
map: ["enum.ElectrifiedLayers.HUD"]
- type: AnimationPlayer
- type: Physics
- type: Fixtures
@@ -66,6 +71,7 @@
containerAccessProvider: board
- type: Appearance
- type: WiresVisuals
- type: ElectrocutionHUDVisuals
- type: ApcPowerReceiver
powerLoad: 20
- type: ExtensionCableReceiver

View File

@@ -31,23 +31,6 @@
- type: Sprite
sprite: Structures/Doors/Airlocks/Standard/shuttle.rsi
snapCardinals: false
layers:
- state: closed
map: ["enum.DoorVisualLayers.Base"]
- state: closed_unlit
shader: unshaded
map: ["enum.DoorVisualLayers.BaseUnlit"]
visible: false
- state: welded
map: ["enum.WeldableLayers.BaseWelded"]
- state: bolted_unlit
shader: unshaded
map: ["enum.DoorVisualLayers.BaseBolted"]
- state: emergency_unlit
shader: unshaded
map: ["enum.DoorVisualLayers.BaseEmergencyAccess"]
- state: panel_open
map: ["enum.WiresVisualLayers.MaintenancePanel"]
- type: Wires
layoutId: Docking
- type: Door
@@ -113,6 +96,7 @@
- type: Sprite
sprite: Structures/Doors/Airlocks/Glass/shuttle.rsi
state: closed
snapCardinals: false
- type: Construction
graph: AirlockShuttle
node: assembly

View File

@@ -43,6 +43,11 @@
map: ["enum.DoorVisualLayers.BaseEmergencyAccess"]
- state: panel_open
map: ["enum.WiresVisualLayers.MaintenancePanel"]
- state: electrified
sprite: Interface/Misc/ai_hud.rsi
shader: unshaded
visible: false
map: ["enum.ElectrifiedLayers.HUD"]
- type: AnimationPlayer
- type: ApcPowerReceiver
- type: ExtensionCableReceiver
@@ -138,6 +143,7 @@
type: WiresBoundUserInterface
- type: Appearance
- type: WiresVisuals
- type: ElectrocutionHUDVisuals
- type: Airtight
noAirWhenFullyAirBlocked: false
airBlockedDirection:
@@ -177,6 +183,11 @@
- state: panel_open
map: [ "enum.WiresVisualLayers.MaintenancePanel" ]
visible: false
- state: electrified
sprite: Interface/Misc/ai_hud.rsi
shader: unshaded
visible: false
map: [ "enum.ElectrifiedLayers.HUD" ]
- type: Damageable
damageModifierSet: RGlass
- type: Destructible
@@ -238,6 +249,11 @@
- state: panel_open
map: [ "enum.WiresVisualLayers.MaintenancePanel" ]
visible: false
- state: electrified
sprite: Interface/Misc/ai_hud.rsi
shader: unshaded
visible: false
map: [ "enum.ElectrifiedLayers.HUD" ]
- type: Destructible
thresholds:
- trigger:
@@ -294,6 +310,11 @@
- state: panel_open
map: [ "enum.WiresVisualLayers.MaintenancePanel" ]
visible: false
- state: electrified
sprite: Interface/Misc/ai_hud.rsi
shader: unshaded
visible: false
map: ["enum.ElectrifiedLayers.HUD"]
- type: Destructible
thresholds:
- trigger:
@@ -355,6 +376,11 @@
- state: panel_open
map: [ "enum.WiresVisualLayers.MaintenancePanel" ]
visible: false
- state: electrified
sprite: Interface/Misc/ai_hud.rsi
shader: unshaded
visible: false
map: [ "enum.ElectrifiedLayers.HUD" ]
- type: Destructible
thresholds:
- trigger:
@@ -411,6 +437,11 @@
- state: panel_open
map: [ "enum.WiresVisualLayers.MaintenancePanel" ]
visible: false
- state: electrified
sprite: Interface/Misc/ai_hud.rsi
shader: unshaded
visible: false
map: [ "enum.ElectrifiedLayers.HUD" ]
- type: Destructible
thresholds:
- trigger:

View File

@@ -110,6 +110,7 @@
- type: WarpPoint
follow: true
location: nuclear bomb
- type: FTLSmashImmune
- type: entity
parent: NuclearBomb

View File

@@ -45,3 +45,11 @@
powerMV:
!type:CableTerminalNode
nodeGroupID: MVPower
- type: entity
id: CableTerminalUncuttable
parent: CableTerminal
suffix: uncuttable
components:
- type: Cable
cuttingQuality: null

View File

@@ -98,6 +98,14 @@
sound:
path: /Audio/Ambience/Objects/emf_buzz.ogg
- type: entity
id: CableHVUncuttable
parent: CableHV
suffix: uncuttable
components:
- type: Cable
cuttingQuality: null
- type: entity
parent: CableBase
id: CableMV
@@ -142,6 +150,14 @@
- type: CableVisualizer
statePrefix: mvcable_
- type: entity
id: CableMVUncuttable
parent: CableMV
suffix: uncuttable
components:
- type: Cable
cuttingQuality: null
- type: entity
parent: CableBase
id: CableApcExtension
@@ -188,3 +204,11 @@
acts: [ "Destruction" ]
- type: CableVisualizer
statePrefix: lvcable_
- type: entity
id: CableApcExtensionUncuttable
parent: CableApcExtension
suffix: uncuttable
components:
- type: Cable
cuttingQuality: null

View File

@@ -28,6 +28,8 @@
interfaces:
enum.BarSignUiKey.Key:
type: BarSignBoundUserInterface
enum.WiresUiKey.Key:
type: WiresBoundUserInterface
- type: Appearance
- type: Destructible
thresholds:
@@ -37,6 +39,11 @@
behaviors:
- !type:DoActsBehavior
acts: ["Destruction"]
- type: StationAiWhitelist
- type: WiresPanel
- type: Wires
boardName: wires-board-name-barsign
layoutId: BarSign
- type: entity
parent: BaseBarSign

View File

@@ -1069,6 +1069,15 @@
- type: Sprite
state: poster52_legit
- type: entity
parent: PosterBase
id: PosterLegitOppenhopper
name: "Oppenhopper"
description: "A poster for a long-forgotten movie. It follows a group of tenacious greenhorns from the Grasshopper Sector as they defend against onslaughts of the infamous Nuclear Operatives. The tagline reads: \"Nuke Ops will continue until robustness improves.\""
components:
- type: Sprite
state: poster53_legit
#maps

View File

@@ -70,8 +70,8 @@
- type: Appearance
- type: GenericVisualizer
visuals:
enum.ElectrifiedVisuals.IsPowered:
enum.ElectrifiedLayers.Powered:
enum.ElectrifiedVisuals.ShowSparks:
enum.ElectrifiedLayers.Sparks:
True: { visible: True }
False: { visible: False }
- type: AnimationPlayer
@@ -91,7 +91,7 @@
- state: straight_broken
- state: electrified
sprite: Effects/electricity.rsi
map: ["enum.ElectrifiedLayers.Powered"]
map: ["enum.ElectrifiedLayers.Sparks"]
shader: unshaded
visible: false
- type: Physics
@@ -151,7 +151,7 @@
- state: straight
- state: electrified
sprite: Effects/electricity.rsi
map: ["enum.ElectrifiedLayers.Powered"]
map: ["enum.ElectrifiedLayers.Sparks"]
shader: unshaded
visible: false
- type: Fixtures
@@ -209,7 +209,7 @@
- state: corner
- state: electrified
sprite: Effects/electricity.rsi
map: ["enum.ElectrifiedLayers.Powered"]
map: ["enum.ElectrifiedLayers.Sparks"]
shader: unshaded
visible: false
- type: Fixtures
@@ -256,7 +256,7 @@
- state: end
- state: electrified
sprite: Effects/electricity.rsi
map: ["enum.ElectrifiedLayers.Powered"]
map: ["enum.ElectrifiedLayers.Sparks"]
shader: unshaded
visible: false
- type: Fixtures
@@ -292,7 +292,7 @@
map: ["enum.DoorVisualLayers.Base"]
- state: electrified
sprite: Effects/electricity.rsi
map: [ "enum.ElectrifiedLayers.Powered" ]
map: [ "enum.ElectrifiedLayers.Sparks" ]
shader: unshaded
visible: false
- type: Fixtures

View File

@@ -21,7 +21,7 @@
- state: grille
- state: electrified
sprite: Effects/electricity.rsi
map: ["enum.ElectrifiedLayers.Powered"]
map: ["enum.ElectrifiedLayers.Sparks"]
shader: unshaded
visible: false
- type: Icon
@@ -82,8 +82,8 @@
- type: Appearance
- type: GenericVisualizer
visuals:
enum.ElectrifiedVisuals.IsPowered:
enum.ElectrifiedLayers.Powered:
enum.ElectrifiedVisuals.ShowSparks:
enum.ElectrifiedLayers.Sparks:
True: { visible: True }
False: { visible: False }
- type: AnimationPlayer
@@ -176,7 +176,7 @@
- state: grille_diagonal
- state: electrified_diagonal
sprite: Effects/electricity.rsi
map: ["enum.ElectrifiedLayers.Powered"]
map: ["enum.ElectrifiedLayers.Sparks"]
shader: unshaded
visible: false
- type: Icon
@@ -211,7 +211,7 @@
- state: ratvargrille_diagonal
- state: electrified_diagonal
sprite: Effects/electricity.rsi
map: ["enum.ElectrifiedLayers.Powered"]
map: ["enum.ElectrifiedLayers.Sparks"]
shader: unshaded
visible: false
- type: Icon

View File

@@ -36,6 +36,15 @@
layers:
- state: base
- state: logic
- state: logic_a
visible: false
map: [ "enum.LogicGateLayers.InputA" ]
- state: logic_b
visible: false
map: [ "enum.LogicGateLayers.InputB" ]
- state: logic_o
visible: false
map: [ "enum.LogicGateLayers.Output" ]
- state: or
map: [ "enum.LogicGateLayers.Gate" ]
- type: LogicGate
@@ -63,7 +72,18 @@
Nor: { state: nor }
Nand: { state: nand }
Xnor: { state: xnor }
enum.LogicGateVisuals.InputA:
enum.LogicGateLayers.InputA:
True: { visible: true }
False: { visible: false }
enum.LogicGateVisuals.InputB:
enum.LogicGateLayers.InputB:
True: { visible: true }
False: { visible: false }
enum.LogicGateVisuals.Output:
enum.LogicGateLayers.Output:
True: { visible: true }
False: { visible: false }
- type: entity
parent: LogicGateOr
id: LogicGateAnd
@@ -72,6 +92,16 @@
- type: Sprite
layers:
- state: base
- state: logic
- state: logic_a
visible: false
map: [ "enum.LogicGateLayers.InputA" ]
- state: logic_b
visible: false
map: [ "enum.LogicGateLayers.InputB" ]
- state: logic_o
visible: false
map: [ "enum.LogicGateLayers.Output" ]
- state: and
map: [ "enum.LogicGateLayers.Gate" ]
- type: LogicGate
@@ -85,6 +115,16 @@
- type: Sprite
layers:
- state: base
- state: logic
- state: logic_a
visible: false
map: [ "enum.LogicGateLayers.InputA" ]
- state: logic_b
visible: false
map: [ "enum.LogicGateLayers.InputB" ]
- state: logic_o
visible: false
map: [ "enum.LogicGateLayers.Output" ]
- state: xor
map: [ "enum.LogicGateLayers.Gate" ]
- type: LogicGate
@@ -98,6 +138,16 @@
- type: Sprite
layers:
- state: base
- state: logic
- state: logic_a
visible: false
map: [ "enum.LogicGateLayers.InputA" ]
- state: logic_b
visible: false
map: [ "enum.LogicGateLayers.InputB" ]
- state: logic_o
visible: false
map: [ "enum.LogicGateLayers.Output" ]
- state: nor
map: [ "enum.LogicGateLayers.Gate" ]
- type: LogicGate
@@ -111,6 +161,16 @@
- type: Sprite
layers:
- state: base
- state: logic
- state: logic_a
visible: false
map: [ "enum.LogicGateLayers.InputA" ]
- state: logic_b
visible: false
map: [ "enum.LogicGateLayers.InputB" ]
- state: logic_o
visible: false
map: [ "enum.LogicGateLayers.Output" ]
- state: nand
map: [ "enum.LogicGateLayers.Gate" ]
- type: LogicGate
@@ -124,6 +184,16 @@
- type: Sprite
layers:
- state: base
- state: logic
- state: logic_a
visible: false
map: [ "enum.LogicGateLayers.InputA" ]
- state: logic_b
visible: false
map: [ "enum.LogicGateLayers.InputB" ]
- state: logic_o
visible: false
map: [ "enum.LogicGateLayers.Output" ]
- state: xnor
map: [ "enum.LogicGateLayers.Gate" ]
- type: LogicGate