Skip to content

Commit

Permalink
Merge branch 'master' into per-character-consent-menu
Browse files Browse the repository at this point in the history
  • Loading branch information
Memeji committed Sep 3, 2024
2 parents c77db86 + 231a520 commit 9dc111b
Show file tree
Hide file tree
Showing 21 changed files with 522 additions and 53 deletions.
3 changes: 2 additions & 1 deletion Content.Server/Body/Components/MetabolizerComponent.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using Content.Server.Body.Systems;
using Content.Server.Floofstation.Traits;
using Content.Server.Traits.Assorted;
using Content.Shared.Body.Prototypes;
using Content.Shared.FixedPoint;
Expand Down Expand Up @@ -45,7 +46,7 @@ public sealed partial class MetabolizerComponent : Component
/// List of metabolizer types that this organ is. ex. Human, Slime, Felinid, w/e.
/// </summary>
[DataField]
[Access(typeof(MetabolizerSystem), typeof(LiquorLifelineSystem), Other = AccessPermissions.ReadExecute)] // FIXME Friends
[Access(typeof(MetabolizerSystem), typeof(LiquorLifelineSystem), typeof(VampirismSystem), Other = AccessPermissions.ReadExecute)] // Floofstation
public HashSet<ProtoId<MetabolizerTypePrototype>>? MetabolizerTypes = null;

/// <summary>
Expand Down
2 changes: 2 additions & 0 deletions Content.Server/Body/Components/StomachComponent.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using Content.Server.Body.Systems;
using Content.Server.Floofstation.Traits;
using Content.Server.Nutrition.EntitySystems;
using Content.Shared.Chemistry.Components;
using Content.Shared.Chemistry.Reagent;
Expand Down Expand Up @@ -45,6 +46,7 @@ public sealed partial class StomachComponent : Component
/// A whitelist for what special-digestible-required foods this stomach is capable of eating.
/// </summary>
[DataField]
[Access(Other = AccessPermissions.ReadWriteExecute)] // Floofstation
public EntityWhitelist? SpecialDigestible = null;

/// <summary>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
using Content.Server.Body.Components;
using Content.Shared.Body.Prototypes;
using Content.Shared.Whitelist;
using Robust.Shared.Prototypes;

namespace Content.Server.Floofstation.Traits.Components;

/// <summary>
/// Enables the mob to suck blood from other mobs to replenish its own saturation.
/// Must be fully initialized before being added to a mob.
/// </summary>
[RegisterComponent]
public sealed partial class VampirismComponent : Component
{
[DataField]
public HashSet<ProtoId<MetabolizerTypePrototype>> MetabolizerPrototypes = new() { "Vampiric", "Animal" };

/// <summary>
/// A whitelist for what special-digestible-required foods the vampire's stomach is capable of eating.
/// </summary>
[DataField]
public EntityWhitelist? SpecialDigestible = null;

[DataField]
public TimeSpan SuccDelay = TimeSpan.FromSeconds(1);

[DataField]
public float UnitsToSucc = 10;
}
51 changes: 51 additions & 0 deletions Content.Server/FloofStation/Traits/VampirismSystem.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
using Content.Server.Body.Components;
using Content.Server.Floofstation.Traits.Components;
using Content.Server.Vampiric;
using Content.Shared.Body.Components;
using Content.Shared.Body.Systems;

namespace Content.Server.Floofstation.Traits;

public sealed class VampirismSystem : EntitySystem
{
[Dependency] private readonly SharedBodySystem _body = default!;

public override void Initialize()
{
SubscribeLocalEvent<VampirismComponent, MapInitEvent>(OnInitVampire);
}

private void OnInitVampire(Entity<VampirismComponent> ent, ref MapInitEvent args)
{
EnsureBloodSucker(ent);

if (!TryComp<BodyComponent>(ent, out var body)
|| !_body.TryGetBodyOrganComponents<MetabolizerComponent>(ent, out var comps, body))
return;

foreach (var (metabolizer, organ) in comps)
{
if (!TryComp<StomachComponent>(organ.Owner, out var stomach))
continue;

metabolizer.MetabolizerTypes = ent.Comp.MetabolizerPrototypes;

if (ent.Comp.SpecialDigestible is {} whitelist)
stomach.SpecialDigestible = whitelist;
}
}

private void EnsureBloodSucker(Entity<VampirismComponent> uid)
{
if (HasComp<BloodSuckerComponent>(uid))
return;

AddComp(uid, new BloodSuckerComponent
{
Delay = uid.Comp.SuccDelay,
InjectWhenSucc = false, // The code for it is deprecated, might wanna make it inject something when (if?) it gets reworked
UnitsToSucc = uid.Comp.UnitsToSucc,
WebRequired = false
});
}
}
44 changes: 44 additions & 0 deletions Resources/Changelog/Floof.yml
Original file line number Diff line number Diff line change
Expand Up @@ -761,3 +761,47 @@ Entries:
message: Upstream merge. See the einstein-engines changelog tab for more details!
id: 104
time: '2024-08-31T20:33:10.0000000+00:00'
- author: neuPanda
changes:
- type: Add
message: Sake Recipe
id: 105
time: '2024-09-01T18:52:34.0000000+00:00'
- author: Tryded
changes:
- type: Fix
message: Fixed Glacier not having its Justice Roles
id: 106
time: '2024-09-01T18:53:22.0000000+00:00'
- author: neuPanda
changes:
- type: Tweak
message: Roboticist Guide Book Text
id: 107
time: '2024-09-01T18:53:49.0000000+00:00'
- author: Memeji
changes:
- type: Add
message: Whips and Paddles to lockers.
id: 108
time: '2024-09-01T18:55:37.0000000+00:00'
- author: ShatteredSwords
changes:
- type: Tweak
message: Many trait costs have been cheapened, some traits have been changed.
id: 109
time: '2024-09-01T23:06:43.0000000+00:00'
- author: Mnemotechnician
changes:
- type: Tweak
message: >-
The vampirism trait now changes your body's metabolism to the vampiric
type, making you unable to eat normal food and requiring you to drink
blood to survive.
- type: Add
message: >-
A new "hollow fangs" trait has been added. It simply allows you to suck
(and metabolize) blood, without the benefits and drawbacks of being a
vampire.
id: 110
time: '2024-09-02T03:14:35.0000000+00:00'
8 changes: 7 additions & 1 deletion Resources/Locale/en-US/Floof/traits/traits.ftl
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
trait-name-Vampirism = Vampirism
trait-description-Vampirism = Whether through implantation, genetic modification, or evolution, you have a pair of hollow, sharp fangs used to drink iron-based blood from the beings that contain it.
trait-description-Vampirism =
Your body has evolved to be able to suck blood from beings that contain it and metabolize it into useful compounds.
You cannot eat normal food, but drinking blood satiates your hunger and thirst, and also improves your health.
trait-name-HollowFangs = Hollow fangs
trait-description-HollowFangs =
Whether through implantation, genetic modification, or evolution, you have a pair of hollow, sharp fangs used to drink iron-based blood from the beings that contain it.
trait-name-CumProducer = Cock
trait-description-CumProducer = You have a schlong between your legs.
Expand Down
42 changes: 40 additions & 2 deletions Resources/Prototypes/Catalog/Fills/Lockers/misc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -223,8 +223,27 @@
prob: 0.02
orGroup: Lewd
- id: DoubleDildo
prob: 0.02 # Floof - End
prob: 0.02
orGroup: Lewd
- id: WhipPink
prob: 0.01
orGroup: Lewd
- id: WhipTeal
prob: 0.01
orGroup: Lewd
- id: WhipPinkCrotch
prob: 0.01
orGroup: Lewd
- id: WhipTealCrotch
prob: 0.01
orGroup: Lewd
- id: SpankPinkPaddle
prob: 0.01
orGroup: Lewd
- id: SpankTealPaddle
prob: 0.01
orGroup: Lewd
# Floof - End
# Syndicate loot
- id: null
prob: 0.95
Expand Down Expand Up @@ -372,8 +391,27 @@
prob: 0.02
orGroup: Lewd
- id: DoubleDildo
prob: 0.02 # Floof - End
prob: 0.02
orGroup: Lewd
- id: WhipPink
prob: 0.01
orGroup: Lewd
- id: WhipTeal
prob: 0.01
orGroup: Lewd
- id: WhipPinkCrotch
prob: 0.01
orGroup: Lewd
- id: WhipTealCrotch
prob: 0.01
orGroup: Lewd
- id: SpankPinkPaddle
prob: 0.01
orGroup: Lewd
- id: SpankTealPaddle
prob: 0.01
orGroup: Lewd
# Floof - End
# Syndicate loot
- id: null
prob: 0.95
Expand Down
14 changes: 7 additions & 7 deletions Resources/Prototypes/Entities/Mobs/NPCs/dogs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -69,13 +69,13 @@
- type: DogVision
- type: NpcFactionMember
factions:
- Pibble
- type: HTN
rootTask:
task: SimpleHostileCompound
blackboard:
NavSmash: !type:Bool
true
- SimpleNeutral
# - type: HTN
# rootTask:
# task: SimpleHostileCompound
# blackboard:
# NavSmash: !type:Bool
# true
- type: Grammar
attributes:
proper: true
Expand Down
12 changes: 7 additions & 5 deletions Resources/Prototypes/Floof/Catalog/Fills/Crates/lewd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,13 @@
- id: NormalDildo
- id: TentacleDildo
- id: DoubleDildo
- id: WhipPink
- id: WhipTeal
- id: WhipPinkCrotch
- id: WhipTealCrotch
- id: SpankPinkPaddle
- id: SpankTealPaddle
- id: DrinkCumBottleFull
amount: 3
- id: DrinkNNNCan
amount: 3
- id: LeashBasic
amount: 2
- id: LeashBasic
- id: ShortLeash
amount: 2
11 changes: 11 additions & 0 deletions Resources/Prototypes/Floof/Recipes/Reactions/drinks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -762,3 +762,14 @@
amount: 1
products:
YeOlHandy: 5

- type: reaction
id: Sake
reactants:
Rice:
amount: 1
Enzyme:
amount: 1
catalyst: true
products:
Sake: 1
49 changes: 38 additions & 11 deletions Resources/Prototypes/Floof/Traits/physical.yml
Original file line number Diff line number Diff line change
@@ -1,27 +1,54 @@
- type: trait
id: Vampirism # You may port this to EE, you have my permission!
category: Physical
points: -1
points: 3
requirements:
- !type:CharacterJobRequirement
inverted: true
jobs:
- Borg
- MedicalBorg
- !type:CharacterSpeciesRequirement # This will be removed once you can edit organs with traits
- !type:CharacterSpeciesRequirement
inverted: true
species:
- Moth
- Oni
- Diona
- SlimePerson
- Human
- IPC
- !type:CharacterTraitRequirement
inverted: true
traits:
- HollowFangs
components:
- type: Vampirism
succDelay: 3
specialDigestible: # Vampires cannot eat food chat is that real
tags:
- IceCream
- Pill
- Crayon
- Paper

- type: trait
id: HollowFangs
category: Physical
points: -2
requirements:
- !type:CharacterJobRequirement
inverted: true
jobs:
- Borg
- MedicalBorg
- !type:CharacterSpeciesRequirement
inverted: true
species:
- IPC
- !type:CharacterTraitRequirement
inverted: true
traits:
- Vampirism
components:
- type: BloodSucker
unitsToSucc: 10
injectWhenSucc: false
webRequired: false
- type: Vampirism
succDelay: 5
metabolizerPrototypes:
- Animal

- type: trait
id: Weakness
Expand Down
3 changes: 2 additions & 1 deletion Resources/Prototypes/Maps/Pools/default.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,5 @@
- Shoukou
- Tortuga
- TheHive
- Submarine
- Saltern
- Glacier
1 change: 1 addition & 0 deletions Resources/Prototypes/Maps/core.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,3 +64,4 @@
Musician: [ 1, 3 ]
Boxer: [ 2, 4 ]
Reporter: [ 2, 4 ]
Passenger: [ -1, -1 ]
9 changes: 8 additions & 1 deletion Resources/Prototypes/Maps/glacier.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,17 @@
ServiceWorker: [ 2, 3 ]
Janitor: [ 2, 2 ]
Mime: [ 1, 2 ]
Passenger: [ -1, -1 ]
#engineering
ChiefEngineer: [ 1, 1 ]
AtmosphericTechnician: [ 1, 2 ]
StationEngineer: [ 2, 3 ]
TechnicalAssistant: [ 2, 2 ]
#justice added by FloofStation
ChiefJustice: [ 1, 1 ] #FloofStation
Clerk: [ 1, 1 ] #FloofStation
Lawyer: [ 2, 2 ] #FloofStation
Prosecutor: [ 1, 1 ] #FloofStation
#medical
ChiefMedicalOfficer: [ 1, 1 ]
Chemist: [ 1, 2 ]
Expand All @@ -63,9 +69,10 @@
SecurityCadet: [ 1, 2 ]
Brigmedic: [ 1, 1 ]
Prisoner: [ 2, 3 ]
Lawyer: [ 2, 2 ]
# Lawyer: [ 2, 2 ]
#logistics
Quartermaster: [ 1, 1 ]
MailCarrier: [ 2, 3 ]
SalvageSpecialist: [ 2, 3 ]
CargoTechnician: [ 2, 3 ]

1 change: 1 addition & 0 deletions Resources/Prototypes/Maps/saltern.yml
Original file line number Diff line number Diff line change
Expand Up @@ -62,4 +62,5 @@
Clown: [ 1, 1 ]
Mime: [ 1, 1 ]
Musician: [ 1, 2 ]
Passenger: [ -1, -1 ]

Loading

0 comments on commit 9dc111b

Please sign in to comment.