]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Adds syndicate cyborgs. Adds Assault cyborgs to nukie uplink (#19733)
authorNaive817 <lyx2020@sjtu.edu.cn>
Sun, 7 Jan 2024 22:12:08 +0000 (06:12 +0800)
committerGitHub <noreply@github.com>
Sun, 7 Jan 2024 22:12:08 +0000 (01:12 +0300)
* added syndicate cyborgs

* add assault cyborg to uplink

* updated tags.yml

* changed syndicate cyborgs' hitpoints to 200
fixed NPCfaction

* added noslip and MovementAlwaysTouching component to syndicate cyborgs akin to carps, as a stop gap for no magboots or jetpack. Access component fix.

* fixes nodes

* fixes construction

* fixed typo and intergrationtests

* adds back ammocounter for l6c

* fix lawset

* fix item size

* nono, fix again

---------

Co-authored-by: Ed <96445749+TheShuEd@users.noreply.github.com>
20 files changed:
Resources/Locale/en-US/store/uplink-catalog.ftl
Resources/Prototypes/Catalog/uplink_catalog.yml
Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml
Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml
Resources/Prototypes/Entities/Mobs/Player/silicon.yml
Resources/Prototypes/Entities/Objects/Devices/Syndicate_Gadgets/reinforcement_teleporter.yml
Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml
Resources/Prototypes/Entities/Objects/Weapons/Guns/LMGs/lmgs.yml
Resources/Prototypes/Recipes/Construction/Graphs/machines/cyborg.yml
Resources/Prototypes/tags.yml
Resources/Textures/Mobs/Silicon/chassis.rsi/meta.json
Resources/Textures/Mobs/Silicon/chassis.rsi/synd_engi.png [new file with mode: 0644]
Resources/Textures/Mobs/Silicon/chassis.rsi/synd_engi_e.png [new file with mode: 0644]
Resources/Textures/Mobs/Silicon/chassis.rsi/synd_engi_l.png [new file with mode: 0644]
Resources/Textures/Mobs/Silicon/chassis.rsi/synd_medical.png [new file with mode: 0644]
Resources/Textures/Mobs/Silicon/chassis.rsi/synd_medical_e.png [new file with mode: 0644]
Resources/Textures/Mobs/Silicon/chassis.rsi/synd_medical_l.png [new file with mode: 0644]
Resources/Textures/Mobs/Silicon/chassis.rsi/synd_sec.png [new file with mode: 0644]
Resources/Textures/Mobs/Silicon/chassis.rsi/synd_sec_e.png [new file with mode: 0644]
Resources/Textures/Mobs/Silicon/chassis.rsi/synd_sec_l.png [new file with mode: 0644]

index fe21340882f64db4e48e20037a78fc698e4fb7a1..5dea2f3a515cac21e129fd46b96ccf7e1f12e965 100644 (file)
@@ -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!
 
index dfad53c2110005d2b912c7c205d0dbe690f6e165..f6646e0bd48fe54a6df77c0a6351a80e06681f22 100644 (file)
         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
index 0bffa07dc02795b04d591ed5eedacc00c3b1c3d2..67323b464030789558c559e8e3e5ad014e1721a8 100644 (file)
   - 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
index 4a45717b79115b4ad55d6323c735f37f2dcdc879..166b5bd48c55082251199add255cd6dbe74af2c4 100644 (file)
     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
index 91255ac7b3bdb37e3d2ae9109a807c49c7252edd..aedc1eaab882f1a19ddbc016aa93d7649f5f71c7 100644 (file)
       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
index d603f40d7896aa4cb7e22b9d19621cef5b6c71c0..c791580ad3d1205cebda83961900751102fef170 100644 (file)
     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
index 38fd1e30419ae4105939afd71756739551b91234..900a79c8a642e6bb80ee76bbb38af99181dac26a 100644 (file)
     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
     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
index 729f06389fba699592838b8e4339250be2bff632..6bf4eb3db22e3ae545bd9cd21dd1524db2bc8df7 100644 (file)
     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
index 6f65937c96113f18884c8118ff04658e4b3eecd8..0f012cefc98e5feb8f590feea7341083b3a60b01 100644 (file)
 
   - node: service
     entity: BorgChassisService
+
+  - node: syndicateassault
+    entity: BorgChassisSyndicateAssault
+
+  - node: syndicatemedical
+    entity: BorgChassisSyndicateMedical
+
+  - node: syndicatesaboteur
+    entity: BorgChassisSyndicateSaboteur
index bbfd7e383980c305ba6f0a51b1c0acea527f6acc..abc5cfa4836a0ce8f3bd70901fe9ac5fc221c6f3 100644 (file)
 - type: Tag
   id: BorgModuleService
 
+- type: Tag
+  id: BorgModuleSyndicate
+
+- type: Tag
+  id: BorgModuleSyndicateAssault
+
 - type: Tag
   id: BorgServiceHead
 
index 6f31a4f5d51aa53d7413daac29503bfdd9444277..68fbf1985e7fa5cd1820db9f060b044009efc14c 100644 (file)
     {
       "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 (file)
index 0000000..961f017
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 (file)
index 0000000..1c062b2
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 (file)
index 0000000..6061ca8
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 (file)
index 0000000..9f6a546
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 (file)
index 0000000..3e84a86
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 (file)
index 0000000..3e84a86
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 (file)
index 0000000..bfff265
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 (file)
index 0000000..d881e3d
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 (file)
index 0000000..3168a0a
Binary files /dev/null and b/Resources/Textures/Mobs/Silicon/chassis.rsi/synd_sec_l.png differ