From 31282a3fc69fda666bed8c58c5ee84231a088426 Mon Sep 17 00:00:00 2001 From: Thom <119594676+ItsMeThom@users.noreply.github.com> Date: Thu, 31 Aug 2023 20:46:49 +0100 Subject: [PATCH] Adds Supplybot, a cargo-focused deliverybot with internal storage. (#19638) --- .../ghost/roles/ghost-role-component.ftl | 3 + .../Prototypes/Entities/Mobs/NPCs/silicon.yml | 64 ++++++++++++++++++ .../Crafting/Graphs/bots/supplybot.yml | 23 +++++++ .../Prototypes/Recipes/Crafting/bots.yml | 13 ++++ .../Mobs/Silicon/Bots/supplybot.rsi/meta.json | 41 +++++++++++ .../Silicon/Bots/supplybot.rsi/supplybot.png | Bin 0 -> 2970 bytes 6 files changed, 144 insertions(+) create mode 100644 Resources/Prototypes/Recipes/Crafting/Graphs/bots/supplybot.yml create mode 100644 Resources/Textures/Mobs/Silicon/Bots/supplybot.rsi/meta.json create mode 100644 Resources/Textures/Mobs/Silicon/Bots/supplybot.rsi/supplybot.png 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 b676bcf5cd..81604e8d6b 100644 --- a/Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl +++ b/Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl @@ -76,6 +76,9 @@ ghost-role-information-mimebot-description = A Mimebot, act like a mime but dont ghost-role-information-taxibot-name = TaxiBot ghost-role-information-taxibot-description = Drive the station crew to their destination. +ghost-role-information-supplybot-name = SupplyBot +ghost-role-information-supplybot-description = Deliver goods around the station. + ghost-role-information-space-bear-name = Space bear ghost-role-information-space-bear-description = You're a bear! Do bear things. diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml b/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml index 59b383de12..f9aa29e87d 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml @@ -168,6 +168,70 @@ - type: TypingIndicator proto: robot +- type: entity + parent: MobSiliconBase + id: MobSupplyBot + name: supplybot + description: Delivers cargo! + components: + - type: NoSlip + - type: Sprite + drawdepth: Mobs + sprite: Mobs/Silicon/Bots/supplybot.rsi + layers: + - state: supplybot + map: ["enum.VehicleVisualLayers.AutoAnimate"] + noRot: true + - type: IntrinsicRadioReceiver + - type: ActiveRadio + channels: + - Common + - type: GhostRole + makeSentient: true + name: ghost-role-information-supplybot-name + description: ghost-role-information-supplybot-description + - type: GhostTakeoverAvailable + - type: MovementSpeedModifier + weightlessModifier: 0 + acceleration: 2 + friction: 2.2 + frictionNoInput: 6.5 + baseWalkSpeed: 3 + baseSprintSpeed: 6 + - type: AmbientSound + sound: "/Audio/Effects/Vehicle/vehicleengineidle.ogg" + range: 10 + volume: -10 + enabled: true + - type: Construction + graph: TaxiBot + node: bot + - type: UnpoweredFlashlight + toggleAction: + name: action-name-toggle-light + description: action-description-toggle-light + icon: { sprite: Objects/Tools/flashlight.rsi, state: flashlight } + iconOn: Objects/Tools/flashlight.rsi/flashlight-on.png + event: !type:ToggleActionEvent + - type: PointLight + enabled: false + radius: 3.5 + softness: 2 + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true + - type: TypingIndicator + proto: robot + - type: Storage + capacity: 250 + - type: UserInterface + interfaces: + - key: enum.StorageUiKey.Key + type: StorageBoundUserInterface + - type: ContainerContainer + containers: + storagebase: !type:Container + ents: [] + - type: entity parent: MobSiliconBase id: MobHonkBot diff --git a/Resources/Prototypes/Recipes/Crafting/Graphs/bots/supplybot.yml b/Resources/Prototypes/Recipes/Crafting/Graphs/bots/supplybot.yml new file mode 100644 index 0000000000..efabb849bb --- /dev/null +++ b/Resources/Prototypes/Recipes/Crafting/Graphs/bots/supplybot.yml @@ -0,0 +1,23 @@ +- type: constructionGraph + id: SupplyBot + start: start + graph: + - node: start + edges: + - to: bot + steps: + - tag: ProximitySensor + icon: + sprite: Objects/Misc/proximity_sensor.rsi + state: icon + name: proximity sensor + - tag: BorgHead + icon: + sprite: Objects/Specific/Robotics/cyborg_parts.rsi + state: borg_head + name: borg head + doAfter: 1 + - material: Steel + amount: 10 + - node: bot + entity: MobSupplyBot diff --git a/Resources/Prototypes/Recipes/Crafting/bots.yml b/Resources/Prototypes/Recipes/Crafting/bots.yml index 8ba3242a5e..55b907a38e 100644 --- a/Resources/Prototypes/Recipes/Crafting/bots.yml +++ b/Resources/Prototypes/Recipes/Crafting/bots.yml @@ -37,6 +37,19 @@ sprite: Mobs/Silicon/Bots/taxibot.rsi state: taxibot +- type: construction + name: supplybot + id: supplybot + graph: SupplyBot + startNode: start + targetNode: bot + category: construction-category-utilities + objectType: Item + description: This bot can be loaded with cargo to make deliveries. + icon: + sprite: Mobs/Silicon/Bots/supplybot.rsi + state: supplybot + - type: construction name: jonkbot id: jonkbot diff --git a/Resources/Textures/Mobs/Silicon/Bots/supplybot.rsi/meta.json b/Resources/Textures/Mobs/Silicon/Bots/supplybot.rsi/meta.json new file mode 100644 index 0000000000..6bb3e77cfe --- /dev/null +++ b/Resources/Textures/Mobs/Silicon/Bots/supplybot.rsi/meta.json @@ -0,0 +1,41 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "supplybot drawn by netwy", + "states": [ + { + "name": "supplybot", + "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 + ] + ] + } + ] +} diff --git a/Resources/Textures/Mobs/Silicon/Bots/supplybot.rsi/supplybot.png b/Resources/Textures/Mobs/Silicon/Bots/supplybot.rsi/supplybot.png new file mode 100644 index 0000000000000000000000000000000000000000..cac976240bd3619027dfebb0597e3529251b5612 GIT binary patch literal 2970 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 AhX4Qo literal 0 HcmV?d00001