diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index b2547ec7343..3655d448e5d 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,3 +1,3 @@ # Floofstation CODEOWNERS -* @Memeji @FoxxoTrystan +* @Fansana @Memeji @FoxxoTrystan diff --git a/Content.Server/Disposal/Unit/EntitySystems/DisposableSystem.cs b/Content.Server/Disposal/Unit/EntitySystems/DisposableSystem.cs index 38e39238039..ddc1b754a06 100644 --- a/Content.Server/Disposal/Unit/EntitySystems/DisposableSystem.cs +++ b/Content.Server/Disposal/Unit/EntitySystems/DisposableSystem.cs @@ -136,9 +136,9 @@ public void ExitDisposals(EntityUid uid, DisposalHolderComponent? holder = null, { _xformSystem.AttachToGridOrMap(entity, xform); - if (holder.PreviousDirection != Direction.Invalid && _xformQuery.TryGetComponent(xform.ParentUid, out var parentXform)) + if (holder.PreviousDirection != Direction.Invalid && gridUid != null && _xformQuery.TryGetComponent(gridUid, out var parentXform)) { - var direction = holder.PreviousDirection.ToAngle(); + var direction = holder.CurrentDirection.ToAngle(); direction += _xformSystem.GetWorldRotation(parentXform); _throwing.TryThrow(entity, direction.ToWorldVec() * 3f, 10f); } diff --git a/Resources/Audio/Floof/Lewd/kiss.ogg b/Resources/Audio/Floof/Lewd/kiss.ogg new file mode 100644 index 00000000000..3a342a33570 Binary files /dev/null and b/Resources/Audio/Floof/Lewd/kiss.ogg differ diff --git a/Resources/Audio/Floof/Lewd/lick.ogg b/Resources/Audio/Floof/Lewd/lick.ogg new file mode 100644 index 00000000000..8aee9bb0443 Binary files /dev/null and b/Resources/Audio/Floof/Lewd/lick.ogg differ diff --git a/Resources/Changelog/Floof.yml b/Resources/Changelog/Floof.yml index 4b1cdfd23d9..a753cc910c6 100644 --- a/Resources/Changelog/Floof.yml +++ b/Resources/Changelog/Floof.yml @@ -1090,3 +1090,40 @@ Entries: id: 146 time: '2024-09-28T11:51:55.0000000+00:00' url: https://github.com/Fansana/floofstation1/pull/215 +- author: neuPanda + changes: + - type: Add + message: Kiss an Lick + id: 147 + time: '2024-09-29T02:41:17.0000000+00:00' + url: https://github.com/Fansana/floofstation1/pull/179 +- author: Fansana + changes: + - type: Tweak + message: nerf reagent slimes + id: 148 + time: '2024-09-29T17:16:22.0000000+00:00' + url: https://github.com/Fansana/floofstation1/pull/218 +- author: fenndragon + changes: + - type: Tweak + message: 'Tweaked spawn rates of Various Ventcritter Spawn events ' + id: 149 + time: '2024-09-29T18:26:23.0000000+00:00' + url: https://github.com/Fansana/floofstation1/pull/219 +- author: Mnemotechnician + changes: + - type: Add + message: >- + Loadouts have been expanded with leashes, remote signalers, shock + collars, and a wide variety of lewd items. + id: 150 + time: '2024-10-01T16:14:39.0000000+00:00' + url: https://github.com/Fansana/floofstation1/pull/217 +- author: Fansana + changes: + - type: Fix + message: Fix the disposal pipe ejection to space and after pipe bends. + id: 151 + time: '2024-10-01T17:33:39.0000000+00:00' + url: https://github.com/Fansana/floofstation1/pull/220 diff --git a/Resources/Locale/en-US/Floof/loadouts/categories.ftl b/Resources/Locale/en-US/Floof/loadouts/categories.ftl new file mode 100644 index 00000000000..b1b74a0baec --- /dev/null +++ b/Resources/Locale/en-US/Floof/loadouts/categories.ftl @@ -0,0 +1 @@ +loadout-category-ItemsLewd = Lewd diff --git a/Resources/Locale/en-US/Floof/loadouts/itemgroups.ftl b/Resources/Locale/en-US/Floof/loadouts/itemgroups.ftl index d9e7ba83b31..845d5d890d1 100644 --- a/Resources/Locale/en-US/Floof/loadouts/itemgroups.ftl +++ b/Resources/Locale/en-US/Floof/loadouts/itemgroups.ftl @@ -6,3 +6,5 @@ character-item-group-LoadoutNeck2 = Civilian Neckwear character-item-group-LoadoutOuter2 = Civilian Outerwear character-item-group-LoadoutShoes2 = Civilian Shoes character-item-group-LoadoutUniformsCivilian2 = Civilian Uniforms +character-item-group-LoadoutFun = Fun +character-item-group-LoadoutLewd = Lewd diff --git a/Resources/Locale/en-US/Floof/mood/mood.ftl b/Resources/Locale/en-US/Floof/mood/mood.ftl new file mode 100644 index 00000000000..203f3911a39 --- /dev/null +++ b/Resources/Locale/en-US/Floof/mood/mood.ftl @@ -0,0 +1,3 @@ +mood-effect-BeingKissed = That kiss was delightful. + +mood-effect-BeingLicked = I've been Licked! diff --git a/Resources/Locale/en-US/floofstation/interaction/verbs/noop.ftl b/Resources/Locale/en-US/floofstation/interaction/verbs/noop.ftl new file mode 100644 index 00000000000..82cfe07f579 --- /dev/null +++ b/Resources/Locale/en-US/floofstation/interaction/verbs/noop.ftl @@ -0,0 +1,11 @@ +interaction-Kiss-name = Kiss +interaction-Kiss-description = A kiss melts the pains away. +interaction-Kiss-success-self-popup = You kiss {THE($target)}. +interaction-Kiss-success-target-popup = {THE($user)} kisses you. +interaction-Kiss-success-others-popup = {THE($user)} kisses {THE($target)}. + +interaction-Lick-name = Lick +interaction-Lick-description = Lick your co-worker, what HR?. +interaction-Lick-success-self-popup = You lick {THE($target)}. +interaction-Lick-success-target-popup = {THE($user)} licks you. +interaction-Lick-success-others-popup = {THE($user)} licks {THE($target)}. diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/Rslimes.yml b/Resources/Prototypes/Entities/Mobs/NPCs/Rslimes.yml index 03ce5a04e6e..dbfb1f14e0d 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/Rslimes.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/Rslimes.yml @@ -1,289 +1,290 @@ -- type: entity - id: ReagentSlimeIchor - parent: ReagentSlime - suffix: Ichor - components: - - type: Bloodstream - bloodReagent: Ichor - - type: PointLight - color: "#f4692e" - - type: Sprite - drawdepth: Mobs - sprite: Mobs/Aliens/elemental.rsi - layers: - - map: [ "enum.DamageStateVisualLayers.Base" ] - state: alive - color: "#f4692e" - -- type: entity - id: ReagentSlimeBleach - parent: ReagentSlime - suffix: Bleach - components: - - type: Bloodstream - bloodReagent: Bleach - - type: PointLight - color: "#a1000b" - - type: Sprite - drawdepth: Mobs - sprite: Mobs/Aliens/elemental.rsi - layers: - - map: [ "enum.DamageStateVisualLayers.Base" ] - state: alive - color: "#a1000b" - -- type: entity - id: ReagentSlimeSoap - parent: ReagentSlime - suffix: Soap - components: - - type: Bloodstream - bloodReagent: SoapReagent - - type: PointLight - color: "#c8dfc9" - - type: Sprite - drawdepth: Mobs - sprite: Mobs/Aliens/elemental.rsi - layers: - - map: [ "enum.DamageStateVisualLayers.Base" ] - state: alive - color: "#c8dfc9" - -- type: entity - id: ReagentSlimeSpacelube - parent: ReagentSlime - suffix: Spacelube - components: - - type: Bloodstream - bloodReagent: SpaceLube - - type: PointLight - color: "#77b58e" - - type: Sprite - drawdepth: Mobs - sprite: Mobs/Aliens/elemental.rsi - layers: - - map: [ "enum.DamageStateVisualLayers.Base" ] - state: alive - color: "#77b58e" - -- type: entity - id: ReagentSlimeBuzzachloricbees - parent: ReagentSlime - suffix: Buzzachloricbees - components: - - type: Bloodstream - bloodReagent: BuzzochloricBees - - type: PointLight - color: "#FFD35D" - - type: Sprite - drawdepth: Mobs - sprite: Mobs/Aliens/elemental.rsi - layers: - - map: [ "enum.DamageStateVisualLayers.Base" ] - state: alive - color: "#FFD35D" - -- type: entity - id: ReagentSlimeWehjuice - parent: ReagentSlime - suffix: Wehjuice - components: - - type: Bloodstream - bloodReagent: JuiceThatMakesYouWeh - - type: PointLight - color: "#59b23a" - - type: Sprite - drawdepth: Mobs - sprite: Mobs/Aliens/elemental.rsi - layers: - - map: [ "enum.DamageStateVisualLayers.Base" ] - state: alive - color: "#59b23a" - -- type: entity - id: ReagentCognizine - parent: ReagentSlime - suffix: Cognizine - components: - - type: Bloodstream - bloodReagent: Cognizine - - type: PointLight - color: "#b50ee8" - - type: Sprite - drawdepth: Mobs - sprite: Mobs/Aliens/elemental.rsi - layers: - - map: [ "enum.DamageStateVisualLayers.Base" ] - state: alive - color: "#b50ee8" - -- type: entity - id: ReagentSlimeNecrosol - parent: ReagentSlime - suffix: Necrosol - components: - - type: Bloodstream - bloodReagent: Necrosol - - type: PointLight - color: "#86a5bd" - - type: Sprite - drawdepth: Mobs - sprite: Mobs/Aliens/elemental.rsi - layers: - - map: [ "enum.DamageStateVisualLayers.Base" ] - state: alive - color: "#86a5bd" - -- type: entity - id: ReagentSlimeSpaceDrugs - parent: ReagentSlime - suffix: SpaceDrugs - components: - - type: Bloodstream - bloodReagent: SpaceDrugs - - type: PointLight - color: "#63806e" - - type: Sprite - drawdepth: Mobs - sprite: Mobs/Aliens/elemental.rsi - layers: - - map: [ "enum.DamageStateVisualLayers.Base" ] - state: alive - color: "#63806e" - -- type: entity - id: ReagentSlimeUnstableMutagen - parent: ReagentSlime - suffix: UnstableMutagen - components: - - type: Bloodstream - bloodReagent: UnstableMutagen - - type: PointLight - color: "#00ff5f" - - type: Sprite - drawdepth: Mobs - sprite: Mobs/Aliens/elemental.rsi - layers: - - map: [ "enum.DamageStateVisualLayers.Base" ] - state: alive - color: "#00ff5f" - -- type: entity - id: ReagentSlimeLead - parent: ReagentSlime - suffix: Lead - components: - - type: Bloodstream - bloodReagent: Lead - - type: PointLight - color: "#5C6274" - - type: Sprite - drawdepth: Mobs - sprite: Mobs/Aliens/elemental.rsi - layers: - - map: [ "enum.DamageStateVisualLayers.Base" ] - state: alive - color: "#5C6274" - -- type: entity - id: ReagentSlimechlorinetriflouride - parent: ReagentSlime - suffix: chlorinetriflouride - components: - - type: Bloodstream - bloodReagent: ChlorineTrifluoride - - type: PointLight - color: "#FFC8C8" - - type: Sprite - drawdepth: Mobs - sprite: Mobs/Aliens/elemental.rsi - layers: - - map: [ "enum.DamageStateVisualLayers.Base" ] - state: alive - color: "#FFC8C8" - -- type: entity - id: ReagentSlimePotassium - parent: ReagentSlime - suffix: Potassium - components: - - type: Bloodstream - bloodReagent: Potassium - - type: PointLight - color: "#c6c8cc" - - type: Sprite - drawdepth: Mobs - sprite: Mobs/Aliens/elemental.rsi - layers: - - map: [ "enum.DamageStateVisualLayers.Base" ] - state: alive - color: "#c6c8cc" - -- type: entity - id: reagentslimeVents - parent: BaseGameRule - noSpawn: true - components: - - type: StationEvent - startAnnouncement: true - earliestStart: 20 - reoccurrenceDelay: 12 - minimumPlayers: 1 - weight: 6 # Really weak compared to other critters - duration: 60 - - type: VentCrittersRule - entries: - - id: ReagentSlime - prob: 0.01 - - id: ReagentSlimeBeer - prob: 0.01 - - id: ReagentSlimePax - prob: 0.01 - - id: ReagentSlimeNocturine - prob: 0.01 - - id: ReagentSlimeTHC - prob: 0.01 - - id: ReagentSlimeBicaridine - prob: 0.01 - - id: ReagentSlimeToxin - prob: 0.01 - - id: ReagentSlimeNapalm - prob: 0.01 - - id: ReagentSlimeOmnizine - prob: 0.01 - - id: ReagentSlimeMuteToxin - prob: 0.01 - - id: ReagentSlimeNorepinephricAcid - prob: 0.01 - - id: ReagentSlimeEphedrine - prob: 0.01 - - id: ReagentSlimeRobustHarvest - prob: 0.01 - - id: ReagentSlimeIchor - prob: 0.01 - - id: ReagentSlimeBleach - prob: 0.01 - - id: ReagentSlimeSoap - prob: 0.01 - - id: ReagentSlimeSpacelube - prob: 0.01 - - id: ReagentSlimeBuzzachloricbees - prob: 0.01 - - id: ReagentSlimeWehjuice - prob: 0.01 - - id: ReagentCognizine - prob: 0.01 - - id: ReagentSlimeNecrosol - prob: 0.01 - - id: ReagentSlimeSpaceDrugs - prob: 0.01 - - id: ReagentSlimeUnstableMutagen - prob: 0.01 - - id: ReagentSlimeLead - prob: 0.01 - - id: ReagentSlimechlorinetriflouride - prob: 0.01 - - id: ReagentSlimePotassium - prob: 0.01 - - id: ReagentSlimeLotophagoiOil - prob: 0.01 +#- type: entity +# id: ReagentSlimeIchor +# parent: ReagentSlime +# suffix: Ichor +# components: +# - type: Bloodstream +# bloodReagent: Ichor +# - type: PointLight +# color: "#f4692e" +# - type: Sprite +# drawdepth: Mobs +# sprite: Mobs/Aliens/elemental.rsi +# layers: +# - map: [ "enum.DamageStateVisualLayers.Base" ] +# state: alive +# color: "#f4692e" +# +#- type: entity +# id: ReagentSlimeBleach +# parent: ReagentSlime +# suffix: Bleach +# components: +# - type: Bloodstream +# bloodReagent: Bleach +# - type: PointLight +# color: "#a1000b" +# - type: Sprite +# drawdepth: Mobs +# sprite: Mobs/Aliens/elemental.rsi +# layers: +# - map: [ "enum.DamageStateVisualLayers.Base" ] +# state: alive +# color: "#a1000b" +# +#- type: entity +# id: ReagentSlimeSoap +# parent: ReagentSlime +# suffix: Soap +# components: +# - type: Bloodstream +# bloodReagent: SoapReagent +# - type: PointLight +# color: "#c8dfc9" +# - type: Sprite +# drawdepth: Mobs +# sprite: Mobs/Aliens/elemental.rsi +# layers: +# - map: [ "enum.DamageStateVisualLayers.Base" ] +# state: alive +# color: "#c8dfc9" +# +#- type: entity +# id: ReagentSlimeSpacelube +# parent: ReagentSlime +# suffix: Spacelube +# components: +# - type: Bloodstream +# bloodReagent: SpaceLube +# - type: PointLight +# color: "#77b58e" +# - type: Sprite +# drawdepth: Mobs +# sprite: Mobs/Aliens/elemental.rsi +# layers: +# - map: [ "enum.DamageStateVisualLayers.Base" ] +# state: alive +# color: "#77b58e" +# +#- type: entity +# id: ReagentSlimeBuzzachloricbees +# parent: ReagentSlime +# suffix: Buzzachloricbees +# components: +# - type: Bloodstream +# bloodReagent: BuzzochloricBees +# - type: PointLight +# color: "#FFD35D" +# - type: Sprite +# drawdepth: Mobs +# sprite: Mobs/Aliens/elemental.rsi +# layers: +# - map: [ "enum.DamageStateVisualLayers.Base" ] +# state: alive +# color: "#FFD35D" +# +#- type: entity +# id: ReagentSlimeWehjuice +# parent: ReagentSlime +# suffix: Wehjuice +# components: +# - type: Bloodstream +# bloodReagent: JuiceThatMakesYouWeh +# - type: PointLight +# color: "#59b23a" +# - type: Sprite +# drawdepth: Mobs +# sprite: Mobs/Aliens/elemental.rsi +# layers: +# - map: [ "enum.DamageStateVisualLayers.Base" ] +# state: alive +# color: "#59b23a" +# +#- type: entity +# id: ReagentCognizine +# parent: ReagentSlime +# suffix: Cognizine +# components: +# - type: Bloodstream +# bloodReagent: Cognizine +# - type: PointLight +# color: "#b50ee8" +# - type: Sprite +# drawdepth: Mobs +# sprite: Mobs/Aliens/elemental.rsi +# layers: +# - map: [ "enum.DamageStateVisualLayers.Base" ] +# state: alive +# color: "#b50ee8" +# +#- type: entity +# id: ReagentSlimeNecrosol +# parent: ReagentSlime +# suffix: Necrosol +# components: +# - type: Bloodstream +# bloodReagent: Necrosol +# - type: PointLight +# color: "#86a5bd" +# - type: Sprite +# drawdepth: Mobs +# sprite: Mobs/Aliens/elemental.rsi +# layers: +# - map: [ "enum.DamageStateVisualLayers.Base" ] +# state: alive +# color: "#86a5bd" +# +#- type: entity +# id: ReagentSlimeSpaceDrugs +# parent: ReagentSlime +# suffix: SpaceDrugs +# components: +# - type: Bloodstream +# bloodReagent: SpaceDrugs +# - type: PointLight +# color: "#63806e" +# - type: Sprite +# drawdepth: Mobs +# sprite: Mobs/Aliens/elemental.rsi +# layers: +# - map: [ "enum.DamageStateVisualLayers.Base" ] +# state: alive +# color: "#63806e" +# +#- type: entity +# id: ReagentSlimeUnstableMutagen +# parent: ReagentSlime +# suffix: UnstableMutagen +# components: +# - type: Bloodstream +# bloodReagent: UnstableMutagen +# - type: PointLight +# color: "#00ff5f" +# - type: Sprite +# drawdepth: Mobs +# sprite: Mobs/Aliens/elemental.rsi +# layers: +# - map: [ "enum.DamageStateVisualLayers.Base" ] +# state: alive +# color: "#00ff5f" +# +#- type: entity +# id: ReagentSlimeLead +# parent: ReagentSlime +# suffix: Lead +# components: +# - type: Bloodstream +# bloodReagent: Lead +# - type: PointLight +# color: "#5C6274" +# - type: Sprite +# drawdepth: Mobs +# sprite: Mobs/Aliens/elemental.rsi +# layers: +# - map: [ "enum.DamageStateVisualLayers.Base" ] +# state: alive +# color: "#5C6274" +# +#- type: entity +# id: ReagentSlimechlorinetriflouride +# parent: ReagentSlime +# suffix: chlorinetriflouride +# components: +# - type: Bloodstream +# bloodReagent: ChlorineTrifluoride +# - type: PointLight +# color: "#FFC8C8" +# - type: Sprite +# drawdepth: Mobs +# sprite: Mobs/Aliens/elemental.rsi +# layers: +# - map: [ "enum.DamageStateVisualLayers.Base" ] +# state: alive +# color: "#FFC8C8" +# +#- type: entity +# id: ReagentSlimePotassium +# parent: ReagentSlime +# suffix: Potassium +# components: +# - type: Bloodstream +# bloodReagent: Potassium +# - type: PointLight +# color: "#c6c8cc" +# - type: Sprite +# drawdepth: Mobs +# sprite: Mobs/Aliens/elemental.rsi +# layers: +# - map: [ "enum.DamageStateVisualLayers.Base" ] +# state: alive +# color: "#c6c8cc" +# +#- type: entity +# id: reagentslimeVents +# parent: BaseGameRule +# noSpawn: true +# components: +# - type: StationEvent +# startAnnouncement: true +# earliestStart: 20 +# reoccurrenceDelay: 12 +# minimumPlayers: 30 +# weight: 6 # Really weak compared to other critters +# duration: 60 +# - type: VentCrittersRule +# entries: +# - id: ReagentSlime +# prob: 0.002 +# - id: ReagentSlimeBeer +# prob: 0.003 +# - id: ReagentSlimePax +# prob: 0.001 +# - id: ReagentSlimeNocturine +# prob: 0.001 +# - id: ReagentSlimeTHC +# prob: 0.002 +# - id: ReagentSlimeBicaridine +# prob: 0.002 +# - id: ReagentSlimeToxin +# prob: 0.002 +# - id: ReagentSlimeNapalm +# prob: 0.002 +# - id: ReagentSlimeOmnizine +# prob: 0.003 +# - id: ReagentSlimeMuteToxin +# prob: 0.002 +# - id: ReagentSlimeNorepinephricAcid +# prob: 0.002 +# - id: ReagentSlimeEphedrine +# prob: 0.002 +# - id: ReagentSlimeRobustHarvest +# prob: 0.003 +# - id: ReagentSlimeIchor +# prob: 0.002 +# - id: ReagentSlimeBleach +# prob: 0.002 +# - id: ReagentSlimeSoap +# prob: 0.002 +# - id: ReagentSlimeSpacelube +# prob: 0.002 +# - id: ReagentSlimeBuzzachloricbees +# prob: 0.002 +# - id: ReagentSlimeWehjuice +# prob: 0.003 +# - id: ReagentCognizine +# prob: 0.003 +# - id: ReagentSlimeNecrosol +# prob: 0.002 +# - id: ReagentSlimeSpaceDrugs +# prob: 0.003 +# - id: ReagentSlimeUnstableMutagen +# prob: 0.001 +# - id: ReagentSlimeLead +# prob: 0.001 +# - id: ReagentSlimechlorinetriflouride +# prob: 0.002 +# - id: ReagentSlimePotassium +# prob: 0.002 +# - id: ReagentSlimeLotophagoiOil +# prob: 0.003 +# diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/elemental.yml b/Resources/Prototypes/Entities/Mobs/NPCs/elemental.yml index dd5e5f27604..366a2f22a48 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/elemental.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/elemental.yml @@ -333,20 +333,20 @@ - ReagentSlimePomelustine # Floofstation - ReagentSlimePhilterex # Floofstation - ReagentSlimeLibidozenithizine # Floofstation - - ReagentSlimeIchor - - ReagentSlimeBleach - - ReagentSlimeSoap - - ReagentSlimeSpacelube - - ReagentSlimeBuzzachloricbees - - ReagentSlimeWehjuice - - ReagentCognizine + #- ReagentSlimeIchor + #- ReagentSlimeBleach + #- ReagentSlimeSoap + #- ReagentSlimeSpacelube + #- ReagentSlimeBuzzachloricbees + #- ReagentSlimeWehjuice + #- ReagentCognizine - ReagentSlimeOpporozidone # Floofstation - - ReagentSlimeNecrosol - - ReagentSlimeSpaceDrugs - - ReagentSlimeUnstableMutagen - - ReagentSlimeLead - - ReagentSlimechlorinetriflouride - - ReagentSlimePotassium + #- ReagentSlimeNecrosol + #- ReagentSlimeSpaceDrugs + #- ReagentSlimeUnstableMutagen + #- ReagentSlimeLead + #- ReagentSlimechlorinetriflouride + #- ReagentSlimePotassium - ReagentSlimeLotophagoiOil chance: 1 diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/xenopet.yml b/Resources/Prototypes/Entities/Mobs/NPCs/xenopet.yml index 09dd78c6c0d..05071934306 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/xenopet.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/xenopet.yml @@ -23,82 +23,82 @@ understands: - Xeno - TauCetiBasic - -- type: entity - name: Neutral Praetorian - id: MobXenoNeutralPraetorian - parent: MobXenoPraetorianNPC - description: They mostly come at night. Mostly. - components: - - type: NpcFactionMember - factions: - - Passive - - type: PointLight - radius: 2 - energy: 1 - color: "#62B85E" - - type: GhostRole - name: ghost-role-information-friendlyxeno-name - description: ghost-role-information-friendlyxeno-description - rules: ghost-role-information-friendlyxeno-rules - - type: GhostTakeoverAvailable - - type: LanguageKnowledge - speaks: - - Xeno - understands: - - Xeno - - TauCetiBasic - -- type: entity - name: Neutral Drone - id: MobXenoNeutralDrone - parent: MobXenoDroneNPC - description: They mostly come at night. Mostly. - components: - - type: NpcFactionMember - factions: - - Passive - - type: PointLight - radius: 2 - energy: 1 - color: "#8B5EB8" - - type: GhostRole - name: ghost-role-information-friendlyxeno-name - description: ghost-role-information-friendlyxeno-description - rules: ghost-role-information-friendlyxeno-rules - - type: GhostTakeoverAvailable - - type: LanguageKnowledge - speaks: - - Xeno - understands: - - Xeno - - TauCetiBasic - -- type: entity - name: Neutral Ravager - id: MobXenoNeutralRavager - parent: MobXenoRavagerNPC - description: They mostly come at night. Mostly. - components: - - type: NpcFactionMember - factions: - - Passive - - type: PointLight - radius: 2 - energy: 1 - color: "#E3954D" - - type: GhostRole - name: ghost-role-information-friendlyxeno-name - description: ghost-role-information-friendlyxeno-description - rules: ghost-role-information-friendlyxeno-rules - - type: GhostTakeoverAvailable - - type: LanguageKnowledge - speaks: - - Xeno - understands: - - Xeno - - TauCetiBasic - +# +#- type: entity +# name: Neutral Praetorian +# id: MobXenoNeutralPraetorian +# parent: MobXenoPraetorianNPC +# description: They mostly come at night. Mostly. +# components: +# - type: NpcFactionMember +# factions: +# - Passive +# - type: PointLight +# radius: 2 +# energy: 1 +# color: "#62B85E" +# - type: GhostRole +# name: ghost-role-information-friendlyxeno-name +# description: ghost-role-information-friendlyxeno-description +# rules: ghost-role-information-friendlyxeno-rules +# - type: GhostTakeoverAvailable +# - type: LanguageKnowledge +# speaks: +# - Xeno +# understands: +# - Xeno +# - TauCetiBasic +# +#- type: entity +# name: Neutral Drone +# id: MobXenoNeutralDrone +# parent: MobXenoDroneNPC +# description: They mostly come at night. Mostly. +# components: +# - type: NpcFactionMember +# factions: +# - Passive +# - type: PointLight +# radius: 2 +# energy: 1 +# color: "#8B5EB8" +# - type: GhostRole +# name: ghost-role-information-friendlyxeno-name +# description: ghost-role-information-friendlyxeno-description +# rules: ghost-role-information-friendlyxeno-rules +# - type: GhostTakeoverAvailable +# - type: LanguageKnowledge +# speaks: +# - Xeno +# understands: +# - Xeno +# - TauCetiBasic +# +#- type: entity +# name: Neutral Ravager +# id: MobXenoNeutralRavager +# parent: MobXenoRavagerNPC +# description: They mostly come at night. Mostly. +# components: +# - type: NpcFactionMember +# factions: +# - Passive +# - type: PointLight +# radius: 2 +# energy: 1 +# color: "#E3954D" +# - type: GhostRole +# name: ghost-role-information-friendlyxeno-name +# description: ghost-role-information-friendlyxeno-description +# rules: ghost-role-information-friendlyxeno-rules +# - type: GhostTakeoverAvailable +# - type: LanguageKnowledge +# speaks: +# - Xeno +# understands: +# - Xeno +# - TauCetiBasic +# - type: inventoryTemplate id: friendxeno slots: @@ -166,375 +166,369 @@ interactSuccessSpawn: EffectHearts interactSuccessSound: path: /Audio/Animals/lizard_happy.ogg - -- type: entity - name: Patriach - parent: MobXenoNeutralPraetorian - id: MobXenoPatriarch - description: A not entirely clearly friend-shaped Xeno. - components: - - type: NpcFactionMember - factions: - - PetsNT - - type: Tool - speed: 3 - qualities: - - Prying - - type: Sprite - drawdepth: Mobs - sprite: Mobs/Animals/patriarch.rsi - layers: - - map: ["enum.DamageStateVisualLayers.Base"] - state: patriarch - - type: DamageStateVisuals - states: - Alive: - Base: patriarch - Critical: - Base: patriarch_crit - Dead: - Base: patriarch_dead - - type: Inventory - templateId: friendxeno - - type: IdExaminable - - type: InventorySlots - - type: Strippable - - type: UserInterface - interfaces: - - key: enum.StrippingUiKey.Key - type: StrippableBoundUserInterface - - type: Grammar - attributes: - proper: true - gender: male - - type: InteractionPopup - successChance: 0.5 - interactSuccessString: petting-success-reptile - interactFailureString: petting-failure-generic - interactSuccessSpawn: EffectHearts - interactSuccessSound: - path: /Audio/Animals/lizard_happy.ogg - -- type: entity - name: FXES - parent: MobXenoNeutralDrone - id: MobXenoFXES - description: A very clearly friend-shaped Xeno. - components: - - type: NpcFactionMember - factions: - - PetsNT - - type: Tool - speed: 3 - qualities: - - Prying - - type: Inventory - templateId: friendxeno - - type: IdExaminable - - type: InventorySlots - - type: Strippable - - type: UserInterface - interfaces: - - key: enum.StrippingUiKey.Key - type: StrippableBoundUserInterface - - type: Grammar - attributes: - proper: true - gender: male - - type: InteractionPopup - successChance: 0.5 - interactSuccessString: petting-success-reptile - interactFailureString: petting-failure-generic - interactSuccessSpawn: EffectHearts - interactSuccessSound: - path: /Audio/Animals/lizard_happy.ogg - -- type: entity - name: Hell-Shaped - parent: MobXenoNeutralRavager - id: MobXenoHellShaped - description: A very clearly friend-shaped Xeno. - components: - - type: NpcFactionMember - factions: - - PetsNT - - type: Tool - speed: 3 - qualities: - - Prying - - type: Inventory - templateId: friendxeno - - type: IdExaminable - - type: InventorySlots - - type: Strippable - - type: UserInterface - interfaces: - - key: enum.StrippingUiKey.Key - type: StrippableBoundUserInterface - - type: Grammar - attributes: - proper: true - gender: male - - type: InteractionPopup - successChance: 0.5 - interactSuccessString: petting-success-reptile - interactFailureString: petting-failure-generic - interactSuccessSpawn: EffectHearts - interactSuccessSound: - path: /Audio/Animals/lizard_happy.ogg - -- type: entity - name: FXE Subject 7355 - parent: MobXenoNeutralRavager - id: MobXenoSubjectTess - description: An extremely oddly coloured xeno, with glowing stripes. An odd mutation. - components: - - type: NpcFactionMember - factions: - - PetsNT - - type: Tool - speed: 3 - qualities: - - Prying - - type: Sprite - drawdepth: Mobs - sprite: Mobs/Animals/subject7355.rsi - layers: - - map: ["enum.DamageStateVisualLayers.Base"] - state: subject7355 - - map: [ "enum.DamageStateVisualLayers.BaseUnshaded" ] - state: glow - shader: unshaded - - type: PointLight - radius: 2 - energy: 1 - color: "#639fff" - - type: DamageStateVisuals - states: - Alive: - Base: subject7355 - Critical: - Base: subject7355_crit - Dead: - Base: subject7355_dead - - type: Inventory - templateId: friendxeno - - type: IdExaminable - - type: InventorySlots - - type: Strippable - - type: UserInterface - interfaces: - - key: enum.StrippingUiKey.Key - type: StrippableBoundUserInterface - - type: Grammar - attributes: - proper: true - gender: male - - type: InteractionPopup - successChance: 0.5 - interactSuccessString: petting-success-reptile - interactFailureString: petting-failure-generic - interactSuccessSpawn: EffectHearts - interactSuccessSound: - path: /Audio/Animals/lizard_happy.ogg - -- type: entity - id: neutralXenoVents - parent: BaseGameRule - noSpawn: true - components: - - type: StationEvent - startAnnouncement: true - earliestStart: 20 - reoccurrenceDelay: 12 - minimumPlayers: 1 - weight: 6 # Really weak compared to other critters - duration: 60 - - type: VentCrittersRule - entries: - - id: MobXeno - prob: 0.01 - - id: MobXenoNeutralRouny - prob: 0.005 - - id: MobXenoNeutralDrone - prob: 0.005 - - id: MobXenoNeutralPraetorian - prob: 0.005 - - id: MobXenoNeutralRavager - prob: 0.005 - -- type: entity - id: ArgocyteVents - parent: BaseGameRule - noSpawn: true - components: - - type: StationEvent - startAnnouncement: true - earliestStart: 20 - reoccurrenceDelay: 12 - minimumPlayers: 12 - weight: 6 # Really weak compared to other critters - duration: 60 - - type: VentCrittersRule - entries: - - id: BaseMobArgocyte - prob: 0.01 - - id: MobArgocyteSlurva - prob: 0.005 - - id: MobArgocyteBarrier - prob: 0.005 - - id: MobArgocyteSkitter - prob: 0.005 - - id: MobArgocyteSwiper - prob: 0.005 - - id: MobArgocyteMolder - prob: 0.01 - - id: MobArgocytePouncer - prob: 0.005 - - id: MobArgocyteGlider - prob: 0.005 - - id: MobArgocyteHarvester - prob: 0.005 - - id: MobArgocyteCrawler - prob: 0.005 - - id: MobArgocyteEnforcer - prob: 0.005 - - id: MobArgocyteFounder - prob: 0.005 - - id: MobArgocyteLeviathing - prob: 0.005 - -- type: entity - id: MeatVents - parent: BaseGameRule - noSpawn: true - components: - - type: StationEvent - startAnnouncement: true - earliestStart: 20 - reoccurrenceDelay: 12 - minimumPlayers: 12 - weight: 6 # Really weak compared to other critters - duration: 60 - - type: VentCrittersRule - entries: - - id: BaseMobFlesh - prob: 0.01 - - id: MobFleshJared - prob: 0.005 - - id: MobFleshGolem - prob: 0.005 - - id: MobFleshClamp - prob: 0.005 - - id: MobFleshLover - prob: 0.005 - - id: MobAbomination - prob: 0.005 - -- type: entity - id: TickVents - parent: BaseGameRule - noSpawn: true - components: - - type: StationEvent - startAnnouncement: true - earliestStart: 20 - reoccurrenceDelay: 12 - minimumPlayers: 1 - weight: 6 # Really weak compared to other critters - duration: 60 - - type: VentCrittersRule - entries: - - id: MobTick - prob: 0.01 - -- type: entity - id: CarpVents - parent: BaseGameRule - noSpawn: true - components: - - type: StationEvent - startAnnouncement: true - earliestStart: 20 - reoccurrenceDelay: 12 - minimumPlayers: 12 - weight: 6 # Really weak compared to other critters - duration: 60 - - type: VentCrittersRule - entries: - - id: MobCarp - prob: 0.01 - - id: MobCarpMagic - prob: 0.01 - - id: MobCarpHolo - prob: 0.01 - - id: MobCarpRainbow - prob: 0.01 - - id: MobShark - prob: 0.01 - - id: MobCarpDragon - prob: 0.01 - -- type: entity - id: SpaceVents - parent: BaseGameRule - noSpawn: true - components: - - type: StationEvent - startAnnouncement: true - earliestStart: 20 - reoccurrenceDelay: 12 - minimumPlayers: 12 - weight: 6 # Really weak compared to other critters - duration: 60 - - type: VentCrittersRule - entries: - - id: MobBearSpace - prob: 0.01 - - id: MobKangarooSpace - prob: 0.01 - - id: MobSpiderSpace - prob: 0.01 - - id: MobCobraSpace - prob: 0.01 - -- type: entity - id: LightVents - parent: BaseGameRule - noSpawn: true - components: - - type: StationEvent - startAnnouncement: true - earliestStart: 20 - reoccurrenceDelay: 12 - minimumPlayers: 12 - weight: 6 # Really weak compared to other critters - duration: 60 - - type: VentCrittersRule - entries: - - id: MobLivingLight - prob: 0.01 - - id: MobLuminousPerson - prob: 0.01 - - id: MobLuminousObject - prob: 0.01 - - id: MobLuminousEntity - prob: 0.01 - -- type: entity - name: Friendly Xeno spawner - id: friendlyxenoSpawner - parent: MarkerBase - components: - - type: Sprite - layers: - - state: green - - sprite: Mobs/Aliens/Xenos/drone.rsi - state: sleeping - - type: RandomSpawner - prototypes: - - MobXenoNeutralRouny - - MobXenoNeutralPraetorian - - MobXenoNeutralDrone - - MobXenoNeutralRavager - chance: 1 +# +#- type: entity +# name: Patriach +# parent: MobXenoNeutralPraetorian +# id: MobXenoPatriarch +# description: A not entirely clearly friend-shaped Xeno. +# components: +# - type: NpcFactionMember +# factions: +# - PetsNT +# - type: Tool +# speed: 3 +# qualities: +# - Prying +# - type: Sprite +# drawdepth: Mobs +# sprite: Mobs/Animals/patriarch.rsi +# layers: +# - map: ["enum.DamageStateVisualLayers.Base"] +# state: patriarch +# - type: DamageStateVisuals +# states: +# Alive: +# Base: patriarch +# Critical: +# Base: patriarch_crit +# Dead: +# Base: patriarch_dead +# - type: Inventory +# templateId: friendxeno +# - type: IdExaminable +# - type: InventorySlots +# - type: Strippable +# - type: UserInterface +# interfaces: +# - key: enum.StrippingUiKey.Key +# type: StrippableBoundUserInterface +# - type: Grammar +# attributes: +# proper: true +# gender: male +# - type: InteractionPopup +# successChance: 0.5 +# interactSuccessString: petting-success-reptile +# interactFailureString: petting-failure-generic +# interactSuccessSpawn: EffectHearts +# interactSuccessSound: +# path: /Audio/Animals/lizard_happy.ogg +# +#- type: entity +# name: FXES +# parent: MobXenoNeutralDrone +# id: MobXenoFXES +# description: A very clearly friend-shaped Xeno. +# components: +# - type: NpcFactionMember +# factions: +# - PetsNT +# - type: Tool +# speed: 3 +# qualities: +# - Prying +# - type: Inventory +# templateId: friendxeno +# - type: IdExaminable +# - type: InventorySlots +# - type: Strippable +# - type: UserInterface +# interfaces: +# - key: enum.StrippingUiKey.Key +# type: StrippableBoundUserInterface +# - type: Grammar +# attributes: +# proper: true +# gender: male +# - type: InteractionPopup +# successChance: 0.5 +# interactSuccessString: petting-success-reptile +# interactFailureString: petting-failure-generic +# interactSuccessSpawn: EffectHearts +# interactSuccessSound: +# path: /Audio/Animals/lizard_happy.ogg +# +#- type: entity +# name: Hell-Shaped +# parent: MobXenoNeutralRavager +# id: MobXenoHellShaped +# description: A very clearly friend-shaped Xeno. +# components: +# - type: NpcFactionMember +# factions: +# - PetsNT +# - type: Tool +# speed: 3 +# qualities: +# - Prying +# - type: Inventory +# templateId: friendxeno +# - type: IdExaminable +# - type: InventorySlots +# - type: Strippable +# - type: UserInterface +# interfaces: +# - key: enum.StrippingUiKey.Key +# type: StrippableBoundUserInterface +# - type: Grammar +# attributes: +# proper: true +# gender: male +# - type: InteractionPopup +# successChance: 0.5 +# interactSuccessString: petting-success-reptile +# interactFailureString: petting-failure-generic +# interactSuccessSpawn: EffectHearts +# interactSuccessSound: +# path: /Audio/Animals/lizard_happy.ogg +# +#- type: entity +# name: FXE Subject 7355 +# parent: MobXenoNeutralRavager +# id: MobXenoSubjectTess +# description: An extremely oddly coloured xeno, with glowing stripes. An odd mutation. +# components: +# - type: NpcFactionMember +# factions: +# - PetsNT +# - type: Tool +# speed: 3 +# qualities: +# - Prying +# - type: Sprite +# drawdepth: Mobs +# sprite: Mobs/Animals/subject7355.rsi +# layers: +# - map: ["enum.DamageStateVisualLayers.Base"] +# state: subject7355 +# - map: [ "enum.DamageStateVisualLayers.BaseUnshaded" ] +# state: glow +# shader: unshaded +# - type: PointLight +# radius: 2 +# energy: 1 +# color: "#639fff" +# - type: DamageStateVisuals +# states: +# Alive: +# Base: subject7355 +# Critical: +# Base: subject7355_crit +# Dead: +# Base: subject7355_dead +# - type: Inventory +# templateId: friendxeno +# - type: IdExaminable +# - type: InventorySlots +# - type: Strippable +# - type: UserInterface +# interfaces: +# - key: enum.StrippingUiKey.Key +# type: StrippableBoundUserInterface +# - type: Grammar +# attributes: +# proper: true +# gender: male +# - type: InteractionPopup +# successChance: 0.5 +# interactSuccessString: petting-success-reptile +# interactFailureString: petting-failure-generic +# interactSuccessSpawn: EffectHearts +# interactSuccessSound: +# path: /Audio/Animals/lizard_happy.ogg +# +#- type: entity +# id: neutralXenoVents +# parent: BaseGameRule +# noSpawn: true +# components: +# - type: StationEvent +# startAnnouncement: true +# earliestStart: 20 +# reoccurrenceDelay: 12 +# minimumPlayers: 1 +# weight: 6 # Really weak compared to other critters +# duration: 60 +# - type: VentCrittersRule +# entries: +# - id: MobXenoNeutralRouny +# prob: 0.008 +# - id: MobXenoNeutralDrone +# prob: 0.008 +# - id: MobXenoNeutralPraetorian +# prob: 0.008 +# - id: MobXenoNeutralRavager +# prob: 0.008 +# +#- type: entity +# id: ArgocyteVents +# parent: BaseGameRule +# noSpawn: true +# components: +# - type: StationEvent +# startAnnouncement: true +# earliestStart: 20 +# reoccurrenceDelay: 12 +# minimumPlayers: 30 +# weight: 6 # Really weak compared to other critters +# duration: 60 +# - type: VentCrittersRule +# entries: +# - id: MobArgocyteSlurva +# prob: 0.003 +# - id: MobArgocyteBarrier +# prob: 0.003 +# - id: MobArgocyteSkitter +# prob: 0.003 +# - id: MobArgocyteSwiper +# prob: 0.003 +# - id: MobArgocyteMolder +# prob: 0.003 +# - id: MobArgocytePouncer +# prob: 0.003 +# - id: MobArgocyteGlider +# prob: 0.003 +# - id: MobArgocyteHarvester +# prob: 0.003 +# - id: MobArgocyteCrawler +# prob: 0.003 +# - id: MobArgocyteEnforcer +# prob: 0.003 +# - id: MobArgocyteFounder +# prob: 0.003 +# - id: MobArgocyteLeviathing +# prob: 0.001 +# +#- type: entity +# id: MeatVents +# parent: BaseGameRule +# noSpawn: true +# components: +# - type: StationEvent +# startAnnouncement: true +# earliestStart: 20 +# reoccurrenceDelay: 12 +# minimumPlayers: 20 +# weight: 6 # Really weak compared to other critters +# duration: 60 +# - type: VentCrittersRule +# entries: +# - id: MobFleshJared +# prob: 0.005 +# - id: MobFleshGolem +# prob: 0.005 +# - id: MobFleshClamp +# prob: 0.005 +# - id: MobFleshLover +# prob: 0.005 +# - id: MobAbomination +# prob: 0.005 +# +#- type: entity +# id: TickVents +# parent: BaseGameRule +# noSpawn: true +# components: +# - type: StationEvent +# startAnnouncement: true +# earliestStart: 20 +# reoccurrenceDelay: 12 +# minimumPlayers: 1 +# weight: 6 # Really weak compared to other critters +# duration: 60 +# - type: VentCrittersRule +# entries: +# - id: MobTick +# prob: 0.01 +# +#- type: entity +# id: CarpVents +# parent: BaseGameRule +# noSpawn: true +# components: +# - type: StationEvent +# startAnnouncement: true +# earliestStart: 20 +# reoccurrenceDelay: 12 +# minimumPlayers: 20 +# weight: 6 # Really weak compared to other critters +# duration: 60 +# - type: VentCrittersRule +# entries: +# - id: MobCarp +# prob: 0.01 +# - id: MobCarpMagic +# prob: 0.01 +# - id: MobCarpHolo +# prob: 0.008 +# - id: MobCarpRainbow +# prob: 0.01 +# - id: MobShark +# prob: 0.008 +# - id: MobCarpDragon +# prob: 0.01 +# +#- type: entity +# id: SpaceVents +# parent: BaseGameRule +# noSpawn: true +# components: +# - type: StationEvent +# startAnnouncement: true +# earliestStart: 20 +# reoccurrenceDelay: 12 +# minimumPlayers: 20 +# weight: 6 # Really weak compared to other critters +# duration: 60 +# - type: VentCrittersRule +# entries: +# - id: MobBearSpace +# prob: 0.01 +# - id: MobKangarooSpace +# prob: 0.01 +# - id: MobSpiderSpace +# prob: 0.01 +# - id: MobCobraSpace +# prob: 0.01 +# +#- type: entity +# id: LightVents +# parent: BaseGameRule +# noSpawn: true +# components: +# - type: StationEvent +# startAnnouncement: true +# earliestStart: 20 +# reoccurrenceDelay: 12 +# minimumPlayers: 20 +# weight: 6 # Really weak compared to other critters +# duration: 60 +# - type: VentCrittersRule +# entries: +# - id: MobLivingLight +# prob: 0.01 +# - id: MobLuminousPerson +# prob: 0.01 +# - id: MobLuminousObject +# prob: 0.01 +# - id: MobLuminousEntity +# prob: 0.01 +# +#- type: entity +# name: Friendly Xeno spawner +# id: friendlyxenoSpawner +# parent: MarkerBase +# components: +# - type: Sprite +# layers: +# - state: green +# - sprite: Mobs/Aliens/Xenos/drone.rsi +# state: sleeping +# - type: RandomSpawner +# prototypes: +# - MobXenoNeutralRouny +# - MobXenoNeutralPraetorian +# - MobXenoNeutralDrone +# - MobXenoNeutralRavager +# chance: 1 diff --git a/Resources/Prototypes/Floof/CharacterItemGroups/funGroup.yml b/Resources/Prototypes/Floof/CharacterItemGroups/funGroup.yml new file mode 100644 index 00000000000..9bcedff2c23 --- /dev/null +++ b/Resources/Prototypes/Floof/CharacterItemGroups/funGroup.yml @@ -0,0 +1,46 @@ +- type: characterItemGroup + id: LoadoutFun + items: + - type: loadout + id: LoadoutItemLeashBasic + - type: loadout + id: LoadoutItemLeashShort + +# If you are ever going to add more: open regex101; in list mode, find "id: (.+)", replace with "- type: loadout\n id: $1\n", paste the result here +- type: characterItemGroup + id: LoadoutLewd + items: + - type: loadout + id: LoadoutItemLewdWand + - type: loadout + id: LoadoutItemLewdVibeGreen + - type: loadout + id: LoadoutItemLewdVibeTeal + - type: loadout + id: LoadoutItemLewdVibePink + - type: loadout + id: LoadoutItemLewdVibeRed + - type: loadout + id: LoadoutItemLewdVibeYellow + - type: loadout + id: LoadoutItemLewdFleshlightGreen + - type: loadout + id: LoadoutItemLewdFleshlightTeal + - type: loadout + id: LoadoutItemLewdFleshlightPink + - type: loadout + id: LoadoutItemLewdFleshlightRed + - type: loadout + id: LoadoutItemLewdFleshlightYellow + - type: loadout + id: LoadoutItemWhipPink + - type: loadout + id: LoadoutItemWhipTeal + - type: loadout + id: LoadoutItemWhipPinkCrotch + - type: loadout + id: LoadoutItemWhipTealCrotch + - type: loadout + id: LoadoutItemSpankPinkPaddle + - type: loadout + id: LoadoutItemSpankTealPaddle diff --git a/Resources/Prototypes/Floof/Entities/Objects/Tools/leash.yml b/Resources/Prototypes/Floof/Entities/Objects/Tools/leash.yml index c674d92913b..61609d781e2 100644 --- a/Resources/Prototypes/Floof/Entities/Objects/Tools/leash.yml +++ b/Resources/Prototypes/Floof/Entities/Objects/Tools/leash.yml @@ -26,6 +26,7 @@ detachDelay: 4 selfDetachDelay: 10 +# TODO this should be named LeashShort... - type: entity id: ShortLeash parent: BaseLeash diff --git a/Resources/Prototypes/Floof/Interactions/mood_interactions.yml b/Resources/Prototypes/Floof/Interactions/mood_interactions.yml new file mode 100644 index 00000000000..ec43dd4564d --- /dev/null +++ b/Resources/Prototypes/Floof/Interactions/mood_interactions.yml @@ -0,0 +1,36 @@ +- type: Interaction + id: Kiss + parent: [BaseGlobal, BaseHands] + priority: -1 + delay: 0.4 + range: {max: 1} + hideByRequirement: true + requirement: + !type:MobStateRequirement + inverted: true + action: + # TODO: this should pull the target closer or sumth, but I need to code that action first + !type:MoodAction + effect: BeingKissed + effectSuccess: + popup: Obvious + sound: {path: /Audio/Floof/Lewd/kiss.ogg} + +- type: Interaction + id: Lick + parent: [BaseGlobal, BaseHands] + priority: -2 + #icon: /Textures/Interface/Actions/hug.png + delay: 0.7 + range: {max: 1} + hideByRequirement: true + requirement: + !type:MobStateRequirement + inverted: true + action: + # TODO: this should pull the target closer or sumth, but I need to code that action first + !type:MoodAction + effect: BeingLicked + effectSuccess: + popup: Obvious + sound: {path: /Audio/Floof/Lewd/lick.ogg} diff --git a/Resources/Prototypes/Floof/Loadouts/Categories/categories.yml b/Resources/Prototypes/Floof/Loadouts/Categories/categories.yml new file mode 100644 index 00000000000..bba2370f90d --- /dev/null +++ b/Resources/Prototypes/Floof/Loadouts/Categories/categories.yml @@ -0,0 +1,4 @@ +# TODO make this a subcategory of items when EE splits items into subcategories +- type: loadoutCategory + id: ItemsLewd + root: true diff --git a/Resources/Prototypes/Floof/Loadouts/items.yml b/Resources/Prototypes/Floof/Loadouts/items.yml index 589648174cc..0cec29c6be0 100644 --- a/Resources/Prototypes/Floof/Loadouts/items.yml +++ b/Resources/Prototypes/Floof/Loadouts/items.yml @@ -11,3 +11,34 @@ cost: 0 items: - ClothingBeltSuspenders + +- type: loadout + id: LoadoutItemRemoteSignaller + category: Items + cost: 1 + items: + - RemoteSignaller + +# Leashes +- type: loadout + id: LoadoutItemLeashBasic + category: Items + cost: 2 + exclusive: true + items: + - LeashBasic + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutFun + +- type: loadout + id: LoadoutItemLeashShort + category: Items + cost: 2 + exclusive: true + items: + - ShortLeash + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutFun + diff --git a/Resources/Prototypes/Floof/Loadouts/itemsLewd.yml b/Resources/Prototypes/Floof/Loadouts/itemsLewd.yml new file mode 100644 index 00000000000..fb00f999dc3 --- /dev/null +++ b/Resources/Prototypes/Floof/Loadouts/itemsLewd.yml @@ -0,0 +1,181 @@ +# Note: only explicitly lewd items go into this category. +# Items with ambiguous uses like leashes should go into Items + +# Wands +- type: loadout + id: LoadoutItemLewdWand + category: ItemsLewd + cost: 2 + exclusive: true + items: + - LewdWand + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutLewd + +- type: loadout + id: LoadoutItemLewdVibeGreen + category: ItemsLewd + cost: 2 + exclusive: true + items: + - LewdVibeGreen + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutLewd + +- type: loadout + id: LoadoutItemLewdVibeTeal + category: ItemsLewd + cost: 2 + exclusive: true + items: + - LewdVibeTeal + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutLewd + +- type: loadout + id: LoadoutItemLewdVibePink + category: ItemsLewd + cost: 2 + exclusive: true + items: + - LewdVibePink + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutLewd + +- type: loadout + id: LoadoutItemLewdVibeRed + category: ItemsLewd + cost: 2 + exclusive: true + items: + - LewdVibeRed + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutLewd + +- type: loadout + id: LoadoutItemLewdVibeYellow + category: ItemsLewd + cost: 2 + exclusive: true + items: + - LewdVibeYellow + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutLewd + +# Fleshlights +- type: loadout + id: LoadoutItemLewdFleshlightGreen + category: ItemsLewd + cost: 2 + items: + - LewdFleshlightGreen + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutLewd + +- type: loadout + id: LoadoutItemLewdFleshlightTeal + category: ItemsLewd + cost: 2 + items: + - LewdFleshlightTeal + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutLewd + +- type: loadout + id: LoadoutItemLewdFleshlightPink + category: ItemsLewd + cost: 2 + items: + - LewdFleshlightPink + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutLewd + +- type: loadout + id: LoadoutItemLewdFleshlightRed + category: ItemsLewd + cost: 2 + items: + - LewdFleshlightRed + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutLewd + +- type: loadout + id: LoadoutItemLewdFleshlightYellow + category: ItemsLewd + cost: 2 + items: + - LewdFleshlightYellow + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutLewd + +# Whips +- type: loadout + id: LoadoutItemWhipPink + category: ItemsLewd + cost: 2 + items: + - WhipPink + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutLewd + +- type: loadout + id: LoadoutItemWhipTeal + category: ItemsLewd + cost: 2 + items: + - WhipTeal + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutLewd + +- type: loadout + id: LoadoutItemWhipPinkCrotch + category: ItemsLewd + cost: 2 + items: + - WhipPinkCrotch + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutLewd + +- type: loadout + id: LoadoutItemWhipTealCrotch + category: ItemsLewd + cost: 2 + items: + - WhipTealCrotch + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutLewd + +- type: loadout + id: LoadoutItemSpankPinkPaddle + category: ItemsLewd + cost: 2 + items: + - SpankPinkPaddle + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutLewd + +- type: loadout + id: LoadoutItemSpankTealPaddle + category: ItemsLewd + cost: 2 + items: + - SpankTealPaddle + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutLewd diff --git a/Resources/Prototypes/Floof/Loadouts/neck.yml b/Resources/Prototypes/Floof/Loadouts/neck.yml index 43cafedef76..482270e6dbf 100644 --- a/Resources/Prototypes/Floof/Loadouts/neck.yml +++ b/Resources/Prototypes/Floof/Loadouts/neck.yml @@ -53,3 +53,14 @@ requirements: - !type:CharacterItemGroupRequirement group: LoadoutNeck2 + +- type: loadout + id: LoadoutItemsNeckShockCollar + category: Neck + cost: 1 + exclusive: true + items: + - ShockCollar + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutNeck2 diff --git a/Resources/Prototypes/Floof/Mood/genericPositiveEffects.yml b/Resources/Prototypes/Floof/Mood/genericPositiveEffects.yml new file mode 100644 index 00000000000..9646bf40f83 --- /dev/null +++ b/Resources/Prototypes/Floof/Mood/genericPositiveEffects.yml @@ -0,0 +1,11 @@ +- type: moodEffect + id: BeingKissed + moodChange: 4 + timeout: 120 + category: PositiveInteraction + +- type: moodEffect + id: BeingLicked + moodChange: 4 + timeout: 120 + category: PositiveInteraction