diff --git a/Resources/Locale/en-US/_Euphoria/ghost/roles/ghost-role-component.ftl b/Resources/Locale/en-US/_Euphoria/ghost/roles/ghost-role-component.ftl index 1cc85330dd8..d1e68322008 100644 --- a/Resources/Locale/en-US/_Euphoria/ghost/roles/ghost-role-component.ftl +++ b/Resources/Locale/en-US/_Euphoria/ghost/roles/ghost-role-component.ftl @@ -10,9 +10,18 @@ ghost-role-information-pet-description = You are someone's pet, you should obey ghost-role-information-pet-kinky-description = You are someone's very exotic pet, they most likely will be using you for something freaky, you have been warned. -ghost-role-information-cortical-borer-familiar-rules = +ghost-role-information-cortical-borer-familiar-rules = You are someone's trained pet, as such should assist them to the best of your ability. You are a creature that is traditionally a free agent, however in this case you are a familiar. You are to avoid creating eggs or get discovered by people other then your owner unless ordered. You may be subject to witnessing and/or participating NSFW scenes, to which if you do not consent, do not pick this role, in the NSFW scenario, your owner or yourself should make you known via LOOC means to avoid possible consent issues. + +ghost-role-information-friendly-beast-name = Beast Crewmate +ghost-role-information-friendly-beast-description = A beast visiting the station. Are they here for business, pleasure, or something else? Ask before taking. Renaming is also allowed. +ghost-role-information-friendly-beast-rules = [color=red]This is an admin spawned ghostrole. If this is not intended for you, please ask before taking it.[/color] + You are NOT an antagonist, and are at worst a harmless free agent. You are expected to mingle with the crew as you please. + Do not abuse your strength to powergame or validhunt. + You are allowed to join the station. + You have a backpack, headset, PDA, and two hand/pocket slots. + Listen to admins about any additional rules. diff --git a/Resources/Prototypes/_Euphoria/Body/Parts/fish.yml b/Resources/Prototypes/_Euphoria/Body/Parts/fish.yml new file mode 100644 index 00000000000..c673353f5ba --- /dev/null +++ b/Resources/Prototypes/_Euphoria/Body/Parts/fish.yml @@ -0,0 +1,35 @@ +- type: entity + id: LeftArmFish + name: "left fish arm" + parent: [PartReptilian, BaseLeftArm] + components: + - type: Sprite + sprite: Mobs/Species/Reptilian/parts.rsi + state: "l_arm" + +- type: entity + id: RightArmFish + name: "right fish arm" + parent: [PartReptilian, BaseRightArm] + components: + - type: Sprite + sprite: Mobs/Species/Reptilian/parts.rsi + state: "r_arm" + +- type: entity + id: LeftHandFish + name: "left fish hand" + parent: [PartReptilian, BaseLeftHand] + components: + - type: Sprite + sprite: Mobs/Species/Reptilian/parts.rsi + state: "l_hand" + +- type: entity + id: RightHandFish + name: "right fish hand" + parent: [PartReptilian, BaseRightHand] + components: + - type: Sprite + sprite: Mobs/Species/Reptilian/parts.rsi + state: "r_hand" diff --git a/Resources/Prototypes/_Euphoria/Body/Prototypes/carp.yml b/Resources/Prototypes/_Euphoria/Body/Prototypes/carp.yml new file mode 100644 index 00000000000..d3e9e19d3fa --- /dev/null +++ b/Resources/Prototypes/_Euphoria/Body/Prototypes/carp.yml @@ -0,0 +1,23 @@ +- type: body + id: CarpHands + name: carp + root: torso + slots: + torso: + part: TorsoAnimal + connections: + - right hand # Floof + - left hand # Floof + - tail + organs: + lungs: OrganSpaceAnimalLungs # Immunity to airloss + stomach: OrganAnimalStomach + liver: OrganAnimalLiver + heart: OrganSpaceAnimalHeart # Immunity to cold + kidneys: OrganAnimalKidneys + tail: + part: TailCarp + right hand: + part: RightHandFish + left hand: + part: LeftHandFish diff --git a/Resources/Prototypes/_Euphoria/Entities/Clothing/Ears/headsets.yml b/Resources/Prototypes/_Euphoria/Entities/Clothing/Ears/headsets.yml new file mode 100644 index 00000000000..843b21ffb58 --- /dev/null +++ b/Resources/Prototypes/_Euphoria/Entities/Clothing/Ears/headsets.yml @@ -0,0 +1,11 @@ +- type: entity + parent: ClothingHeadsetService + id: ClothingHeadsetBeast + name: beast headset + description: A headset on a necklace, for ease of use by the earless + components: + - type: Sprite + sprite: _Euphoria/Clothing/Ears/Headsets/beast.rsi + state: icon + - type: Clothing + sprite: _Euphoria/Clothing/Ears/Headsets/beast.rsi diff --git a/Resources/Prototypes/_Euphoria/Entities/Clothing/backpacks.yml b/Resources/Prototypes/_Euphoria/Entities/Clothing/backpacks.yml new file mode 100644 index 00000000000..11a0a30f8ae --- /dev/null +++ b/Resources/Prototypes/_Euphoria/Entities/Clothing/backpacks.yml @@ -0,0 +1,16 @@ +- type: entity + parent: ClothingBackpack + id: ClothingBackpackBeast + name: beast pack + description: A spacious bag extra space for a busy beast. + components: + - type: Sprite + sprite: _Euphoria/Clothing/Back/Duffels/beast.rsi + - type: Storage + grid: + - 0,0,8,5 + - type: ExplosionResistance + damageCoefficient: 0.1 + + + diff --git a/Resources/Prototypes/_Euphoria/Entities/Mobs/playerreadymobs.yml b/Resources/Prototypes/_Euphoria/Entities/Mobs/playerreadymobs.yml new file mode 100644 index 00000000000..7d333c7d865 --- /dev/null +++ b/Resources/Prototypes/_Euphoria/Entities/Mobs/playerreadymobs.yml @@ -0,0 +1,253 @@ +- type: entity + id: BasePlayableFeralMob + parent: StripableInventoryBase + suffix: Friendly + abstract: true + categories: [ HideSpawnMenu ] + components: + - type: Hands + - type: ComplexInteraction + - type: Inventory + templateId: nakedcrew + - type: MailReceiver + - type: NpcFactionMember + factions: + - NanoTrasen + - type: Puller + - type: Cuffable + - type: Prying + speedModifier: 0.8 + - type: Loadout + prototypes: + - FriendlyPlayerMob + - type: GhostRole + allowMovement: true + allowSpeech: true + makeSentient: true + name: ghost-role-information-friendly-beast-name + description: ghost-role-information-friendly-beast-description # DeltaV - Dragons despawn in 10 minutes + rules: ghost-role-information-friendly-beast-rules + mindRoles: + - MindRoleGhostRoleFreeAgentHarmless + raffle: + settings: short + - type: GhostTakeoverAvailable + +- type: entity + name: laser raptor + id: MobLaserRaptorAdmeme + parent: [BasePlayableFeralMob, MobLaserRaptor, StripableInventoryBase] + description: From the Viking age. Bizarrely civilized. + components: + - type: Body + prototype: LaserRaptor + - type: HTN + - type: MeleeWeapon + soundHit: + collection: AlienClaw + animation: WeaponArcClaw + attackRate: 1.25 + damage: + types: + Slash: 7.5 + range: 1.75 + - type: Puller + needsHands: false + - type: Stripping + - type: Sprite + drawdepth: Mobs + sprite: Mobs/Aliens/laser_raptor.rsi + layers: + - map: [ "enum.DamageStateVisualLayers.Base" ] + state: laser_raptor + - map: ["enum.HumanoidVisualLayers.Handcuffs"] + - type: DamageStateVisuals + states: + Alive: + Base: laser_raptor + Critical: + Base: laser_raptor_dead + Dead: + Base: laser_raptor_dead + - type: MobThresholds + thresholds: + 0: Alive + 100: Critical + 200: Dead + - type: MovementSpeedModifier + baseWalkSpeed: 2.5 + baseSprintSpeed: 6 + - type: BodyEmotes + soundsId: ReptilianBodyEmotes + - type: Tag + tags: + - CanPilot + - FootstepSound + - DoorBumpOpener + - UnathiEmotes + - type: InteractionPopup + successChance: 0.3 + interactSuccessString: petting-success-reptile + interactFailureString: petting-failure-generic + interactSuccessSound: + path: /Audio/Animals/lizard_happy.ogg + - type: Vocal + sounds: + Male: MaleReptilian + Female: FemaleReptilian + Unsexed: MaleReptilian + +- type: entity + name: space dragon + id: SpaceDragonAdmeme + parent: [BasePlayableFeralMob, MobDragonDungeon, StripableInventoryBase] + description: A flying leviathan, loosely related to space carps. Surprisingly civilized. + components: + - type: MobThresholds + thresholds: + 0: Alive + 400: Dead + - type: NpcFactionMember + factions: + - Dragon + - NanoTrasen + - type: NightVision + isActive: false + toggleAction: ToggleNightVision + color: "#808080" + activateSound: null + deactivateSound: null + - type: Puller + needsHands: false + - type: Stripping + - type: Sprite + sprite: Mobs/Aliens/Carps/dragon.rsi + noRot: true + layers: + - map: [ "enum.DamageStateVisualLayers.Base" ] + state: alive + - map: [ "enum.DamageStateVisualLayers.BaseUnshaded" ] + state: alive-unshaded + shader: unshaded + - map: ["enum.HumanoidVisualLayers.Handcuffs"] + - type: Tag + tags: + - CannotSuicide + - DoorBumpOpener + - Carp + - UnathiEmotes + - type: LanguageKnowledge + speaks: + - TauCetiBasic + - Kobold + understands: + - TauCetiBasic + - Kobold + - Sign + - type: Vocal + sounds: + Male: MaleReptilian + Female: FemaleReptilian + Unsexed: MaleReptilian + +- type: entity + name: space carp + id: MobCarpPlayable + parent: [BasePlayableFeralMob, BaseMobCarp, StripableInventoryBase] + components: + - type: Body + prototype: CarpHands + - type: MobThresholds + thresholds: + 0: Alive + 75: Dead + - type: MovementSpeedModifier + baseWalkSpeed: 3 + baseSprintSpeed: 5 + - type: NpcFactionMember + factions: + - Dragon + - NanoTrasen + - type: NightVision + isActive: false + toggleAction: ToggleNightVision + color: "#808080" + activateSound: null + deactivateSound: null + - type: Stripping + - type: Sprite + drawdepth: Mobs + sprite: Mobs/Aliens/Carps/space.rsi + layers: + - map: [ "enum.DamageStateVisualLayers.Base" ] + state: alive + - map: ["enum.HumanoidVisualLayers.Handcuffs"] + - type: Tag + tags: + - CannotSuicide + - DoorBumpOpener + - Carp + - UnathiEmotes + - type: LanguageKnowledge + speaks: + - TauCetiBasic + - Kobold + understands: + - TauCetiBasic + - Kobold + - type: Vocal + sounds: + Male: MaleReptilian + Female: FemaleReptilian + Unsexed: MaleReptilian + +- type: entity + name: sharkminnow + id: MobSharkPlayable + parent: [BasePlayableFeralMob, MobShark, StripableInventoryBase] + components: + - type: Body + prototype: CarpHands + - type: MobThresholds + thresholds: + 0: Alive + 150: Dead + - type: MovementSpeedModifier + baseWalkSpeed: 3 + baseSprintSpeed: 5 + - type: NpcFactionMember + factions: + - Dragon + - NanoTrasen + - type: NightVision + isActive: false + toggleAction: ToggleNightVision + color: "#808080" + activateSound: null + deactivateSound: null + - type: Stripping + - type: Sprite + drawdepth: Mobs + sprite: Mobs/Aliens/Carps/sharkminnow.rsi + layers: + - map: [ "enum.DamageStateVisualLayers.Base" ] + state: alive + - map: ["enum.HumanoidVisualLayers.Handcuffs"] + - type: Tag + tags: + - CannotSuicide + - DoorBumpOpener + - Carp + - UnathiEmotes + - type: LanguageKnowledge + speaks: + - TauCetiBasic + - Kobold + understands: + - TauCetiBasic + - Kobold + - type: Vocal + sounds: + Male: MaleReptilian + Female: FemaleReptilian + Unsexed: MaleReptilian diff --git a/Resources/Prototypes/_Euphoria/Entities/Objects/Devices/pda.yml b/Resources/Prototypes/_Euphoria/Entities/Objects/Devices/pda.yml new file mode 100644 index 00000000000..b5726810483 --- /dev/null +++ b/Resources/Prototypes/_Euphoria/Entities/Objects/Devices/pda.yml @@ -0,0 +1,44 @@ +- type: entity + parent: BaseMedicalPDA + id: FreelancerPDA + name: Freelancer PDA + description: Refurbished standard PDA + components: + - type: Sprite + sprite: _Floof/Objects/Devices/pda.rsi + - type: Icon + sprite: _Floof/Objects/Devices/pda.rsi # DeltaV aPDA Resprite File Path + state: pda-free + - type: Pda + id: FreelancerIDCard + - type: PdaBorderColor + borderColor: "#668643" + +#PDA for sapient animals +- type: entity + parent: BasePDA + id: AnimalPDA + name: Beast PDA + description: For non-human crew. A coordinate switch has been soldered onto the open circuits. + components: + - type: Appearance + appearanceDataInit: + enum.PdaVisuals.PdaType: + !type:String + pda-zookeeper + - type: Icon + state: pda-zookeeper + - type: Pda + id: VisitorIDCard + - type: PdaBorderColor + borderColor: "#ffe685" + - type: SuitSensor + activationSlot: "pda" + randomMode: false + mode: SensorCords + - type: DeviceNetwork + deviceNetId: Wireless + transmitFrequencyId: SuitSensor + - type: WirelessNetworkConnection + range: 1200 + - type: StationLimitedNetwork diff --git a/Resources/Prototypes/_Euphoria/Roles/Job/Fun/misc_startinggear.yml b/Resources/Prototypes/_Euphoria/Roles/Job/Fun/misc_startinggear.yml new file mode 100644 index 00000000000..2eb05db200c --- /dev/null +++ b/Resources/Prototypes/_Euphoria/Roles/Job/Fun/misc_startinggear.yml @@ -0,0 +1,6 @@ +- type: startingGear + id: FriendlyPlayerMob + equipment: + id: AnimalPDA + back: ClothingBackpackBeast + ears: ClothingHeadsetBeast diff --git a/Resources/Prototypes/_Floof/Entities/Clothing/Ears/headsets,yml b/Resources/Prototypes/_Floof/Entities/Clothing/Ears/headsets,yml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/Resources/Prototypes/_Floof/Entities/Objects/Devices/pda.yml b/Resources/Prototypes/_Floof/Entities/Objects/Devices/pda.yml deleted file mode 100644 index df88a116297..00000000000 --- a/Resources/Prototypes/_Floof/Entities/Objects/Devices/pda.yml +++ /dev/null @@ -1,15 +0,0 @@ -- type: entity - parent: BaseMedicalPDA - id: FreelancerPDA - name: Freelancer PDA - description: Refurbished standard PDA - components: - - type: Sprite - sprite: _Floof/Objects/Devices/pda.rsi - - type: Icon - sprite: _Floof/Objects/Devices/pda.rsi # DeltaV aPDA Resprite File Path - state: pda-free - - type: Pda - id: FreelancerIDCard - - type: PdaBorderColor - borderColor: "#668643" diff --git a/Resources/Prototypes/_Floof/InventoryTemplates/mob_animal.yml b/Resources/Prototypes/_Floof/InventoryTemplates/mob_animal.yml new file mode 100644 index 00000000000..7dbda23ad4c --- /dev/null +++ b/Resources/Prototypes/_Floof/InventoryTemplates/mob_animal.yml @@ -0,0 +1,52 @@ +- type: inventoryTemplate + id: nakedcrew + slots: + - name: id + slotTexture: id + fullTextureName: template_small + slotFlags: IDCARD + slotGroup: SecondHotbar + stripTime: 6 + uiWindowPos: 2,1 + strippingWindowPos: 2,4 + displayName: ID + - name: pocket1 + slotTexture: pocket + fullTextureName: template_small + slotFlags: POCKET + slotGroup: MainHotbar + stripTime: 3 + uiWindowPos: 0,3 + strippingWindowPos: 0,4 + displayName: Pocket 1 + - name: pocket2 + slotTexture: pocket + fullTextureName: template_small + slotFlags: POCKET + slotGroup: MainHotbar + stripTime: 3 + uiWindowPos: 2,3 + strippingWindowPos: 1,4 + displayName: Pocket 2 + - name: back + slotTexture: back + fullTextureName: template_small + slotFlags: BACK + slotGroup: SecondHotbar + stripTime: 6 + uiWindowPos: 3,0 + strippingWindowPos: 0,5 + displayName: Back + - name: neck + slotTexture: neck + slotFlags: NECK + uiWindowPos: 0,1 + strippingWindowPos: 0,1 + displayName: Neck + - name: ears + slotTexture: ears + slotFlags: EARS + stripTime: 3 + uiWindowPos: 1,1 + strippingWindowPos: 1,1 + displayName: Ears diff --git a/Resources/Prototypes/_Shitmed/Body/Prototypes/Animal/carp.yml b/Resources/Prototypes/_Shitmed/Body/Prototypes/Animal/carp.yml index 81bf6a4bd5c..f7f296d37c3 100644 --- a/Resources/Prototypes/_Shitmed/Body/Prototypes/Animal/carp.yml +++ b/Resources/Prototypes/_Shitmed/Body/Prototypes/Animal/carp.yml @@ -7,6 +7,8 @@ part: TorsoAnimal connections: - tail + - left arm #Floof + - right arm #Floof organs: lungs: OrganSpaceAnimalLungs # Immunity to airloss stomach: OrganAnimalStomach @@ -15,3 +17,15 @@ kidneys: OrganAnimalKidneys tail: part: TailCarp + left arm: # Euphoria, giving fish latent hands + part: LeftArmFish + connections: + - left hand + left hand: + part: LeftHandFish + right arm: + part: RightArmFish + connections: + - right hand + right hand: + part: RightHandFish diff --git a/Resources/Prototypes/_Shitmed/Body/Prototypes/Animal/dragon.yml b/Resources/Prototypes/_Shitmed/Body/Prototypes/Animal/dragon.yml index 6a84217e720..2dc21119583 100644 --- a/Resources/Prototypes/_Shitmed/Body/Prototypes/Animal/dragon.yml +++ b/Resources/Prototypes/_Shitmed/Body/Prototypes/Animal/dragon.yml @@ -7,11 +7,13 @@ part: TorsoAnimal connections: - legs + - left arm #Floof + - right arm #Floof organs: lungs: OrganDragonLungs stomach: OrganAnimalStomach liver: OrganAnimalLiver - heart: OrganSpaceAnimalHeart #Euphoria + heart: OrganBloodsuckerHeart # Floof kidneys: OrganAnimalKidneys legs: part: LegsAnimal @@ -19,3 +21,15 @@ - feet feet: part: FeetAnimal + left arm: # Euphoria, giving dragons latent hands + part: LeftArmFish + connections: + - left hand + left hand: + part: LeftHandFish + right arm: + part: RightArmFish + connections: + - right hand + right hand: + part: RightHandFish diff --git a/Resources/Prototypes/_Shitmed/Body/Prototypes/Animal/laserraptor.yml b/Resources/Prototypes/_Shitmed/Body/Prototypes/Animal/laserraptor.yml index 1015b932142..64d6fa742a5 100644 --- a/Resources/Prototypes/_Shitmed/Body/Prototypes/Animal/laserraptor.yml +++ b/Resources/Prototypes/_Shitmed/Body/Prototypes/Animal/laserraptor.yml @@ -8,13 +8,15 @@ organs: eyes: OrganLaserEyes torso: - part: TorsoAnimal + part: TorsoReptilian connections: - legs + - left arm #Floof + - right arm #Floof - head organs: lungs: OrganAnimalLungs - stomach: OrganAnimalStomach + stomach: OrganReptilianStomach liver: OrganAnimalLiver heart: OrganAnimalHeart kidneys: OrganAnimalKidneys @@ -24,3 +26,15 @@ - feet feet: part: FeetAnimal + left arm: #Floof + part: LeftArmReptilian + connections: + - left hand + left hand: + part: LeftHandReptilian + right arm: + part: RightArmReptilian + connections: + - right hand + right hand: + part: RightHandReptilian diff --git a/Resources/Textures/_Euphoria/Clothing/Back/Duffels/beast.rsi/equipped-BACK.png b/Resources/Textures/_Euphoria/Clothing/Back/Duffels/beast.rsi/equipped-BACK.png new file mode 100644 index 00000000000..6901e6c33b1 Binary files /dev/null and b/Resources/Textures/_Euphoria/Clothing/Back/Duffels/beast.rsi/equipped-BACK.png differ diff --git a/Resources/Textures/_Euphoria/Clothing/Back/Duffels/beast.rsi/icon.png b/Resources/Textures/_Euphoria/Clothing/Back/Duffels/beast.rsi/icon.png new file mode 100644 index 00000000000..9894da19488 Binary files /dev/null and b/Resources/Textures/_Euphoria/Clothing/Back/Duffels/beast.rsi/icon.png differ diff --git a/Resources/Textures/_Euphoria/Clothing/Back/Duffels/beast.rsi/inhand-left.png b/Resources/Textures/_Euphoria/Clothing/Back/Duffels/beast.rsi/inhand-left.png new file mode 100644 index 00000000000..6901e6c33b1 Binary files /dev/null and b/Resources/Textures/_Euphoria/Clothing/Back/Duffels/beast.rsi/inhand-left.png differ diff --git a/Resources/Textures/_Euphoria/Clothing/Back/Duffels/beast.rsi/inhand-right.png b/Resources/Textures/_Euphoria/Clothing/Back/Duffels/beast.rsi/inhand-right.png new file mode 100644 index 00000000000..6901e6c33b1 Binary files /dev/null and b/Resources/Textures/_Euphoria/Clothing/Back/Duffels/beast.rsi/inhand-right.png differ diff --git a/Resources/Textures/_Euphoria/Clothing/Back/Duffels/beast.rsi/meta.json b/Resources/Textures/_Euphoria/Clothing/Back/Duffels/beast.rsi/meta.json new file mode 100644 index 00000000000..6aa7cbd82bc --- /dev/null +++ b/Resources/Textures/_Euphoria/Clothing/Back/Duffels/beast.rsi/meta.json @@ -0,0 +1,26 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Sprite kitbashed by Dogbone10 for SS14, original sprite taken from tgstation at commit https://github.com/tgstation/tgstation/commit/547852588166c8e091b441e4e67169e156bb09c1", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-BACK", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_Euphoria/Clothing/Ears/Headsets/beast.rsi/equipped-EARS.png b/Resources/Textures/_Euphoria/Clothing/Ears/Headsets/beast.rsi/equipped-EARS.png new file mode 100644 index 00000000000..6901e6c33b1 Binary files /dev/null and b/Resources/Textures/_Euphoria/Clothing/Ears/Headsets/beast.rsi/equipped-EARS.png differ diff --git a/Resources/Textures/_Euphoria/Clothing/Ears/Headsets/beast.rsi/icon.png b/Resources/Textures/_Euphoria/Clothing/Ears/Headsets/beast.rsi/icon.png new file mode 100644 index 00000000000..17f1dfcd8b9 Binary files /dev/null and b/Resources/Textures/_Euphoria/Clothing/Ears/Headsets/beast.rsi/icon.png differ diff --git a/Resources/Textures/_Euphoria/Clothing/Ears/Headsets/beast.rsi/meta.json b/Resources/Textures/_Euphoria/Clothing/Ears/Headsets/beast.rsi/meta.json new file mode 100644 index 00000000000..08597c8d07f --- /dev/null +++ b/Resources/Textures/_Euphoria/Clothing/Ears/Headsets/beast.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Sprite kitbashed by Dogbone10 for SS14, original sprite taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-EARS", + "directions": 4 + } + ] +}