diff --git a/Resources/Locale/en-US/deltav/ghost/roles/ghost-role-component.ftl b/Resources/Locale/en-US/deltav/ghost/roles/ghost-role-component.ftl new file mode 100644 index 00000000000..611a3fd6516 --- /dev/null +++ b/Resources/Locale/en-US/deltav/ghost/roles/ghost-role-component.ftl @@ -0,0 +1,2 @@ +ghost-role-information-nukie-mouse-name = Nuclear Operative Mouse +ghost-role-information-nukie-mouse-description = A Nuclear Operative reinforcement for the Syndicate. diff --git a/Resources/Locale/en-US/deltav/interaction/interaction-popup-component.ftl b/Resources/Locale/en-US/deltav/interaction/interaction-popup-component.ftl new file mode 100644 index 00000000000..bab4aae67c7 --- /dev/null +++ b/Resources/Locale/en-US/deltav/interaction/interaction-popup-component.ftl @@ -0,0 +1,6 @@ +### Interaction Popup component + +## Petting animals + +petting-success-nukie-mouse = You pet {THE($target)} on {POSS-ADJ($target)} little blood-red syndicate mouse head. +petting-failure-nukie-mouse = You reach out to pet {THE($target)}, but {SUBJECT($target)} attempts to slice your finger with a mouse-sized e-dagger and only your quick reflexes save you from an almost fatal injury. diff --git a/Resources/Locale/en-US/deltav/store/uplink-catalog.ftl b/Resources/Locale/en-US/deltav/store/uplink-catalog.ftl index 448ca88151d..6f8ebe6c34f 100644 --- a/Resources/Locale/en-US/deltav/store/uplink-catalog.ftl +++ b/Resources/Locale/en-US/deltav/store/uplink-catalog.ftl @@ -1,2 +1,7 @@ +# Utility +uplink-reinforcement-radio-nukie-mouse-name = Mouse Operative Reinforcement Teleporter +uplink-reinforcement-radio-nukie-mouse-desc = Calls in a specially trained mouse operative to assist you. + +# Implants uplink-bionic-syrinx-implanter-name = Bionic Syrinx Implanter -uplink-bionic-syrinx-implanter-desc = An implant that enhances a harpy's natural talent for mimicry to let you adjust your voice to whoever you can think of. +uplink-bionic-syrinx-implanter-desc = An implant that enhances a harpy's natural talent for mimicry to let you adjust your voice to whoever you can think of. \ No newline at end of file diff --git a/Resources/Prototypes/DeltaV/Catalog/uplink_catalog.yml b/Resources/Prototypes/DeltaV/Catalog/uplink_catalog.yml index 8122c6165b2..a246301ab29 100644 --- a/Resources/Prototypes/DeltaV/Catalog/uplink_catalog.yml +++ b/Resources/Prototypes/DeltaV/Catalog/uplink_catalog.yml @@ -1,3 +1,14 @@ +- type: listing + id: Mouse Operative Reinforcement + name: uplink-reinforcement-radio-nukie-mouse-name + description: uplink-reinforcement-radio-nukie-mouse-desc + productEntity: ReinforcementRadioSyndicateNukieMouse + icon: { sprite: DeltaV/Objects/Devices/communication.rsi, state: cheese-radio } + cost: + Telecrystal: 3 + categories: + - UplinkUtility + #- type: listing # id: UplinkCyborgBeaconSyndicate # name: uplink-borg-beacon-name diff --git a/Resources/Prototypes/DeltaV/Datasets/Names/mouse_death_commando.yml b/Resources/Prototypes/DeltaV/Datasets/Names/mouse_death_commando.yml new file mode 100644 index 00000000000..3c76b4d23eb --- /dev/null +++ b/Resources/Prototypes/DeltaV/Datasets/Names/mouse_death_commando.yml @@ -0,0 +1,43 @@ +- type: dataset + id: names_mouse_death_commando + values: + - Operator Blue Cheese + - Operator AMERICAN CHEESE + - Operator Fromage + - Operator Asiago + - Operator Brie + - Operator Camembert + - Operator Cheddar + - Operator Cotija + - Operator Curd + - Operator Chevré + - Operator Halloumi + - Operator Cottage Cheese + - Operator Cream Cheese + - Operator Swiss Cheese + - Operator Wensleydale + - Operator Rocamadour + - Operator Feta + - Operator Mozzarella + - Operator Gorgonzola + - Operator Grilled Cheese + - Operator Gouda + - Operator Gruyere + - Operator Comté Cheese + - Operator Jarlsberg + - Operator Reblochon + - Operator Raclette + - Operator Tomme de Bruyère + - Operator Goat Cheese + - Operator Manchego + - Operator Ewenique + - Operator Monterey Jack + - Operator Muenster + - Operator Parmesan + - Operator Pepper Jack + - Operator Provolone + - Operator String Cheese + - Operator La Vache Qui Rit + - Operator Mascarpone + - Operator Ricotta + - Operator Vacherin diff --git a/Resources/Prototypes/DeltaV/Entities/Mobs/NPCs/nukiemouse.yml b/Resources/Prototypes/DeltaV/Entities/Mobs/NPCs/nukiemouse.yml new file mode 100644 index 00000000000..52f18d08131 --- /dev/null +++ b/Resources/Prototypes/DeltaV/Entities/Mobs/NPCs/nukiemouse.yml @@ -0,0 +1,164 @@ +- type: entity + name: nuclear operative mouse + parent: [ SimpleMobBase, MobCombat ] + id: MobNukieMouse + description: A Nuclear Operative... MOUSE?! + suffix: syndicate + components: + - type: GhostRole + makeSentient: true + allowSpeech: true + allowMovement: true + name: ghost-role-information-nukie-mouse-name + description: ghost-role-information-nukie-mouse-description + - type: GhostTakeoverAvailable + - type: RandomMetadata + nameSegments: [names_mouse_death_commando] + - type: NpcFactionMember + factions: + - Syndicate + - type: Speech + speechVerb: SmallMob + speechSounds: Squeak + - type: PointLight + radius: 1.5 + energy: 2.3 + offset: 0, -1 + color: green + - type: Sprite + drawdepth: SmallMobs + sprite: DeltaV/Mobs/Animals/nukiemouse.rsi + layers: + - map: ["enum.DamageStateVisualLayers.Base"] + state: mouse + - type: Physics + bodyType: KinematicController + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeCircle + radius: 0.2 + density: 30 #Bulky by mouse standards... + mask: + - SmallMobMask + layer: + - SmallMobLayer + - type: MobState + - type: Deathgasp + - type: MobStateActions + actions: + Critical: + - ActionCritSuccumb + - ActionCritFakeDeath + - ActionCritLastWords + - type: MobThresholds + thresholds: + 0: Alive + 40: Critical + 60: Dead + - type: MovementSpeedModifier + baseWalkSpeed : 3 + baseSprintSpeed : 4.9 + - type: Reactive + groups: + Flammable: [Touch] + Extinguish: [Touch] + - type: InventorySlots + - type: UserInterface + interfaces: + - key: enum.StrippingUiKey.Key + type: StrippableBoundUserInterface + - type: DamageStateVisuals + states: + Alive: + Base: mouse + Critical: + Base: dead + Dead: + Base: splat + - type: Food + - type: Hunger + baseDecayRate: 0.1 + - type: Extractable + grindableSolutionName: food + - type: SolutionContainerManager + solutions: + food: + reagents: + - ReagentId: Nutriment + Quantity: 10 + - ReagentId: Blood + Quantity: 55 + - ReagentId: Fat + Quantity: 5 + - type: Butcherable + spawned: + - id: FoodMeat + amount: 1 + - type: ReplacementAccent + accent: mouse + - type: Tag + tags: + - VimPilot + - Trash + - Mouse + - Meat + - FootstepSound + - Radio + - type: NoSlip + - type: Respirator #It just works? + minSaturation: 5.0 + - type: Temperature + heatDamageThreshold: 423 + coldDamageThreshold: 0 + - type: PressureImmunity + - type: Insulated + - type: Barotrauma + damage: + types: + Blunt: 0.1 + - type: Vocal + sounds: + Male: Mouse + Female: Mouse + Unsexed: Mouse + wilhelmProbability: 0.01 + - type: CombatMode + - type: MeleeWeapon + soundHit: + path: /Audio/Effects/bite.ogg + angle: 0 + animation: WeaponArcBite + damage: + types: + Slash: 5 + Piercing: 3 + Structural: 1.5 + - type: Body + prototype: Rat + requiredLegs: 1 # TODO: More than 1 leg + - type: Bloodstream + bloodMaxVolume: 60 + - type: CanEscapeInventory + BaseResistTime: 3 + - type: MobPrice + price: 250 # Their suits, while tiny, go for quite a bit on the market + - type: IntrinsicRadioReceiver + - type: IntrinsicRadioTransmitter + channels: + - Syndicate + - type: ActiveRadio + channels: + - Syndicate + # make the player a traitor once its taken + - type: AutoTraitor + giveUplink: false + giveObjectives: false + - type: InteractionPopup + successChance: 0.6 + interactSuccessString: petting-success-nukie-mouse + interactFailureString: petting-failure-nukie-mouse + interactSuccessSpawn: EffectHearts + interactSuccessSound: + path: /Audio/Animals/mouse_squeak.ogg diff --git a/Resources/Prototypes/DeltaV/Entities/Objects/Devices/Syndicate_Gadgets/reinforcement_teleporter.yml b/Resources/Prototypes/DeltaV/Entities/Objects/Devices/Syndicate_Gadgets/reinforcement_teleporter.yml new file mode 100644 index 00000000000..6277b4c894a --- /dev/null +++ b/Resources/Prototypes/DeltaV/Entities/Objects/Devices/Syndicate_Gadgets/reinforcement_teleporter.yml @@ -0,0 +1,21 @@ +- type: entity + parent: ReinforcementRadioSyndicate + id: ReinforcementRadioSyndicateNukieMouse + name: suspicious moldy cheese + description: Moldy cheese with a little worm sticking out of it and a... blinking antenna? Might attract an odd mouse. + components: + - type: Sprite + sprite: DeltaV/Objects/Devices/communication.rsi + layers: + - state: cheese-radio + - type: GhostRole + name: Nuclear Mouse Operator Reinforcement + description: Someone needs reinforcements. You, a trained mouse, will help them. + rules: Normal syndicate antagonist rules apply. Work with whoever called you in, and don't harm them. + - type: GhostRoleMobSpawner + prototype: MobNukieMouse + - type: EmitSoundOnUse + sound: /Audio/Animals/mouse_squeak.ogg + - type: ItemCooldown + - type: UseDelay + delay: 300 diff --git a/Resources/Textures/DeltaV/Mobs/Animals/nukiemouse.rsi/dead.png b/Resources/Textures/DeltaV/Mobs/Animals/nukiemouse.rsi/dead.png new file mode 100644 index 00000000000..5601342ebd0 Binary files /dev/null and b/Resources/Textures/DeltaV/Mobs/Animals/nukiemouse.rsi/dead.png differ diff --git a/Resources/Textures/DeltaV/Mobs/Animals/nukiemouse.rsi/equipped-HELMET.png b/Resources/Textures/DeltaV/Mobs/Animals/nukiemouse.rsi/equipped-HELMET.png new file mode 100644 index 00000000000..24821ab68b6 Binary files /dev/null and b/Resources/Textures/DeltaV/Mobs/Animals/nukiemouse.rsi/equipped-HELMET.png differ diff --git a/Resources/Textures/DeltaV/Mobs/Animals/nukiemouse.rsi/icon.png b/Resources/Textures/DeltaV/Mobs/Animals/nukiemouse.rsi/icon.png new file mode 100644 index 00000000000..087206070ab Binary files /dev/null and b/Resources/Textures/DeltaV/Mobs/Animals/nukiemouse.rsi/icon.png differ diff --git a/Resources/Textures/DeltaV/Mobs/Animals/nukiemouse.rsi/inhand-left.png b/Resources/Textures/DeltaV/Mobs/Animals/nukiemouse.rsi/inhand-left.png new file mode 100644 index 00000000000..786ad87f8f9 Binary files /dev/null and b/Resources/Textures/DeltaV/Mobs/Animals/nukiemouse.rsi/inhand-left.png differ diff --git a/Resources/Textures/DeltaV/Mobs/Animals/nukiemouse.rsi/inhand-right.png b/Resources/Textures/DeltaV/Mobs/Animals/nukiemouse.rsi/inhand-right.png new file mode 100644 index 00000000000..650f515aa89 Binary files /dev/null and b/Resources/Textures/DeltaV/Mobs/Animals/nukiemouse.rsi/inhand-right.png differ diff --git a/Resources/Textures/DeltaV/Mobs/Animals/nukiemouse.rsi/meta.json b/Resources/Textures/DeltaV/Mobs/Animals/nukiemouse.rsi/meta.json new file mode 100644 index 00000000000..858fdad09e4 --- /dev/null +++ b/Resources/Textures/DeltaV/Mobs/Animals/nukiemouse.rsi/meta.json @@ -0,0 +1,58 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from /vg/station https://github.com/vgstation-coders/vgstation13/blob/Bleeding-Edge/icons/mob/animal.dmi Edited variations by @ps3moira", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "mouse", + "directions": 4, + "delays": [ + [ + 0.2, + 0.2, + 0.2 + ], + [ + 0.2, + 0.2, + 0.2 + ], + [ + 0.2, + 0.2, + 0.2 + ], + [ + 0.2, + 0.2, + 0.2 + ] + ] + }, + { + "name": "dead" + }, + { + "name": "splat" + }, + { + "name": "equipped-HELMET", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/DeltaV/Mobs/Animals/nukiemouse.rsi/mouse.png b/Resources/Textures/DeltaV/Mobs/Animals/nukiemouse.rsi/mouse.png new file mode 100644 index 00000000000..338739ee2c9 Binary files /dev/null and b/Resources/Textures/DeltaV/Mobs/Animals/nukiemouse.rsi/mouse.png differ diff --git a/Resources/Textures/DeltaV/Mobs/Animals/nukiemouse.rsi/splat.png b/Resources/Textures/DeltaV/Mobs/Animals/nukiemouse.rsi/splat.png new file mode 100644 index 00000000000..b7ca9542fb5 Binary files /dev/null and b/Resources/Textures/DeltaV/Mobs/Animals/nukiemouse.rsi/splat.png differ diff --git a/Resources/Textures/DeltaV/Objects/Devices/communication.rsi/cheese-radio.png b/Resources/Textures/DeltaV/Objects/Devices/communication.rsi/cheese-radio.png new file mode 100644 index 00000000000..3aadbea78c1 Binary files /dev/null and b/Resources/Textures/DeltaV/Objects/Devices/communication.rsi/cheese-radio.png differ diff --git a/Resources/Textures/DeltaV/Objects/Devices/communication.rsi/meta.json b/Resources/Textures/DeltaV/Objects/Devices/communication.rsi/meta.json new file mode 100644 index 00000000000..a31b06ae560 --- /dev/null +++ b/Resources/Textures/DeltaV/Objects/Devices/communication.rsi/meta.json @@ -0,0 +1,15 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Inspired by the cheese wedge sprite from tg station https://github.com/tgstation/tgstation/blob/master/icons/obj/food/food.dmi modified by @ps3moira", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "cheese-radio", + "delays": [[ 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8 ]] + } + ] +}