diff --git a/Resources/Locale/en-US/store/uplink-catalog.ftl b/Resources/Locale/en-US/store/uplink-catalog.ftl index fe21340882..5dea2f3a51 100644 --- a/Resources/Locale/en-US/store/uplink-catalog.ftl +++ b/Resources/Locale/en-US/store/uplink-catalog.ftl @@ -121,6 +121,9 @@ uplink-reinforcement-radio-monkey-desc = Call in a trained monkey to assist you uplink-reinforcement-radio-name = Reinforcement Teleporter uplink-reinforcement-radio-desc = Radio in a reinforcement agent of extremely questionable quality. No off button, buy this if you're ready to party. They have a pistol with no reserve ammo, and a knife. That's it. +uplink-reinforcement-radio-cyborg-assault-name = Syndicate Assault Cyborg Teleporter +uplink-reinforcement-radio-cyborg-assault-desc = A lean, mean killing machine with access to an Energy Sword, LMG, Cryptographic Sequencer, and a Pinpointer. + uplink-stealth-box-name = Stealth Box uplink-stealth-box-desc = A box outfitted with stealth technology, sneak around with this and don't move too fast now! diff --git a/Resources/Prototypes/Catalog/uplink_catalog.yml b/Resources/Prototypes/Catalog/uplink_catalog.yml index dfad53c211..f6646e0bd4 100644 --- a/Resources/Prototypes/Catalog/uplink_catalog.yml +++ b/Resources/Prototypes/Catalog/uplink_catalog.yml @@ -430,6 +430,22 @@ tags: - NukeOpsUplink +- type: listing + id: UplinkReinforcementRadioSyndicateCyborgAssault + name: uplink-reinforcement-radio-cyborg-assault-name + description: uplink-reinforcement-radio-cyborg-assault-desc + productEntity: ReinforcementRadioSyndicateCyborgAssault + icon: { sprite: Mobs/Silicon/chassis.rsi, state: synd_sec } + cost: + Telecrystal: 65 + categories: + - UplinkUtility + conditions: + - !type:StoreWhitelistCondition + whitelist: + tags: + - NukeOpsUplink + - type: listing id: UplinkReinforcementRadioSyndicateMonkey name: uplink-reinforcement-radio-monkey-name diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml index 0bffa07dc0..67323b4640 100644 --- a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml +++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml @@ -224,3 +224,38 @@ - type: AccessReader access: [["Command"], ["Research"]] - type: ShowSecurityIcons + +- type: entity + id: BaseBorgChassisSyndicate + parent: BaseBorgChassis + abstract: true + components: + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 200 + behaviors: + - !type:PlaySoundBehavior + sound: /Audio/Effects/metalbreak.ogg + - !type:EmptyContainersBehaviour + containers: + - borg_brain + - borg_module + - !type:DoActsBehavior + acts: [ "Destruction" ] + - type: NpcFactionMember + factions: + - Syndicate + - type: Access + - type: SiliconLawProvider + laws: SyndicateStatic + - type: IntrinsicRadioTransmitter + channels: + - Binary + - Syndicate + - type: ActiveRadio + channels: + - Syndicate + - type: NoSlip + - type: MovementAlwaysTouching diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml index 4a45717b79..166b5bd48c 100644 --- a/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml +++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml @@ -263,3 +263,90 @@ access: [["Service"], ["Command"], ["Research"]] - type: Inventory templateId: borgTall + +- type: entity + id: BorgChassisSyndicateAssault + parent: BaseBorgChassisSyndicate + name: Syndicate assault cyborg + description: A lean, mean killing machine with access to a varity of deadly modules. + components: + - type: Sprite + layers: + - state: synd_sec + - 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: + tags: + - BorgModuleGeneric + - BorgModuleSyndicate + - BorgModuleSyndicateAssault + hasMindState: synd_sec_e + noMindState: synd_sec + - type: Construction + node: syndicateassault + +- type: entity + id: BorgChassisSyndicateMedical + parent: BaseBorgChassisSyndicate + name: Syndicate medical cyborg + description: A combat medical cyborg. Has limited offensive potential, but makes more than up for it with its support capabilities. + components: + - type: Sprite + layers: + - state: synd_medical + - state: synd_medical_e + map: ["enum.BorgVisualLayers.Light"] + shader: unshaded + visible: false + - state: synd_medical_l + shader: unshaded + map: ["light"] + visible: false + - type: BorgChassis + maxModules: 3 + moduleWhitelist: + tags: + - BorgModuleGeneric + - BorgModuleMedical + - BorgModuleSyndicate + hasMindState: synd_medical_e + noMindState: synd_medical + - type: Construction + node: syndicatemedical + +- type: entity + id: BorgChassisSyndicateSaboteur + parent: BaseBorgChassisSyndicate + name: Syndicate saboteur cyborg + description: A streamlined engineering cyborg, equipped with covert modules. Its chameleon projector lets it disguise itself as a Nanotrasen cyborg. + components: + - type: Sprite + layers: + - state: synd_engi + - state: synd_engi_e + map: ["enum.BorgVisualLayers.Light"] + shader: unshaded + visible: false + - state: synd_engi_l + shader: unshaded + map: ["light"] + visible: false + - type: BorgChassis + maxModules: 3 + moduleWhitelist: + tags: + - BorgModuleGeneric + - BorgModuleEngineering + - BorgModuleSyndicate + hasMindState: synd_engi_e + noMindState: synd_engi + - type: Construction + node: syndicatesaboteur diff --git a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml index 91255ac7b3..aedc1eaab8 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml @@ -273,3 +273,23 @@ cell_slot: name: power-cell-slot-component-slot-name-default startingItem: PowerCellMedium + +- type: entity + id: PlayerBorgSyndicateAssaultBattery + parent: BorgChassisSyndicateAssault + suffix: Battery, Module, Operative + components: + - type: NukeOperative + - type: ContainerFill + containers: + borg_brain: + - PositronicBrain + borg_module: + - BorgModuleOperative + - BorgModuleL6C + - BorgModuleEsword + - type: ItemSlots + slots: + cell_slot: + name: power-cell-slot-component-slot-name-default + startingItem: PowerCellHyper diff --git a/Resources/Prototypes/Entities/Objects/Devices/Syndicate_Gadgets/reinforcement_teleporter.yml b/Resources/Prototypes/Entities/Objects/Devices/Syndicate_Gadgets/reinforcement_teleporter.yml index d603f40d78..c791580ad3 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/Syndicate_Gadgets/reinforcement_teleporter.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/Syndicate_Gadgets/reinforcement_teleporter.yml @@ -39,3 +39,17 @@ rules: ghost-role-information-syndicate-monkey-reinforcement-rules - type: GhostRoleMobSpawner prototype: MobMonkeySyndicateAgent + +- type: entity + parent: ReinforcementRadioSyndicate + id: ReinforcementRadioSyndicateCyborgAssault # Reinforcement radio exclusive to nukeops uplink + name: syndicate assault cyborg reinforcement radio + description: Call in a well armed assault cyborg, instantly! + suffix: NukeOps + components: + - type: GhostRole + name: Syndicate Assault Cyborg + description: Nuclear operatives needs reinforcements. You, a cold silicon killing machine, will help them. + rules: Normal syndicate antagonist rules apply. Work with whoever called you in, and don't harm them. + - type: GhostRoleMobSpawner + prototype: PlayerBorgSyndicateAssaultBattery diff --git a/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml b/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml index 38fd1e3041..900a79c8a6 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml @@ -82,6 +82,24 @@ tags: - BorgModuleService +- type: entity + id: BaseBorgModuleSyndicate + parent: BaseBorgModule + abstract: true + components: + - type: Tag + tags: + - BorgModuleSyndicate + +- type: entity + id: BaseBorgModuleSyndicateAssault + parent: BaseBorgModule + abstract: true + components: + - type: Tag + tags: + - BorgModuleSyndicateAssault + # generic modules - type: entity id: BorgModuleCable @@ -494,3 +512,50 @@ items: - WeaponAdvancedLaser - Machete + +- type: entity + id: BorgModuleOperative + parent: [ BaseBorgModuleSyndicate, BaseProviderBorgModule ] + name: Operative cyborg module + description: A module that comes with a crowbar, a Cobra pistol, an Emag and a pinpointer. + components: + - type: Sprite + layers: + - state: syndicate + - state: icon-tools + - type: ItemBorgModule + items: + - Crowbar + - WeaponPistolCobra + - Emag + - PinpointerNuclear + +- type: entity + id: BorgModuleEsword + parent: [ BaseBorgModuleSyndicate, BaseProviderBorgModule ] + name: Energy sword cyborg module + description: A module that comes with an energy sword. + components: + - type: Sprite + layers: + - state: syndicate + - state: icon-tools + - type: ItemBorgModule + items: + - EnergySword + - PinpointerNuclear + +- type: entity + id: BorgModuleL6C + parent: [ BaseBorgModuleSyndicateAssault, BaseProviderBorgModule ] + name: L6C ROW cyborg module + description: A module that comes with a L6C. + components: + - type: Sprite + layers: + - state: syndicate + - state: icon-tools + - type: ItemBorgModule + items: + - WeaponLightMachineGunL6C + - PinpointerNuclear diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/LMGs/lmgs.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/LMGs/lmgs.yml index 729f06389f..6bf4eb3db2 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/LMGs/lmgs.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/LMGs/lmgs.yml @@ -79,3 +79,39 @@ steps: 4 zeroVisible: true - type: Appearance + +- type: entity + name: L6C ROW + id: WeaponLightMachineGunL6C + parent: BaseItem + description: A L6 SAW modified for cyborg use. Feeds .30 rifle ammo from an internal 100 round magazine. + components: + - type: Gun + minAngle: 4 + maxAngle: 25 + angleIncrease: 4 + angleDecay: 16 + fireRate: 8 + selectedMode: FullAuto + availableModes: + - FullAuto + soundGunshot: + path: /Audio/Weapons/Guns/Gunshots/lmg.ogg + soundEmpty: + path: /Audio/Weapons/Guns/Empty/lmg_empty.ogg + - type: Sprite + sprite: Objects/Weapons/Guns/LMGs/l6.rsi + layers: + - state: base + map: [ "enum.GunVisualLayers.Base" ] + - state: mag-3 + map: [ "enum.GunVisualLayers.Mag" ] + - type: Item + size: Huge + - type: ContainerContainer + containers: + ballistic-ammo: !type:Container + - type: BallisticAmmoProvider + proto: CartridgeLightRifle + capacity: 100 + - type: AmmoCounter diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/machines/cyborg.yml b/Resources/Prototypes/Recipes/Construction/Graphs/machines/cyborg.yml index 6f65937c96..0f012cefc9 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/machines/cyborg.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/machines/cyborg.yml @@ -196,3 +196,12 @@ - node: service entity: BorgChassisService + + - node: syndicateassault + entity: BorgChassisSyndicateAssault + + - node: syndicatemedical + entity: BorgChassisSyndicateMedical + + - node: syndicatesaboteur + entity: BorgChassisSyndicateSaboteur diff --git a/Resources/Prototypes/tags.yml b/Resources/Prototypes/tags.yml index bbfd7e3839..abc5cfa483 100644 --- a/Resources/Prototypes/tags.yml +++ b/Resources/Prototypes/tags.yml @@ -166,6 +166,12 @@ - type: Tag id: BorgModuleService +- type: Tag + id: BorgModuleSyndicate + +- type: Tag + id: BorgModuleSyndicateAssault + - type: Tag id: BorgServiceHead diff --git a/Resources/Textures/Mobs/Silicon/chassis.rsi/meta.json b/Resources/Textures/Mobs/Silicon/chassis.rsi/meta.json index 6f31a4f5d5..68fbf1985e 100644 --- a/Resources/Textures/Mobs/Silicon/chassis.rsi/meta.json +++ b/Resources/Textures/Mobs/Silicon/chassis.rsi/meta.json @@ -234,6 +234,87 @@ { "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 } + ] } diff --git a/Resources/Textures/Mobs/Silicon/chassis.rsi/synd_engi.png b/Resources/Textures/Mobs/Silicon/chassis.rsi/synd_engi.png new file mode 100644 index 0000000000..961f017230 Binary files /dev/null and b/Resources/Textures/Mobs/Silicon/chassis.rsi/synd_engi.png differ diff --git a/Resources/Textures/Mobs/Silicon/chassis.rsi/synd_engi_e.png b/Resources/Textures/Mobs/Silicon/chassis.rsi/synd_engi_e.png new file mode 100644 index 0000000000..1c062b2489 Binary files /dev/null and b/Resources/Textures/Mobs/Silicon/chassis.rsi/synd_engi_e.png differ diff --git a/Resources/Textures/Mobs/Silicon/chassis.rsi/synd_engi_l.png b/Resources/Textures/Mobs/Silicon/chassis.rsi/synd_engi_l.png new file mode 100644 index 0000000000..6061ca87a0 Binary files /dev/null and b/Resources/Textures/Mobs/Silicon/chassis.rsi/synd_engi_l.png differ diff --git a/Resources/Textures/Mobs/Silicon/chassis.rsi/synd_medical.png b/Resources/Textures/Mobs/Silicon/chassis.rsi/synd_medical.png new file mode 100644 index 0000000000..9f6a546a69 Binary files /dev/null and b/Resources/Textures/Mobs/Silicon/chassis.rsi/synd_medical.png differ diff --git a/Resources/Textures/Mobs/Silicon/chassis.rsi/synd_medical_e.png b/Resources/Textures/Mobs/Silicon/chassis.rsi/synd_medical_e.png new file mode 100644 index 0000000000..3e84a86ff6 Binary files /dev/null and b/Resources/Textures/Mobs/Silicon/chassis.rsi/synd_medical_e.png differ diff --git a/Resources/Textures/Mobs/Silicon/chassis.rsi/synd_medical_l.png b/Resources/Textures/Mobs/Silicon/chassis.rsi/synd_medical_l.png new file mode 100644 index 0000000000..3e84a86ff6 Binary files /dev/null and b/Resources/Textures/Mobs/Silicon/chassis.rsi/synd_medical_l.png differ diff --git a/Resources/Textures/Mobs/Silicon/chassis.rsi/synd_sec.png b/Resources/Textures/Mobs/Silicon/chassis.rsi/synd_sec.png new file mode 100644 index 0000000000..bfff265487 Binary files /dev/null and b/Resources/Textures/Mobs/Silicon/chassis.rsi/synd_sec.png differ diff --git a/Resources/Textures/Mobs/Silicon/chassis.rsi/synd_sec_e.png b/Resources/Textures/Mobs/Silicon/chassis.rsi/synd_sec_e.png new file mode 100644 index 0000000000..d881e3d2c9 Binary files /dev/null and b/Resources/Textures/Mobs/Silicon/chassis.rsi/synd_sec_e.png differ diff --git a/Resources/Textures/Mobs/Silicon/chassis.rsi/synd_sec_l.png b/Resources/Textures/Mobs/Silicon/chassis.rsi/synd_sec_l.png new file mode 100644 index 0000000000..3168a0ac72 Binary files /dev/null and b/Resources/Textures/Mobs/Silicon/chassis.rsi/synd_sec_l.png differ