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 index a438a16e2f4..02124d4de1c 100644 --- a/Resources/Locale/en-US/deltav/ghost/roles/ghost-role-component.ftl +++ b/Resources/Locale/en-US/deltav/ghost/roles/ghost-role-component.ftl @@ -22,3 +22,7 @@ ghost-role-information-recruiter-rules = Set up shop in maints or use your ship as a portable hiring office! You are just a recruiter so do not act like a full-on antagonist, i.e. no killing people. + +ghost-role-information-silvia-name = Silvia +ghost-role-information-silvia-description = You are Silvia the space snake and the CMO's charming companion. +ghost-role-information-silvia-rules = Keep the medical team company and help out in emergencies with your omnizine venom. Stick close to the CMO in case they need emergency healing. diff --git a/Resources/Prototypes/DeltaV/Entities/Markers/Spawners/mobs.yml b/Resources/Prototypes/DeltaV/Entities/Markers/Spawners/mobs.yml index 6e60a440efb..73bb3ee485d 100644 --- a/Resources/Prototypes/DeltaV/Entities/Markers/Spawners/mobs.yml +++ b/Resources/Prototypes/DeltaV/Entities/Markers/Spawners/mobs.yml @@ -64,3 +64,17 @@ - type: ConditionalSpawner prototypes: - MobCarpLegal + +- type: entity + name: Silvia Spawner + id: SpawnMobCMOPetSilvia + parent: MarkerBase + components: + - type: Sprite + layers: + - state: green + - state: silvia + sprite: DeltaV/Mobs/Pets/silvia.rsi + - type: ConditionalSpawner + prototypes: + - MobCobraSilvia diff --git a/Resources/Prototypes/DeltaV/Entities/Mobs/NPCs/pets.yml b/Resources/Prototypes/DeltaV/Entities/Mobs/NPCs/pets.yml index 17c604196e8..fb2af980bd9 100644 --- a/Resources/Prototypes/DeltaV/Entities/Mobs/NPCs/pets.yml +++ b/Resources/Prototypes/DeltaV/Entities/Mobs/NPCs/pets.yml @@ -78,3 +78,130 @@ department: Justice time: 3600 # 1 hours - type: GhostTakeoverAvailable + +- type: entity + name: Silvia + id: MobCobraSilvia + parent: MobSpaceBasic + description: With needle-sharp fangs and an alluring gaze, will you let her bite you? + components: + - type: HTN + rootTask: + task: IdleCompound + - type: Sprite + drawdepth: Mobs + sprite: DeltaV/Mobs/Pets/silvia.rsi + layers: + - map: [ "enum.DamageStateVisualLayers.Base" ] + state: silvia + - map: [ "enum.DamageStateVisualLayers.BaseUnshaded" ] + state: glow + shader: unshaded + - type: FootstepModifier + footstepSoundCollection: + collection: FootstepSnake + - type: MobThresholds + thresholds: + 0: Alive + 125: Dead + - type: DamageStateVisuals + states: + Alive: + Base: silvia + BaseUnshaded: glow + Dead: + Base: dead_silvia + - type: Butcherable + spawned: + - id: FoodMeatSnakeSilvia + maxAmount: 3 + - id: ClothingShoesSnakeskinBoots #different version? wysi + amount: 1 + prob: 0.2 + - type: Bloodstream + bloodMaxVolume: 200 + bloodReagent: Cryoxadone + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeCircle + radius: 0.40 + density: 120 + mask: + - MobMask + layer: + - MobLayer + - type: MeleeWeapon + attackRate: 1.75 #faster attack rate to compensate for healing in self defense situations + hidden: true + soundHit: + path: /Audio/Effects/bite.ogg + angle: 0 + animation: WeaponArcBite + damage: + types: + Piercing: 6 #take dmg to heal dmg + - type: SolutionContainerManager + solutions: + melee: + maxVol: 30 + reagents: + - ReagentId: Omnizine + Quantity: 30 #5 bites to heal 90hp/1 min + - type: MeleeChemicalInjector + solution: melee + transferAmount: 6 #heals 24 burn/brute/air/toxin in 12seconds/minus 6 brute per bite + - type: SolutionRegeneration + solution: melee + duration: 30 #regen 1u every 30 seconds. 15 mins to full + generated: + reagents: + - ReagentId: Omnizine + Quantity: 1 + - type: ReplacementAccent + accent: xeno #Add cool snake accent later. wyci + - type: PointLight + radius: 1.1 + energy: 0.25 + color: "#00ff80" + - type: Stealth + enabledOnDeath: false + maxVisibility: 1.2 + - type: StealthOnMove + passiveVisibilityRate: -0.15 + movementVisibilityRate: 0.30 + - type: GhostRole + makeSentient: true + allowSpeech: true + allowMovement: true + name: ghost-role-information-silvia-name + description: ghost-role-information-silvia-description + rules: ghost-role-information-silvia-rules + requirements: #No raiders + - !type:DepartmentTimeRequirement + department: Medical + time: 14400 #4 hours + - type: GhostTakeoverAvailable + - type: InteractionPopup + successChance: 0.65 + interactSuccessString: petting-success-snake + interactFailureString: petting-failure-generic + interactSuccessSpawn: EffectHearts + interactSuccessSound: + path: /Audio/Animals/snake_hiss.ogg + - type: NpcFactionMember + factions: + - PetsNT + - type: Grammar + attributes: + proper: true + gender: female + - type: Tag + tags: + - CannotSuicide + - VimPilot + - DoorBumpOpener + - FootstepSound + - type: StealTarget + stealGroup: AnimalSilvia diff --git a/Resources/Prototypes/DeltaV/Entities/Objects/Consumable/Food/meat.yml b/Resources/Prototypes/DeltaV/Entities/Objects/Consumable/Food/meat.yml new file mode 100644 index 00000000000..b258b3779da --- /dev/null +++ b/Resources/Prototypes/DeltaV/Entities/Objects/Consumable/Food/meat.yml @@ -0,0 +1,12 @@ +- type: entity + parent: FoodMeatSnake + id: FoodMeatSnakeSilvia + components: + - type: SolutionContainerManager + solutions: + food: + reagents: + - ReagentId: UncookedAnimalProteins + Quantity: 8 + - ReagentId: Omnizine + Quantity: 8 diff --git a/Resources/Prototypes/DeltaV/Objectives/stealTargetGroups.yml b/Resources/Prototypes/DeltaV/Objectives/stealTargetGroups.yml index b3113308735..19fbcd25b22 100644 --- a/Resources/Prototypes/DeltaV/Objectives/stealTargetGroups.yml +++ b/Resources/Prototypes/DeltaV/Objectives/stealTargetGroups.yml @@ -26,4 +26,9 @@ sprite: DeltaV/Objects/Misc/stamps.rsi state: stamp-notary - +- type: stealTargetGroup + id: AnimalSilvia + name: Silvia + sprite: + sprite: DeltaV/Mobs/Pets/silvia.rsi + state: silvia diff --git a/Resources/Prototypes/DeltaV/Objectives/traitor.yml b/Resources/Prototypes/DeltaV/Objectives/traitor.yml index 932b0d64fc3..1d9f3c992be 100644 --- a/Resources/Prototypes/DeltaV/Objectives/traitor.yml +++ b/Resources/Prototypes/DeltaV/Objectives/traitor.yml @@ -41,4 +41,13 @@ stealGroup: RubberStampNotary owner: job-name-clerk - +- type: entity + abstract: true + parent: BaseTraitorStealObjective + id: SilviaStealObjective + components: + - type: NotJobRequirement + job: ChiefMedicalOfficer + - type: StealCondition + stealGroup: AnimalSilvia + owner: job-name-cmo diff --git a/Resources/Prototypes/Objectives/objectiveGroups.yml b/Resources/Prototypes/Objectives/objectiveGroups.yml index 309b087dfaf..8a86bee8d16 100644 --- a/Resources/Prototypes/Objectives/objectiveGroups.yml +++ b/Resources/Prototypes/Objectives/objectiveGroups.yml @@ -120,6 +120,7 @@ RenaultStealObjective: 1 ShivaStealObjective: 1 TropicoStealObjective: 1 + SilviaStealObjective: 1 #DeltaV - CMO steal objective, see Resources/Prototypes/DeltaV/Objectives/traitor.yml - type: weightedRandom id: ThiefObjectiveGroupEscape diff --git a/Resources/Textures/DeltaV/Mobs/Pets/silvia.rsi/dead_silvia.png b/Resources/Textures/DeltaV/Mobs/Pets/silvia.rsi/dead_silvia.png new file mode 100644 index 00000000000..9fa3c7b0b85 Binary files /dev/null and b/Resources/Textures/DeltaV/Mobs/Pets/silvia.rsi/dead_silvia.png differ diff --git a/Resources/Textures/DeltaV/Mobs/Pets/silvia.rsi/glow.png b/Resources/Textures/DeltaV/Mobs/Pets/silvia.rsi/glow.png new file mode 100644 index 00000000000..fa0fa2d059b Binary files /dev/null and b/Resources/Textures/DeltaV/Mobs/Pets/silvia.rsi/glow.png differ diff --git a/Resources/Textures/DeltaV/Mobs/Pets/silvia.rsi/meta.json b/Resources/Textures/DeltaV/Mobs/Pets/silvia.rsi/meta.json new file mode 100644 index 00000000000..c739aa365ec --- /dev/null +++ b/Resources/Textures/DeltaV/Mobs/Pets/silvia.rsi/meta.json @@ -0,0 +1,34 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Sprited by Nimfar11 (Github) for Space Station 14, re-shaded by Velcroboy for Delta V ", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "silvia", + "directions": 4, + "delays": [ + [0.3,0.2,0.2,0.4,0.2,0.2,0.3], + [0.3,0.2,0.2,0.4,0.2,0.2,0.3], + [0.3,0.2,0.2,0.4,0.2,0.2,0.3], + [0.3,0.2,0.2,0.4,0.2,0.2,0.3] + ] + }, + { + "name": "glow", + "directions": 4, + "delays": [ + [0.3,0.2,0.2,0.4,0.2,0.2,0.3], + [0.3,0.2,0.2,0.4,0.2,0.2,0.3], + [0.3,0.2,0.2,0.4,0.2,0.2,0.3], + [0.3,0.2,0.2,0.4,0.2,0.2,0.3] + ] + }, + { + "name": "dead_silvia" + } + ] +} diff --git a/Resources/Textures/DeltaV/Mobs/Pets/silvia.rsi/silvia.png b/Resources/Textures/DeltaV/Mobs/Pets/silvia.rsi/silvia.png new file mode 100644 index 00000000000..487a9941d56 Binary files /dev/null and b/Resources/Textures/DeltaV/Mobs/Pets/silvia.rsi/silvia.png differ