Skip to content

Commit

Permalink
Merge branch 'master' into more-map-changes
Browse files Browse the repository at this point in the history
  • Loading branch information
Mnemotechnician authored Feb 15, 2025
2 parents 50108dc + ba6c680 commit 4e53cfc
Show file tree
Hide file tree
Showing 167 changed files with 2,557 additions and 312 deletions.
18 changes: 16 additions & 2 deletions Content.Client/Buckle/BuckleSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,17 @@
using Robust.Client.GameObjects;
using Robust.Client.Player;
using Robust.Shared.GameStates;
using Robust.Shared.Timing;


namespace Content.Client.Buckle;

internal sealed class BuckleSystem : SharedBuckleSystem
{
[Dependency] private readonly RotationVisualizerSystem _rotationVisualizerSystem = default!;
[Dependency] private readonly IPlayerManager _player = default!; // Floof
[Dependency] private readonly IGameTiming _timing = default!; // Floof
[Dependency] private readonly SharedTransformSystem _xform = default!; // Floof

public override void Initialize()
{
Expand Down Expand Up @@ -87,6 +91,10 @@ private void UpdateBucklesDrawDepth(EntityUid uid, StrapComponent component) {
if (!TryComp<SpriteComponent>(uid, out var strapSprite))
return;

// Floof - man, fuck prediction.
if (!_timing.IsFirstTimePredicted)
return;

var isNorth = GetEntityOrientation(uid) == Direction.North; // Floof - replaced with a method call
foreach (var buckledEntity in component.BuckledEntities)
{
Expand Down Expand Up @@ -124,9 +132,15 @@ private void OnAppearanceChange(EntityUid uid, BuckleComponent component, ref Ap
// Floof section - method for getting the direction of an entity perceived by the local player
private Direction GetEntityOrientation(EntityUid uid)
{
var ownRotation = Transform(uid).LocalRotation;
var xform = Transform(uid);
var ownRotation = xform.LocalRotation;
var eyeRotation =
TryComp<EyeComponent>(_player.LocalEntity, out var eye) ? eye.Rotation : Angle.Zero;
TryComp<EyeComponent>(_player.LocalEntity, out var eye) ? eye.Eye.Rotation : Angle.Zero;

// This is TOTALLY dumb, but the eye stores camera rotation relative to the WORLD, so we need to convert it to local rotation as well
// Cameras are also relative to grids (NOT direct parents), so we cannot just GetWorldRotation of the entity or something similar.
if (xform.GridUid is { Valid: true } grid)
eyeRotation += _xform.GetWorldRotation(grid);

// Note: we subtract instead of adding because e.g. rotating an eye +90° visually rotates all entities in vision by -90°
return (ownRotation + eyeRotation).GetCardinalDir();
Expand Down
20 changes: 14 additions & 6 deletions Content.Server/FloofStation/VoreSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@
using Content.Server.Nutrition.EntitySystems;
using Content.Shared.Interaction.Events;
using Content.Shared.Hands.EntitySystems;
using Robust.Shared.Player;

namespace Content.Server.FloofStation;

Expand Down Expand Up @@ -95,8 +94,11 @@ private void DevourVerb(EntityUid uid, VoreComponent component, GetVerbsEvent<In
if (!args.CanInteract
|| !args.CanAccess
|| args.User == args.Target
|| !HasComp<VoreComponent>(args.Target)
|| !_consent.HasConsent(args.User, "VorePred")
|| !TryComp<VoreComponent>(args.User, out var voreuser)
|| !voreuser.CanVore
|| !TryComp<VoreComponent>(args.Target, out var voretarget)
|| !voretarget.CanBeVored
|| !_consent.HasConsent(args.User, "Vore")
|| !_consent.HasConsent(args.Target, "Vore"))
return;

Expand All @@ -116,14 +118,17 @@ private void InsertSelfVerb(EntityUid uid, GetVerbsEvent<InnateVerb> args)
if (!args.CanInteract
|| !args.CanAccess
|| args.User == args.Target
|| !TryComp<VoreComponent>(args.Target, out var component)
|| !_consent.HasConsent(args.Target, "VorePred")
|| !TryComp<VoreComponent>(args.User, out var voreuser)
|| !voreuser.CanBeVored
|| !TryComp<VoreComponent>(args.Target, out var voretarget)
|| !voretarget.CanVore
|| !_consent.HasConsent(args.Target, "Vore")
|| !_consent.HasConsent(args.User, "Vore"))
return;

InnateVerb verbInsert = new()
{
Act = () => TryDevour(args.Target, args.User, component),
Act = () => TryDevour(args.Target, args.User, voretarget),
Text = Loc.GetString("action-name-insert-self"),
Category = VerbCategory.Interaction,
Icon = new SpriteSpecifier.Rsi(new ResPath("Interface/Actions/devour.rsi"), "icon"),
Expand Down Expand Up @@ -421,6 +426,9 @@ private void FullyDigest(EntityUid uid, EntityUid prey)

private void OnExamine(EntityUid uid, ExaminedEvent args)
{
if (!_consent.HasConsent(args.Examiner, "Vore"))
return;

if (!_containerSystem.TryGetContainer(uid, "stomach", out var stomach)
|| stomach.ContainedEntities.Count < 1)
return;
Expand Down
4 changes: 4 additions & 0 deletions Content.Shared/Body/Systems/SharedBodySystem.Body.cs
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,10 @@ private void OnBodyCanDrag(Entity<BodyComponent> ent, ref CanDragEvent args)

private void OnStandAttempt(Entity<BodyComponent> ent, ref StandAttemptEvent args)
{
// Floof - why did you not check for this???
if (ent.Comp.RequiredLegs <= 0)
return;

if (ent.Comp.LegEntities.Count == 0)
args.Cancel();
}
Expand Down
6 changes: 6 additions & 0 deletions Content.Shared/Floofstation/VoreComponent.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,12 @@ namespace Content.Shared.FloofStation;
[RegisterComponent]
public sealed partial class VoreComponent : Component
{
[DataField]
public bool CanVore = false;

[DataField]
public bool CanBeVored = true;

[DataField]
public float Delay = 5f;

Expand Down
4 changes: 2 additions & 2 deletions Content.Shared/Standing/SharedLayingDownSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -145,8 +145,8 @@ public bool TryStandUp(EntityUid uid, LayingDownComponent? layingDown = null, St
|| standingState.CurrentState is not StandingState.Lying
|| !_mobState.IsAlive(uid)
|| TerminatingOrDeleted(uid)
|| !TryComp<BodyComponent>(uid, out var body)
|| body.LegEntities.Count == 0
// || !TryComp<BodyComponent>(uid, out var body)
// || body.LegEntities.Count == 0 // Floof - whoever wrote this, I hate you.
|| !_actionBlocker.CanConsciouslyPerformAction(uid)) // Floof - check for consciousness instead of a no-brain DeBrainedComponent check (pun intended)
return false;

Expand Down
100 changes: 100 additions & 0 deletions Resources/Changelog/Floof.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2447,3 +2447,103 @@ Entries:
id: 305
time: '2025-01-24T17:45:56.0000000+00:00'
url: https://github.com/Fansana/floofstation1/pull/501
- author: Mnemotechnician
changes:
- type: Fix
message: >-
Borgs can stand up after falling again, and buckle layering should no
longer break when the grid you are standing on is incorrectly oriented.
id: 306
time: '2025-02-09T13:11:46.0000000+00:00'
url: https://github.com/Fansana/floofstation1/pull/541
- author: VividPups
changes:
- type: Add
message: >-
Added some standard engineering, logistics, and security outfits to the
loadouts, as well as the security longcoat.
id: 307
time: '2025-02-09T13:12:00.0000000+00:00'
url: https://github.com/Fansana/floofstation1/pull/540
- author: Forzii
changes:
- type: Tweak
message: Logistics can now buy plushie crates
id: 308
time: '2025-02-09T17:18:37.0000000+00:00'
url: https://github.com/Fansana/floofstation1/pull/533
- author: Mnemotechnician
changes:
- type: Fix
message: Submarine is back to the map pool.
id: 309
time: '2025-02-09T17:18:54.0000000+00:00'
url: https://github.com/Fansana/floofstation1/pull/536
- author: Eagle0600
changes:
- type: Add
message: Missing Logistics Officer items to loadout.
- type: Add
message: Chief Medical Officer longcoat loadout.
- type: Add
message: Paramedic cap, wind breaker, and winter boots loadout.
- type: Add
message: Various mask loadouts.
- type: Add
message: Corpsman arm warmers, thong, and thigh high socks.
- type: Tweak
message: >-
Reduced the cost of departmental arm warmers, thongs, and thigh high
socks to 0.
id: 310
time: '2025-02-10T15:35:22.0000000+00:00'
url: https://github.com/Fansana/floofstation1/pull/543
- author: VividPups
changes:
- type: Add
message: General Surgeon
id: 311
time: '2025-02-14T22:32:52.0000000+00:00'
url: https://github.com/Fansana/floofstation1/pull/516
- author: sowelipililimute
changes:
- type: Add
message: Sticky notes exist, and can be found in the bureaucracy crate
- type: Add
message: Bureaucracy crate has more and more varied folders
- type: Add
message: >-
Papermoon white and dyed paper reams are now available to spice up your
paperwork in the Bureaucracy crate
- type: Tweak
message: >-
Loose papers in the bureaucracy crate have been replaced with a ream of
white paper
id: 312
time: '2025-02-14T22:33:31.0000000+00:00'
url: https://github.com/Fansana/floofstation1/pull/556
- author: VividPups
changes:
- type: Add
message: Added the Handheld radio to the autolathe.
id: 313
time: '2025-02-15T19:06:40.0000000+00:00'
url: https://github.com/Fansana/floofstation1/pull/554
- author: FoxxoTrystan
changes:
- type: Tweak
message: Vore features are now hidden if the vore option is toggled off.
- type: Tweak
message: Merged Vore Prey / Pred into one consent option.
id: 314
time: '2025-02-15T19:36:40.0000000+00:00'
url: https://github.com/Fansana/floofstation1/pull/544
- author: Crow
changes:
- type: Fix
message: fixed localization bug relating to senior roles.
- type: Fix
message: moved senior cosmetics to job/[department]/all tab
id: 315
time: '2025-02-15T19:43:10.0000000+00:00'
url: https://github.com/Fansana/floofstation1/pull/549
7 changes: 2 additions & 5 deletions Resources/Locale/en-US/Blep/consent.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,8 @@ consent-examine-verb = Consent Info
consent-examine-not-set = This player has no consent preferences set. Ask for consent first before engaging in any erotic roleplay.
# Consent toggles
consent-Vore-name = Vore Prey
consent-Vore-desc = Allow yourself to be devoured by anyone... or anything.
consent-VorePred-name = Vore Pred
consent-VorePred-desc = Allow to devoured critters... or anyone that has the consent option 'vore' enabled.
consent-Vore-name = Vore
consent-Vore-desc = Allow yourself to be predator or prey.
consent-Digestion-name = Digestion
consent-Digestion-desc = Allow yourself to be digested. WARNING: BEING DIGESTED WILL ROUND-REMOVE YOU.
Expand Down
1 change: 1 addition & 0 deletions Resources/Locale/en-US/Floof/paper/stamp-componet.ftl
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
stamp-component-stamped-name-surgeon-general = Surgeon General
3 changes: 3 additions & 0 deletions Resources/Locale/en-US/job/job-names.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ job-name-cadet = Security Cadet
job-name-hos = Head of Security
job-name-detective = Detective
job-name-brigmedic = Corpsman
job-name-senior-officer = Senior Officer
job-name-borg = Cyborg
job-name-senior-researcher = Mystic
job-name-scientist = Acolyte
Expand All @@ -16,9 +17,11 @@ job-name-doctor = Medical Doctor
job-name-paramedic = Paramedic
job-name-cmo = Chief Medical Officer
job-name-chemist = Chemist
job-name-senior-physician = Senior Physician
job-name-technical-assistant = Technical Assistant
job-name-engineer = Station Engineer
job-name-atmostech = Atmospheric Technician
job-name-senior-engineer = Senior Engineer
job-name-hop = Head of Personnel
job-name-captain = Captain
job-name-serviceworker = Service Worker
Expand Down
2 changes: 1 addition & 1 deletion Resources/Prototypes/Catalog/Fills/Crates/fun.yml
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@
id: CrateFunPlushie
parent: CrateGenericSteel
name: plushie crate
description: A buncha soft plushies. Throw them around and then wonder how you're gonna explain this purchase to NT.
description: A bunch of older plushies from another sector, you'll have to look elsewhere for the newer models. Throw them around and then wonder how you're gonna explain this purchase to NT. # Description modified for Floofstation - though we could always update the plushie table...
components:
- type: EntityTableContainerFill
containers:
Expand Down
27 changes: 25 additions & 2 deletions Resources/Prototypes/Catalog/Fills/Crates/service.yml
Original file line number Diff line number Diff line change
Expand Up @@ -117,17 +117,40 @@
components:
- type: StorageFill
contents:
- id: Paper
amount: 15
# DeltaV - replace the paper in the bureaucracy crate with a ream
- id: BoxReamWhite
# - id: Paper
# amount: 15
- id: Pen
amount: 2
- id: BoxFolderClipboard
amount: 2
- id: HandLabeler
- id: BoxFolderBlue
amount: 2 # DeltaV - more folders in the bureacracy crate
- id: BoxFolderRed
amount: 2 # DeltaV - more folders in the bureacracy crate
- id: BoxFolderYellow
amount: 2 # DeltaV - more folders in the bureacracy crate
# Begin DeltaV: sticky notes
- id: PaperStickyNoteStackFilled
- id: PaperStickyNoteStackFilledPink
- id: PaperStickyNoteStackFilledGreen
- id: PaperStickyNoteStackFilledBlue
# End DeltaV: sticky notes
- id: NewtonCradle
#- id: BoxEnvelope Floof - Removed until envelopes are added.
- id: BrbSign
# Start DeltaV - More folders & colored paper reams in the bureaucracy crate
- id: BoxFolderBlack
amount: 2
- id: BoxFolderGrey
amount: 2
- id: BoxFolderGreen
amount: 2
- id: BoxReamClassic
- id: BoxReamBright
# End DeltaV - More folders & colored paper reams in the bureaucracy crate

- type: entity
id: CrateServicePersonnel
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,12 @@
- type: loadout
id: LoadoutCommandFlash

#- type: characterItemGroup
# id: LoadoutCommandEyes
# maxItems: 1
# items:
- type: characterItemGroup
id: LoadoutCommandEyes
maxItems: 1
items:
- type: loadout
id: LoadoutCommandEyesCommand

#- type: characterItemGroup
# id: LoadoutCommandGloves
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,3 +92,5 @@
id: LoadingEngineeringAtmosUniformSuit
- type: loadout
id: LoadingEngineeringAtmosUniformSkirt
- type: loadout
id: LoadoutEngineeringClothingUniformJumpsuitAtmosCasual
Original file line number Diff line number Diff line change
Expand Up @@ -93,3 +93,7 @@
id: LoadoutEngineeringUniformSkirt
- type: loadout
id: LoadoutEngineeringUniformHazard
- type: loadout
id: LoadoutEngineeringUniformJumpsuitSenior
- type: loadout
id: LoadoutEngineeringUniformJumpskirtSenior
Original file line number Diff line number Diff line change
Expand Up @@ -87,14 +87,20 @@
id: LoadoutScienceOuterExplorerLabcoat
- type: loadout
id: LoadoutOuterRobeTechPriest
- type: loadout
id: LoadoutScienceOuterLabcoatSeniorResearcher

- type: characterItemGroup
id: LoadoutEpistemicsShoes
items:
- type: loadout
id: LoadoutScienceShoesBootsWinterSci

#- type: characterItemGroup
# id: LoadoutEpistemicsUniforms
# maxItems: 1
# items:
- type: characterItemGroup
id: LoadoutEpistemicsUniforms
maxItems: 1
items:
- type: loadout
id: LoadoutScienceUniformJumpsuitSenior
- type: loadout
id: LoadoutScienceUniformJumpskirtSenior
Loading

0 comments on commit 4e53cfc

Please sign in to comment.