From: RedBookcase Date: Sat, 23 Aug 2025 20:32:15 +0000 (-0700) Subject: Added more Derelict Cyborgs. (#38159) X-Git-Url: https://git.smokeofanarchy.ru/gitweb.cgi?a=commitdiff_plain;h=5c206ede67b0f3feb413068000f08a5031cab067;p=space-station-14.git Added more Derelict Cyborgs. (#38159) * Added more Derelict Borgs. * minor fix & salvage borg instead of mining borg name. * I LOVE CAPITALIZATION! * Fixed Derelict Engineer Cyborg name and added unshaded crystal layer. * Ordering fixes & other cleanup. * Updated Derelict Salvage Cyborg Sprites. * New Salvage borg sprites. * Updated module comments. * Update events.yml Extended the Derelict Syndicate Assault Borg's spawn timer to 25 minutes from 15. * Fix for new borg hands * Update events.yml --------- Co-authored-by: RedBookcase --- diff --git a/Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl b/Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl index ce52b88655..a578adf82b 100644 --- a/Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl +++ b/Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl @@ -244,9 +244,24 @@ ghost-role-information-syndicate-cyborg-assault-name = Syndicate Assault Cyborg ghost-role-information-syndicate-cyborg-saboteur-name = Syndicate Saboteur Cyborg ghost-role-information-syndicate-cyborg-description = The Syndicate needs reinforcements. You, a cold silicon killing machine, will help them. -ghost-role-information-derelict-cyborg-name = Derelict Cyborg +ghost-role-information-derelict-engineering-cyborg-name = Derelict Engineer Cyborg +ghost-role-information-derelict-engineering-cyborg-description = You are an engineer cyborg that got lost in space. After years of exposure to ion storms you find yourself near a space station. + +ghost-role-information-derelict-cyborg-name = Derelict Generic Cyborg ghost-role-information-derelict-cyborg-description = You are a regular cyborg that got lost in space. After years of exposure to ion storms you find yourself near a space station. +ghost-role-information-derelict-janitor-cyborg-name = Derelict Janitor Cyborg +ghost-role-information-derelict-janitor-cyborg-description = You are a janitor cyborg that got lost in space. After years of exposure to ion storms you find yourself near a space station. + +ghost-role-information-derelict-medical-cyborg-name = Derelict Medical Cyborg +ghost-role-information-derelict-medical-cyborg-description = You are a medical cyborg that got lost in space. After years of exposure to ion storms you find yourself near a space station. + +ghost-role-information-derelict-mining-cyborg-name = Derelict Salvage Cyborg +ghost-role-information-derelict-mining-cyborg-description = You are a salvage cyborg that got lost in space. After years of exposure to ion storms you find yourself near a space station. + +ghost-role-information-derelict-syndicate-assault-cyborg-name = Derelict Syndicate Assault Cyborg +ghost-role-information-derelict-syndicate-assault-cyborg-description = You are an early model syndicate assault cyborg that got lost in space. After years of exposure to ion storms you find yourself near a space station. + ghost-role-information-security-name = Security ghost-role-information-security-description = You are part of a security task force, but seem to have found yourself in a strange situation... diff --git a/Resources/Prototypes/Entities/Markers/Spawners/ghost_roles.yml b/Resources/Prototypes/Entities/Markers/Spawners/ghost_roles.yml index e662a8b211..5815dbba47 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/ghost_roles.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/ghost_roles.yml @@ -211,6 +211,18 @@ - sprite: Mobs/Aliens/paradox_clone.rsi state: preview +- type: entity + categories: [ HideSpawnMenu, Spawner ] + parent: SpawnPointGhostDerelictCyborg + id: SpawnPointGhostDerelictEngineeringCyborg + components: + - type: GhostRole + name: ghost-role-information-derelict-engineering-cyborg-name + description: ghost-role-information-derelict-engineering-cyborg-description + rules: ghost-role-information-silicon-rules + raffle: + settings: default + - type: entity categories: [ HideSpawnMenu, Spawner ] parent: BaseAntagSpawner @@ -229,6 +241,54 @@ - sprite: Mobs/Silicon/chassis.rsi state: derelict_icon +- type: entity + categories: [ HideSpawnMenu, Spawner ] + parent: SpawnPointGhostDerelictCyborg + id: SpawnPointGhostDerelictJanitorCyborg + components: + - type: GhostRole + name: ghost-role-information-derelict-janitor-cyborg-name + description: ghost-role-information-derelict-janitor-cyborg-description + rules: ghost-role-information-silicon-rules + raffle: + settings: default + +- type: entity + categories: [ HideSpawnMenu, Spawner ] + parent: SpawnPointGhostDerelictCyborg + id: SpawnPointGhostDerelictMedicalCyborg + components: + - type: GhostRole + name: ghost-role-information-derelict-medical-cyborg-name + description: ghost-role-information-derelict-medical-cyborg-description + rules: ghost-role-information-silicon-rules + raffle: + settings: default + +- type: entity + categories: [ HideSpawnMenu, Spawner ] + parent: SpawnPointGhostDerelictCyborg + id: SpawnPointGhostDerelictMiningCyborg + components: + - type: GhostRole + name: ghost-role-information-derelict-mining-cyborg-name + description: ghost-role-information-derelict-mining-cyborg-description + rules: ghost-role-information-silicon-rules + raffle: + settings: default + +- type: entity + categories: [ HideSpawnMenu, Spawner ] + parent: SpawnPointGhostDerelictCyborg + id: SpawnPointGhostDerelictSyndicateAssaultCyborg + components: + - type: GhostRole + name: ghost-role-information-derelict-syndicate-assault-cyborg-name + description: ghost-role-information-derelict-syndicate-assault-cyborg-description + rules: ghost-role-information-silicon-rules + raffle: + settings: default + - type: entity categories: [ HideSpawnMenu, Spawner ] parent: BaseAntagSpawner diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml index 34fdbbd74b..4b170af6be 100644 --- a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml +++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml @@ -353,6 +353,7 @@ - Syndicate - type: ActiveRadio channels: + - Binary - Syndicate - type: ShowSyndicateIcons - type: MovementAlwaysTouching @@ -386,6 +387,19 @@ chance: 1 - type: ShowJobIcons +- type: entity + id: BaseBorgChassisSyndicateDerelict #For assault borg and maybe others in time + parent: BaseBorgChassisSyndicate + abstract: true + components: + - type: SiliconLawProvider + laws: SyndicateStatic #Non-subverted version so they can still be changed + - type: StartIonStormed + ionStormAmount: 3 + - type: IonStormTarget + chance: 1 + - type: ShowJobIcons + - type: entity parent: BaseBorgChassisNotIonStormable id: BaseXenoborgChassis diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml index 87b8d54a97..1b9fbed3ac 100644 --- a/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml +++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml @@ -206,7 +206,7 @@ map: ["light"] visible: false - type: BorgChassis - maxModules: 5 # the sixth one broke lol + maxModules: 5 # One less module slot than the regular module to reflect this being a "broken" cyborg. moduleWhitelist: tags: - BorgModuleGeneric @@ -218,4 +218,165 @@ interactSuccessString: petting-success-derelict-cyborg interactFailureString: petting-failure-derelict-cyborg interactSuccessSound: - path: /Audio/Ambience/Objects/periodic_beep.ogg \ No newline at end of file + path: /Audio/Ambience/Objects/periodic_beep.ogg + +- type: entity + parent: BaseBorgChassisDerelict + id: EngineeringBorgChassisDerelict + name: derelict engineer cyborg + description: A man-machine hybrid that assists the engineering department. This one seems to have chunks of strange crystals pockmarking its surface. + components: + - type: Sprite + layers: + - state: engineer_derelict + - state: engineer_e_r + map: ["enum.BorgVisualLayers.Light"] + shader: unshaded + visible: false + - state: engineer_derelict_crystal #This layer and the layer below are duplicated in order to create a more mellow unshaded layer. See https://github.com/space-wizards/space-station-14/pull/37869 for more info on the method. + shader: unshaded + - state: engineer_derelict_crystal + shader: shaded + - state: engineer_l + shader: unshaded + map: ["light"] + visible: false + - type: BorgChassis + maxModules: 5 # One less module slot than the regular module to reflect this being a "broken" cyborg. + moduleWhitelist: + tags: + - BorgModuleGeneric + - BorgModuleEngineering + hasMindState: engineer_e + noMindState: engineer_e_r + +- type: entity + parent: BaseBorgChassisDerelict + id: JanitorBorgChassisDerelict + name: derelict janitor cyborg + description: A man-machine hybrid that assists the service department. It's a bigger mess than anything it can clean up. + components: + - type: Sprite + layers: + - state: janitor_derelict + map: ["movement"] + - state: janitor_e_r + map: ["enum.BorgVisualLayers.Light"] + shader: unshaded + visible: false + - state: janitor_l + shader: unshaded + map: ["light"] + visible: false + - type: SpriteMovement + movementLayers: + movement: + state: janitor_moving_derelict + noMovementLayers: + movement: + state: janitor_derelict + - type: BorgChassis + maxModules: 5 # One less module slot than the regular module to reflect this being a "broken" cyborg. + moduleWhitelist: + tags: + - BorgModuleGeneric + - BorgModuleJanitor + hasMindState: janitor_e + noMindState: janitor_e_r + +- type: entity + parent: BaseBorgChassisDerelict + id: MedicalBorgChassisDerelict + name: derelict medical cyborg + description: A man-machine hybrid that assists the medical department. This one's needles don't look very sanitary. + components: + - type: Sprite + layers: + - state: medical_derelict + map: ["movement"] + - state: medical_e_r + map: ["enum.BorgVisualLayers.Light"] + shader: unshaded + visible: false + - state: medical_l + shader: unshaded + map: ["light"] + visible: false + - type: SpriteMovement + movementLayers: + movement: + state: medical_moving_derelict + noMovementLayers: + movement: + state: medical_derelict + - type: BorgChassis + maxModules: 6 # One less module slot than the regular module to reflect this being a "broken" cyborg. + moduleWhitelist: + tags: + - BorgModuleGeneric + - BorgModuleMedical + hasMindState: medical_e + noMindState: medical_e_r + +- type: entity + parent: BaseBorgChassisDerelict + id: MiningBorgChassisDerelict + name: derelict salvage cyborg + description: A man-machine hybrid that assists the cargo department. This one has seen the wrong side of a gibtonite chunk. + components: + - type: Sprite + layers: + - state: miner_derelict + map: ["movement"] + - state: miner_e_r + map: ["enum.BorgVisualLayers.Light"] + shader: unshaded + visible: false + - state: miner_l + shader: unshaded + map: ["light"] + visible: false + - type: SpriteMovement + movementLayers: + movement: + state: miner_moving_derelict + noMovementLayers: + movement: + state: miner_derelict + - type: BorgChassis + maxModules: 6 # One less module slot than the regular module to reflect this being a "broken" cyborg. + moduleWhitelist: + tags: + - BorgModuleGeneric + - BorgModuleCargo + hasMindState: miner_e + noMindState: miner_e_r + +- type: entity + parent: BaseBorgChassisSyndicateDerelict + id: SyndicateAssaultBorgChassisDerelict + name: derelict syndicate assault cyborg + description: A lean, mean killing machine with access to a variety of deadly modules. This one is more rust-orange than blood-red. + components: + - type: Sprite + layers: + - state: synd_sec_derelict + - state: synd_sec_e + map: ["enum.BorgVisualLayers.Light"] + shader: unshaded + visible: false + - state: synd_sec_l + shader: unshaded + map: ["light"] + visible: false + - type: BorgChassis + maxModules: 3 + moduleWhitelist: # Note - the Derelict Assault Borg does not have a traversal module. This is intentional as Assault Borgs have space traversal with their c20 and free space movement, and they can navigate to the station using the pinpointer. + tags: + - BorgModuleGeneric + - BorgModuleSyndicate + - BorgModuleSyndicateAssault + hasMindState: synd_sec_derelict_e + noMindState: synd_sec_derelict + - type: Construction + node: derelictcyborg diff --git a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml index 303f7dc676..c2025bb663 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml @@ -383,7 +383,7 @@ borg_module: - BorgModuleOperative - BorgModuleL6C - - BorgModuleEsword + - BorgModuleDoubleEsword - type: ItemSlots slots: cell_slot: @@ -453,8 +453,44 @@ - PlayerBorgSyndicateSaboteurGhostRole - type: entity - id: PlayerBorgDerelict + parent: EngineeringBorgChassisDerelict + id: PlayerEngineeringBorgDerelict + suffix: Battery, Module + components: + - type: ContainerFill + containers: + borg_brain: + - PositronicBrain + borg_module: + - BorgModuleTool + - BorgModuleFireExtinguisher + - BorgModuleConstruction + - BorgModuleRCD + - BorgModuleCable + - type: ItemSlots + slots: + cell_slot: + name: power-cell-slot-component-slot-name-default + startingItem: PowerCellHigh + - type: RandomMetadata + nameSegments: [NamesBorg] + +- type: entity + parent: PlayerEngineeringBorgDerelict + id: PlayerEngineeringBorgDerelictGhostRole + suffix: Ghost role + components: + - type: GhostRole + name: ghost-role-information-derelict-engineering-cyborg-name + description: ghost-role-information-derelict-engineering-cyborg-description + rules: ghost-role-information-silicon-rules + raffle: + settings: default + - type: GhostTakeoverAvailable + +- type: entity parent: BorgChassisDerelict + id: PlayerBorgDerelict suffix: Battery, Module components: - type: ContainerFill @@ -473,8 +509,8 @@ nameSegments: [NamesBorg] - type: entity - id: PlayerBorgDerelictGhostRole parent: PlayerBorgDerelict + id: PlayerBorgDerelictGhostRole suffix: Ghost role components: - type: GhostRole @@ -484,3 +520,143 @@ raffle: settings: default - type: GhostTakeoverAvailable + +- type: entity + parent: JanitorBorgChassisDerelict + id: PlayerJanitorBorgDerelict + suffix: Battery, Module + components: + - type: ContainerFill + containers: + borg_brain: + - PositronicBrain + borg_module: + - BorgModuleTool + - BorgModuleFireExtinguisher + - BorgModuleCleaning + - BorgModuleCustodial + - type: ItemSlots + slots: + cell_slot: + name: power-cell-slot-component-slot-name-default + startingItem: PowerCellHigh + - type: RandomMetadata + nameSegments: [NamesBorg] + +- type: entity + parent: PlayerJanitorBorgDerelict + id: PlayerJanitorBorgDerelictGhostRole + suffix: Ghost role + components: + - type: GhostRole + name: ghost-role-information-derelict-janitor-cyborg-name + description: ghost-role-information-derelict-janitor-cyborg-description + rules: ghost-role-information-silicon-rules + raffle: + settings: default + - type: GhostTakeoverAvailable + +- type: entity + parent: MedicalBorgChassisDerelict + id: PlayerMedicalBorgDerelict + suffix: Battery, Module + components: + - type: ContainerFill + containers: + borg_brain: + - PositronicBrain + borg_module: + - BorgModuleTool + - BorgModuleFireExtinguisher + - BorgModuleChemical + - BorgModuleTopicals + - BorgModuleRescue + - type: ItemSlots + slots: + cell_slot: + name: power-cell-slot-component-slot-name-default + startingItem: PowerCellHigh + - type: RandomMetadata + nameSegments: [NamesBorg] + +- type: entity + parent: PlayerMedicalBorgDerelict + id: PlayerMedicalBorgDerelictGhostRole + suffix: Ghost role + components: + - type: GhostRole + name: ghost-role-information-derelict-medical-cyborg-name + description: ghost-role-information-derelict-medical-cyborg-description + rules: ghost-role-information-silicon-rules + raffle: + settings: default + - type: GhostTakeoverAvailable + +- type: entity + parent: MiningBorgChassisDerelict + id: PlayerMiningBorgDerelict + suffix: Battery, Module + components: + - type: ContainerFill + containers: + borg_brain: + - PositronicBrain + borg_module: + - BorgModuleTool #No fire extinguisher, traversal is better + - BorgModuleMining + - BorgModuleTraversal + - BorgModuleAppraisal + - type: ItemSlots + slots: + cell_slot: + name: power-cell-slot-component-slot-name-default + startingItem: PowerCellHigh + - type: RandomMetadata + nameSegments: [NamesBorg] + +- type: entity + parent: PlayerMiningBorgDerelict + id: PlayerMiningBorgDerelictGhostRole + suffix: Ghost role + components: + - type: GhostRole + name: ghost-role-information-derelict-mining-cyborg-name + description: ghost-role-information-derelict-mining-cyborg-description + rules: ghost-role-information-silicon-rules + raffle: + settings: default + - type: GhostTakeoverAvailable + +- type: entity + parent: SyndicateAssaultBorgChassisDerelict + id: PlayerSyndicateAssaultBorgDerelict + suffix: Battery, Module + components: + - type: ContainerFill + containers: + borg_brain: + - PositronicBrain + borg_module: + - BorgModuleOperative + - BorgModuleC20r + - BorgModuleEsword + - type: ItemSlots + slots: + cell_slot: + name: power-cell-slot-component-slot-name-default + startingItem: PowerCellHyper + - type: RandomMetadata + nameSegments: [NamesDeathCommando] + +- type: entity + parent: PlayerSyndicateAssaultBorgDerelict + id: PlayerBorgSyndicateDerelictGhostRole + suffix: Ghost role + components: + - type: GhostRole + name: ghost-role-information-derelict-syndicate-assault-cyborg-name + description: ghost-role-information-derelict-syndicate-assault-cyborg-description + rules: ghost-role-information-silicon-rules + raffle: + settings: default + - type: GhostTakeoverAvailable diff --git a/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml b/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml index 02b1afdbc5..2a971d71ea 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml @@ -1132,8 +1132,8 @@ #syndicate modules - type: entity - id: BorgModuleSyndicateWeapon parent: [ BaseBorgModule, BaseProviderBorgModule, BaseSyndicateContraband ] + id: BorgModuleSyndicateWeapon name: weapon cyborg module components: - type: Sprite @@ -1168,8 +1168,8 @@ price: 2500 - type: entity - id: BorgModuleOperative parent: [ BaseBorgModuleSyndicate, BaseProviderBorgModule, BaseSyndicateContraband ] + id: BorgModuleOperative name: operative cyborg module description: A module that comes with a crowbar, an Emag, an Access Breaker and a syndicate pinpointer. components: @@ -1187,42 +1187,76 @@ icon: { sprite: Interface/Actions/actions_borg.rsi, state: syndicate-operative-module } - type: entity - id: BorgModuleEsword parent: [ BaseBorgModuleSyndicate, BaseProviderBorgModule, BaseSyndicateContraband ] + id: BorgModuleEsword name: energy sword cyborg module - description: A module that comes with a double energy sword. + description: A weapons module that comes with an energy sword. components: - - type: Sprite - layers: - - state: syndicate - - state: icon-syndicate - - type: ItemBorgModule - hands: - - item: CyborgEnergySwordDouble - - item: PinpointerSyndicateNuclear - - type: BorgModuleIcon - icon: { sprite: Interface/Actions/actions_borg.rsi, state: syndicate-esword-module } + - type: Sprite + layers: + - state: syndicate + - state: icon-syndicate + - type: ItemBorgModule + hands: + - item: CyborgEnergySword + - item: PinpointerSyndicateNuclear + - type: BorgModuleIcon + icon: { sprite: Interface/Actions/actions_borg.rsi, state: syndicate-esword-module } + +- type: entity + id: BorgModuleDoubleEsword + parent: [ BaseBorgModuleSyndicate, BaseProviderBorgModule, BaseSyndicateContraband ] + name: double energy sword cyborg module + description: A weapons module that comes with a double energy sword. + components: + - type: Sprite + layers: + - state: syndicate + - state: icon-syndicate + - type: ItemBorgModule + hands: + - item: CyborgEnergySwordDouble + - item: PinpointerSyndicateNuclear + - type: BorgModuleIcon + icon: { sprite: Interface/Actions/actions_borg.rsi, state: syndicate-desword-module } - type: entity - id: BorgModuleL6C parent: [ BaseBorgModuleSyndicateAssault, BaseProviderBorgModule, BaseSyndicateContraband ] + id: BorgModuleL6C name: L6C ROW cyborg module - description: A module that comes with a L6C. + description: A weapons module that comes with a L6C. components: - - type: Sprite - layers: - - state: syndicate - - state: icon-syndicate - - type: ItemBorgModule - hands: - - item: WeaponLightMachineGunL6C - - item: PinpointerSyndicateNuclear - - type: BorgModuleIcon - icon: { sprite: Interface/Actions/actions_borg.rsi, state: syndicate-l6c-module } + - type: Sprite + layers: + - state: syndicate + - state: icon-syndicate + - type: ItemBorgModule + hands: + - item: WeaponLightMachineGunL6C + - item: PinpointerSyndicateNuclear + - type: BorgModuleIcon + icon: { sprite: Interface/Actions/actions_borg.rsi, state: syndicate-l6c-module } + +- type: entity + parent: [ BaseBorgModuleSyndicateAssault, BaseProviderBorgModule, BaseSyndicateContraband ] + id: BorgModuleC20r + name: C20-r ROW cyborg module + description: A weapons module that comes with a burst-fire C-20r. + components: + - type: Sprite + layers: + - state: syndicate + - state: icon-syndicate + - type: ItemBorgModule + hands: + - item: WeaponSubMachineGunC20rROW + - item: PinpointerSyndicateNuclear + - type: BorgModuleIcon + icon: { sprite: Interface/Actions/actions_borg.rsi, state: syndicate-c20r-module } - type: entity - id: BorgModuleMartyr parent: [ BaseBorgModule, BaseProviderBorgModule, BaseSyndicateContraband ] + id: BorgModuleMartyr name: martyr cyborg module description: "A module that comes with an explosive you probably don't want to handle yourself." components: diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/SMGs/smgs.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/SMGs/smgs.yml index f069b4a918..2ecaaec89e 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/SMGs/smgs.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/SMGs/smgs.yml @@ -123,6 +123,47 @@ - type: StaticPrice price: 5000 +- type: entity + name: C-20r ROW #I think ROW stands for Recharging Onboard Weapon so i'm following the L6C's example + id: WeaponSubMachineGunC20rROW + parent: BaseItem + description: A burst-fire C-20r submachine gun for use by cyborgs. Creates .35 caliber ammo on the fly from an internal ammo fabricator, which slowly self-charges. + components: + - type: Gun + minAngle: 2 + maxAngle: 16 + angleIncrease: 4 + angleDecay: 16 + fireRate: 8 + burstFireRate: 8 + selectedMode: Burst + availableModes: + - Burst + soundGunshot: + path: /Audio/Weapons/Guns/Gunshots/c-20r.ogg + - type: Sprite + sprite: Objects/Weapons/Guns/SMGs/c20r.rsi + layers: + - state: base + map: ["enum.GunVisualLayers.Base"] + - state: mag-5 + map: ["enum.GunVisualLayers.Mag"] + - type: Item + size: Huge + - type: ContainerContainer + containers: + ballistic-ammo: !type:Container + - type: ProjectileBatteryAmmoProvider + proto: CartridgePistol + fireCost: 100 + - type: Battery + maxCharge: 3000 + startingCharge: 3000 + - type: BatterySelfRecharger + autoRecharge: true + autoRechargeRate: 25 + - type: AmmoCounter + - type: entity name: Drozd parent: [BaseWeaponSubMachineGun, BaseSecurityContraband] diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/e_sword.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/e_sword.yml index f634425006..5f431416e7 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/e_sword.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/e_sword.yml @@ -397,10 +397,17 @@ spread: 75 # Borgs + +- type: entity + parent: EnergySword + id: CyborgEnergySword + suffix: For Borgs + description: A very loud & dangerous sword with a beam made of pure, concentrated plasma. Specially designed for syndicate cyborgs. + - type: entity - suffix: One-Handed, For Borgs parent: EnergySwordDouble id: CyborgEnergySwordDouble # why is this invalid if ID is BorgEnergySwordDouble + suffix: One-Handed, For Borgs description: Syndicate Command Interns thought that having one blade on the energy sword was not enough. Specially designed for syndicate cyborgs. components: # could add energy-draining like the L6C - type: Wieldable diff --git a/Resources/Prototypes/GameRules/events.yml b/Resources/Prototypes/GameRules/events.yml index acd3d4a2b8..c9e612c7f5 100644 --- a/Resources/Prototypes/GameRules/events.yml +++ b/Resources/Prototypes/GameRules/events.yml @@ -32,7 +32,8 @@ - id: ClosetSkeleton - id: KingRatMigration - id: RevenantSpawn - - id: DerelictCyborgSpawn + - !type:NestedSelector + tableId: DerelictBorgEventTable - type: entityTable id: ModerateAntagEventsTable @@ -45,6 +46,25 @@ - id: ZombieOutbreak - id: LoneOpsSpawn - id: WizardSpawn + - !type:NestedSelector + tableId: DerelictBorgEventTable + +- type: entityTable + id: DerelictBorgEventTable #For Derelict Borg spawns + table: !type:GroupSelector + children: + - !type:GroupSelector # Standard NT Borgs + weight: 85 + children: + - id: DerelictEngineerCyborgSpawn + - id: DerelictGenericCyborgSpawn + - id: DerelictJanitorCyborgSpawn + - id: DerelictMedicalCyborgSpawn + - id: DerelictMiningCyborgSpawn + - !type:GroupSelector # Other Borgs + weight: 15 + children: + - id: DerelictSyndicateAssaultCyborgSpawn - type: entity id: BaseStationEvent @@ -542,7 +562,7 @@ earliestStart: 35 weight: 5.5 minimumPlayers: 20 - duration: null # LoneOpsSpawn needs an infinite duration so that it inherits the NukeOpsRule things of an actually appropriate end scrreen (not always "Neutral outcome!") and... ending the game if the station is nuked. + duration: null # LoneOpsSpawn needs an infinite duration so that it inherits the NukeOpsRule things of an actually appropriate end screen (not always "Neutral outcome!") and... ending the game if the station is nuked. - type: RuleGrids - type: LoadMapRule gridPath: /Maps/Shuttles/ShuttleEvent/striker.yml @@ -673,10 +693,31 @@ - type: entity parent: BaseGameRule - id: DerelictCyborgSpawn + id: DerelictEngineerCyborgSpawn components: - type: StationEvent - weight: 5 + weight: 2.5 + earliestStart: 15 + reoccurrenceDelay: 20 + minimumPlayers: 4 + duration: null + - type: SpaceSpawnRule + spawnDistance: 0 + - type: AntagSpawner + prototype: PlayerEngineeringBorgDerelictGhostRole + - type: AntagSelection + definitions: + - spawnerPrototype: SpawnPointGhostDerelictEngineeringCyborg + min: 1 + max: 1 + pickPlayer: false + +- type: entity + parent: BaseGameRule + id: DerelictGenericCyborgSpawn + components: + - type: StationEvent + weight: 2.5 earliestStart: 15 reoccurrenceDelay: 20 minimumPlayers: 4 @@ -684,10 +725,94 @@ - type: SpaceSpawnRule spawnDistance: 0 - type: AntagSpawner - prototype: PlayerBorgDerelict + prototype: PlayerBorgDerelictGhostRole - type: AntagSelection definitions: - spawnerPrototype: SpawnPointGhostDerelictCyborg min: 1 max: 1 pickPlayer: false + +- type: entity + parent: BaseGameRule + id: DerelictJanitorCyborgSpawn + components: + - type: StationEvent + weight: 2.5 + earliestStart: 15 + reoccurrenceDelay: 20 + minimumPlayers: 4 + duration: null + - type: SpaceSpawnRule + spawnDistance: 0 + - type: AntagSpawner + prototype: PlayerJanitorBorgDerelictGhostRole + - type: AntagSelection + definitions: + - spawnerPrototype: SpawnPointGhostDerelictJanitorCyborg + min: 1 + max: 1 + pickPlayer: false + +- type: entity + parent: BaseGameRule + id: DerelictMedicalCyborgSpawn + components: + - type: StationEvent + weight: 2.5 + earliestStart: 15 + reoccurrenceDelay: 20 + minimumPlayers: 4 + duration: null + - type: SpaceSpawnRule + spawnDistance: 0 + - type: AntagSpawner + prototype: PlayerMedicalBorgDerelictGhostRole + - type: AntagSelection + definitions: + - spawnerPrototype: SpawnPointGhostDerelictMedicalCyborg + min: 1 + max: 1 + pickPlayer: false + +- type: entity + parent: BaseGameRule + id: DerelictMiningCyborgSpawn + components: + - type: StationEvent + weight: 2.5 + earliestStart: 15 + reoccurrenceDelay: 20 + minimumPlayers: 4 + duration: null + - type: SpaceSpawnRule + spawnDistance: 0 + - type: AntagSpawner + prototype: PlayerMiningBorgDerelictGhostRole + - type: AntagSelection + definitions: + - spawnerPrototype: SpawnPointGhostDerelictMiningCyborg + min: 1 + max: 1 + pickPlayer: false + +- type: entity + parent: BaseGameRule + id: DerelictSyndicateAssaultCyborgSpawn + components: + - type: StationEvent + weight: 2.5 + earliestStart: 25 + reoccurrenceDelay: 20 + minimumPlayers: 15 + duration: null + - type: SpaceSpawnRule + spawnDistance: 0 + - type: AntagSpawner + prototype: PlayerBorgSyndicateDerelictGhostRole + - type: AntagSelection + definitions: + - spawnerPrototype: SpawnPointGhostDerelictSyndicateAssaultCyborg + min: 1 + max: 1 + pickPlayer: false diff --git a/Resources/Textures/Interface/Actions/actions_borg.rsi/meta.json b/Resources/Textures/Interface/Actions/actions_borg.rsi/meta.json index ac631e0294..ae485c26c5 100644 --- a/Resources/Textures/Interface/Actions/actions_borg.rsi/meta.json +++ b/Resources/Textures/Interface/Actions/actions_borg.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from vgstation at commit https://github.com/vgstation-coders/vgstation13/commit/cdbcb1e858b11f083994a7a269ed67ef5b452ce9, Module actions by Scarky0. chem, adv-chem, and adv-mining by mubururu_, xenoborg actions by Samuka-C (github), advclown by ThatGuyUSA", + "copyright": "Taken from vgstation at commit https://github.com/vgstation-coders/vgstation13/commit/cdbcb1e858b11f083994a7a269ed67ef5b452ce9, Module actions by Scarky0. chem, adv-chem, and adv-mining by mubururu_, xenoborg actions by Samuka-C (github), advclown by ThatGuyUSA. c20r and esword by RedBookcase on Github.", "size": { "x": 32, "y": 32 @@ -106,12 +106,18 @@ { "name":"syndicate-operative-module" }, + { + "name":"syndicate-desword-module" + }, { "name":"syndicate-esword-module" }, { "name":"syndicate-l6c-module" }, + { + "name":"syndicate-c20r-module" + }, { "name":"syndicate-martyr-module" }, diff --git a/Resources/Textures/Interface/Actions/actions_borg.rsi/syndicate-c20r-module.png b/Resources/Textures/Interface/Actions/actions_borg.rsi/syndicate-c20r-module.png new file mode 100644 index 0000000000..52c14b2651 Binary files /dev/null and b/Resources/Textures/Interface/Actions/actions_borg.rsi/syndicate-c20r-module.png differ diff --git a/Resources/Textures/Interface/Actions/actions_borg.rsi/syndicate-desword-module.png b/Resources/Textures/Interface/Actions/actions_borg.rsi/syndicate-desword-module.png new file mode 100644 index 0000000000..201149cf18 Binary files /dev/null and b/Resources/Textures/Interface/Actions/actions_borg.rsi/syndicate-desword-module.png differ diff --git a/Resources/Textures/Interface/Actions/actions_borg.rsi/syndicate-esword-module.png b/Resources/Textures/Interface/Actions/actions_borg.rsi/syndicate-esword-module.png index 201149cf18..944c4ee918 100644 Binary files a/Resources/Textures/Interface/Actions/actions_borg.rsi/syndicate-esword-module.png and b/Resources/Textures/Interface/Actions/actions_borg.rsi/syndicate-esword-module.png differ diff --git a/Resources/Textures/Mobs/Silicon/chassis.rsi/engineer_derelict.png b/Resources/Textures/Mobs/Silicon/chassis.rsi/engineer_derelict.png new file mode 100644 index 0000000000..7eb8b01ad0 Binary files /dev/null and b/Resources/Textures/Mobs/Silicon/chassis.rsi/engineer_derelict.png differ diff --git a/Resources/Textures/Mobs/Silicon/chassis.rsi/engineer_derelict_crystal.png b/Resources/Textures/Mobs/Silicon/chassis.rsi/engineer_derelict_crystal.png new file mode 100644 index 0000000000..38bae65c83 Binary files /dev/null and b/Resources/Textures/Mobs/Silicon/chassis.rsi/engineer_derelict_crystal.png differ diff --git a/Resources/Textures/Mobs/Silicon/chassis.rsi/janitor_derelict.png b/Resources/Textures/Mobs/Silicon/chassis.rsi/janitor_derelict.png new file mode 100644 index 0000000000..34ae031b79 Binary files /dev/null and b/Resources/Textures/Mobs/Silicon/chassis.rsi/janitor_derelict.png differ diff --git a/Resources/Textures/Mobs/Silicon/chassis.rsi/janitor_moving_derelict.png b/Resources/Textures/Mobs/Silicon/chassis.rsi/janitor_moving_derelict.png new file mode 100644 index 0000000000..ce6b1bc61e Binary files /dev/null and b/Resources/Textures/Mobs/Silicon/chassis.rsi/janitor_moving_derelict.png differ diff --git a/Resources/Textures/Mobs/Silicon/chassis.rsi/medical_derelict.png b/Resources/Textures/Mobs/Silicon/chassis.rsi/medical_derelict.png new file mode 100644 index 0000000000..8fd1dba350 Binary files /dev/null and b/Resources/Textures/Mobs/Silicon/chassis.rsi/medical_derelict.png differ diff --git a/Resources/Textures/Mobs/Silicon/chassis.rsi/medical_moving_derelict.png b/Resources/Textures/Mobs/Silicon/chassis.rsi/medical_moving_derelict.png new file mode 100644 index 0000000000..4054df6184 Binary files /dev/null and b/Resources/Textures/Mobs/Silicon/chassis.rsi/medical_moving_derelict.png differ diff --git a/Resources/Textures/Mobs/Silicon/chassis.rsi/meta.json b/Resources/Textures/Mobs/Silicon/chassis.rsi/meta.json index 4e56b98d3e..45aa679ee2 100644 --- a/Resources/Textures/Mobs/Silicon/chassis.rsi/meta.json +++ b/Resources/Textures/Mobs/Silicon/chassis.rsi/meta.json @@ -1,659 +1,791 @@ { - "version": 1, - "size": { - "x": 32, - "y": 32 - }, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/commit/faf6db214927874c19b8fa8585d26b5d40de1acc, derelict sprites modified by GoldenCan(GitHub), xenoborg sprites, created and modified by Samuka-C (github).", - "states": [ - { - "name": "clown", - "directions": 4 - }, - { - "name": "clown_e", - "directions": 4 - }, - { - "name": "clown_e_r", - "directions": 4 - }, - { - "name": "clown_l", - "directions": 4 - }, - { - "name": "derelict", - "directions": 4 - }, - { - "name": "derelict_e", - "directions": 4 - }, - { - "name": "derelict_e_r", - "directions": 4 - }, - { - "name": "derelict_icon", - "directions": 1 - }, - { - "name": "derelict_l", - "directions": 4 - }, - { - "name": "engineer", - "directions": 4 - }, - { - "name": "engineer_e", - "directions": 4 - }, - { - "name": "engineer_e_r", - "directions": 4 - }, - { - "name": "engineer_l", - "directions": 4 - }, - { - "name": "janitor", - "directions": 4 - }, - { - "name": "janitor_moving", - "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 - ] - ] - }, - { - "name": "janitor_e", - "directions": 4 - }, - { - "name": "janitor_e_r", - "directions": 4 - }, - { - "name": "janitor_l", - "directions": 4 - }, - { - "name": "medical", - "directions": 4, - "delays": [ - [ - 0.1, - 0.2, - 0.1 - ], - [ - 0.1, - 0.2, - 0.1 - ], - [ - 0.1, - 0.2, - 0.1 - ], - [ - 0.1, - 0.2, - 0.1 - ] - ] - }, - { - "name": "medical_moving", - "directions": 4, - "delays": [ - [ - 0.1, - 0.2, - 0.1 - ], - [ - 0.1, - 0.2, - 0.1 - ], - [ - 0.1, - 0.2, - 0.1 - ], - [ - 0.1, - 0.2, - 0.1 - ] - ] - }, - { - "name": "medical_e", - "directions": 4 - }, - { - "name": "medical_e_r", - "directions": 4 - }, - { - "name": "medical_l", - "directions": 4 - }, - { - "name": "miner", - "directions": 4 - }, - { - "name": "miner_moving", - "directions": 4, - "delays": [ - [ - 0.1, - 0.1 - ], - [ - 0.1, - 0.1 - ], - [ - 0.1, - 0.1 - ], - [ - 0.1, - 0.1 - ] - ] - }, - { - "name": "miner_e", - "directions": 4 - }, - { - "name": "miner_e_r", - "directions": 4 - }, - { - "name": "miner_l", - "directions": 4 - }, - { - "name": "robot", - "directions": 4 - }, - { - "name": "robot_e", - "directions": 4 - }, - { - "name": "robot_e_r", - "directions": 4 - }, - { - "name": "robot_l", - "directions": 4 - }, - { - "name": "peace", - "directions": 4 - }, - { - "name": "peace_e", - "directions": 4 - }, - { - "name": "peace_e_r", - "directions": 4 - }, - { - "name": "peace_l", - "directions": 4 - }, - { - "name": "service", - "directions": 4 - }, - { - "name": "service_e", - "directions": 4 - }, - { - "name": "service_e_r", - "directions": 4 - }, - { - "name": "service_l", - "directions": 4 - }, - { - "name": "synd_sec", - "directions": 4 - }, - { - "name": "synd_sec_e", - "directions": 4 - }, - { - "name": "synd_sec_l", - "directions": 4 - }, - { - "name": "synd_medical", - "directions": 4 - }, - { - "name": "synd_medical_l", - "directions": 4, - "delays": [ - [ - 0.1, - 0.2, - 0.1 - ], - [ - 0.1, - 0.2, - 0.1 - ], - [ - 0.1, - 0.2, - 0.1 - ], - [ - 0.1, - 0.2, - 0.1 - ] - ] - }, - { - "name": "synd_medical_e", - "directions": 4, - "delays": [ - [ - 0.1, - 0.2, - 0.1 - ], - [ - 0.1, - 0.2, - 0.1 - ], - [ - 0.1, - 0.2, - 0.1 - ], - [ - 0.1, - 0.2, - 0.1 - ] - ] - }, - { - "name": "synd_engi", - "directions": 4 - }, - { - "name": "synd_engi_e", - "directions": 4 - }, - { - "name": "synd_engi_l", - "directions": 4 - }, - { - "name": "xenoborg_heavy", - "directions": 4 - }, - { - "name": "xenoborg_heavy_e", - "directions": 4 - }, - { - "name": "xenoborg_heavy_e_r", - "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 - ], - [ - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1 - ] - ] - }, - { - "name": "xenoborg_heavy_l", - "directions": 4 - }, - { - "name": "xenoborg_scout", - "directions": 4 - }, - { - "name": "xenoborg_scout_l", - "directions": 4, - "delays": [ - [ - 0.1, - 0.2, - 0.1 - ], - [ - 0.1, - 0.2, - 0.1 - ], - [ - 0.1, - 0.2, - 0.1 - ], - [ - 0.1, - 0.2, - 0.1 - ] - ] - }, - { - "name": "xenoborg_scout_e", - "directions": 4, - "delays": [ - [ - 0.1, - 0.2, - 0.1 - ], - [ - 0.1, - 0.2, - 0.1 - ], - [ - 0.1, - 0.2, - 0.1 - ], - [ - 0.1, - 0.2, - 0.1 - ] - ] - }, - { - "name": "xenoborg_scout_e_r", - "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 - ], - [ - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1 - ] - ] - }, - { - "name": "xenoborg_engi", - "directions": 4 - }, - { - "name": "xenoborg_engi_e", - "directions": 4 - }, - { - "name": "xenoborg_engi_e_r", - "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 - ], - [ - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1 - ] - ] - }, - { - "name": "xenoborg_engi_l", - "directions": 4 - }, - { - "name": "xenoborg_stealth", - "directions": 4 - }, - { - "name": "xenoborg_stealth_e", - "directions": 4, - "delays": [ - [ - 0.1, - 0.2, - 0.1 - ], - [ - 0.1, - 0.2, - 0.1 - ], - [ - 0.1, - 0.2, - 0.1 - ], - [ - 0.1, - 0.2, - 0.1 - ] - ] - }, - { - "name": "xenoborg_stealth_e_r", - "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 - ], - [ - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1 - ] - ] - }, - { - "name": "xenoborg_stealth_l", - "directions": 4, - "delays": [ - [ - 0.1, - 0.2, - 0.1 - ], - [ - 0.1, - 0.2, - 0.1 - ], - [ - 0.1, - 0.2, - 0.1 - ], - [ - 0.1, - 0.2, - 0.1 - ] - ] - } - ] + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/commit/faf6db214927874c19b8fa8585d26b5d40de1acc, derelict generic sprites modified by GoldenCan(GitHub), xenoborg sprites, created and modified by Samuka-C (github). Derelict Engineer, Janitor, Miner, Medical, and Assault Borg sprites by _miket on Discord.", + "states": [ + { + "name": "clown", + "directions": 4 + }, + { + "name": "clown_e", + "directions": 4 + }, + { + "name": "clown_e_r", + "directions": 4 + }, + { + "name": "clown_l", + "directions": 4 + }, + { + "name": "derelict", + "directions": 4 + }, + { + "name": "derelict_e", + "directions": 4 + }, + { + "name": "derelict_e_r", + "directions": 4 + }, + { + "name": "derelict_icon", + "directions": 1 + }, + { + "name": "derelict_l", + "directions": 4 + }, + { + "name": "engineer", + "directions": 4 + }, + { + "name": "engineer_e", + "directions": 4 + }, + { + "name": "engineer_e_r", + "directions": 4 + }, + { + "name": "engineer_l", + "directions": 4 + }, + { + "name": "engineer_derelict", + "directions": 4 + }, + { + "name": "engineer_derelict_crystal", + "directions": 4 + }, + { + "name": "janitor", + "directions": 4 + }, + { + "name": "janitor_moving", + "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 + ] + ] + }, + { + "name": "janitor_e", + "directions": 4 + }, + { + "name": "janitor_e_r", + "directions": 4 + }, + { + "name": "janitor_l", + "directions": 4 + }, + { + "name": "janitor_derelict", + "directions": 4 + }, + { + "name": "janitor_moving_derelict", + "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 + ] + ] + }, + { + "name": "medical", + "directions": 4, + "delays": [ + [ + 0.1, + 0.2, + 0.1 + ], + [ + 0.1, + 0.2, + 0.1 + ], + [ + 0.1, + 0.2, + 0.1 + ], + [ + 0.1, + 0.2, + 0.1 + ] + ] + }, + { + "name": "medical_moving", + "directions": 4, + "delays": [ + [ + 0.1, + 0.2, + 0.1 + ], + [ + 0.1, + 0.2, + 0.1 + ], + [ + 0.1, + 0.2, + 0.1 + ], + [ + 0.1, + 0.2, + 0.1 + ] + ] + }, + { + "name": "medical_e", + "directions": 4 + }, + { + "name": "medical_e_r", + "directions": 4 + }, + { + "name": "medical_l", + "directions": 4 + }, + { + "name": "medical_derelict", + "directions": 4, + "delays": [ + [ + 0.1, + 0.2, + 0.1 + ], + [ + 0.1, + 0.2, + 0.1 + ], + [ + 0.1, + 0.2, + 0.1 + ], + [ + 0.1, + 0.2, + 0.1 + ] + ] + }, + { + "name": "medical_moving_derelict", + "directions": 4, + "delays": [ + [ + 0.1, + 0.2, + 0.1 + ], + [ + 0.1, + 0.2, + 0.1 + ], + [ + 0.1, + 0.2, + 0.1 + ], + [ + 0.1, + 0.2, + 0.1 + ] + ] + }, + { + "name": "miner", + "directions": 4 + }, + { + "name": "miner_moving", + "directions": 4, + "delays": [ + [ + 0.1, + 0.1 + ], + [ + 0.1, + 0.1 + ], + [ + 0.1, + 0.1 + ], + [ + 0.1, + 0.1 + ] + ] + }, + { + "name": "miner_e", + "directions": 4 + }, + { + "name": "miner_e_r", + "directions": 4 + }, + { + "name": "miner_l", + "directions": 4 + }, + { + "name": "miner_derelict", + "directions": 4 + }, + { + "name": "miner_moving_derelict", + "directions": 4, + "delays": [ + [ + 0.1, + 0.1 + ], + [ + 0.1, + 0.1 + ], + [ + 0.1, + 0.1 + ], + [ + 0.1, + 0.1 + ] + ] + }, + { + "name": "robot", + "directions": 4 + }, + { + "name": "robot_e", + "directions": 4 + }, + { + "name": "robot_e_r", + "directions": 4 + }, + { + "name": "robot_l", + "directions": 4 + }, + { + "name": "peace", + "directions": 4 + }, + { + "name": "peace_e", + "directions": 4 + }, + { + "name": "peace_e_r", + "directions": 4 + }, + { + "name": "peace_l", + "directions": 4 + }, + { + "name": "service", + "directions": 4 + }, + { + "name": "service_e", + "directions": 4 + }, + { + "name": "service_e_r", + "directions": 4 + }, + { + "name": "service_l", + "directions": 4 + }, + { + "name": "synd_sec", + "directions": 4 + }, + { + "name": "synd_sec_e", + "directions": 4 + }, + { + "name": "synd_sec_l", + "directions": 4 + }, + { + "name": "synd_sec_derelict", + "directions": 4 + }, + { + "name": "synd_sec_derelict_e", + "directions": 4 + }, + { + "name": "synd_sec_derelict_l", + "directions": 4 + }, + { + "name": "synd_medical", + "directions": 4 + }, + { + "name": "synd_medical_l", + "directions": 4, + "delays": [ + [ + 0.1, + 0.2, + 0.1 + ], + [ + 0.1, + 0.2, + 0.1 + ], + [ + 0.1, + 0.2, + 0.1 + ], + [ + 0.1, + 0.2, + 0.1 + ] + ] + }, + { + "name": "synd_medical_e", + "directions": 4, + "delays": [ + [ + 0.1, + 0.2, + 0.1 + ], + [ + 0.1, + 0.2, + 0.1 + ], + [ + 0.1, + 0.2, + 0.1 + ], + [ + 0.1, + 0.2, + 0.1 + ] + ] + }, + { + "name": "synd_engi", + "directions": 4 + }, + { + "name": "synd_engi_e", + "directions": 4 + }, + { + "name": "synd_engi_l", + "directions": 4 + }, + { + "name": "xenoborg_heavy", + "directions": 4 + }, + { + "name": "xenoborg_heavy_e", + "directions": 4 + }, + { + "name": "xenoborg_heavy_e_r", + "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 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "xenoborg_heavy_l", + "directions": 4 + }, + { + "name": "xenoborg_scout", + "directions": 4 + }, + { + "name": "xenoborg_scout_l", + "directions": 4, + "delays": [ + [ + 0.1, + 0.2, + 0.1 + ], + [ + 0.1, + 0.2, + 0.1 + ], + [ + 0.1, + 0.2, + 0.1 + ], + [ + 0.1, + 0.2, + 0.1 + ] + ] + }, + { + "name": "xenoborg_scout_e", + "directions": 4, + "delays": [ + [ + 0.1, + 0.2, + 0.1 + ], + [ + 0.1, + 0.2, + 0.1 + ], + [ + 0.1, + 0.2, + 0.1 + ], + [ + 0.1, + 0.2, + 0.1 + ] + ] + }, + { + "name": "xenoborg_scout_e_r", + "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 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "xenoborg_engi", + "directions": 4 + }, + { + "name": "xenoborg_engi_e", + "directions": 4 + }, + { + "name": "xenoborg_engi_e_r", + "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 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "xenoborg_engi_l", + "directions": 4 + }, + { + "name": "xenoborg_stealth", + "directions": 4 + }, + { + "name": "xenoborg_stealth_e", + "directions": 4, + "delays": [ + [ + 0.1, + 0.2, + 0.1 + ], + [ + 0.1, + 0.2, + 0.1 + ], + [ + 0.1, + 0.2, + 0.1 + ], + [ + 0.1, + 0.2, + 0.1 + ] + ] + }, + { + "name": "xenoborg_stealth_e_r", + "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 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "xenoborg_stealth_l", + "directions": 4, + "delays": [ + [ + 0.1, + 0.2, + 0.1 + ], + [ + 0.1, + 0.2, + 0.1 + ], + [ + 0.1, + 0.2, + 0.1 + ], + [ + 0.1, + 0.2, + 0.1 + ] + ] + } + ] } diff --git a/Resources/Textures/Mobs/Silicon/chassis.rsi/miner_derelict.png b/Resources/Textures/Mobs/Silicon/chassis.rsi/miner_derelict.png new file mode 100644 index 0000000000..d9d812c761 Binary files /dev/null and b/Resources/Textures/Mobs/Silicon/chassis.rsi/miner_derelict.png differ diff --git a/Resources/Textures/Mobs/Silicon/chassis.rsi/miner_moving_derelict.png b/Resources/Textures/Mobs/Silicon/chassis.rsi/miner_moving_derelict.png new file mode 100644 index 0000000000..05cd74494b Binary files /dev/null and b/Resources/Textures/Mobs/Silicon/chassis.rsi/miner_moving_derelict.png differ diff --git a/Resources/Textures/Mobs/Silicon/chassis.rsi/synd_sec_derelict.png b/Resources/Textures/Mobs/Silicon/chassis.rsi/synd_sec_derelict.png new file mode 100644 index 0000000000..9b42b90f6e Binary files /dev/null and b/Resources/Textures/Mobs/Silicon/chassis.rsi/synd_sec_derelict.png differ diff --git a/Resources/Textures/Mobs/Silicon/chassis.rsi/synd_sec_derelict_e.png b/Resources/Textures/Mobs/Silicon/chassis.rsi/synd_sec_derelict_e.png new file mode 100644 index 0000000000..a846febc06 Binary files /dev/null and b/Resources/Textures/Mobs/Silicon/chassis.rsi/synd_sec_derelict_e.png differ diff --git a/Resources/Textures/Mobs/Silicon/chassis.rsi/synd_sec_derelict_l.png b/Resources/Textures/Mobs/Silicon/chassis.rsi/synd_sec_derelict_l.png new file mode 100644 index 0000000000..b479c411a7 Binary files /dev/null and b/Resources/Textures/Mobs/Silicon/chassis.rsi/synd_sec_derelict_l.png differ