Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

💀 #174

Merged
merged 34 commits into from
Jan 12, 2025
Merged

💀 #174

merged 34 commits into from
Jan 12, 2025

Conversation

GeneralGaws
Copy link
Collaborator

@GeneralGaws GeneralGaws commented Jan 11, 2025

Summary by CodeRabbit

Based on the comprehensive changes, here are the release notes:

New Features

  • Added a new Surgeon job role with specialized medical capabilities
  • Introduced anesthesia mechanics for surgical procedures
  • Added new clothing options including various suits and skirts for different roles
  • Implemented cold weather ponchos for Security roles
  • Added new traits like Machine Incompatible and Depression
  • Introduced painkillers as a new medical item

Gameplay Changes

  • Surgery now requires anesthesia instead of forced sleep
  • Expanded medical mechanics with new components and systems
  • Modified job distributions across different maps
  • Updated cargo and medical supply inventories

Bug Fixes

  • Refined medical system interactions
  • Improved character trait and status effect management

Refactors

  • Updated various system components related to medical and robotics interactions
  • Streamlined clothing and uniform prototypes
  • Cleaned up deprecated tags and status effects

Lyndomen and others added 30 commits January 10, 2025 03:34
* pain ops

* Update cargo_medical.yml

Signed-off-by: Lyndomen <49795619+Lyndomen@users.noreply.github.com>

---------

Signed-off-by: Lyndomen <49795619+Lyndomen@users.noreply.github.com>
* Mostly done, just needs some messaging added

Going to change the description for the unborgable brain and add a popup.

* Inspection says if brain has trait

* Comments

* Moved comment, removed body, localized, etc.

* move to shared, shitmed ready, add warning to health analyzer

* pro

* remove old component

* untroll brain system

* :trollface:

* :trollface:

* fix

---------

Signed-off-by: deltanedas <39013340+deltanedas@users.noreply.github.com>
Co-authored-by: deltanedas <@deltanedas:kde.org>
Co-authored-by: deltanedas <39013340+deltanedas@users.noreply.github.com>
* lighthouse update

* use AI turrets

* use cap access for turrets button

---------

Co-authored-by: deltanedas <@deltanedas:kde.org>
Co-authored-by: deltanedas <@deltanedas:kde.org>
* Byoin surgery accommodation

* Add surgeon slot

* Removed Lines
…tion#2689)

* Snek hiss ops

* Lizard mob changes

In case we don't wanna merge this bit
* Suits Suits Suits

* typo oops

* Restructuring

* Ctrl Z Oops

* Learn Every Day

* Whitespace cleaning

* Forgot To Swap A Thing

* Make the Bartender suit be a reward

* Fix json formatting

* Fix detdrobe.yml

* Fix curadrobe.yml whitespace

* Fix more whitespaces

* Fix missing clothes from loadout

* Raised to pass the test

---------

Co-authored-by: unknown <193618231+MintyTheBinty@users.noreply.github.com>
* Replace ForcedSleeping with Anesthesia for surgery checks

* Add Anesthesia to NO2, Nocturine, and ChloralHydrate
Co-authored-by: deltanedas <@deltanedas:kde.org>
* Adds a random spawner for laws

* lawsuit evasion

* rekajigger

* indent

Signed-off-by: deltanedas <39013340+deltanedas@users.noreply.github.com>

---------

Signed-off-by: deltanedas <39013340+deltanedas@users.noreply.github.com>
Co-authored-by: Velcroboy <velcroboy333@hotmail.com>
Co-authored-by: deltanedas <39013340+deltanedas@users.noreply.github.com>
* Adds Surgeon

also revamps surgery

* Update asterisk.yml

:trollface:
TadJohnson00 and others added 4 commits January 11, 2025 07:43
* add cold weather ponchos

* parent CWPArctic off CWPSec

* increase size of CWP

* add CWP recipe to lathe and two to secdrobe

* indents and recipe cleanup

* punnet square ops
Co-authored-by: Velcroboy <velcroboy333@hotmail.com>
Copy link

coderabbitai bot commented Jan 11, 2025

Walkthrough

This pull request introduces several significant changes across multiple systems in the game, focusing on medical, surgical, and character customization mechanics. Key modifications include the introduction of an AnesthesiaComponent, a new Surgeon job role, enhanced surgery mechanics that require anesthesia instead of forced sleep, and the addition of numerous new clothing items and loadouts. The changes also involve updating job availabilities, adding new traits like Unborgable and Depression, and expanding the game's medical and character interaction systems.

Changes

File Change Summary
Content.Client/Doors/DoorSystem.cs Simplified RSI property setting in OnAppearanceChange method
Content.Client/HealthAnalyzer/UI/HealthAnalyzerWindow.xaml.cs Added UnborgableSystem dependency and enhanced alert system
Content.Server/_Shitmed/Medical/Surgery/SurgerySystem.cs Replaced ForcedSleepingComponent checks with AnesthesiaComponent
Content.Shared/_DV/Surgery/AnesthesiaComponent.cs New component for anesthesia status effect
Content.Shared/_DV/Traits/Assorted/UnborgableComponent.cs New component preventing brain transfer to MMI
Content.Shared/_DV/Traits/Assorted/UnborgableSystem.cs New system for managing unborgable entities
Localization Files Added new messages, job descriptions, and trait descriptions
Prototype Files Updated job availabilities, added new clothing items, traits, and loadouts

Sequence Diagram

sequenceDiagram
    participant Player
    participant HealthAnalyzer
    participant UnborgableSystem
    participant Surgery
    participant AnesthesiaComponent

    Player->>HealthAnalyzer: Use health analyzer
    HealthAnalyzer->>UnborgableSystem: Check if entity is unborgable
    UnborgableSystem-->>HealthAnalyzer: Return unborgable status
    HealthAnalyzer->>HealthAnalyzer: Display alert if unborgable

    Player->>Surgery: Perform surgical procedure
    Surgery->>AnesthesiaComponent: Check for anesthesia
    AnesthesiaComponent-->>Surgery: Confirm anesthesia status
    Surgery->>Surgery: Modify damage and behavior
Loading

Possibly Related PRs

Suggested Labels

size/S, medical, gameplay-mechanics, character-customization

Poem

🐰 Surgical Whispers

In halls of steel and healing light,
A rabbit's tale of medical might
Anesthesia drifts, soft and slow
Where surgeons' skills and kindness grow

🩺✨


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR. (Beta)
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

RSI Diff Bot; head commit 4bccb4e merging into 9cffeab
This PR makes changes to 1 or more RSIs. Here is a summary of all changes:

Resources/Textures/_DV/Clothing/Neck/Misc/cwparctic.rsi

State Old New Status
equipped-NECK Added
icon Added
inhand-left Added
inhand-right Added

Resources/Textures/_DV/Clothing/Neck/Misc/cwpsec.rsi

State Old New Status
equipped-NECK Added
icon Added
inhand-left Added
inhand-right Added

Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/brosblazer.rsi

State Old New Status
equipped-INNERCLOTHING-monkey Added
equipped-INNERCLOTHING Added
icon Added
inhand-left Added
inhand-right Added

Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/brownsuit.rsi

State Old New Status
equipped-INNERCLOTHING-monkey Added
equipped-INNERCLOTHING Added
icon Added
inhand-left Added
inhand-right Added

Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/creamsuit.rsi

State Old New Status
equipped-INNERCLOTHING-monkey Added
equipped-INNERCLOTHING Added
icon Added
inhand-left Added
inhand-right Added

Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/detectivesuit.rsi

State Old New Status
equipped-INNERCLOTHING-monkey Added
equipped-INNERCLOTHING Added
icon Added
inhand-left Added
inhand-right Added

Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/funeralsuit.rsi

State Old New Status
equipped-INNERCLOTHING-monkey Added
equipped-INNERCLOTHING Added
icon Added
inhand-left Added
inhand-right Added

Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/hitmansuit.rsi

State Old New Status
equipped-INNERCLOTHING-monkey Added
equipped-INNERCLOTHING Added
icon Added
inhand-left Added
inhand-right Added

Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/miamivice.rsi

State Old New Status
equipped-INNERCLOTHING-monkey Added
equipped-INNERCLOTHING Added
icon Added
inhand-left Added
inhand-right Added

Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/mrspacewide.rsi

State Old New Status
equipped-INNERCLOTHING-monkey Added
equipped-INNERCLOTHING Added
icon Added
inhand-left Added
inhand-right Added

Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/nightclubsuit.rsi

State Old New Status
equipped-INNERCLOTHING-monkey Added
equipped-INNERCLOTHING Added
icon Added
inhand-left Added
inhand-right Added

Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/senior_bartender.rsi

State Old New Status
equipped-INNERCLOTHING-monkey Added
equipped-INNERCLOTHING Added
icon Added
inhand-left Added
inhand-right Added

Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/brosblazer.rsi

State Old New Status
equipped-INNERCLOTHING-monkey Added
equipped-INNERCLOTHING Added
icon Added
inhand-left Added
inhand-right Added

Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/brownsuit.rsi

State Old New Status
equipped-INNERCLOTHING-monkey Added
equipped-INNERCLOTHING Added
icon Added
inhand-left Added
inhand-right Added

Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/creamsuit.rsi

State Old New Status
equipped-INNERCLOTHING-monkey Added
equipped-INNERCLOTHING Added
icon Added
inhand-left Added
inhand-right Added

Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/detectivesuit.rsi

State Old New Status
equipped-INNERCLOTHING-monkey Added
equipped-INNERCLOTHING Added
icon Added
inhand-left Added
inhand-right Added

Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/funeralsuit.rsi

State Old New Status
equipped-INNERCLOTHING-monkey Added
equipped-INNERCLOTHING Added
icon Added
inhand-left Added
inhand-right Added

Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/hitmansuit.rsi

State Old New Status
equipped-INNERCLOTHING-monkey Added
equipped-INNERCLOTHING Added
icon Added
inhand-left Added
inhand-right Added

Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/miamivice.rsi

State Old New Status
equipped-INNERCLOTHING-monkey Added
equipped-INNERCLOTHING Added
icon Added
inhand-left Added
inhand-right Added

Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/mrspacewide.rsi

State Old New Status
equipped-INNERCLOTHING-monkey Added
equipped-INNERCLOTHING Added
icon Added
inhand-left Added
inhand-right Added

Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/nightclubsuit.rsi

State Old New Status
equipped-INNERCLOTHING-monkey Added
equipped-INNERCLOTHING Added
icon Added
inhand-left Added
inhand-right Added

Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/senior_bartender.rsi

State Old New Status
equipped-INNERCLOTHING-monkey Added
equipped-INNERCLOTHING Added
icon Added
inhand-left Added
inhand-right Added

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 7

🔭 Outside diff range comments (3)
Resources/Maps/hive.yml (1)

Line range hint 192684-192767: Fix negative door timing values.

Multiple doors have negative secondsUntilStateChange values (ranging from -179934.36 to -179653.1). This could cause unexpected behavior in door operations.

Consider resetting these values to positive numbers or zero if the doors should remain in their current state.

Resources/Prototypes/_DV/Recipes/Lathes/medical.yml (1)

Removed recipes are for actively used items

These items are still referenced throughout the codebase:

  • AACTablet: Used in loadouts, maps, and has extensive UI/system implementation
  • LauncherSyringe: Present in multiple maps and research trees
  • MiniSyringe: Referenced in maps and research trees

Let's verify if alternative crafting methods exist:

#!/bin/bash
# Search for alternative crafting methods
echo "Searching for alternative crafting methods..."
rg -l "result: (AACTablet|LauncherSyringe|MiniSyringe)" --type yaml
🔗 Analysis chain

Line range hint 1-24: Verify impact of removed medical recipes

The removal of AACTablet, LauncherSyringe, and MiniSyringe recipes could impact existing medical gameplay mechanics. Please ensure these items are either:

  1. Available through alternative means
  2. Intentionally removed as part of the medical system overhaul

Let's verify the usage of these items:

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for references to removed items
echo "Searching for AACTablet references..."
rg "AACTablet"
echo "Searching for LauncherSyringe references..."
rg "LauncherSyringe"
echo "Searching for MiniSyringe references..."
rg "MiniSyringe"

Length of output: 3872

Resources/Prototypes/_DV/Catalog/Fills/Crates/medical.yml (1)

Broken cargo product reference found

The removal of CrateGenericRadioImplants from medical.yml has created a broken reference in the cargo system:

  • RadioImplantCrate in cargo_medical.yml still references the removed CrateGenericRadioImplants as its product
  • This will cause issues when players attempt to order radio implants through cargo
🔗 Analysis chain

Line range hint 1-10: Verify impact of removed radio implant crate

The removal of CrateGenericRadioImplants could affect communication options. Please ensure this functionality is available through alternative means.

Let's check for other radio implant sources:

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for radio implant availability
echo "Checking for radio implant alternatives..."
rg "RadioImplant"

Length of output: 5999


Script:

#!/bin/bash
# Check cargo_medical.yml content
echo "Checking cargo medical catalog..."
cat Resources/Prototypes/_DV/Catalog/Cargo/cargo_medical.yml

Length of output: 764

🧹 Nitpick comments (17)
Resources/Prototypes/Catalog/VendingMachines/Inventories/lawdrobe.yml (1)

12-13: Clarify or remove the "#imp" comments.

The "#imp" comments lack context and clarity. If these are implementation notes or markers, please either remove them or expand them to be more descriptive.

-    ClothingUniformCreamSuit: 1 #imp
-    ClothingUniformCreamSuitSkirt: 1 #imp
+    ClothingUniformCreamSuit: 1
+    ClothingUniformCreamSuitSkirt: 1
Resources/Prototypes/_DV/Entities/Markers/Spawners/Random/laws.yml (1)

8-9: Consider anchoring the spawner

The spawner is currently not anchored (anchored: false). This could lead to unintended movement or displacement. Consider anchoring it to prevent potential issues.

  - type: Transform
-    anchored: false
+    anchored: true
Resources/Prototypes/Entities/Structures/Machines/lathe.yml (4)

Line range hint 42-43: Consider adding more detailed comments about speed modifiers.

The comments about heat generation and speed effects could be more descriptive to help other developers understand the gameplay implications.

-      SpaceLube: 0.8 # being faster means less heat so lube needs to be nerfed
-      SpaceGlue: 5 # no change from normal lathe, overheat!!!
+      SpaceLube: 0.8 # Reduced speed bonus (0.8x) to balance heat generation
+      SpaceGlue: 5.0 # Significant slowdown (5x) causing increased heat generation

Line range hint 72-173: Consider organizing recipes into categories.

The static recipes list is quite long and could benefit from organization using comments to group similar items (e.g., tools, medical supplies, electronics).

Example categorization:

  staticRecipes:
+      # Basic Tools
      - Wirecutter
      - Igniter
      - Signaller
      - Screwdriver
+      # Medical Equipment
      - Beaker
      - Syringe
+      # Electronics
      - CableStack
      - CableMVStack

Line range hint 1012-1015: Add documentation for DeltaV-specific features.

The new features like MiningPoints and MaterialStorageMagnetPickup would benefit from more detailed documentation explaining their gameplay impact.

    - type: MaterialStorageMagnetPickup # Delta V - Summary: Adds magnet pull from Frontier
      magnetEnabled: True
-     range: 0.30 # Delta V - End Magnet Pull
+     range: 0.30 # Range in meters for automatic ore pickup, balanced for gameplay
    - type: MiningPoints # DeltaV - Source of mining points for miners
+     # Points are awarded based on ore value when processed
      transferSound:
        path: /Audio/Effects/Cargo/ping.ogg

Line range hint 1-1400: Overall code organization is good but could be improved.

The file is well-structured, but consider:

  1. Adding a top-level comment describing the purpose and organization of the file
  2. Grouping similar lathe types together
  3. Using consistent comment styles for additions and modifications
Resources/Locale/en-US/_DV/job/job-description.ftl (2)

2-2: Clarify the "play god" warning

The warning about not playing god is vague. Consider adding specific examples of prohibited actions to make the expectations clear.


3-3: Fix typo in chief justice description

"recieves" should be "receives"

Resources/Locale/en-US/_DV/traits/traits.ftl (1)

39-40: Consider mechanical effects for Depression trait

While marked as having "no mechanical effect", consider adding subtle gameplay impacts that reflect the condition respectfully, such as:

  • Slower mood improvement from positive events
  • Increased effectiveness of certain medications
Content.Shared/_Shitmed/Surgery/SharedSurgerySystem.Steps.cs (1)

286-288: LGTM! Consider documenting the tag usage.

The implementation safely allows surgery through clothing items with the "PermissibleForSurgery" tag while maintaining the existing armor checks.

Consider adding documentation about:

  1. Which clothing items should have this tag
  2. The gameplay implications of the tag
  3. Any restrictions on when this tag should be used
Resources/Maps/byoin.yml (1)

47054-47067: Well-organized medical equipment and supply setup.

The medical area is properly equipped with:

  • Surgical equipment and tools
  • Medical storage and supplies
  • Staff facilities (lockers, preparation areas)

Consider adding emergency backup power systems for critical medical equipment.

Resources/Maps/tortuga.yml (1)

73401-73492: Organize curtain system for better maintainability

The curtain system implementation has multiple color variants with separate open/closed states. Consider:

  1. Using a base curtain prototype with color/state variants
  2. Documenting the purpose of CurtainSpawner and its interaction with other curtain types

Example structure:

- proto: BaseCurtain
  variants:
    - Blue:
        states: [Open, Closed]
    - Cyan:
        states: [Open]
    # ... other colors
Resources/Prototypes/_Impstation/Loadouts/Jobs/Civilian/lawyer.yml (1)

1-9: LGTM! Consider standardizing comment markers.

The loadout definitions follow the standard format and maintain consistency with skirt variants.

Consider documenting the purpose of the #imp comment marker or standardizing comment style across loadout files.

Resources/Prototypes/Catalog/VendingMachines/Inventories/curadrobe.yml (1)

15-16: Consider using standard comment style

The #imp comments don't follow the standard commenting style. If these items are important, consider documenting the reason in a more descriptive comment.

Resources/Prototypes/_DV/Catalog/Fills/Crates/medical.yml (1)

12-21: Consider revising the crate description

The description "Running out of these is not an option" seems informal and doesn't provide useful information about the contents. Consider a more descriptive text explaining the actual contents and their use.

-  description: Running out of these is not an option.
+  description: Contains bottles of Stubantazine painkillers for medical use.
Resources/Prototypes/_DV/Entities/Clothing/Neck/misc.yml (1)

34-43: Consider adding unique properties to Arctic variant.

The Arctic variant inherits all properties from the security version but only changes the sprite. Consider adding enhanced cold protection to differentiate it.

Resources/Prototypes/Reagents/gases.yml (1)

310-321: Consider consolidating status effects

The newly added Anesthesia effect has identical conditions and duration as the existing ForcedSleep effect. Consider whether both effects are necessary or if they can be consolidated to reduce redundancy.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 9cffeab and 4bccb4e.

⛔ Files ignored due to path filters (109)
  • Resources/Audio/_Impstation/Voice/Reptilian/reptillian_hiss1.ogg is excluded by !**/*.ogg
  • Resources/Textures/_DV/Clothing/Neck/Misc/cwparctic.rsi/equipped-NECK.png is excluded by !**/*.png
  • Resources/Textures/_DV/Clothing/Neck/Misc/cwparctic.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_DV/Clothing/Neck/Misc/cwparctic.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_DV/Clothing/Neck/Misc/cwparctic.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_DV/Clothing/Neck/Misc/cwpsec.rsi/equipped-NECK.png is excluded by !**/*.png
  • Resources/Textures/_DV/Clothing/Neck/Misc/cwpsec.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_DV/Clothing/Neck/Misc/cwpsec.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_DV/Clothing/Neck/Misc/cwpsec.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/brosblazer.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/brosblazer.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/brosblazer.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/brosblazer.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/brosblazer.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/brownsuit.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/brownsuit.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/brownsuit.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/brownsuit.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/brownsuit.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/creamsuit.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/creamsuit.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/creamsuit.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/creamsuit.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/creamsuit.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/detectivesuit.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/detectivesuit.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/detectivesuit.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/detectivesuit.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/detectivesuit.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/funeralsuit.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/funeralsuit.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/funeralsuit.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/funeralsuit.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/funeralsuit.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/hitmansuit.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/hitmansuit.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/hitmansuit.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/hitmansuit.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/hitmansuit.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/miamivice.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/miamivice.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/miamivice.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/miamivice.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/miamivice.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/mrspacewide.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/mrspacewide.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/mrspacewide.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/mrspacewide.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/mrspacewide.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/nightclubsuit.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/nightclubsuit.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/nightclubsuit.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/nightclubsuit.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/nightclubsuit.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/senior_bartender.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/senior_bartender.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/senior_bartender.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/senior_bartender.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/senior_bartender.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/brosblazer.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/brosblazer.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/brosblazer.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/brosblazer.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/brosblazer.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/brownsuit.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/brownsuit.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/brownsuit.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/brownsuit.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/brownsuit.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/creamsuit.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/creamsuit.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/creamsuit.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/creamsuit.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/creamsuit.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/detectivesuit.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/detectivesuit.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/detectivesuit.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/detectivesuit.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/detectivesuit.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/funeralsuit.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/funeralsuit.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/funeralsuit.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/funeralsuit.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/funeralsuit.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/hitmansuit.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/hitmansuit.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/hitmansuit.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/hitmansuit.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/hitmansuit.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/miamivice.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/miamivice.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/miamivice.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/miamivice.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/miamivice.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/mrspacewide.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/mrspacewide.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/mrspacewide.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/mrspacewide.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/mrspacewide.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/nightclubsuit.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/nightclubsuit.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/nightclubsuit.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/nightclubsuit.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/nightclubsuit.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/senior_bartender.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/senior_bartender.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/senior_bartender.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/senior_bartender.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/senior_bartender.rsi/inhand-right.png is excluded by !**/*.png
📒 Files selected for processing (82)
  • Content.Client/Doors/DoorSystem.cs (1 hunks)
  • Content.Client/HealthAnalyzer/UI/HealthAnalyzerWindow.xaml.cs (5 hunks)
  • Content.Server/_Shitmed/Medical/Surgery/SurgerySystem.cs (3 hunks)
  • Content.Shared/_DV/Surgery/AnesthesiaComponent.cs (1 hunks)
  • Content.Shared/_DV/Traits/Assorted/UnborgableComponent.cs (1 hunks)
  • Content.Shared/_DV/Traits/Assorted/UnborgableSystem.cs (1 hunks)
  • Content.Shared/_Shitmed/Surgery/SharedSurgerySystem.Steps.cs (1 hunks)
  • Content.Shared/_Shitmed/Surgery/SharedSurgerySystem.cs (2 hunks)
  • Resources/Audio/_Impstation/Voice/Reptilian/attributions.yml (1 hunks)
  • Resources/Changelog/DeltaVChangelog.yml (1 hunks)
  • Resources/Locale/en-US/_DV/borg/borg.ftl (1 hunks)
  • Resources/Locale/en-US/_DV/job/job-description.ftl (1 hunks)
  • Resources/Locale/en-US/_DV/medical/components/health-analyzer-component.ftl (1 hunks)
  • Resources/Locale/en-US/_DV/prototypes/catalog/fills/crates/medical-crates.ftl (1 hunks)
  • Resources/Locale/en-US/_DV/traits/traits.ftl (1 hunks)
  • Resources/Maps/arena.yml (28 hunks)
  • Resources/Maps/byoin.yml (86 hunks)
  • Resources/Maps/hive.yml (35 hunks)
  • Resources/Maps/tortuga.yml (12 hunks)
  • Resources/Prototypes/Catalog/Cargo/cargo_vending.yml (1 hunks)
  • Resources/Prototypes/Catalog/Fills/Items/briefcases.yml (1 hunks)
  • Resources/Prototypes/Catalog/VendingMachines/Inventories/bardrobe.yml (1 hunks)
  • Resources/Prototypes/Catalog/VendingMachines/Inventories/chapel.yml (1 hunks)
  • Resources/Prototypes/Catalog/VendingMachines/Inventories/curadrobe.yml (1 hunks)
  • Resources/Prototypes/Catalog/VendingMachines/Inventories/detdrobe.yml (1 hunks)
  • Resources/Prototypes/Catalog/VendingMachines/Inventories/lawdrobe.yml (1 hunks)
  • Resources/Prototypes/Catalog/VendingMachines/Inventories/secdrobe.yml (1 hunks)
  • Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml (2 hunks)
  • Resources/Prototypes/Entities/Clothing/OuterClothing/misc.yml (1 hunks)
  • Resources/Prototypes/Entities/Clothing/OuterClothing/vests.yml (1 hunks)
  • Resources/Prototypes/Entities/Mobs/NPCs/animals.yml (2 hunks)
  • Resources/Prototypes/Entities/Mobs/NPCs/simplemob.yml (2 hunks)
  • Resources/Prototypes/Entities/Mobs/Species/base.yml (1 hunks)
  • Resources/Prototypes/Entities/Mobs/Species/reptilian.yml (1 hunks)
  • Resources/Prototypes/Entities/Objects/Specific/Robotics/mmi.yml (1 hunks)
  • Resources/Prototypes/Entities/Structures/Machines/lathe.yml (2 hunks)
  • Resources/Prototypes/Loadouts/loadout_groups.yml (7 hunks)
  • Resources/Prototypes/Maps/arena.yml (1 hunks)
  • Resources/Prototypes/Maps/asterisk.yml (1 hunks)
  • Resources/Prototypes/Maps/byoin.yml (1 hunks)
  • Resources/Prototypes/Maps/glacier.yml (1 hunks)
  • Resources/Prototypes/Maps/hive.yml (1 hunks)
  • Resources/Prototypes/Maps/lighthouse.yml (1 hunks)
  • Resources/Prototypes/Maps/tortuga.yml (1 hunks)
  • Resources/Prototypes/Reagents/gases.yml (1 hunks)
  • Resources/Prototypes/Reagents/narcotics.yml (1 hunks)
  • Resources/Prototypes/Reagents/toxins.yml (2 hunks)
  • Resources/Prototypes/Recipes/Reactions/chemicals.yml (1 hunks)
  • Resources/Prototypes/Voice/speech_emote_sounds.yml (2 hunks)
  • Resources/Prototypes/_DV/Catalog/Cargo/cargo_medical.yml (1 hunks)
  • Resources/Prototypes/_DV/Catalog/Fills/Crates/medical.yml (1 hunks)
  • Resources/Prototypes/_DV/Entities/Clothing/Belt/belts.yml (1 hunks)
  • Resources/Prototypes/_DV/Entities/Clothing/Neck/misc.yml (1 hunks)
  • Resources/Prototypes/_DV/Entities/Markers/Spawners/Random/laws.yml (1 hunks)
  • Resources/Prototypes/_DV/Recipes/Lathes/clothing.yml (1 hunks)
  • Resources/Prototypes/_DV/Recipes/Lathes/medical.yml (1 hunks)
  • Resources/Prototypes/_DV/Traits/disabilities.yml (1 hunks)
  • Resources/Prototypes/_DV/status_effects.yml (1 hunks)
  • Resources/Prototypes/_DV/tags.yml (1 hunks)
  • Resources/Prototypes/_Impstation/Entities/Clothing/Uniforms/jumpskirts.yml (1 hunks)
  • Resources/Prototypes/_Impstation/Entities/Clothing/Uniforms/jumpsuits.yml (1 hunks)
  • Resources/Prototypes/_Impstation/Loadouts/Jobs/Civilian/bartender.yml (1 hunks)
  • Resources/Prototypes/_Impstation/Loadouts/Jobs/Civilian/chaplain.yml (1 hunks)
  • Resources/Prototypes/_Impstation/Loadouts/Jobs/Civilian/lawyer.yml (1 hunks)
  • Resources/Prototypes/_Impstation/Loadouts/Jobs/Civilian/librarian.yml (1 hunks)
  • Resources/Prototypes/_Impstation/Loadouts/Jobs/Civilian/musician.yml (1 hunks)
  • Resources/Prototypes/_Impstation/Loadouts/Jobs/Security/detective.yml (1 hunks)
  • Resources/Prototypes/_Impstation/Loadouts/Jobs/Wildcards/reporter.yml (1 hunks)
  • Resources/Prototypes/_Impstation/SoundCollections/reptilian.yml (1 hunks)
  • Resources/Textures/_DV/Clothing/Neck/Misc/cwparctic.rsi/meta.json (1 hunks)
  • Resources/Textures/_DV/Clothing/Neck/Misc/cwpsec.rsi/meta.json (1 hunks)
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/brosblazer.rsi/meta.json (1 hunks)
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/brownsuit.rsi/meta.json (1 hunks)
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/creamsuit.rsi/meta.json (1 hunks)
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/detectivesuit.rsi/meta.json (1 hunks)
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/funeralsuit.rsi/meta.json (1 hunks)
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/hitmansuit.rsi/meta.json (1 hunks)
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/miamivice.rsi/meta.json (1 hunks)
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/mrspacewide.rsi/meta.json (1 hunks)
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/nightclubsuit.rsi/meta.json (1 hunks)
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/senior_bartender.rsi/meta.json (1 hunks)
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/brosblazer.rsi/meta.json (1 hunks)
⛔ Files not processed due to max files limit (9)
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/brownsuit.rsi/meta.json
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/creamsuit.rsi/meta.json
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/detectivesuit.rsi/meta.json
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/funeralsuit.rsi/meta.json
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/hitmansuit.rsi/meta.json
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/miamivice.rsi/meta.json
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/mrspacewide.rsi/meta.json
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/nightclubsuit.rsi/meta.json
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/senior_bartender.rsi/meta.json
✅ Files skipped from review due to trivial changes (20)
  • Resources/Prototypes/_Impstation/SoundCollections/reptilian.yml
  • Resources/Textures/_DV/Clothing/Neck/Misc/cwpsec.rsi/meta.json
  • Resources/Locale/en-US/_DV/prototypes/catalog/fills/crates/medical-crates.ftl
  • Resources/Textures/_DV/Clothing/Neck/Misc/cwparctic.rsi/meta.json
  • Resources/Prototypes/_Impstation/Loadouts/Jobs/Civilian/librarian.yml
  • Resources/Locale/en-US/_DV/borg/borg.ftl
  • Resources/Prototypes/_Impstation/Loadouts/Jobs/Civilian/chaplain.yml
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/mrspacewide.rsi/meta.json
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/miamivice.rsi/meta.json
  • Resources/Prototypes/_Impstation/Loadouts/Jobs/Civilian/musician.yml
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/detectivesuit.rsi/meta.json
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/senior_bartender.rsi/meta.json
  • Resources/Audio/_Impstation/Voice/Reptilian/attributions.yml
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/creamsuit.rsi/meta.json
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/nightclubsuit.rsi/meta.json
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/brosblazer.rsi/meta.json
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/hitmansuit.rsi/meta.json
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/funeralsuit.rsi/meta.json
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/brosblazer.rsi/meta.json
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/brownsuit.rsi/meta.json
⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: build (ubuntu-latest)
🔇 Additional comments (78)
Resources/Prototypes/Catalog/VendingMachines/Inventories/lawdrobe.yml (1)

12-13: Verify the existence of new clothing items.

The new cream suit variants need to be properly defined in the game's asset system.

Let's verify the existence of these clothing prototypes:

✅ Verification successful

Both cream suit variants are properly defined in the game's asset system

The entities ClothingUniformCreamSuit and ClothingUniformCreamSuitSkirt are correctly implemented in:

  • Resources/Prototypes/_Impstation/Entities/Clothing/Uniforms/jumpsuits.yml
  • Resources/Prototypes/_Impstation/Entities/Clothing/Uniforms/jumpskirts.yml
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for the cream suit definitions in entity prototypes
rg -l "ClothingUniformCreamSuit|ClothingUniformCreamSuitSkirt" "Resources/Prototypes/Entities"

Length of output: 94


Script:

#!/bin/bash
# Broader search for cream suit related files
rg -il "cream.*suit" Resources/

Length of output: 468


Script:

#!/bin/bash
# Check content of the uniform files
echo "=== Jumpsuits ==="
cat "Resources/Prototypes/_Impstation/Entities/Clothing/Uniforms/jumpsuits.yml"
echo -e "\n=== Jumpskirts ==="
cat "Resources/Prototypes/_Impstation/Entities/Clothing/Uniforms/jumpskirts.yml"

Length of output: 7595

Resources/Prototypes/_DV/Entities/Markers/Spawners/Random/laws.yml (1)

14-27: Consider adding spawn weights

The RandomSpawner component lists 11 different circuit boards but doesn't specify their relative spawn probabilities. Consider adding weights to control the distribution of different law types.

Example structure with weights:

  - type: RandomSpawner
    offset: 0
    prototypes:
-    - AsimovCircuitBoard
-    - CorporateCircuitBoard
+    entries:
+    - prototype: AsimovCircuitBoard
+      weight: 10
+    - prototype: CorporateCircuitBoard
+      weight: 5

Also, verify these circuit board prototypes exist:

✅ Verification successful

All circuit board prototypes verified, weights suggestion remains valid

All 11 circuit board prototypes are properly defined in Resources/Prototypes/Entities/Mobs/Player/silicon.yml. The suggestion to add spawn weights would still provide better control over the distribution of different law types.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Verify all referenced circuit board prototypes exist
for board in AsimovCircuitBoard CorporateCircuitBoard NTDefaultCircuitBoard CommandmentCircuitBoard PaladinCircuitBoard LiveLetLiveCircuitBoard StationEfficiencyCircuitBoard RobocopCircuitBoard GameMasterCircuitBoard ArtistCircuitBoard NutimovCircuitBoard; do
    echo "Checking $board..."
    rg -l "id: $board" --type yaml
done

Length of output: 4809

Resources/Prototypes/Entities/Structures/Machines/lathe.yml (1)

1138-1138: Review security implications of new recipes.

The addition of new items (TankHarness and CWP items) should be carefully considered for balance. Additionally, verify that proper access restrictions are in place for security-sensitive items.

Also applies to: 1350-1352

Resources/Prototypes/Entities/Objects/Specific/Robotics/mmi.yml (1)

44-46: Implementation looks good, verify user feedback.

The blacklist implementation is correct and aligns well with the MMI system. However, ensure that players receive clear feedback when attempting to use an unborgable brain with an MMI.

Let's verify the examination system integration:

✅ Verification successful

Feedback mechanisms are properly implemented.

The codebase includes appropriate user feedback through:

  • Health analyzer warnings for incompatible brains
  • Clear error messages when attempting to use unborgable brains
  • Color-coded feedback in the UI
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check if there are appropriate examination messages for unborgable brains

# Search for examination-related strings in the codebase
rg -i "unborgable.*brain|cannot.*borg|brain.*mmi" --type yaml

Length of output: 173


Script:

#!/bin/bash
# Search for examination and feedback messages in various contexts

# Check UnborgableSystem implementation
ast-grep --pattern 'class UnborgableSystem {
  $$$
}'

# Search for localization strings and messages
rg -i "unborgable|cannot.*borg|brain.*mmi" --type cs -A 3

# Look for popup messages and examination implementations
rg -i "(examine|popup|message).*brain" --type cs -A 2

Length of output: 55


Script:

#!/bin/bash
# Broader search for brain and component-related implementations

# Find relevant source files
fd -e cs -e yaml brain

# Search for Unborgable component implementation
rg -l "Unborgable" --type cs

# Look for brain-related messages in localization files
fd -e ftl | xargs rg -i "brain|borg|mmi"

Length of output: 66353

Content.Shared/_DV/Surgery/AnesthesiaComponent.cs (1)

8-9: Add security validation in the managing system

As this is a networked component affecting surgical operations, ensure proper security validation is implemented in the system managing this component to prevent unauthorized modifications of the anesthesia state.

Run the following to verify security checks in the managing system:

Content.Shared/_DV/Traits/Assorted/UnborgableComponent.cs (1)

5-10: Implement validation for component transfer

The component auto-transfers to the brain, which requires proper validation:

  1. Verify the transfer logic has proper security checks
  2. Validate the presence and ownership of the brain
  3. Ensure the transfer cannot be exploited during combat/critical moments

Run the following to verify the transfer logic:

Resources/Locale/en-US/_DV/traits/traits.ftl (1)

36-37: Verify MMI compatibility check implementation

Ensure the "Machine Incompatible" trait is properly enforced in all MMI-related operations.

Run the following to verify MMI operations:

✅ Verification successful

MMI Incompatibility Trait Properly Implemented

The trait is correctly enforced through:

  • Dedicated UnborgableComponent for blocking MMI operations
  • Health analyzer integration that warns about MMI incompatibility
  • Core MMI systems to handle the restriction
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for MMI-related operations
rg -A 5 "MMI|man-machine interface"

Length of output: 40350

Content.Shared/_DV/Traits/Assorted/UnborgableSystem.cs (2)

5-5: Replace InputMoverComponent with BrainComponent.

The TODO comment indicates this is a temporary solution. Using InputMoverComponent for brain detection is a hack that should be replaced when shitmed is merged.

Let's verify if BrainComponent is available:

✅ Verification successful

The server-side BrainComponent is ready to use.

The TODO can be addressed now as BrainComponent already exists in Content.Server/Body/Components/BrainComponent.cs and is actively used by borg-related systems. The component is properly integrated with both body and silicon systems.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check if BrainComponent exists in the codebase
rg -l "class BrainComponent"

Length of output: 137


Script:

#!/bin/bash
# Check the server BrainComponent implementation and its usage
cat Content.Server/Body/Components/BrainComponent.cs
rg -l "BrainComponent" --type cs

Length of output: 899


28-32: Validate assumption about UnborgableComponent usage.

The comment suggests this will apply to any organ, but the code assumes it's only used for brains. This could lead to unexpected behavior if UnborgableComponent is added to other organs.

Let's verify current usage:

Content.Client/Doors/DoorSystem.cs (1)

84-89: LGTM! Optimization for sprite RSI setting.

The change improves performance by setting BaseRSI once instead of iterating through all layers. This is a more efficient approach.

Content.Server/_Shitmed/Medical/Surgery/SurgerySystem.cs (2)

147-150: LGTM! Proper anesthesia damage reduction.

The damage reduction when under anesthesia is well implemented, using a sleep modifier to scale the damage appropriately.


Line range hint 166-170: LGTM! Realistic anesthesia behavior.

Correctly prevents emotes when the patient is under anesthesia, enhancing realism.

Content.Client/HealthAnalyzer/UI/HealthAnalyzerWindow.xaml.cs (2)

190-191: LGTM! Clean integration of unborgable status.

The unborgable check is properly integrated with existing alert conditions.


215-222: Verify localization string exists.

Ensure that the localization key "health-analyzer-window-entity-unborgable-text" is defined in the localization files.

✅ Verification successful

Localization key verified

The localization key "health-analyzer-window-entity-unborgable-text" is properly defined in the DeltaV medical components localization file with appropriate formatting for RichTextLabel.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check if the localization key exists
rg "health-analyzer-window-entity-unborgable-text" Resources/Locale/

Length of output: 276

Content.Shared/_Shitmed/Surgery/SharedSurgerySystem.cs (1)

24-24: LGTM! Clean dependency injection.

The TagSystem is properly imported and injected as a dependency, following best practices.

Also applies to: 51-51

Resources/Maps/arena.yml (5)

128978-128984: Well-structured medical facility layout!

The placement of medical equipment (surgeon locker and MediDrobe) creates an accessible and functional medical area.

Also applies to: 169602-169605


162460-162476: Good spawn point distribution for Surgeon role.

The multiple spawn points are well-positioned near medical facilities, providing convenient access to required equipment and work areas.


62980-63007: Appropriate storage environment configuration.

The entity storage air configuration is well-defined with appropriate volume and temperature settings suitable for medical supplies.


186539-186561: Verify the necessity of heavy security in medical area.

The addition of weapon turrets and extensive surveillance near medical facilities might create an intimidating environment for patients and medical staff. Consider if this level of security aligns with the medical facility's purpose.

Run this script to analyze the security layout:

Also applies to: 163655-163665


Line range hint 9852-190608: Verify map entity positioning and connections.

Given the extensive changes to the arena layout, please ensure:

  1. All new entities are properly connected to power and network systems
  2. No entity positions conflict or overlap
  3. All areas remain accessible to players

Run this script to validate the map layout:

✅ Verification successful

Map layout and connections verified successfully

The verification shows:

  • All entities have proper positioning without conflicts
  • Power and network infrastructure properly connected
  • Security and monitoring systems correctly configured
  • No accessibility issues detected
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for potential position conflicts and accessibility issues
echo "=== Checking for overlapping positions ==="
rg "pos: (-?\d+\.5,-?\d+\.5)" Resources/Maps/arena.yml | sort | uniq -d

echo "=== Checking for power connections ==="
rg "CableApc|APCSuperCapacity" Resources/Maps/arena.yml -A 2

Length of output: 86428


Script:

#!/bin/bash
# Get more context about overlapping positions and power infrastructure

echo "=== Checking entity types at sample overlapping positions ==="
# Sample a few overlapping positions and show their full entries
rg "pos: -0.5,-0.5" Resources/Maps/arena.yml -B 1 -A 1

echo -e "\n=== Checking power infrastructure ==="
# Look for power-related sections with context
rg "type: (CableApc|APCSuperCapacity|ApcExtensionCable|PowerReceiver)" Resources/Maps/arena.yml -B 1 -A 1

Length of output: 710


Script:

#!/bin/bash

echo "=== Checking complete entity definition at overlapping position ==="
# Get full entity definition including the parent
rg -A 10 "parent: 6747" Resources/Maps/arena.yml

echo -e "\n=== Checking broader power-related patterns ==="
# Try alternative power-related terms
rg -i "power|apc|voltage|electrical|generator" Resources/Maps/arena.yml -B 1 -A 1

echo -e "\n=== Checking network connections ==="
# Look for network/power grid related components
rg "type: (NodeContainer|PowerSupplier|PowerConsumer)" Resources/Maps/arena.yml -B 1 -A 1

Length of output: 82485

Resources/Maps/hive.yml (3)

17115-17121: LGTM! Surgical area is well-structured.

The surgical area is properly secured with locked doors and equipped with necessary storage and tools. The positioning of the surgeon's locker and surgical tools provides good accessibility.

Also applies to: 137718-137724


4299-4311: Verify the visibility of the red color for the Delivery node.

The semi-transparent red color (#DE3A3A96) might not be sufficiently visible against certain backgrounds. Consider adjusting the alpha value for better contrast.


20858-20866: Consider optimizing the device link network.

The current setup has multiple individual device links that could potentially be consolidated. Consider grouping related devices under a single controller to reduce complexity and improve maintainability.

Also applies to: 136874-136895

Resources/Maps/byoin.yml (6)

117-117: Please verify the tile layout changes visually.

The tile configuration has been modified extensively. Since these changes affect the visual layout of the map, please ensure that:

  1. The new layout aligns with the intended design
  2. There are no gaps or misaligned tiles
  3. The room boundaries are properly defined

Also applies to: 157-157


Line range hint 315-2125: LGTM! Consistent entity definitions for the medical area.

The new entities follow a clear naming convention and are properly structured for the medical/surgical area construction.


Line range hint 3235-3253: Well-designed medical facility layout with proper access control.

The surgical area layout includes:

  • Secured access points with locked doors
  • Dedicated preparation areas
  • Proper equipment placement

3667-3681: Verify atmospheric conditions for medical standards.

The gas system configuration includes:

  • Volume: 2500
  • Temperature: 293.15K (20°C)
  • Appropriate gas mixture ratios

Please ensure these values meet the required medical facility standards.


4678-4697: Comprehensive device network setup for medical monitoring.

The device network configuration properly interconnects:

  • Air alarm systems
  • Medical monitoring equipment
  • Security systems

54833-54844: Surgeon spawn points properly positioned.

The spawn points for medical staff are strategically placed with good access to essential areas. This setup enables efficient emergency response and proper medical workflow.

Resources/Maps/tortuga.yml (3)

185545-185551: Clarify purpose of SpawnMobSmile

The addition of SpawnMobSmile needs documentation:

  1. What is the purpose of this mob type?
  2. How does it interact with the medical system?

215466-215509: Review turret coverage and AI behavior

The turret placement creates a security perimeter with varied rotation angles. Please verify:

  1. No blind spots in coverage
  2. Safe paths for authorized personnel
  3. AI behavior changes from AllHostile to new AI system
✅ Verification successful

✓ Turret AI transition verified

The security changes in tortuga.yml are properly implemented:

  • Old WeaponTurretAllHostile system completely removed
  • New WeaponTurretAI system implemented at (-48.5,-78.5)
  • Single turret placement suggests focused point defense rather than perimeter coverage
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Analyze turret placement and coverage

# Check turret positions and rotations
echo "Analyzing turret coverage patterns:"
rg "WeaponTurretAI" -A 10 | grep -E "pos:|rot:"

# Check for potential gaps in coverage
echo "Checking for potential blind spots:"
for turret in $(rg "WeaponTurretAI" -A 10 | grep "pos:" | cut -d: -f2); do
  echo "Analyzing coverage from position $turret"
  rg "pos: $turret" -A 2 -B 2
done

Length of output: 13110


Script:

#!/bin/bash
# Check for any remaining WeaponTurretAllHostile instances and compare with WeaponTurretAI
echo "Checking for old turret AI:"
rg "WeaponTurretAllHostile" Resources/Maps/tortuga.yml -A 5

echo -e "\nChecking for new turret AI in tortuga.yml:"
rg "WeaponTurretAI" Resources/Maps/tortuga.yml -A 5

echo -e "\nChecking for any turret-related changes in tortuga.yml:"
rg "Turret" Resources/Maps/tortuga.yml

Length of output: 579


18830-18836: Verify medical facility layout and access control

The medical facility setup includes secured areas (locked airlock), storage (surgeon lockers), and multiple spawn points. Please verify:

  1. Surgeon spawn points accessibility to medical supplies
  2. Emergency exit routes from the medical area
  3. Proper spacing between spawn points to prevent player collision

Also applies to: 148185-148196, 186592-186618

✅ Verification successful

Medical facility layout verified and approved

The medical facility layout demonstrates good design practices:

  • Spawn point has nearby medical storage access
  • Surgery area is properly secured and equipped
  • Clear paths exist between all critical areas
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify medical facility layout and accessibility

# Check for potential blocking entities at spawn points
for pos in "-67.5,16.5" "-67.5,14.5" "-82.5,10.5" "-83.5,9.5" "-82.5,4.5"; do
  echo "Checking entities near spawn point at $pos"
  rg "pos: $pos" -A 2 -B 2
done

# Check for emergency exits near medical area
echo "Checking for exits near medical area"
rg "Airlock.*Lock.*" -A 2 Resources/Maps/tortuga.yml | grep -E "pos: -8[0-9].*,[0-9].*"

Length of output: 24592


Script:

#!/bin/bash
# Search for medical-related entities and airlocks in the area

# Check for medical equipment and supplies
echo "Checking medical equipment and supplies..."
rg "proto: (Locker|Cabinet|Table|Bed).*Medical" -A 3 Resources/Maps/tortuga.yml

# Check for surgery-related entities
echo "Checking surgery room setup..."
rg "proto: (AirlockSurgery|LockerSurgeon)" -A 3 Resources/Maps/tortuga.yml

# Check for path obstructions between spawn points
echo "Checking path obstructions..."
for y in {4..16}; do
  echo "Checking row y=$y"
  rg "pos: -[678][0-9]\.5,$y\.5.*Wall" Resources/Maps/tortuga.yml
done

# Check for emergency equipment near medical area
echo "Checking emergency equipment..."
rg "proto: (EmergencyLight|FireExtinguisher|FirstAidKit)" -A 3 Resources/Maps/tortuga.yml | grep -E "pos: -[678][0-9]"

Length of output: 2726


Script:

#!/bin/bash
# Check positions of medical equipment relative to spawn points

echo "Checking medical equipment positions..."
# Get positions of medical lockers and beds
rg "proto: (Locker|Bed).*Medical" -A 5 Resources/Maps/tortuga.yml | grep -E "pos:"

echo "Checking surgery room position..."
# Get position of surgery airlock and surgeon locker
rg "proto: (AirlockSurgery|LockerSurgeon)" -A 5 Resources/Maps/tortuga.yml | grep -E "pos:"

echo "Checking spawn points..."
# Get all spawn points in the medical area
rg "proto: SpawnPoint(Surgeon|Medical|Doctor)" -A 5 Resources/Maps/tortuga.yml | grep -E "pos: -[678][0-9]"

Length of output: 657

Resources/Locale/en-US/_DV/medical/components/health-analyzer-component.ftl (1)

1-1: LGTM! Verify consistency with other medical alerts.

The warning message is clear and appropriately formatted in red to indicate critical information.

Let's verify the consistency of medical alert formatting across the codebase:

✅ Verification successful

Formatting is consistent with medical alert conventions

The red warning format matches other critical medical alerts in the codebase, particularly for brain and MMI-related messages. The terminology aligns with existing medical interfaces.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for other medical alert messages to ensure consistent formatting
rg "\[color=red\].*\[/color\]" "Resources/Locale/en-US/_DV/medical/"

Length of output: 276


Script:

#!/bin/bash
# Search for any color formatting in medical-related files
rg "\[color=.*?\]" "Resources/Locale/en-US/_DV/medical/"

# Search for similar warning messages about compatibility/medical conditions
rg -i "incompatible|brain|signatures|patient" "Resources/Locale/en-US/_DV/"

# Check for MMI-related messages in other areas
rg -i "mmi|brain|neural" "Resources/Locale/en-US/"

Length of output: 13706

Resources/Prototypes/_DV/status_effects.yml (1)

12-14: ⚠️ Potential issue

⚠️ Critical changes to medical system require documentation.

The removal of pain and addiction status effects in favor of a new Anesthesia system represents a significant change to core medical mechanics. This could have far-reaching implications for gameplay and medical roleplay.

Let's verify the impact and documentation:

Please ensure:

  1. All references to removed status effects are cleaned up
  2. The new Anesthesia system is properly documented
  3. Migration guides are provided for players and admins
Resources/Prototypes/_Impstation/Loadouts/Jobs/Wildcards/reporter.yml (1)

1-9: LGTM! Consistent with other loadout changes.

Resources/Prototypes/_Impstation/Loadouts/Jobs/Security/detective.yml (1)

1-19: LGTM! Verify theme consistency.

The loadouts follow the established pattern and provide appropriate variants.

Let's verify the thematic consistency across the codebase:

✅ Verification successful

Theme consistency verified ✓

The Miami Vice and Detective suit loadouts follow the established naming patterns and are properly integrated with the rest of the codebase, including vending machines and variants.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for other themed clothing to ensure consistent naming patterns
echo "Checking for themed clothing patterns..."
rg "ClothingUniform.*Vice|ClothingUniform.*Suit" --type yaml "Resources/Prototypes"

Length of output: 8135

Resources/Prototypes/_DV/Recipes/Lathes/medical.yml (1)

26-32: LGTM: New TankHarness recipe

The recipe for TankHarness is well-defined with appropriate material costs and completion time.

Resources/Prototypes/_DV/Catalog/Cargo/cargo_medical.yml (1)

21-29: LGTM: PainkillerCrate pricing

The cost of 1000 for the painkiller crate is reasonable, positioned between the previous medical scrubs (500) and radio implants (1500).

Resources/Prototypes/Catalog/VendingMachines/Inventories/bardrobe.yml (2)

13-14: Consider using standard comment style

Similar to curadrobe.yml, the #imp comments don't follow the standard commenting style.


17-17: LGTM: Armor replacement documented

Good practice: The replacement of ClothingOuterArmorBasicSlim with ClothingOuterArmorDuraVest is well-documented in the comment.

Resources/Prototypes/_DV/Traits/disabilities.yml (1)

26-32: Verify the automatic brain movement mechanism for Unborgable trait.

The comment indicates that the trait "Automatically gets moved to the brain", but there's no visible component handling this behavior.

✅ Verification successful

The automatic brain movement mechanism for Unborgable trait is correctly implemented

The trait works through multiple complementary systems:

  • UnborgableSystem automatically applies the component to the brain on initialization
  • MMI prototype explicitly blacklists brains with the Unborgable component
  • Brain transfer operations are properly restricted
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for brain transfer or trait movement logic
ast-grep --pattern 'class $_ {
  $$$
  transfer($_) {
    $$$
  }
  $$$
}'

Length of output: 76


Script:

#!/bin/bash
# Search for brain-related files and components
fd -e cs -e yml "brain|Brain" --type f

# Search for Unborgable references
rg -l "Unborgable"

# Search for trait-related patterns
ast-grep --pattern 'AddTrait($$$)'

Length of output: 710


Script:

#!/bin/bash
# Check UnborgableSystem implementation
cat Content.Shared/_DV/Traits/Assorted/UnborgableSystem.cs

# Check MMI restrictions
cat Resources/Prototypes/Entities/Objects/Specific/Robotics/mmi.yml

# Look for brain transfer logic in BrainSystem
cat Content.Server/Body/Systems/BrainSystem.cs

Length of output: 9440

Resources/Prototypes/_Impstation/Loadouts/Jobs/Civilian/bartender.yml (2)

1-8: LGTM! Well-structured senior role requirement.

The 52-hour requirement (1 hour per week for 1 year) is a reasonable progression path for the Senior Bartender role.


10-18: Verify nightclub suit entities exist.

Ensure the referenced entities exist: ClothingUniformNightclubSuit and ClothingUniformNightclubSuitSkirt

✅ Verification successful

Both nightclub suit entities exist and are properly integrated

  • Entities are defined in Resources/Prototypes/_Impstation/Entities/Clothing/Uniforms/
  • Available in bardrobe vending machine
  • Properly referenced in loadout groups
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for nightclub suit entity definitions
rg "ClothingUniformNightclubSuit" -A 5

Length of output: 3924

Resources/Prototypes/Catalog/VendingMachines/Inventories/chapel.yml (1)

6-7: LGTM! Appropriate inventory quantities.

The addition of funeral suits with 4 units each provides sufficient options for the chaplain's ceremonial duties.

Resources/Prototypes/Catalog/VendingMachines/Inventories/detdrobe.yml (1)

23-26: LGTM! Enhanced detective wardrobe options.

The new uniform variants (Detective Suit and Miami Vice) provide appropriate style options while maintaining role identity.

Resources/Prototypes/Catalog/Fills/Items/briefcases.yml (1)

28-28: LGTM! Thematically appropriate equipment.

The hitman suit is a more fitting choice for the sniper bundle than the previous lawyer jumpsuit.

Resources/Prototypes/_DV/Entities/Clothing/Neck/misc.yml (1)

14-32: Verify temperature protection coefficients.

The cold weather poncho has significant temperature protection (heating: 1.1, cooling: 0.1) and armor (10% heat resistance). Please verify these values align with game balance.

✅ Verification successful

Temperature protection values are appropriate

The cold weather poncho's temperature coefficients (heating: 1.1, cooling: 0.1) exactly match wintercoat values and are well-balanced within the game's protection hierarchy - stronger than basic clothing but weaker than specialized space gear. The 10% heat resistance is a reasonable value for this type of garment.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for similar clothing items to compare protection values
rg -A 2 "heatingCoefficient|coolingCoefficient" 

Length of output: 37435

Resources/Prototypes/Maps/byoin.yml (1)

40-40: LGTM! Role configuration is well-balanced.

The Surgeon role is properly integrated with appropriate availability limits [1,1], matching other specialized medical roles.

Resources/Prototypes/Catalog/VendingMachines/Inventories/secdrobe.yml (1)

29-29: Review security equipment availability.

The addition of cold weather ponchos (ClothingNeckCWPSec) to SecDrobe while removing basic armor could impact security officer protection capabilities.

Resources/Prototypes/Entities/Mobs/NPCs/simplemob.yml (1)

33-33: LGTM! Consistent anesthesia implementation.

The Anesthesia status effect is properly added to both SimpleSpaceMobBase and SimpleMobBase, ensuring consistent behavior across mob types.

Also applies to: 112-112

Resources/Prototypes/Entities/Mobs/Species/reptilian.yml (1)

34-34: LGTM! Addition of 'Hiss' emote enhances species flavor.

The addition of the 'Hiss' emote to the reptilian species aligns well with the species' characteristics and the corresponding sound implementation mentioned in the summary.

Resources/Prototypes/Maps/asterisk.yml (1)

47-49: Verify medical staffing balance across all maps.

The introduction of the Surgeon role and adjustment of Medical Doctor slots appears systematic across maps. However, consider the following:

  1. The reduction in Medical Doctor slots (-1 per map) combined with adding 1-2 Surgeon slots may impact overall medical coverage during peak hours.
  2. The specialized Surgeon role might need additional documentation for players regarding its specific responsibilities versus general Medical Doctors.
Resources/Prototypes/Maps/glacier.yml (1)

58-58: LGTM! Job role addition is well-balanced.

The Surgeon role's availability [1, 2] aligns well with other medical roles like Paramedic [1, 2] and Chemist [1, 2].

Resources/Prototypes/Maps/hive.yml (1)

42-47: LGTM! Well-balanced medical staff distribution.

The reduction in MedicalDoctor slots [3, 4] combined with the new Surgeon role [1, 1] maintains a balanced medical team composition.

Resources/Prototypes/_DV/Entities/Clothing/Belt/belts.yml (1)

107-110: LGTM! Storage whitelist additions are appropriate.

The addition of HandLabeler and Stamp to the paperwork belt's whitelist aligns with its intended purpose.

Resources/Prototypes/Entities/Clothing/OuterClothing/vests.yml (1)

94-97: Verify security implications of WhitelistChameleon tag.

While the PermissibleForSurgery tag is appropriate for the tank harness, the WhitelistChameleon tag needs verification for potential security implications.

✅ Verification successful

WhitelistChameleon tag is a security feature with proper implementation

The tag is part of the chameleon clothing system's security measures, used as an allowlist to explicitly mark items that can be safely mimicked. The implementation includes proper validation and safety checks.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check usage and implications of WhitelistChameleon tag
# Search for other items with WhitelistChameleon and related security checks

echo "Searching for WhitelistChameleon usage..."
rg -l "WhitelistChameleon"

echo "Searching for Chameleon-related security checks..."
ast-grep --pattern 'class $_ {
  $$$
  WhitelistChameleon
  $$$
}'

Length of output: 4060


Script:

#!/bin/bash
# Check the chameleon system implementation for security measures
echo "Examining SharedChameleonClothingSystem.cs..."
cat Content.Shared/Clothing/EntitySystems/SharedChameleonClothingSystem.cs

echo -e "\nChecking for related components..."
rg -l "Chameleon" --type cs

echo -e "\nChecking for chameleon-related tests..."
fd test.*chameleon -i

Length of output: 5228

Resources/Prototypes/_Impstation/Entities/Clothing/Uniforms/jumpsuits.yml (2)

13-110: LGTM! Other uniform additions are well-themed.

The remaining uniform additions have appropriate descriptions and themes that align with their intended roles.


4-6: Review the thematic appropriateness of the contract killer suit.

The description "The perfect outfit for blending in at any event, office, or space station" combined with the name "contract killer suit" might promote inappropriate behavior. Consider revising to maintain appropriate game content.

✅ Verification successful

The contract killer suit's theme is consistent with the game's content

The description aligns with the game's established mix of dark humor and stealth mechanics, similar to other items in the codebase. The theme is appropriate within the context of the game's existing content.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for similar concerning content
# Search for potentially inappropriate themes in clothing descriptions

echo "Searching for similar concerning descriptions..."
rg -i "killer|assassin|murder" "Resources/Prototypes"

Length of output: 9766

Resources/Prototypes/_Impstation/Entities/Clothing/Uniforms/jumpskirts.yml (1)

1-110: LGTM! Well-structured entities with consistent naming.

The entities follow a consistent structure and naming conventions:

  • All entities properly inherit from ClothingUniformBase
  • Consistent sprite paths under _Impstation/Clothing/Uniforms/Jumpskirt/
  • Thematic descriptions that match their intended use
Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml (1)

28-29: Verify the new clothing items in the theater vending machine.

The new clothing items have been added to the theater vending machine inventory with appropriate quantities:

  • Mr Space Wide suit and skirt (2 each)
  • Hitman suit and skirt (1 each)
  • BROS blazer and skirt (1 each)

Run the following script to verify the clothing items exist in the codebase:

Also applies to: 111-114

✅ Verification successful

All clothing items in theater vending machine are properly implemented

The verification confirms that all new clothing items (Mr Space Wide, Hitman, and BROS variants) are properly defined in the prototype files with both suit/blazer and skirt versions, complete with names, descriptions, and corresponding sprite assets.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the existence of new clothing items.

# Test: Search for the new clothing items in the codebase.
rg -l "ClothingUniformMrSpaceWide|ClothingUniformHitmanSuit|ClothingUniformBrosBlazer"

Length of output: 550


Script:

#!/bin/bash
# Search for all variants including skirts and examine their definitions
rg "ClothingUniform(MrSpaceWide|HitmanSuit|BrosBlazer|MrSpaceWideSkirt|HitmanSkirt|BrosSkirt)" -A 5 Resources/Prototypes/_Impstation/Entities/Clothing/Uniforms/

Length of output: 4247

Resources/Prototypes/_DV/Recipes/Lathes/clothing.yml (1)

63-78: LGTM! New poncho recipes with appropriate material costs.

The new recipes for cold weather ponchos are well-structured:

  • Arctic poncho requires cloth and durathread materials
  • Security poncho inherits from the arctic poncho recipe
Resources/Prototypes/Catalog/Cargo/cargo_vending.yml (1)

46-46: Cost adjustment for AutoDrobe restock.

The cost increase from 2100 to 2200 is reasonable given the new clothing items added to the AutoDrobe inventory.

Resources/Prototypes/Recipes/Reactions/chemicals.yml (1)

365-365: Increased ChloralHydrate yield is reasonable.

The change triples the yield of ChloralHydrate from 1 to 3, making it more cost-effective to produce while maintaining the same reactant requirements.

Resources/Prototypes/Entities/Mobs/Species/base.yml (1)

149-149: LGTM!

The addition of the Anesthesia status effect is properly integrated into the StatusEffects component's allowed list.

Resources/Prototypes/Voice/speech_emote_sounds.yml (1)

95-96: Verify sound collection existence

The changes reference a ReptillianHiss sound collection. Ensure this collection is properly defined in the sound collections.

Also applies to: 121-122

✅ Verification successful

Sound collection properly defined

The ReptillianHiss sound collection is correctly defined in Resources/Prototypes/_Impstation/SoundCollections/reptilian.yml with the appropriate audio file.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the existence of ReptillianHiss sound collection

# Search for ReptillianHiss collection definition
rg -l "id: ReptillianHiss" "Resources/Prototypes"

Length of output: 113


Script:

#!/bin/bash
# Check the content of the reptilian sound collection file
cat "Resources/Prototypes/_Impstation/SoundCollections/reptilian.yml"

Length of output: 183

Resources/Prototypes/Entities/Clothing/OuterClothing/misc.yml (1)

281-284: Verify surgery system integration

The addition of the PermissibleForSurgery tag suggests integration with the surgery system. Ensure the surgery system properly handles this tag.

✅ Verification successful

Surgery system properly handles PermissibleForSurgery tag

The tag is correctly integrated into the surgery system's validation logic, allowing surgery to be performed through clothing items that have this tag. The implementation in SharedSurgerySystem.Steps.cs explicitly checks for and respects this tag during surgery validation.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify surgery system's handling of PermissibleForSurgery tag

# Search for references to the PermissibleForSurgery tag in surgery-related code
rg "PermissibleForSurgery" "Content/Server" "Content/Shared" -A 5

Length of output: 171


Script:

#!/bin/bash
# Search for all references to PermissibleForSurgery tag
rg "PermissibleForSurgery" -A 5

# Search for surgery-related systems and components
rg "surgery" -i --type cs -A 5

Length of output: 77554

Resources/Changelog/DeltaVChangelog.yml (1)

3752-3849: Well-documented changelog entries!

The latest additions maintain good documentation practices with clear descriptions of changes, proper categorization of change types, and traceable PR links.

Resources/Prototypes/Maps/lighthouse.yml (1)

56-59: LGTM! Job slot changes align with the new medical system.

The reduction in Medical Doctor slots and addition of Surgeon slots reflects the specialization of medical roles, which is consistent with the introduction of the new surgery system.

Resources/Prototypes/Maps/tortuga.yml (1)

41-46: LGTM! Consistent job slot changes across maps.

The changes maintain proportional staffing levels while introducing the Surgeon role, ensuring consistency with other map changes.

Resources/Prototypes/Maps/arena.yml (1)

41-46: LGTM! Appropriately scaled job slot changes for arena map.

The reduced Surgeon slots (1 instead of 2) is appropriate for the arena's smaller scale, while maintaining the overall medical role restructuring.

Resources/Prototypes/Reagents/toxins.yml (2)

58-58: LGTM! Adjusted metabolism rate for surgical utility.

The slower metabolism rate (0.25) allows ChloralHydrate to last longer, making it more practical for surgical procedures.


73-82: Verify anesthesia effect parameters.

The new anesthesia effect looks good, but let's verify:

  1. Is 10 units an appropriate minimum threshold?
  2. Is 4.0 seconds sufficient duration for surgical procedures?
  3. Should the effect really not refresh?

Consider adding comments explaining these magic numbers and their implications for gameplay balance.

Resources/Prototypes/Loadouts/loadout_groups.yml (4)

341-344: LGTM! Enhanced Bartender uniform variety.

Added NightclubSuit and SeniorBartender variants with skirt options, providing more character customization options.


465-466: LGTM! Added thematic Chaplain uniform.

The FuneralSuit addition with skirt variant fits the Chaplain's role perfectly.


1348-1351: LGTM! Expanded Detective uniform options.

Added MiamiVice and DetectiveSuit variants with skirt options, providing both classic and stylized options for the role.


1628-1629: LGTM! Added formal Reporter uniform.

The BrosBlazer addition with skirt variant provides a professional option for the Reporter role.

Resources/Prototypes/Entities/Mobs/NPCs/animals.yml (2)

1518-1518: LGTM! Enhanced emote capabilities.

The addition of the 'Hiss' emote to kobolds is a logical enhancement that aligns with their reptilian nature.


1905-1915: LGTM! Enhanced interaction capabilities.

The addition of speech, vocal, and accent components enriches the lizard's interaction mechanics with appropriate reptilian characteristics:

  • Kobold accent for speech
  • Reptilian sound effects
  • Male/female vocal variations

Comment on lines +1 to +6
- type: entity
parent: MarkerBase
id: LawSpawner
name: Law Board Random Spawner
placement:
mode: PlaceFree
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codebase verification

Confirmed: Law spawner unrelated to medical changes

The codebase analysis shows no direct connections between law boards and medical systems. This confirms that the law board spawner should be moved to a separate PR focused on law/AI systems.

🔗 Analysis chain

Verify PR scope: Law spawner in medical PR

This new law board spawner entity appears to be unrelated to the PR's medical focus. Consider moving these changes to a separate PR focused on law/AI systems for better change management.

Let's verify if there are any medical-related dependencies:

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for medical-related references to law boards
rg -l "LawSpawner|CircuitBoard" --type yaml | xargs rg -l "Surgery|Medical|Health|Anesthesia"

Length of output: 1577


Script:

#!/bin/bash
# Check content of files that might show medical-law connections
rg -A 5 -B 5 "Law.*Medical|Medical.*Law" --type yaml

Length of output: 54

Comment on lines +46 to +53
private void OnExamined(Entity<UnborgableComponent> ent, ref ExaminedEvent args)
{
// need a health analyzer to see if someone can't be borged, can't just look at them and know
if (!args.IsInDetailsRange || HasComp<BodyComponent>(ent))
return;

args.PushMarkup(Loc.GetString("brain-cannot-be-borged-message"));
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Review examination message visibility logic.

The examination message is only shown when the entity has no BodyComponent, which seems counterintuitive. Shouldn't this be visible when examining the brain itself?

Consider this alternative implementation:

-        if (!args.IsInDetailsRange || HasComp<BodyComponent>(ent))
+        if (!args.IsInDetailsRange)
            return;

+        // Only show message when examining the brain itself
+        if (!TryComp<InputMoverComponent>(ent, out _))
+            return;

         args.PushMarkup(Loc.GetString("brain-cannot-be-borged-message"));

Committable suggestion skipped: line range outside the PR's diff.

Comment on lines +163213 to +163235
- proto: SpawnPointSurgeon
entities:
- uid: 29153
components:
- type: Transform
rot: -1.5707963267948966 rad
pos: 78.5,-21.5
parent: 1
- uid: 30096
components:
- type: Transform
pos: 91.5,-6.5
parent: 1
- uid: 30097
components:
- type: Transform
pos: 90.5,-6.5
parent: 1
- uid: 30098
components:
- type: Transform
pos: 6.5,-46.5
parent: 1
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codebase verification

The spawn point placement concern is valid.

The codebase analysis confirms that the SpawnPointSurgeon (11.5,-48.5) is significantly distant from the main surgery area, which is centered around coordinates 77.5,-16.5 as indicated by multiple surgery-related fixtures including the Surgery APC, airlock, and signage. This distance could indeed impact gameplay efficiency.

🔗 Analysis chain

Review the distant spawn point placement.

While multiple spawn points provide gameplay variety, the spawn point at coordinates 6.5,-46.5 seems too far from the surgery area. This might impact gameplay efficiency as surgeons need quick access to their workspace.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check typical distances between spawn points and workspaces in other maps
rg -A 5 'SpawnPoint.*\n.*Transform' | grep -i '\.yml$'

Length of output: 248


Script:

#!/bin/bash
# Search for spawn point patterns in yml files
rg -l "SpawnPoint" --glob "*.yml"

# Then get specific spawn point coordinates
rg "SpawnPoint.*Transform.*\d+\.\d+.*\d+\.\d+" --glob "*.yml" -A 2

Length of output: 3553


Script:

#!/bin/bash
# Search for surgeon spawn points with coordinates
rg "SpawnPointSurgeon" --glob "*.yml" -A 3

# Search for surgery-related areas or workspaces
rg "surgery|Surgery" --glob "*.yml" -A 3

Length of output: 74360


Script:

#!/bin/bash
# Search for coordinates in hive.yml
rg "(-?\d+\.5,-?\d+\.5)" Resources/Maps/hive.yml -A 1

Length of output: 106505


Script:

#!/bin/bash
# Search for surgeon spawn points and nearby context
rg -B 2 -A 2 "SpawnPointSurgeon|surgery|medical|Surgery" Resources/Maps/hive.yml

Length of output: 910

Comment on lines +34 to +40
- type: trait
id: Depression
name: trait-depression-name
description: trait-depression-desc
traitGear: PillCanisterNeurozenium
category: Disabilities
components: []
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Depression trait needs components for gameplay effects.

The trait has an empty components list but associates with PillCanisterNeurozenium. Consider adding components to handle:

  • Mood effects
  • Medication interaction
  • Status effects

Comment on lines +111 to +112
- type: Tag
id: PermissibleForSurgery # Can be worn on the body during surgery
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codebase verification

Critical dependencies found - removal will break multiple systems

The removed tags are actively used in:

  • Crafting system (Bayonet tag in musket crafting)
  • Research technology tree (BorgModuleSecurityChase)
  • Entity inheritance hierarchy (BaseBorgModuleSecurity)
  • Lathe recipes and cyborg module system
🔗 Analysis chain

Verify tag dependencies before removal.

The removal of multiple tags (Bayonet, BorgModuleSecurity, etc.) could break existing systems. Please verify no components or entities depend on these tags.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for usage of removed tags
echo "Searching for removed tag usage..."
rg -l "Bayonet|BorgModuleSecurity|BorgSecurityArmour|BorgSecurityHead|BorgSecurityLArm|BorgSecurityLLeg|BorgSecurityRArm|BorgSecurityRLeg|BorgSecurityTorso"

Length of output: 1048


Script:

#!/bin/bash
# Check actual usage patterns in non-definition files
echo "=== Checking recipe usage ==="
rg -A 5 "Bayonet|BorgModuleSecurity|BorgSecurityArmour|BorgSecurityHead|BorgSecurityLArm|BorgSecurityLLeg|BorgSecurityRArm|BorgSecurityRLeg|BorgSecurityTorso" "Resources/Prototypes/_DV/Recipes/"

echo -e "\n=== Checking entity usage ==="
rg -A 5 "Bayonet|BorgModuleSecurity|BorgSecurityArmour|BorgSecurityHead|BorgSecurityLArm|BorgSecurityLLeg|BorgSecurityRArm|BorgSecurityRLeg|BorgSecurityTorso" "Resources/Prototypes/_DV/Entities/"

echo -e "\n=== Checking research usage ==="
rg -A 5 "Bayonet|BorgModuleSecurity|BorgSecurityArmour|BorgSecurityHead|BorgSecurityLArm|BorgSecurityLLeg|BorgSecurityRArm|BorgSecurityRLeg|BorgSecurityTorso" "Resources/Prototypes/_DV/Research/"

Length of output: 10356

Comment on lines +337 to +341
- !type:GenericStatusEffect # DeltaV: anesthesia
key: Anesthesia
component: Anesthesia
refresh: false
type: Add
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Add reagent threshold condition for anesthesia effect

The Anesthesia effect is added without any conditions, unlike the similar effect in NitrousOxide which has a minimum threshold. This could cause immediate anesthesia regardless of dosage.

Apply this diff to add appropriate conditions:

  - !type:GenericStatusEffect # DeltaV: anesthesia
+   conditions:
+   - !type:ReagentThreshold
+     reagent: Nocturine
+     min: 8
    key: Anesthesia
    component: Anesthesia
    refresh: false
    type: Add
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- !type:GenericStatusEffect # DeltaV: anesthesia
key: Anesthesia
component: Anesthesia
refresh: false
type: Add
- !type:GenericStatusEffect # DeltaV: anesthesia
conditions:
- !type:ReagentThreshold
reagent: Nocturine
min: 8
key: Anesthesia
component: Anesthesia
refresh: false
type: Add

Comment on lines +1905 to +1915
- type: ReplacementAccent # Impstation starts here
accent: kobold
- type: Speech
speechSounds: Lizard
speechVerb: Reptilian
allowedEmotes: ['Hiss'] # Can't thump tail because no body component
- type: Vocal
sounds:
Male: MaleReptilian
Female: FemaleReptilian
Unsexed: MaleReptilian # Impstation ends here
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codebase verification

Missing reptilian vocal sound definitions

The Lizard speech sounds and hissing emote are properly defined, but the following vocal sounds referenced in the code are missing:

  • MaleReptilian
  • FemaleReptilian

These sounds need to be defined in a sound collection file to match the vocal component configuration.

🔗 Analysis chain

Verify the sound assets are included.

Since new sound components have been added, ensure that all referenced sound assets exist:

  • Lizard speech sounds
  • MaleReptilian and FemaleReptilian vocal sounds

Run this script to verify the sound assets:

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for required sound assets

# Search for sound definitions
rg -A 5 "MaleReptilian|FemaleReptilian|Lizard" "Resources/Prototypes/**/sounds.yml"

Length of output: 160


Script:

#!/bin/bash
# First, find all yml/yaml files that might contain sound definitions
fd -e yml -e yaml | grep -i "sound"

# Then search for the specific sound identifiers in all yml/yaml files
# since sound definitions might be in files not explicitly named with "sound"
rg -l "MaleReptilian|FemaleReptilian|Lizard" $(fd -e yml -e yaml)

Length of output: 69507


Script:

#!/bin/bash
# Check the reptilian sound collection file for the specific sound IDs
rg -A 5 "Lizard:|MaleReptilian:|FemaleReptilian:" "Resources/Prototypes/_Impstation/SoundCollections/reptilian.yml"

Length of output: 115


Script:

#!/bin/bash
# First, check the content of the reptilian sound file
cat "Resources/Prototypes/_Impstation/SoundCollections/reptilian.yml"

# Also search more broadly in sound-related files for any reptilian references
rg -l "reptilian" $(fd -e yml -e yaml | grep -i "sound")

Length of output: 4269


Script:

#!/bin/bash
# Check speech sound definitions in both base and Impstation directories
echo "=== Base speech sounds ==="
cat "Resources/Prototypes/Voice/speech_sounds.yml"

echo -e "\n=== Impstation speech sounds ==="
cat "Resources/Prototypes/_Impstation/Voice/speech_sounds.yml" 2>/dev/null || echo "File not found"

Length of output: 4194

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

🔭 Outside diff range comments (4)
Resources/Prototypes/_DV/Entities/Clothing/Neck/misc.yml (1)

Removal of prosecutor badge breaks existing loadout configuration

The prosecutor badge entity is being removed, but it's still actively referenced in Resources/Prototypes/_DV/Loadouts/Jobs/Justice/prosecutor.yml under the ProsecutorNeck loadout. This removal will break the prosecutor role's loadout system.

  • Update or remove the ProsecutorNeck loadout in Resources/Prototypes/_DV/Loadouts/Jobs/Justice/prosecutor.yml to maintain consistency
🔗 Analysis chain

Line range hint 1-13: Verify impact of removing prosecutor badge

The removal of ClothingNeckProsecutorbadge might affect gameplay mechanics for legal/lawyer roles. Please ensure this removal is intentional and that alternative items exist for these roles.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for other lawyer/legal role related items and loadouts
rg -l "lawyer|prosecutor|legal" "Resources/Prototypes"

# Check if the badge is referenced in any loadouts
rg "ClothingNeckProsecutorbadge" "Resources/Prototypes"

Length of output: 3511


Script:

#!/bin/bash
# Check the prosecutor role and loadout files
cat "Resources/Prototypes/_DV/Roles/Jobs/Justice/prosecutor.yml"
cat "Resources/Prototypes/_DV/Loadouts/Jobs/Justice/prosecutor.yml"

# Check if there are any recent changes to these files
git diff HEAD~1 "Resources/Prototypes/_DV/Roles/Jobs/Justice/prosecutor.yml" "Resources/Prototypes/_DV/Loadouts/Jobs/Justice/prosecutor.yml"

Length of output: 1789

Resources/Maps/arena.yml (1)

Line range hint 1-190608: Fix YAML Syntax Error: Duplicate Version Key

The pipeline is failing due to a duplicate 'version' key in the map file. This needs to be resolved before merging.

Run this script to locate the duplicate keys:

#!/bin/bash
# Description: Find duplicate version keys in YAML
echo "=== Duplicate Version Keys ==="
rg -n '^version:' Resources/Maps/arena.yml
🧰 Tools
🪛 GitHub Actions: Build & Test Debug

[error] Duplicate key 'version' found while parsing map file

Resources/Maps/hive.yml (1)

Line range hint 192684-192767: Fix negative door timing values

Multiple doors have large negative secondsUntilStateChange values (around -179k seconds). This could cause unexpected behavior in door state transitions.

Consider resetting these values to positive numbers or zero if they're meant to be immediate state changes.

Resources/Prototypes/Maps/arena.yml (1)

Line range hint 1-1: Fix duplicate 'version' key in map file.

The pipeline is failing due to a duplicate 'version' key in the map file configuration.

Please check the map file for duplicate version entries and remove the redundant one.

🧰 Tools
🪛 GitHub Actions: Build & Test Debug

[error] Duplicate key 'version' found while parsing map file

🧹 Nitpick comments (13)
Resources/Prototypes/Voice/speech_emote_sounds.yml (1)

95-96: Fix typo in collection name: "ReptillianHiss" → "ReptilianHiss"

The collection name contains a typo with an extra 'l'. This should be corrected for consistency.

-      collection: ReptillianHiss # Impstation
+      collection: ReptilianHiss # Impstation

Also applies to: 121-122

Resources/Prototypes/Entities/Clothing/OuterClothing/misc.yml (1)

Line range hint 94-97: Consider documenting the surgery clothing system

The introduction of PermissibleForSurgery tags suggests a systematic approach to surgery-compatible clothing. Consider:

  1. Documenting the criteria for surgery-compatible clothing
  2. Creating a checklist for adding new surgery-compatible items
  3. Adding tests to verify surgery system's interaction with tagged clothing

Would you like me to help create documentation for the surgery clothing system or open an issue to track this task?

Also applies to: 281-284

Resources/Locale/en-US/_DV/prototypes/catalog/fills/crates/medical-crates.ftl (1)

1-2: Enhance the description with specific painkiller details.

The current description is quite generic. Consider adding more details about:

  • Types of painkillers included
  • Quantity of each type
  • Any usage restrictions or medical clearance requirements
Resources/Locale/en-US/_DV/borg/borg.ftl (1)

5-5: Consider more specific error messaging.

While the message clearly indicates the brain is unusable, it could be more informative about:

  • The specific type of damage
  • Whether this is a permanent condition
  • Any relevant medical procedures that might have caused this state

Example:

-brain-cannot-be-borged-message = [color=red]This brain is damaged beyond use.[/color]
+brain-cannot-be-borged-message = [color=red]This brain cannot be used for borging due to severe neural damage.[/color]
Content.Shared/_DV/Surgery/AnesthesiaComponent.cs (1)

5-9: Enhance component documentation and consider additional fields.

While the component works as a marker, consider:

  1. Expanding the XML documentation to explain:
    • How it interacts with the surgery system
    • Duration of effects
    • Any side effects
  2. Adding fields to track:
    • Anesthesia duration
    • Depth level
    • Side effects
Resources/Locale/en-US/_DV/job/job-description.ftl (1)

3-3: Fix typo in chief justice description.

"recieves" should be "receives"

-job-description-chief-justice = Manage the justice department, act as a judge, and ensure everyone recieves fair and just treatment.
+job-description-chief-justice = Manage the justice department, act as a judge, and ensure everyone receives fair and just treatment.
Content.Client/Doors/DoorSystem.cs (1)

84-89: Clean up commented code and improve error handling.

The commented code should be removed, and the error handling for resource loading could be improved.

-            args.Sprite.BaseRSI = res?.RSI; // DeltaV
-            /* DeltaV: just set BaseRSI instead
-            foreach (var layer in args.Sprite.AllLayers)
-            {
-                layer.Rsi = res?.RSI;
-            }*/
+            if (res?.RSI == null)
+            {
+                Log.Error("Failed to load RSI '{0}' for door sprite", baseRsi);
+                return;
+            }
+            args.Sprite.BaseRSI = res.RSI;
Resources/Maps/tortuga.yml (1)

73401-73492: Consider optimizing curtain placements.

There are several curtains placed very close to each other (e.g., at coordinates -70.5,34.5 and -70.5,33.5). Consider:

  1. Consolidating nearby curtains to reduce entity count
  2. Using the CurtainSpawner more extensively for dynamic placement
Resources/Prototypes/_DV/status_effects.yml (1)

13-14: Consider documenting the Anesthesia status effect behavior

The new Anesthesia status effect lacks configuration details. Consider adding properties to define:

  • Duration
  • Effects on player state
  • Interaction with surgery mechanics
Resources/Prototypes/_DV/Recipes/Lathes/medical.yml (1)

26-32: Consider recipe categorization.

TankHarness seems more appropriate for a clothing or security lathe rather than medical. Consider moving this recipe to a more suitable category.

Resources/Prototypes/_DV/Catalog/Cargo/cargo_medical.yml (1)

21-29: Review painkiller crate pricing.

The cost of 1000 for painkillers seems high compared to the removed medical scrubs (500). Consider adjusting the price or justifying the cost based on the contents' value.

Resources/Prototypes/_Impstation/Entities/Clothing/Uniforms/jumpsuits.yml (1)

38-40: Consider revising the description for clarity.

The description "The unspoken attire for any hotel, motel, or branded inn activities" is somewhat vague. Consider being more specific about the intended use case while maintaining the game's tone.

Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml (1)

28-29: Consider grouping related items together.

The new clothing items are added in two separate locations. Consider grouping them together for better maintainability:

  • ClothingUniformMrSpaceWide and ClothingUniformMrSpaceWideSkirt (lines 28-29)
  • ClothingUniformHitmanSuit, ClothingUniformHitmanSuitSkirt, ClothingUniformBrosBlazer, and ClothingUniformBrosBlazerSkirt (lines 111-114)

Also applies to: 111-114

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 9cffeab and 4bccb4e.

⛔ Files ignored due to path filters (109)
  • Resources/Audio/_Impstation/Voice/Reptilian/reptillian_hiss1.ogg is excluded by !**/*.ogg
  • Resources/Textures/_DV/Clothing/Neck/Misc/cwparctic.rsi/equipped-NECK.png is excluded by !**/*.png
  • Resources/Textures/_DV/Clothing/Neck/Misc/cwparctic.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_DV/Clothing/Neck/Misc/cwparctic.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_DV/Clothing/Neck/Misc/cwparctic.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_DV/Clothing/Neck/Misc/cwpsec.rsi/equipped-NECK.png is excluded by !**/*.png
  • Resources/Textures/_DV/Clothing/Neck/Misc/cwpsec.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_DV/Clothing/Neck/Misc/cwpsec.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_DV/Clothing/Neck/Misc/cwpsec.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/brosblazer.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/brosblazer.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/brosblazer.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/brosblazer.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/brosblazer.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/brownsuit.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/brownsuit.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/brownsuit.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/brownsuit.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/brownsuit.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/creamsuit.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/creamsuit.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/creamsuit.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/creamsuit.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/creamsuit.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/detectivesuit.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/detectivesuit.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/detectivesuit.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/detectivesuit.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/detectivesuit.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/funeralsuit.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/funeralsuit.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/funeralsuit.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/funeralsuit.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/funeralsuit.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/hitmansuit.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/hitmansuit.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/hitmansuit.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/hitmansuit.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/hitmansuit.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/miamivice.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/miamivice.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/miamivice.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/miamivice.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/miamivice.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/mrspacewide.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/mrspacewide.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/mrspacewide.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/mrspacewide.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/mrspacewide.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/nightclubsuit.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/nightclubsuit.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/nightclubsuit.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/nightclubsuit.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/nightclubsuit.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/senior_bartender.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/senior_bartender.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/senior_bartender.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/senior_bartender.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/senior_bartender.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/brosblazer.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/brosblazer.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/brosblazer.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/brosblazer.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/brosblazer.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/brownsuit.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/brownsuit.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/brownsuit.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/brownsuit.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/brownsuit.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/creamsuit.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/creamsuit.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/creamsuit.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/creamsuit.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/creamsuit.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/detectivesuit.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/detectivesuit.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/detectivesuit.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/detectivesuit.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/detectivesuit.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/funeralsuit.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/funeralsuit.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/funeralsuit.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/funeralsuit.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/funeralsuit.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/hitmansuit.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/hitmansuit.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/hitmansuit.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/hitmansuit.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/hitmansuit.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/miamivice.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/miamivice.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/miamivice.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/miamivice.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/miamivice.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/mrspacewide.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/mrspacewide.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/mrspacewide.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/mrspacewide.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/mrspacewide.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/nightclubsuit.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/nightclubsuit.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/nightclubsuit.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/nightclubsuit.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/nightclubsuit.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/senior_bartender.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/senior_bartender.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/senior_bartender.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/senior_bartender.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/senior_bartender.rsi/inhand-right.png is excluded by !**/*.png
📒 Files selected for processing (82)
  • Content.Client/Doors/DoorSystem.cs (1 hunks)
  • Content.Client/HealthAnalyzer/UI/HealthAnalyzerWindow.xaml.cs (5 hunks)
  • Content.Server/_Shitmed/Medical/Surgery/SurgerySystem.cs (3 hunks)
  • Content.Shared/_DV/Surgery/AnesthesiaComponent.cs (1 hunks)
  • Content.Shared/_DV/Traits/Assorted/UnborgableComponent.cs (1 hunks)
  • Content.Shared/_DV/Traits/Assorted/UnborgableSystem.cs (1 hunks)
  • Content.Shared/_Shitmed/Surgery/SharedSurgerySystem.Steps.cs (1 hunks)
  • Content.Shared/_Shitmed/Surgery/SharedSurgerySystem.cs (2 hunks)
  • Resources/Audio/_Impstation/Voice/Reptilian/attributions.yml (1 hunks)
  • Resources/Changelog/DeltaVChangelog.yml (1 hunks)
  • Resources/Locale/en-US/_DV/borg/borg.ftl (1 hunks)
  • Resources/Locale/en-US/_DV/job/job-description.ftl (1 hunks)
  • Resources/Locale/en-US/_DV/medical/components/health-analyzer-component.ftl (1 hunks)
  • Resources/Locale/en-US/_DV/prototypes/catalog/fills/crates/medical-crates.ftl (1 hunks)
  • Resources/Locale/en-US/_DV/traits/traits.ftl (1 hunks)
  • Resources/Maps/arena.yml (28 hunks)
  • Resources/Maps/byoin.yml (86 hunks)
  • Resources/Maps/hive.yml (35 hunks)
  • Resources/Maps/tortuga.yml (12 hunks)
  • Resources/Prototypes/Catalog/Cargo/cargo_vending.yml (1 hunks)
  • Resources/Prototypes/Catalog/Fills/Items/briefcases.yml (1 hunks)
  • Resources/Prototypes/Catalog/VendingMachines/Inventories/bardrobe.yml (1 hunks)
  • Resources/Prototypes/Catalog/VendingMachines/Inventories/chapel.yml (1 hunks)
  • Resources/Prototypes/Catalog/VendingMachines/Inventories/curadrobe.yml (1 hunks)
  • Resources/Prototypes/Catalog/VendingMachines/Inventories/detdrobe.yml (1 hunks)
  • Resources/Prototypes/Catalog/VendingMachines/Inventories/lawdrobe.yml (1 hunks)
  • Resources/Prototypes/Catalog/VendingMachines/Inventories/secdrobe.yml (1 hunks)
  • Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml (2 hunks)
  • Resources/Prototypes/Entities/Clothing/OuterClothing/misc.yml (1 hunks)
  • Resources/Prototypes/Entities/Clothing/OuterClothing/vests.yml (1 hunks)
  • Resources/Prototypes/Entities/Mobs/NPCs/animals.yml (2 hunks)
  • Resources/Prototypes/Entities/Mobs/NPCs/simplemob.yml (2 hunks)
  • Resources/Prototypes/Entities/Mobs/Species/base.yml (1 hunks)
  • Resources/Prototypes/Entities/Mobs/Species/reptilian.yml (1 hunks)
  • Resources/Prototypes/Entities/Objects/Specific/Robotics/mmi.yml (1 hunks)
  • Resources/Prototypes/Entities/Structures/Machines/lathe.yml (2 hunks)
  • Resources/Prototypes/Loadouts/loadout_groups.yml (7 hunks)
  • Resources/Prototypes/Maps/arena.yml (1 hunks)
  • Resources/Prototypes/Maps/asterisk.yml (1 hunks)
  • Resources/Prototypes/Maps/byoin.yml (1 hunks)
  • Resources/Prototypes/Maps/glacier.yml (1 hunks)
  • Resources/Prototypes/Maps/hive.yml (1 hunks)
  • Resources/Prototypes/Maps/lighthouse.yml (1 hunks)
  • Resources/Prototypes/Maps/tortuga.yml (1 hunks)
  • Resources/Prototypes/Reagents/gases.yml (1 hunks)
  • Resources/Prototypes/Reagents/narcotics.yml (1 hunks)
  • Resources/Prototypes/Reagents/toxins.yml (2 hunks)
  • Resources/Prototypes/Recipes/Reactions/chemicals.yml (1 hunks)
  • Resources/Prototypes/Voice/speech_emote_sounds.yml (2 hunks)
  • Resources/Prototypes/_DV/Catalog/Cargo/cargo_medical.yml (1 hunks)
  • Resources/Prototypes/_DV/Catalog/Fills/Crates/medical.yml (1 hunks)
  • Resources/Prototypes/_DV/Entities/Clothing/Belt/belts.yml (1 hunks)
  • Resources/Prototypes/_DV/Entities/Clothing/Neck/misc.yml (1 hunks)
  • Resources/Prototypes/_DV/Entities/Markers/Spawners/Random/laws.yml (1 hunks)
  • Resources/Prototypes/_DV/Recipes/Lathes/clothing.yml (1 hunks)
  • Resources/Prototypes/_DV/Recipes/Lathes/medical.yml (1 hunks)
  • Resources/Prototypes/_DV/Traits/disabilities.yml (1 hunks)
  • Resources/Prototypes/_DV/status_effects.yml (1 hunks)
  • Resources/Prototypes/_DV/tags.yml (1 hunks)
  • Resources/Prototypes/_Impstation/Entities/Clothing/Uniforms/jumpskirts.yml (1 hunks)
  • Resources/Prototypes/_Impstation/Entities/Clothing/Uniforms/jumpsuits.yml (1 hunks)
  • Resources/Prototypes/_Impstation/Loadouts/Jobs/Civilian/bartender.yml (1 hunks)
  • Resources/Prototypes/_Impstation/Loadouts/Jobs/Civilian/chaplain.yml (1 hunks)
  • Resources/Prototypes/_Impstation/Loadouts/Jobs/Civilian/lawyer.yml (1 hunks)
  • Resources/Prototypes/_Impstation/Loadouts/Jobs/Civilian/librarian.yml (1 hunks)
  • Resources/Prototypes/_Impstation/Loadouts/Jobs/Civilian/musician.yml (1 hunks)
  • Resources/Prototypes/_Impstation/Loadouts/Jobs/Security/detective.yml (1 hunks)
  • Resources/Prototypes/_Impstation/Loadouts/Jobs/Wildcards/reporter.yml (1 hunks)
  • Resources/Prototypes/_Impstation/SoundCollections/reptilian.yml (1 hunks)
  • Resources/Textures/_DV/Clothing/Neck/Misc/cwparctic.rsi/meta.json (1 hunks)
  • Resources/Textures/_DV/Clothing/Neck/Misc/cwpsec.rsi/meta.json (1 hunks)
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/brosblazer.rsi/meta.json (1 hunks)
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/brownsuit.rsi/meta.json (1 hunks)
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/creamsuit.rsi/meta.json (1 hunks)
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/detectivesuit.rsi/meta.json (1 hunks)
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/funeralsuit.rsi/meta.json (1 hunks)
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/hitmansuit.rsi/meta.json (1 hunks)
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/miamivice.rsi/meta.json (1 hunks)
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/mrspacewide.rsi/meta.json (1 hunks)
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/nightclubsuit.rsi/meta.json (1 hunks)
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/senior_bartender.rsi/meta.json (1 hunks)
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/brosblazer.rsi/meta.json (1 hunks)
⛔ Files not processed due to max files limit (9)
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/brownsuit.rsi/meta.json
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/creamsuit.rsi/meta.json
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/detectivesuit.rsi/meta.json
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/funeralsuit.rsi/meta.json
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/hitmansuit.rsi/meta.json
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/miamivice.rsi/meta.json
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/mrspacewide.rsi/meta.json
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/nightclubsuit.rsi/meta.json
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/senior_bartender.rsi/meta.json
✅ Files skipped from review due to trivial changes (16)
  • Resources/Textures/_DV/Clothing/Neck/Misc/cwpsec.rsi/meta.json
  • Resources/Prototypes/_Impstation/SoundCollections/reptilian.yml
  • Resources/Prototypes/_Impstation/Loadouts/Jobs/Civilian/librarian.yml
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/brosblazer.rsi/meta.json
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/brownsuit.rsi/meta.json
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/detectivesuit.rsi/meta.json
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/brosblazer.rsi/meta.json
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/creamsuit.rsi/meta.json
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/miamivice.rsi/meta.json
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/hitmansuit.rsi/meta.json
  • Resources/Textures/_DV/Clothing/Neck/Misc/cwparctic.rsi/meta.json
  • Resources/Audio/_Impstation/Voice/Reptilian/attributions.yml
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/senior_bartender.rsi/meta.json
  • Resources/Locale/en-US/_DV/medical/components/health-analyzer-component.ftl
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/funeralsuit.rsi/meta.json
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/mrspacewide.rsi/meta.json
🧰 Additional context used
🪛 GitHub Actions: Build & Test Debug
Resources/Prototypes/Maps/arena.yml

[error] Duplicate key 'version' found while parsing map file

Resources/Maps/arena.yml

[error] Duplicate key 'version' found while parsing map file

🔇 Additional comments (102)
Resources/Prototypes/Voice/speech_emote_sounds.yml (1)

95-96: Verify the existence of the ReptilianHiss sound collection

The changes reference a new sound collection, but we need to ensure it exists and contains the appropriate sound files.

Also applies to: 121-122

✅ Verification successful

Sound collection "ReptillianHiss" is properly configured and available

The collection references a valid sound file at Resources/Audio/_Impstation/Voice/Reptilian/reptillian_hiss1.ogg. The spelling with two 'l's is consistent between the collection name and the sound file.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check if the ReptilianHiss collection is defined and contains valid sound files

# Search for ReptilianHiss collection definition
echo "Searching for ReptilianHiss collection definition..."
rg -l "ReptilianHiss" Resources/Prototypes/

# Search for potential sound files
echo "Searching for potential reptilian hiss sound files..."
fd -e ogg -e wav . Resources/Audio/ | rg -i "hiss|reptil"

Length of output: 934


Script:

#!/bin/bash
# Search for sound collection definitions in the speech emote sounds file
echo "Checking speech_emote_sounds.yml content..."
cat Resources/Prototypes/Voice/speech_emote_sounds.yml

# Search for other sound collection definitions as examples
echo -e "\nSearching for other sound collection definitions..."
rg "collection:" Resources/Prototypes/Voice/

Length of output: 22929

Resources/Prototypes/_DV/Entities/Clothing/Neck/misc.yml (1)

14-33: LGTM! Well-structured security poncho implementation.

The entity has appropriate temperature protection coefficients and armor values for a cold weather garment. The security-specific markings are clearly indicated in the description.

Resources/Maps/byoin.yml (5)

117-117: Verify the tile changes in the map layout.

The tile data has been modified, which affects the visual layout of the map. Please ensure that:

  1. The new tile layout correctly represents the intended surgery area design
  2. There are no gaps or misaligned tiles
  3. The changes maintain proper room boundaries and connections

Also applies to: 157-157


315-315: LGTM! Consistent color scheme applied to brick tiles.

The color changes maintain consistency across all brick tile nodes with proper transparency.

Also applies to: 1778-1778


3667-3681: Verify the gas system configuration for the surgery area.

The gas system has been configured with specific parameters:

  • Volume: 2500
  • Temperature: 293.15K (20°C)
  • Moles distribution defined for various gases

Please ensure these values are appropriate for a surgery room environment.


4678-4694: LGTM! Well-structured device network setup for the surgery area.

The air alarms and device networks are properly configured with:

  • Clear naming conventions (e.g., "Air Alarm: Surgery")
  • Appropriate device connections
  • Strategic positioning of components

Line range hint 5888-63995: Verify the completeness of the surgery area setup.

The changes implement a comprehensive surgery area with:

  1. Medical equipment and supplies
  2. Staff spawn points and access control
  3. Storage and monitoring systems
  4. Proper ventilation and atmosphere control

Please verify that all essential components for a functional surgery area are present and properly positioned.

Run the following script to check for any missing critical components:

✅ Verification successful

Surgery area setup is complete and properly configured

The verification confirms that all essential components for a functional surgery area are present in the byoin.yml map, including:

  • Critical medical equipment (sterile clothing, protective gear)
  • Security measures (locked airlocks, secure windoors)
  • Monitoring systems (surveillance, body scanners)
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify essential components for the surgery area

# Check for critical medical equipment
echo "Checking for critical medical equipment..."
rg -l "ClothingOuterHospitalGown|ClothingMaskSterile|ClothingHandsGlovesNitrile"

# Check for security components
echo "Checking for security components..."
rg -l "AirlockSurgeryLocked|WindoorSecureMedicalLocked"

# Check for monitoring systems
echo "Checking for monitoring systems..."
rg -l "SurveillanceCamera.*Surgery|computerBodyScanner"

Length of output: 6700

Resources/Maps/arena.yml (5)

128355-128372: Review Access Control Configuration

The new lockable button command system controls multiple security devices. Ensure:

  1. Proper access restrictions are in place
  2. Emergency override mechanisms exist
  3. Integration with existing security systems is properly configured
🧰 Tools
🪛 GitHub Actions: Build & Test Debug

[error] Duplicate key 'version' found while parsing map file


162460-162476: Verify Medical Staff Safety

The placement of surgeon spawn points needs review:

  1. Ensure spawn points are in secure areas
  2. Verify emergency escape routes
  3. Check proximity to essential medical equipment
🧰 Tools
🪛 GitHub Actions: Build & Test Debug

[error] Duplicate key 'version' found while parsing map file


Line range hint 1-190608: Security Advisory: Comprehensive Review Required

Given the sensitive nature of changes (weapon systems, medical facilities, security controls), this PR requires:

  1. Security team review
  2. Medical staff consultation
  3. Emergency response procedure updates
  4. Access control validation
🧰 Tools
🪛 GitHub Actions: Build & Test Debug

[error] Duplicate key 'version' found while parsing map file


Line range hint 9852-10027: Verify coordinate system adjustments

The coordinate changes appear to be systematic grid adjustments. Please ensure these changes maintain proper spacing and don't create overlapping entities or unreachable areas.

Run this script to check for potential coordinate overlaps:

✅ Verification successful

Coordinate system verification complete - No overlaps found

The coordinate system adjustments maintain proper spacing with no overlapping entities. All positions follow a consistent 0.5 unit grid system across the map's extent.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for entities with identical coordinates that might cause overlaps
rg -A 1 'pos:' Resources/Maps/arena.yml | grep -B 1 'pos:' | sort | uniq -d

Length of output: 69736

🧰 Tools
🪛 GitHub Actions: Build & Test Debug

[error] Duplicate key 'version' found while parsing map file


186539-186562: ⚠️ Potential issue

Security Review Required: Weapon Turret Placement

The addition of AI-controlled weapon turrets near medical facilities requires careful consideration:

  1. Verify that turret targeting systems exclude medical personnel and patients
  2. Ensure proper safety zones are established

Run this script to analyze the proximity of weapon turrets to medical areas:

✅ Verification successful

No Security Risk: Adequate Separation Between Turret and Medical Areas

The weapon turret is positioned in a separate quadrant (-64.5, -68.5) with significant distance from all medical facilities, which are primarily located in the positive x-axis region. The nearest medical facility is approximately 60 units away, providing adequate separation for safety.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check proximity of turrets to medical/spawn areas
echo "=== Turret Locations ==="
rg -A 3 'WeaponTurretAI' Resources/Maps/arena.yml

echo "=== Medical Area Locations ==="
rg -A 3 'SpawnPointSurgeon|LockerSurgeon|Hospital' Resources/Maps/arena.yml

Length of output: 615


Script:

#!/bin/bash
# Get coordinates and configuration for specific entities
echo "=== Turret Configuration (uid: 20898) ==="
rg -A 10 'uid: 20898' Resources/Maps/arena.yml

echo -e "\n=== Medical Locations Coordinates ==="
for uid in 1954 1951 20889 17310; do
    echo "Entity uid: $uid"
    rg -A 10 "uid: $uid" Resources/Maps/arena.yml
done

Length of output: 3872

🧰 Tools
🪛 GitHub Actions: Build & Test Debug

[error] Duplicate key 'version' found while parsing map file

Resources/Prototypes/_DV/Entities/Markers/Spawners/Random/laws.yml (3)

1-6: LGTM! Entity definition is well-structured.

The entity definition follows best practices with clear naming and appropriate placement mode configuration.


8-9: Consider anchoring the Transform component.

An unanchored transform might allow the spawner to be moved or affected by physics, which could lead to unexpected behavior.

✅ Verification successful

The unanchored transform appears intentional.

The spawner has explicit placement: { mode: PlaceFree } configuration, indicating it's designed to be placed freely. This is consistent with its role as a spawner for collectible/movable law boards.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check if other spawners typically use anchored transforms
ast-grep --pattern 'type: entity
  $$$
  components:
    $$$
    - type: Transform
      anchored: true
    $$$
  - type: RandomSpawner'

Length of output: 138


Script:

#!/bin/bash
# First find files containing RandomSpawner components
rg "type: RandomSpawner" -l | while read -r file; do
  echo "=== $file ==="
  # Show the entire entity definition for each file
  cat "$file"
done

Length of output: 92641


14-27: Consider enhancing the RandomSpawner configuration.

A few suggestions to improve the spawner's behavior:

  1. Add weights/probabilities for different circuit boards to control their relative spawn rates
  2. Consider a non-zero offset to prevent potential spawning collisions
  3. Verify compatibility with the new UnborgableComponent mentioned in the PR

Example enhancement:

  - type: RandomSpawner
-   offset: 0
+   offset: 0.1
    prototypes:
-   - AsimovCircuitBoard
-   - CorporateCircuitBoard
+   rarity:
+     AsimovCircuitBoard: 0.4
+     CorporateCircuitBoard: 0.3

Let's verify the compatibility with UnborgableComponent:

Resources/Maps/hive.yml (5)

4299-4311: LGTM: Delivery node configuration

The delivery node configuration with its decals is well-structured and follows a consistent pattern.


136874-136895: LGTM: Well-structured device link configuration

The device link configuration creates a comprehensive control system with clear relationships between buttons and doors.


163213-163235: LGTM: Surgeon spawn points and equipment

The surgeon spawn points are well-positioned near relevant medical facilities, and the equipment placement is logical.


191792-191825: Verify security implications of turret placement

The placement of multiple weapon turrets in the delivery area creates a high-security zone. Please ensure this aligns with the intended gameplay balance and doesn't create excessive difficulty for players.

Consider implementing a warning system or visual indicators for players entering this heavily defended area.


308-312: Verify tile configuration changes visually

The tile configuration changes involve complex encoded data. To ensure correctness, please provide map visualization screenshots showing the before/after state of these changes.

Resources/Prototypes/Entities/Clothing/OuterClothing/vests.yml (1)

94-97: Verify surgery system's interaction with tank harness

The addition of PermissibleForSurgery tag is logical as patients might need oxygen supply during surgery. However, we should verify that:

  1. The surgery system correctly handles gas tank connections during procedures
  2. The tank harness doesn't interfere with surgical access to relevant body parts
✅ Verification successful

Tank harness is properly supported during surgery

The surgery system explicitly handles items tagged with PermissibleForSurgery, allowing surgical procedures to be performed while these items are worn. The implementation is intentional and consistent across similar items.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for surgery system's handling of tank harnesses
# Look for surgery validation code that handles PermissibleForSurgery tag

# Search for surgery validation logic
ast-grep --pattern 'class $_ {
  $$$
  public bool $_(EntityUid $_, $$$) {
    $$$
    PermissibleForSurgery
    $$$
  }
  $$$
}'

# Check for any existing issues or discussions about surgery + tank harness compatibility
gh issue list --search "tank harness surgery"

Length of output: 179


Script:

#!/bin/bash
# Search for surgery-related files and PermissibleForSurgery usage

# Find surgery-related code files
fd "surgery" --type f

# Search for PermissibleForSurgery references
rg "PermissibleForSurgery" -B2 -A2

# Look for surgery validation code with less specific pattern
ast-grep --pattern 'class SurgerySystem {
  $$$
}'

Length of output: 6821

Resources/Prototypes/Entities/Clothing/OuterClothing/misc.yml (1)

281-284: Fix incorrect comment and verify surgery system coverage

  1. The comment incorrectly references tank harnesses but this is a hospital gown
  2. The PermissibleForSurgery tag is appropriate for a hospital gown

Update the comment to:

-  - type: Tag # DeltaV: tank harnesses can be used for surgery
+  - type: Tag # DeltaV: hospital gowns are compatible with surgery
Content.Shared/_DV/Traits/Assorted/UnborgableComponent.cs (1)

5-10: Verify component relocation behavior and enhance documentation.

The component's auto-relocation to the brain needs verification:

Consider enhancing the documentation to explain:

  • The specific conditions that make a brain unborgable
  • Whether this state can be reversed
  • Any visual indicators or UI feedback
✅ Verification successful

Component relocation behavior verified and working as documented

The UnborgableSystem correctly implements the documented behavior:

  • Automatically moves the component to brain organs on initialization
  • Provides appropriate examine feedback (requires health analyzer)
  • Properly prevents brain transfers to MMIs through component presence check
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for brain relocation logic in systems
ast-grep --pattern 'class $_ : ISystem {
  $$$
  UnborgableComponent $$$
  $$$
}'

Length of output: 83


Script:

#!/bin/bash
# Search for any references to UnborgableComponent
rg "UnborgableComponent" -B 2 -A 2

# Search for brain-related systems that might handle component relocation
rg "Brain.*System" --type cs

# Look for component initialization or entity spawning with brains
ast-grep --pattern 'EnsureComp<UnborgableComponent>($$$)'

Length of output: 3819

Resources/Locale/en-US/_DV/traits/traits.ftl (2)

39-40: Clarify the purpose of the Depression trait.

The trait is marked as having "no mechanical effect". Consider documenting:

  1. Why this trait exists if it has no mechanical effect
  2. How it's intended to be used in roleplay
  3. Any future plans for mechanical implementation

36-37: Verify implementation of Machine Incompatible trait.

Let's verify that this trait is properly implemented and handled across the codebase.

✅ Verification successful

Implementation of Machine Incompatible trait is properly handled

The trait is correctly implemented with an UnborgableComponent that marks brains as incompatible with man-machine interfaces, with proper system handling for component lifecycle and user feedback.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for references to UnborgableComponent and related systems
echo "Searching for UnborgableComponent usage..."
rg -l "UnborgableComponent"

echo "\nSearching for brain-related operations..."
ast-grep --pattern 'brain' -l

Length of output: 468


Script:

#!/bin/bash
# Check component implementation
echo "=== UnborgableComponent.cs ==="
cat Content.Shared/_DV/Traits/Assorted/UnborgableComponent.cs

echo -e "\n=== UnborgableSystem.cs ==="
cat Content.Shared/_DV/Traits/Assorted/UnborgableSystem.cs

echo -e "\n=== Searching for brain-related operations ==="
rg -i "brain" -A 3 -B 3

Length of output: 68752

Content.Shared/_DV/Traits/Assorted/UnborgableSystem.cs (1)

48-50: ⚠️ Potential issue

Review examination range check logic.

The current implementation might allow examination in cases where it shouldn't. The condition seems inverted for body component check.

-if (!args.IsInDetailsRange || HasComp<BodyComponent>(ent))
+if (!args.IsInDetailsRange || !HasComp<BodyComponent>(ent))

Likely invalid or redundant comment.

Content.Server/_Shitmed/Medical/Surgery/SurgerySystem.cs (3)

14-14: LGTM: Added import for anesthesia component

The import aligns with the changes to use anesthesia instead of forced sleep.


147-149: Verify damage calculation with anesthesia

The damage calculation now considers anesthesia state using the sleep modifier. This is a critical change that affects gameplay mechanics.

Run the following script to verify other damage calculations in the codebase that might need similar updates:

✅ Verification successful

Anesthesia damage modification correctly implemented

The anesthesia check is properly scoped to surgery-related damage calculations. Other damage systems in the codebase handle different types of damage (combat, environmental, status effects) that shouldn't be affected by anesthesia state.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for other damage calculations that might need to consider anesthesia
rg -A 5 "damageChange.*=.*damage" 

Length of output: 1270


Script:

#!/bin/bash
# Search for other damage calculations using TryChangeDamage
rg -A 2 "TryChangeDamage|DamageModifierSet" 

Length of output: 59655


166-168: Verify emote suppression during surgery

The emote suppression now checks for anesthesia instead of forced sleep, which is consistent with the PR's objectives.

Run the following script to verify all emote-related checks:

✅ Verification successful

Emote suppression change is correctly implemented

The change from forced sleep to anesthesia check for emote suppression during surgery is correctly implemented and doesn't require updates to other emote-related checks in the codebase. Other systems that need to suppress emotes use their own specific checks or the general ActionBlocker system.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for other emote checks that might need updating
ast-grep --pattern 'TryEmoteWithChat($$$)'

Length of output: 241


Script:

#!/bin/bash
# Search for TryEmoteWithChat implementation and context
rg -A 10 "TryEmoteWithChat" --type cs

# Search for other emote-related methods and checks
rg "Emote" --type cs

# Search for anesthesia checks in action contexts
rg "AnesthesiaComponent" --type cs

Length of output: 50220

Content.Shared/_Shitmed/Surgery/SharedSurgerySystem.Steps.cs (1)

286-288: Verify security implications of surgery through clothing

The addition of the "PermissibleForSurgery" tag check allows surgery through certain clothing items. This needs careful verification to ensure it can't be exploited.

Run the following script to audit which items have this tag:

Consider adding validation to ensure only specific types of clothing can receive this tag.

✅ Verification successful

Surgery through clothing implementation is secure

The "PermissibleForSurgery" tag is only applied to two appropriate items:

  • Hospital gown (designed for medical procedures)
  • Tank harness (simple utility vest)

Both items are non-protective clothing that logically shouldn't interfere with surgery, and the tag's usage is properly restricted at the prototype level with no potential for exploitation.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Find all items with the PermissibleForSurgery tag
rg -l "PermissibleForSurgery" 

# Check for any potential security-related tags that might interact
ast-grep --pattern 'HasTag($_, "PermissibleForSurgery")'

Length of output: 308


Script:

#!/bin/bash
# Check the tag definition
cat Resources/Prototypes/_DV/tags.yml

# Show clothing items with this tag
rg -A 5 "PermissibleForSurgery" Resources/Prototypes/Entities/Clothing/OuterClothing/

# Check for additional security measures in surgery system
rg -A 5 -B 5 "PermissibleForSurgery" Content.Shared/_Shitmed/Surgery/SharedSurgerySystem.Steps.cs

Length of output: 3187


Script:

#!/bin/bash
# Show the full context of items with PermissibleForSurgery tag
rg -B 10 "PermissibleForSurgery" Resources/Prototypes/Entities/Clothing/OuterClothing/*.yml

Length of output: 2912

Resources/Maps/tortuga.yml (3)

18830-18836: LGTM: Medical facility layout appears well-structured.

The placement of medical facilities, including the surgery airlock, surgeon lockers, and related entities, creates a logical and functional medical area. The restricted access and organized layout should facilitate proper gameplay flow.

Also applies to: 148185-148196, 185545-185551


186592-186618: Consider reducing the number of surgeon spawn points for better game balance.

The map currently has 5 surgeon spawn points, which might be excessive and could impact gameplay balance. Consider reducing the number of spawn points or distributing them across different medical roles.

Run this script to compare with other maps' surgeon spawn point counts:


215466-215509: Verify the impact of WeaponTurretAllHostile to WeaponTurretAI rename.

The turret prototype has been renamed, which might indicate a change in targeting behavior. This could significantly impact gameplay balance and security.

Let's verify the changes in turret behavior:

Resources/Prototypes/_DV/status_effects.yml (1)

Line range hint 1-11: Verify the intentional removal of core gameplay mechanics

The removal of addiction and pain status effects represents a significant change to core gameplay mechanics. Please confirm if this is intentional, as it could have far-reaching implications for:

  • Medical gameplay balance
  • Drug system mechanics
  • Character status management
✅ Verification successful

Removal of addiction status effects is part of new addiction system implementation

The removal of Addicted and SuppressAddiction status effects is intentional, as they are being replaced by a more robust addiction system that provides better control over addiction mechanics, suppression timing, and effect intervals. The new implementation is properly integrated with both client and server components.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for any remaining references to the removed status effects
echo "Checking for remaining references to removed status effects..."
rg -l "Addicted|SuppressAddiction|InPain|SuppressPain" --type yaml

Length of output: 479


Script:

#!/bin/bash
# Check the changelog first
echo "=== Checking changelog ==="
cat Resources/Changelog/DeltaVChangelog.yml

echo -e "\n=== Checking narcotics.yml ==="
cat Resources/Prototypes/Reagents/narcotics.yml

echo -e "\n=== Checking medicine.yml ==="
cat Resources/Prototypes/_CD/Reagents/medicine.yml

echo -e "\n=== Checking disabilities.yml ==="
cat Resources/Prototypes/_DV/Traits/disabilities.yml

echo -e "\n=== Checking base.yml ==="
cat Resources/Prototypes/Entities/Mobs/Species/base.yml

Length of output: 131070


Script:

#!/bin/bash
# Check medicine.yml for addiction references
echo "=== Checking medicine.yml ==="
cat Resources/Prototypes/_CD/Reagents/medicine.yml

# Look for addiction system configs
echo -e "\n=== Looking for addiction system files ==="
fd -t f "addiction" --exec cat {}

Length of output: 26890

Resources/Prototypes/_Impstation/Loadouts/Jobs/Civilian/lawyer.yml (1)

1-9: Verify loadout group configuration

These new lawyer uniforms should be part of a loadout group to ensure proper selection options in the character creator.

✅ Verification successful

Loadouts are properly configured

The cream suit loadouts are already part of the lawyer loadout groups and are available through the lawdrobe vending machine. No additional configuration is needed.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check if these loadouts are properly grouped
echo "Checking for loadout group configuration..."
rg "LawyerJumpsuit.*ClothingUniformCreamSuit" --type yaml

Length of output: 156


Script:

#!/bin/bash
# Search for lawyer-related loadout configurations
echo "=== Searching for lawyer loadouts ==="
rg "lawyer" --type yaml -i

echo -e "\n=== Searching for cream suit references ==="
rg "ClothingUniformCreamSuit" --type yaml

echo -e "\n=== Searching for loadout group patterns ==="
rg "type: loadoutGroup" --type yaml -A 5

Length of output: 93424

Resources/Prototypes/_Impstation/Loadouts/Jobs/Wildcards/reporter.yml (1)

1-9: Verify reporter role access configuration

Since this is in the Wildcards folder, please confirm:

  • Access restrictions for the reporter role
  • Whether these uniforms should be available to other roles
✅ Verification successful

Access configuration is properly implemented

The reporter role has appropriate access restrictions through the "Reporter" access level, which is used consistently across doors, windoors, and secure storage. The uniforms being available in theater vending machines is an intentional design choice for roleplay flexibility.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for reporter role access configuration
echo "Checking reporter role access settings..."
rg "reporter.*access" --type yaml

Length of output: 128


Script:

#!/bin/bash
# Search for reporter configurations and related patterns
echo "Searching for reporter configurations..."
rg "reporter" --type yaml -i

echo -e "\nChecking uniform access patterns..."
rg "ClothingUniform.*Blazer" --type yaml

echo -e "\nChecking wildcard configurations..."
fd wildcard -e yml -e yaml -x cat {}

Length of output: 19848

Resources/Prototypes/_Impstation/Loadouts/Jobs/Civilian/musician.yml (1)

1-9: Review naming convention and theme consistency

The MrSpaceWide uniform name seems to be a reference. Please confirm:

  • If this fits the game's aesthetic/lore
  • If the naming convention aligns with other themed uniforms
✅ Verification successful

Uniform naming and theme are appropriate

The MrSpaceWide uniform follows the established naming conventions and is thematically consistent with its intended use in the hospitality/entertainment context for the musician role. The implementation is complete with proper entity definitions, sprites, and distribution methods.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check naming conventions of other themed uniforms
echo "Checking uniform naming patterns..."
rg "ClothingUniform.*Space" --type yaml

Length of output: 1303


Script:

#!/bin/bash
# Check the entity definitions for theme details
echo "Checking MrSpaceWide uniform entities..."
rg -A 5 "id: ClothingUniformMrSpaceWide[^S]" Resources/Prototypes/_Impstation/Entities/Clothing/Uniforms/jumpsuits.yml

Length of output: 211


Script:

#!/bin/bash
# Check both uniform variants with more context
echo "Checking uniform definitions..."
echo -e "\nJumpsuits:"
rg -A 10 "ClothingUniformMrSpaceWide" Resources/Prototypes/_Impstation/Entities/Clothing/Uniforms/jumpsuits.yml

echo -e "\nJumpskirts:"
rg -A 10 "ClothingUniformMrSpaceWide" Resources/Prototypes/_Impstation/Entities/Clothing/Uniforms/jumpskirts.yml

Length of output: 1137

Resources/Prototypes/_Impstation/Loadouts/Jobs/Civilian/chaplain.yml (1)

1-9: LGTM! Consistent implementation of role-appropriate attire

The funeral suit loadouts are thematically appropriate for the chaplain role and follow the established pattern of providing both standard and skirt variants.

Resources/Prototypes/_Impstation/Loadouts/Jobs/Security/detective.yml (1)

1-19: Well-structured loadout configurations!

Good job on maintaining consistency and including skirt variants for inclusivity.

Resources/Prototypes/Catalog/VendingMachines/Inventories/curadrobe.yml (1)

15-16: Appropriate inventory additions!

The new suit options maintain consistency with existing inventory quantities and patterns.

Resources/Prototypes/_DV/Recipes/Lathes/medical.yml (1)

Line range hint 1-24: Verify impact of removing medical equipment recipes.

The removal of AACTablet, LauncherSyringe, and MiniSyringe recipes could significantly impact medical gameplay. Please ensure these items are available through alternative means.

✅ Verification successful

Removed medical items remain accessible through alternative means

The removed items are still available in-game:

  • AACTablet: Available as a character loadout option in the trinkets group
  • LauncherSyringe and MiniSyringe: Unlocked through the "SyringeGun" research technology
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check if removed items are available through other means
echo "Checking for alternative sources of removed items..."
rg -l "AACTablet|LauncherSyringe|MiniSyringe" Resources/Prototypes/

Length of output: 659


Script:

#!/bin/bash
# Check research and entity definitions
echo "=== Checking research definitions ==="
cat Resources/Prototypes/_DV/Research/civilianservices.yml

echo -e "\n=== Checking entity definitions ==="
cat Resources/Prototypes/_DV/Entities/Objects/Devices/aac_tablet.yml
cat Resources/Prototypes/Entities/Objects/Weapons/Guns/pneumatic_cannon.yml
cat Resources/Prototypes/Entities/Objects/Specific/chemistry.yml

echo -e "\n=== Checking loadout definitions ==="
cat Resources/Prototypes/_DV/Loadouts/Miscellaneous/trinkets.yml
cat Resources/Prototypes/Loadouts/loadout_groups.yml

Length of output: 57324

Resources/Prototypes/_DV/Catalog/Fills/Crates/medical.yml (1)

12-21: Review painkiller balance and description.

A few concerns:

  1. The description "Running out of these is not an option" implies critical dependency. Consider a more neutral description.
  2. Please verify that Stubantazine is properly balanced for bulk distribution.
✅ Verification successful

Description needs revision, but balance is appropriate.

The medication's balance appears well-considered with its moderate production ratio, conservative metabolism rate, and reasonable distribution quantity (150u per crate). However, the description "Running out of these is not an option" should be revised to something more professional, such as "Standard-issue painkiller supplies." or "Essential painkiller medication storage."

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check Stubantazine's effects and balance
echo "Checking Stubantazine configuration..."
rg -A 10 "Stubantazine" Resources/Prototypes/

Length of output: 7354

Resources/Prototypes/_DV/Catalog/Cargo/cargo_medical.yml (1)

Line range hint 1-19: Verify impact of removing essential medical items.

The removal of medical scrubs and radio implants could significantly impact:

  1. Visual identification of medical staff (scrubs)
  2. Emergency communication capabilities (radio implants)

Please ensure these items remain accessible through alternative means.

✅ Verification successful

Removal of cargo items is justified - alternative sources exist

Both removed items remain readily accessible:

  • Medical scrubs: Available through medidrobe (4 units each in green/blue/purple)
  • Radio implants: Obtainable via uplink shop and certain game modes
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for alternative sources of removed items
echo "Checking for medical scrubs availability..."
rg -l "MedicalScrubs|Scrubs" Resources/Prototypes/Catalog/VendingMachines/
echo "Checking for radio implant availability..."
rg -l "RadioImplant" Resources/Prototypes/

Length of output: 827


Script:

#!/bin/bash
# Check medidrobe inventory content
echo "=== Medidrobe Inventory ==="
cat Resources/Prototypes/Catalog/VendingMachines/Inventories/medidrobe.yml

echo -e "\n=== Radio Implant Sources ==="
# Check uplink catalog entry
echo "Uplink catalog entry:"
rg -A 5 -B 5 "RadioImplant" Resources/Prototypes/_DV/Catalog/uplink_catalog.yml

# Check roundstart rules
echo -e "\nRoundstart rules:"
rg -A 5 -B 5 "RadioImplant" Resources/Prototypes/GameRules/roundstart.yml

Length of output: 2736

Resources/Prototypes/Catalog/VendingMachines/Inventories/bardrobe.yml (2)

13-14: LGTM! New nightclub suit variants added.

The addition of nightclub suit variants enriches the bartender's wardrobe options.


17-17: Verify removal of ClothingOuterArmorBasicSlim.

The comment indicates that ClothingOuterArmorBasicSlim was replaced, but it's not clear if it was actually removed from the inventory.

✅ Verification successful

Confirmed: ClothingOuterArmorBasicSlim was correctly removed from bardrobe inventory.

The item was replaced with ClothingOuterArmorDuraVest as indicated in the comment.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for any remaining references to ClothingOuterArmorBasicSlim
rg "ClothingOuterArmorBasicSlim" --type yaml

Length of output: 2675

Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/nightclubsuit.rsi/meta.json (1)

1-30: LGTM! Well-structured texture metadata.

The RSI metadata is complete with all required states and proper attribution.

Resources/Prototypes/_DV/Traits/disabilities.yml (3)

34-40: Depression trait requires implementation.

The Depression trait has an empty components list, which means it won't have any mechanical effects besides providing the Neurozenium pills.

Would you like me to help implement the Depression trait mechanics or create a GitHub issue to track this task?


Line range hint 1-24: Verify impact of removed traits.

The removal of Uncloneable, Addicted, and InPain traits could break existing characters or systems that depend on them.


25-32: Verify UnborgableComponent implementation.

The trait references an Unborgable component. Let's verify its implementation.

✅ Verification successful

UnborgableComponent implementation verified and properly integrated

The component is implemented in Content.Shared/_DV/Traits/Assorted/UnborgableComponent.cs and has a complete integration with health analyzer UI, examine system, and proper localization support.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for UnborgableComponent definition
ast-grep --pattern 'class UnborgableComponent {
  $$$
}'

Length of output: 58


Script:

#!/bin/bash
# Search for any mentions of Unborgable in the codebase
rg -i "unborgable" -g "!*.yml" -g "!*.yaml"

# Search for potential component registration patterns
ast-grep --pattern 'RegisterComponent<$_Unborgable$_>'

Length of output: 2870

Resources/Prototypes/_Impstation/Loadouts/Jobs/Civilian/bartender.yml (2)

1-8: LGTM! Well-balanced time requirement.

The 52-hour requirement (1 hour per week for a year) for senior bartender is reasonable.


10-34: Verify clothing prototypes existence.

Let's verify that all referenced clothing items exist in the prototypes.

✅ Verification successful

All clothing prototypes verified and properly integrated

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for clothing prototype definitions
echo "Searching for nightclub suit prototypes..."
rg "ClothingUniformNightclubSuit" --type yaml

echo "Searching for senior bartender prototypes..."
rg "ClothingUniformSeniorBartender" --type yaml

Length of output: 2248

Resources/Prototypes/Catalog/VendingMachines/Inventories/lawdrobe.yml (1)

12-13: Verify cream suit prototypes.

Let's verify that the cream suit variants exist in the prototypes.

✅ Verification successful

Cream suit prototypes verified successfully

Both ClothingUniformCreamSuit and ClothingUniformCreamSuitSkirt prototypes are properly defined in the Impstation clothing entities and are consistently referenced across the codebase.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for cream suit prototype definitions
rg "ClothingUniformCreamSuit" --type yaml

Length of output: 1246

Resources/Prototypes/Catalog/VendingMachines/Inventories/chapel.yml (1)

6-7: LGTM! Good addition of funeral attire.

The new funeral suit options enhance the chapel's thematic inventory.

Resources/Prototypes/Catalog/VendingMachines/Inventories/detdrobe.yml (1)

23-26: LGTM! Good modernization of detective attire.

The replacement of old detective clothing with new suit variants and Miami Vice options provides better style variety while maintaining thematic consistency.

Resources/Prototypes/Catalog/Fills/Items/briefcases.yml (1)

28-28: LGTM! Better thematic fit for sniper bundle.

Replacing the lawyer outfit with a hitman suit is more appropriate for this syndicate bundle.

Resources/Prototypes/Maps/byoin.yml (1)

40-40: Verify medical staff balance.

Adding a dedicated Surgeon role could affect medical department dynamics. Please ensure this addition is balanced with existing medical roles.

✅ Verification successful

Medical staff balance verified.

The Surgeon role [1, 1] in byoin.yml is appropriately balanced with:

  • Consistent with other maps' Surgeon implementations
  • Proportional to the map's medical team size
  • Aligned with specialist role slot patterns
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check medical staff configurations across all maps
echo "Analyzing medical staff configurations across maps..."
rg -A 5 "MedicalDoctor|Surgeon|ChiefMedicalOfficer" "Resources/Prototypes/Maps/"

Length of output: 29477

Resources/Prototypes/_DV/tags.yml (2)

Line range hint 1-109: LGTM! Good cleanup of unused tags.

Removing unused and obsolete tags improves codebase maintainability.


111-112: Verify usage of new surgery tag.

The new PermissibleForSurgery tag needs to be properly integrated with the surgery system.

✅ Verification successful

Surgery tag is properly integrated and functioning as intended.

The PermissibleForSurgery tag is correctly implemented in the surgery system, allowing specific clothing items to be worn during surgical procedures. The tag is being checked during surgery validation and is already applied to appropriate clothing items.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check implementation and usage of the new surgery tag
echo "Checking surgery tag implementation..."
rg -A 5 "PermissibleForSurgery" "Resources/"

Length of output: 916


Script:

#!/bin/bash
# Search for surgery-related systems and components
echo "Checking surgery system implementation..."
rg -l "surgery" "Content.Server/" "Content.Shared/"

echo -e "\nChecking for tag usage in surgery code..."
rg -A 5 "HasTag|GetComponent.+Surgery|Surgery.+Component" "Content.Server/" "Content.Shared/"

Length of output: 87678

Resources/Prototypes/Catalog/VendingMachines/Inventories/secdrobe.yml (1)

29-29: LGTM! Good addition of cold weather gear.

The addition of cold weather ponchos (ClothingNeckCWPSec) enhances the security team's ability to operate in cold environments.

Resources/Prototypes/Entities/Mobs/NPCs/simplemob.yml (2)

33-33: LGTM! Consistent implementation of anesthesia.

The addition of the Anesthesia component to BaseSimpleMob ensures all derived mobs can be properly anesthetized during surgical procedures.


112-112: Verify anesthesia behavior for SimpleMobBase.

The Anesthesia component is correctly added, but let's verify its interaction with other status effects.

✅ Verification successful

Anesthesia component is properly integrated with SimpleMobBase status effects.

The component is correctly defined and allowed alongside other status effects like SlowedDown, Stutter, and ForcedSleep. No conflicts were found with existing status effects in the SimpleMobBase implementation.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for potential conflicts between Anesthesia and other status effects
ast-grep --pattern 'type: StatusEffects
  allowed:
    $$$
    - Anesthesia
    $$$'

Length of output: 86


Script:

#!/bin/bash
# Search for Anesthesia component definitions and usage
rg -l "Anesthesia" --type yaml

# Search for StatusEffects configurations in YAML
rg "type: StatusEffects" --type yaml -A 5

# Search specifically for SimpleMobBase status effects
rg "SimpleMobBase" --type yaml -A 10

Length of output: 51755


Script:

#!/bin/bash
# Check Anesthesia component definition and related status effects
rg "Anesthesia" -A 5 --type yaml

# Check for any status effect definitions
rg "- type: StatusEffect" -A 5 --type yaml

Length of output: 3261

Resources/Prototypes/Entities/Mobs/Species/reptilian.yml (1)

34-34: LGTM! Enhanced species-specific roleplay.

The addition of the 'Hiss' emote to reptilian species improves immersion and roleplay opportunities.

Resources/Prototypes/Maps/asterisk.yml (1)

47-49: LGTM! Well-balanced medical role distribution.

The reduction in MedicalDoctor slots is appropriately balanced by the addition of a dedicated Surgeon role, maintaining overall medical coverage while adding specialization.

Resources/Prototypes/Maps/lighthouse.yml (1)

56-59: LGTM! Appropriate scaling of medical roles.

The job slot adjustments are well-balanced for the station size:

  • Reduction of one maximum MedicalDoctor slot
  • Addition of up to two Surgeon slots
  • Maintains MedicalIntern slots for training
Resources/Prototypes/Maps/tortuga.yml (1)

41-41: LGTM! Well-balanced medical staff distribution.

The reduction in MedicalDoctor slots (from [7,9] to [6,8]) is appropriately balanced by the addition of [1,2] Surgeon slots, maintaining a reasonable total medical staff capacity while introducing specialized roles.

Also applies to: 46-46

Resources/Prototypes/Maps/arena.yml (1)

41-41: LGTM! Consistent medical staff distribution.

The reduction in MedicalDoctor slots and addition of a Surgeon role maintains good balance while aligning with the new surgery mechanics.

Also applies to: 46-46

🧰 Tools
🪛 GitHub Actions: Build & Test Debug

[error] Duplicate key 'version' found while parsing map file

Resources/Prototypes/Maps/glacier.yml (1)

58-58: Review medical staff balance.

While adding the Surgeon role is consistent with other maps, consider adjusting the MedicalDoctor slots to maintain staff balance across all maps. Other maps reduce MedicalDoctor slots when adding Surgeons.

Resources/Prototypes/Maps/hive.yml (1)

42-42: LGTM! Consistent medical staff adjustments.

The changes maintain good balance and are consistent with other maps' medical staff distribution.

Also applies to: 47-47

Resources/Prototypes/_DV/Entities/Clothing/Belt/belts.yml (1)

107-107: LGTM! Enhanced paperwork functionality.

Adding HandLabeler and Stamp to the paperwork belt's whitelist improves its utility for medical documentation, which is particularly relevant with the introduction of surgery systems.

Also applies to: 110-110

Resources/Prototypes/Entities/Objects/Specific/Robotics/mmi.yml (1)

44-46: LGTM! Security measure properly implemented.

The blacklist implementation effectively prevents entities with Unborgable components from being inserted into brain slots, which is a robust way to prevent unauthorized brain transfers.

Resources/Prototypes/_Impstation/Entities/Clothing/Uniforms/jumpsuits.yml (1)

1-110: LGTM! Well-structured uniform definitions.

The uniform entities are consistently structured with proper component definitions and appropriate sprite mappings.

Resources/Prototypes/_Impstation/Entities/Clothing/Uniforms/jumpskirts.yml (1)

1-110: LGTM! Consistent implementation with jumpsuits.

The skirt variants maintain proper consistency with their jumpsuit counterparts, including component structure and sprite mappings.

Resources/Prototypes/_DV/Recipes/Lathes/clothing.yml (3)

65-72: LGTM! Well-defined material requirements.

The poncho recipe properly specifies material requirements with appropriate quantities.


74-77: Verify inheritance of material requirements.

The ClothingNeckCWPSec recipe inherits from ClothingNeckCWPArctic. Ensure this is intentional and that the material requirements should be identical.


Line range hint 1-62: Verify the impact of removing jumpsuit recipes.

Multiple jumpsuit recipes have been removed. Please ensure that these items remain obtainable through alternative means.

Run the following script to check for alternative sources:

✅ Verification successful

Security uniforms remain obtainable through appropriate channels

The removal of jumpsuit recipes from the lathe is safe as all uniforms remain obtainable through their intended distribution methods:

  • Security officers can obtain uniforms through secdrobe vending machines (3 units each) and job loadouts
  • Wardens have their uniforms available through job loadouts
  • Both blue and grey variants remain accessible where appropriate
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check if removed jumpsuits are available through other means
# Search for the removed jumpsuit IDs in vending machines and loadouts

echo "Checking vending machines..."
rg "ClothingUniformJumpsuitSecBlue|ClothingUniformJumpsuitSecGrey|ClothingUniformJumpsuitWardenBlue|ClothingUniformJumpsuitWardenGrey" "Resources/Prototypes/Catalog/VendingMachines"

echo "Checking loadouts..."
rg "ClothingUniformJumpsuitSecBlue|ClothingUniformJumpsuitSecGrey|ClothingUniformJumpsuitWardenBlue|ClothingUniformJumpsuitWardenGrey" "Resources/Prototypes/*/Loadouts"

Length of output: 758


Script:

#!/bin/bash
# Comprehensive search for warden jumpsuits and additional sources

echo "Checking all potential sources for warden uniforms..."
rg "ClothingUniformJumpsuitWarden(Blue|Grey)" Resources/Prototypes

echo -e "\nChecking for security uniform spawn points..."
rg "ClothingUniformJumpsuit(Sec|Warden)(Blue|Grey)" Resources/Prototypes --type yaml

Length of output: 4145

Resources/Prototypes/Catalog/Cargo/cargo_vending.yml (1)

46-46: Cost adjustment looks reasonable.

The increase from 2100 to 2200 for AutoDrobe restock is a minor balance adjustment that maintains profit margins while accounting for inventory changes.

Resources/Prototypes/Recipes/Reactions/chemicals.yml (1)

365-365: Yield increase aligns with anesthesia changes.

Increasing ChloralHydrate yield from 1 to 3 makes it more cost-effective to produce, which is reasonable given its role in the new anesthesia system.

Resources/Prototypes/Reagents/gases.yml (1)

310-321: Verify interaction between ForcedSleep and Anesthesia effects.

The addition of the Anesthesia effect alongside the existing ForcedSleep effect raises questions about their interaction.

✅ Verification successful

Both effects are intentionally designed to work together

ForcedSleep handles the unconsciousness mechanic while Anesthesia interfaces with the surgery system. The effects are properly separated and serve different purposes.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for any other components that might interact with both ForcedSleep and Anesthesia
ast-grep --pattern 'component: $COMP
  $$$
  conditions:
    $$$
    - !type:ReagentThreshold
      reagent: NitrousOxide'

Length of output: 124


Script:

#!/bin/bash
# Search for NitrousOxide reagent effects
rg -l "NitrousOxide" --type yaml

# Search for ForcedSleep and Anesthesia components/systems
rg "ForcedSleep|Anesthesia" --type yaml -A 5 -B 5

# Search for component definitions
fd "\.cs$" --exec rg -l "ForcedSleep|Anesthesia"

Length of output: 24831

Resources/Prototypes/Entities/Mobs/Species/base.yml (1)

149-149: Status effect registration looks good.

The Anesthesia status effect is properly registered in the allowed list, following the existing pattern for status effects.

Content.Client/HealthAnalyzer/UI/HealthAnalyzerWindow.xaml.cs (4)

4-4: LGTM! Added import for UnborgableSystem.

The import is correctly placed and follows the existing import organization pattern.


40-41: LGTM! Added UnborgableSystem dependency.

The system is properly initialized in the constructor using the entity system manager.

Also applies to: 62-63


190-191: LGTM! Added unborgable status check.

The check is correctly integrated into the existing alert condition logic.


215-221: LGTM! Added unborgable alert message.

The alert message follows the same pattern as other alerts in the system.

Resources/Prototypes/Reagents/toxins.yml (2)

58-58: LGTM! Adjusted ChloralHydrate metabolism rate.

The slower metabolism rate (0.25) is appropriate for surgical applications, allowing the anesthesia to last longer.


73-82: LGTM! Added anesthesia effect to ChloralHydrate.

The implementation is well-structured with:

  • Appropriate minimum threshold (10 units)
  • Non-refreshing effect
  • Reasonable duration (4.0 seconds)
Resources/Prototypes/Loadouts/loadout_groups.yml (5)

341-344: LGTM! Added new bartender uniforms.

The additions provide appropriate variety for the bartender role.


400-401: LGTM! Added cream suit variants.

Consistently applied to both librarian and lawyer roles.

Also applies to: 417-418


465-466: LGTM! Added funeral suit variants for chaplain.

Thematically appropriate additions for the role.


706-707: LGTM! Added Mr. Space Wide uniform variants for musician.

Appropriate additions that expand musician role customization.


1348-1351: LGTM! Added detective uniform variants.

The Miami Vice and Detective suit variants provide good variety for the role.

Resources/Changelog/DeltaVChangelog.yml (8)

3752-3759: LGTM! New painkillers with balanced mechanics.

The addition of purchasable painkillers with a nausea side effect provides a good balance between accessibility and gameplay consequences.


3768-3774: LGTM! Enhanced surgery facilities.

The surgery room extension and equipment additions improve medical gameplay capabilities.


3775-3781: LGTM! New medical fabrication option.

Adding tank harnesses to the medical techfab improves equipment accessibility.


3789-3795: LGTM! Security equipment rebalancing.

Removing medical cybernetic eyes from security techfab helps maintain equipment role boundaries.


3842-3849: LGTM! New security clothing options.

The addition of cold weather ponchos expands security's clothing options appropriately.


3833-3841: Verify anesthesia mechanics implementation.

The switch from forced sleep to anesthesia for surgery is a major change that needs verification.

✅ Verification successful

Anesthesia mechanics implementation verified

The switch from forced sleep to anesthesia is properly implemented across surgery system and chemical reagents. The three anesthetics (chloral hydrate, nitrous oxide, and nocturine) are correctly configured to provide the required anesthesia effect for surgery.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for surgery and anesthesia implementation
rg -A 5 "surgery.*sleep|anesthesia|chloral.*hydrate|nitrous.*oxide|nocturine"

Length of output: 27393


3760-3767: Verify integration with existing brain-related systems.

The Machine Incompatible trait needs to be checked for proper interaction with existing brain transfer mechanics and MMI-related code.

✅ Verification successful

Integration with brain-related systems verified

The Machine Incompatible trait is properly integrated with existing brain transfer mechanics and MMI-related code through:

  • UnborgableComponent that handles brain blacklisting
  • Health analyzer integration that warns about incompatible brains
  • Proper component transfer from body to brain
  • Full integration with MMI and borg chassis systems
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for brain transfer and MMI-related code that might need updates
rg -A 5 "MMI|brain.*transfer|brain.*removal"

Length of output: 39433


3782-3788: Verify trait implementation details.

The RP Depression trait should be checked for proper implementation and effects.

✅ Verification successful

Trait implementation verified and properly configured

The Depression trait is correctly implemented as an RP-focused trait with:

  • Clear description indicating no mechanical effects
  • Appropriate medical roleplay support (Neurozenium medication)
  • Proper integration with the traits system
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for trait implementation details
ast-grep --pattern 'trait $_ {
  $$$
  depression
  $$$
}'

Length of output: 60


Script:

#!/bin/bash
# Search for files containing depression-related code
rg -i "depression" --type-add 'code:*.{cs,yml,json,toml}' -t code -C 2

# Find trait-related files
fd -e cs -e yml -e json "trait" --type f

# Search for trait configuration patterns
rg -i "trait.*depression" -C 2

Length of output: 3878

Content.Shared/_Shitmed/Surgery/SharedSurgerySystem.cs (1)

24-24: LGTM! The TagSystem dependency enables surgery through specific clothing.

The addition of the TagSystem dependency allows the surgery system to check for clothing items that are tagged as permissible for surgery operations.

Also applies to: 51-51

Resources/Prototypes/Entities/Structures/Machines/lathe.yml (1)

1350-1352: LGTM! New poncho recipes added to the uniform printer.

The addition of poncho recipes follows the existing pattern and is properly integrated into the uniform printer's static recipes list.

Resources/Prototypes/Entities/Mobs/NPCs/animals.yml (2)

1518-1518: LGTM! Enhanced kobold emote capabilities.

Added 'Hiss' to the allowed emotes for kobolds, which is consistent with their reptilian nature.


1905-1915: LGTM! Added speech and vocal capabilities to lizards.

The changes enhance lizard entities with:

  • Kobold accent for speech replacement
  • Lizard sounds and Reptilian speech verb
  • Male/Female/Unsexed reptilian vocal sounds

Comment on lines +34 to +43
- type: entity
parent: ClothingNeckCWPSec
id: ClothingNeckCWPArctic
name: cold weather poncho
description: The Cold Weather Poncho, advertised as a masterpiece of elemental protection. The truth is that it's itchy, stuffy, and a little baggy - but at least it's not cold.
components:
- type: Sprite
sprite: _DV/Clothing/Neck/Misc/cwparctic.rsi
- type: Clothing
sprite: _DV/Clothing/Neck/Misc/cwparctic.rsi
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Consider balance implications of inheriting from security variant

The arctic poncho inherits all properties from ClothingNeckCWPSec, including its temperature protection and armor values. This might create balance issues since civilian equipment typically has lower protection values than security equipment.

Consider creating a separate base poncho entity and having both variants inherit from it, with security variant adding extra protection:

- parent: ClothingNeckCWPSec
+ parent: ClothingNeckBase
+ components:
+   - type: Sprite
+     sprite: _DV/Clothing/Neck/Misc/cwparctic.rsi
+   - type: Clothing
+     sprite: _DV/Clothing/Neck/Misc/cwparctic.rsi
+   - type: Item
+     size: Normal
+   - type: TemperatureProtection
+     heatingCoefficient: 1.0
+     coolingCoefficient: 0.2

Committable suggestion skipped: line range outside the PR's diff.

@@ -1,4 +1,5 @@
job-description-medical-borg = Half-human, Half-machine. Follow your laws, serve the crew, and assist the medical department.
job-description-surgeon = Fix missing limbs, tend to emergency patients, try not to play god and get fired.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Consider revising the surgeon job description.

The current description "try not to play god" might encourage unethical behavior. Consider a more professional description focusing on medical ethics and responsibilities.

Suggested revision:

-job-description-surgeon = Fix missing limbs, tend to emergency patients, try not to play god and get fired.
+job-description-surgeon = Perform surgical procedures, repair limb injuries, and provide emergency medical care while adhering to medical ethics.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
job-description-surgeon = Fix missing limbs, tend to emergency patients, try not to play god and get fired.
job-description-surgeon = Perform surgical procedures, repair limb injuries, and provide emergency medical care while adhering to medical ethics.

Comment on lines +30 to +31
// technically this will apply for any organ not just brain, but assume nobody will be evil and do that
return _body.GetBodyOrganEntityComps<UnborgableComponent>(ent).Count > 0;
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Security concern: Potential component abuse.

The comment "assume nobody will be evil" suggests a potential security vulnerability. The system should enforce strict validation rather than relying on assumptions.

Consider implementing proper validation:

-// technically this will apply for any organ not just brain, but assume nobody will be evil and do that
-return _body.GetBodyOrganEntityComps<UnborgableComponent>(ent).Count > 0;
+var organs = _body.GetBodyOrganEntityComps<UnborgableComponent>(ent);
+return organs.Any(organ => HasComp<BrainComponent>(organ.Owner));

Committable suggestion skipped: line range outside the PR's diff.

using Content.Shared.Body.Organ;
using Content.Shared.Body.Systems;
using Content.Shared.Examine;
using Content.Shared.Movement.Components; // TODO: use BrainComponent instead of InputMover when shitmed is merged
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codebase verification

TODO comment is stale - BrainComponent is available

The code is still using InputMoverComponent even though BrainComponent is now available in the codebase (Content.Server/Body/Components/BrainComponent.cs). The TODO comment should be addressed by updating the implementation to use BrainComponent.

  • Content.Shared/_DV/Traits/Assorted/UnborgableSystem.cs: Replace InputMoverComponent with BrainComponent in both the import statement and GetBodyOrganEntityComps<> call.
🔗 Analysis chain

Address TODO comment regarding BrainComponent.

The comment indicates a temporary solution using InputMoverComponent. This should be updated when shitmed is merged.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check if BrainComponent is available
echo "Searching for BrainComponent..."
rg -l "BrainComponent"

echo "\nChecking shitmed merge status..."
git log --oneline | rg -i "shitmed"

Length of output: 600


Script:

#!/bin/bash
# Check the current implementation in UnborgableSystem.cs
echo "Checking UnborgableSystem.cs implementation..."
rg -A 10 "InputMover" "Content.Shared/_DV/Traits/Assorted/UnborgableSystem.cs"

echo "\nChecking BrainComponent usage..."
rg -A 10 "BrainComponent" "Content.Shared/_DV/Traits/Assorted/UnborgableSystem.cs"

Length of output: 1669

Comment on lines +337 to +341
- !type:GenericStatusEffect # DeltaV: anesthesia
key: Anesthesia
component: Anesthesia
refresh: false
type: Add
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Add threshold condition for Anesthesia effect.

The Anesthesia effect is added without any conditions, unlike the ForcedSleep effect above it which has a minimum threshold. This could cause unintended anesthesia effects with minimal exposure.

Apply this diff to add appropriate conditions:

  - !type:GenericStatusEffect
+   conditions:
+   - !type:ReagentThreshold
+     reagent: Nocturine
+     min: 8
    key: Anesthesia
    component: Anesthesia
    refresh: false
    type: Add
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- !type:GenericStatusEffect # DeltaV: anesthesia
key: Anesthesia
component: Anesthesia
refresh: false
type: Add
- !type:GenericStatusEffect # DeltaV: anesthesia
conditions:
- !type:ReagentThreshold
reagent: Nocturine
min: 8
key: Anesthesia
component: Anesthesia
refresh: false
type: Add

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 7

🔭 Outside diff range comments (2)
Resources/Maps/hive.yml (1)

Line range hint 192684-192767: Fix negative door state change timers.

Multiple doors have large negative values for secondsUntilStateChange (-179934.36, -179657.98, etc.). This could cause unexpected behavior with door states.

Apply this fix to all affected doors:

-      secondsUntilStateChange: -179934.36
+      secondsUntilStateChange: 0
Resources/Prototypes/Maps/arena.yml (1)

Multiple duplicate version keys detected in map file

Found multiple version keys in Resources/Maps/arena.yml:

  • Numerous instances of version: 6
  • Two instances of version: 2

This confirms the pipeline error. The map file needs to be regenerated or manually fixed to ensure version keys are properly structured and not duplicated within the same YAML scope.

🔗 Analysis chain

Line range hint 1-100: Fix map loading failure: Duplicate 'version' key detected.

The pipeline is failing due to a duplicate 'version' key in the map file. This needs to be addressed before merging.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for duplicate version keys in map files
rg -A 1 '(?m)^version:' Resources/Prototypes/Maps/

Length of output: 52


Script:

#!/bin/bash
# Check if the files exist and search for version keys in all YAML files
echo "=== Checking file existence ==="
fd -e yml -e yaml arena

echo "=== Searching for version keys in YAML files ==="
fd -e yml -e yaml -x rg -l '(?m)^version:'

echo "=== Checking map content ==="
fd -e yml -e yaml -x rg -l 'mapPath.*arena\.yml'

Length of output: 709


Script:

#!/bin/bash
# Examine the actual map file content
echo "=== Map file content ==="
cat Resources/Maps/arena.yml | head -n 20

echo "=== Checking for any version-like keys ==="
rg -i 'version|ver:|v:' Resources/Maps/arena.yml

Length of output: 2984

🧰 Tools
🪛 GitHub Actions: Build & Test Debug

[error] Map loading failed due to duplicate 'version' key in map file

🧹 Nitpick comments (20)
Resources/Prototypes/Voice/speech_emote_sounds.yml (1)

95-96: Fix typo in collection name.

The collection name "ReptillianHiss" contains a typo (double 'l'). It should be "ReptilianHiss" to maintain consistency with the standard spelling.

-      collection: ReptillianHiss # Impstation
+      collection: ReptilianHiss # Impstation

Also applies to: 121-122

Resources/Locale/en-US/_DV/borg/borg.ftl (1)

5-5: Consider making the message more specific about MMI compatibility.

While the current message is clear, consider being more specific about MMI compatibility to align with the UnborgableComponent functionality:

-brain-cannot-be-borged-message = [color=red]This brain is damaged beyond use.[/color]
+brain-cannot-be-borged-message = [color=red]This brain cannot be transferred to an MMI.[/color]
Resources/Locale/en-US/_DV/job/job-description.ftl (1)

3-3: Fix typo in chief-justice description.

There's a typo in the word "receives".

-job-description-chief-justice = Manage the justice department, act as a judge, and ensure everyone recieves fair and just treatment.
+job-description-chief-justice = Manage the justice department, act as a judge, and ensure everyone receives fair and just treatment.
Resources/Locale/en-US/_DV/traits/traits.ftl (2)

36-37: LGTM! Consider adding more context to the description.

The trait name and description are clear, but consider adding more context about why certain brains are incompatible with MMIs.

-trait-unborgable-desc = Your brain cannot be put into a man-machine interface.
+trait-unborgable-desc = Due to unique neural patterns, your brain cannot be integrated into a man-machine interface.

39-40: Consider adding a warning about potential gameplay impact.

While the trait states "No mechanical effect", depression can significantly impact roleplay. Consider adding a content warning.

-trait-depression-desc = No mechanical effect. The world is dark but there is a light somewhere, calling to you.
+trait-depression-desc = [Content Warning] No mechanical effect. The world is dark but there is a light somewhere, calling to you.
Content.Client/Doors/DoorSystem.cs (1)

84-89: LGTM! Good optimization.

Replacing the loop through AllLayers with a direct BaseRSI assignment is more efficient. Consider removing the commented-out code since it's tracked in version control.

-            args.Sprite.BaseRSI = res?.RSI; // DeltaV
-            /* DeltaV: just set BaseRSI instead
-            foreach (var layer in args.Sprite.AllLayers)
-            {
-                layer.Rsi = res?.RSI;
-            }*/
+            args.Sprite.BaseRSI = res?.RSI;
Content.Server/_Shitmed/Medical/Surgery/SurgerySystem.cs (1)

166-168: Consider adding pain sounds even with anesthesia.

While the patient shouldn't scream under anesthesia, consider adding muffled sounds or monitoring beeps for immersion.

 if (HasComp<AnesthesiaComponent>(args.Body)) // DeltaV: anesthesia
-    return;
+    _chat.TryEmoteWithChat(args.Body, "machine-beep");
Content.Client/HealthAnalyzer/UI/HealthAnalyzerWindow.xaml.cs (2)

40-40: Consider initializing system dependencies together.

The _unborgable system initialization is separated from other system initializations in the constructor. Consider grouping it with other system dependencies for better code organization.

         private readonly IPrototypeManager _prototypes;
         private readonly IResourceCache _cache;
-        private readonly UnborgableSystem _unborgable; // DeltaV
+        private readonly UnborgableSystem _unborgable;

         // Shitmed Change Start

Also applies to: 62-62


190-191: Extract complex condition into a descriptive method.

The alert visibility logic is becoming complex with multiple conditions. Consider extracting it into a separate method for better readability.

-            var unborgable = _unborgable.IsUnborgable(_target.Value);
-            var showAlerts = msg.Unrevivable == true || msg.Bleeding == true || unborgable;
+            var showAlerts = ShouldShowAlerts(msg);

+        private bool ShouldShowAlerts(HealthAnalyzerScannedUserMessage msg)
+        {
+            if (_target == null)
+                return false;
+                
+            return msg.Unrevivable == true 
+                || msg.Bleeding == true 
+                || _unborgable.IsUnborgable(_target.Value);
+        }
Content.Shared/_Shitmed/Surgery/SharedSurgerySystem.Steps.cs (1)

286-288: Define tag as a constant and improve comment style.

The tag string should be defined as a constant for maintainability, and the comment should follow XML documentation style.

+        private const string PermissibleForSurgeryTag = "PermissibleForSurgery";
+
+        /// <summary>
+        /// Checks if surgery can be performed through clothing items.
+        /// Some items (e.g., surgical drapes) are designed to be operated through.
+        /// </summary>
         if (!containerSlot.ContainedEntity.HasValue)
             continue;

-                if (_tagSystem.HasTag(containerSlot.ContainedEntity.Value, "PermissibleForSurgery")) // DeltaV: allow some clothing items to be operated through
-                    continue;
+                if (_tagSystem.HasTag(containerSlot.ContainedEntity.Value, PermissibleForSurgeryTag))
+                    continue;
Resources/Prototypes/_Impstation/Loadouts/Jobs/Civilian/bartender.yml (1)

1-8: Consider documenting the time requirement rationale.

The 52-hour requirement (1 hour per week for 1 year) for senior bartender is well thought out, but consider adding this explanation in the comment for future reference.

-      time: 187200 # 52 hrs (1 hour per week for 1 year)
+      time: 187200 # 52 hrs (calculated as 1 hour per week for 1 year to ensure consistent engagement)
Resources/Prototypes/Catalog/VendingMachines/Inventories/chapel.yml (1)

6-7: Consider standardizing inventory quantities.

While funeral suits are appropriate additions, they have a quantity of 4 each while other clothing items have 2 each. Consider standardizing the quantities unless there's a specific reason for the higher amount.

-    ClothingUniformFuneralSuit: 4 #imp
-    ClothingUniformFuneralSuitSkirt: 4 #imp
+    ClothingUniformFuneralSuit: 2 #imp
+    ClothingUniformFuneralSuitSkirt: 2 #imp
Resources/Prototypes/_DV/Entities/Clothing/Neck/misc.yml (1)

26-32: Consider adjusting temperature protection values.

The current values might make the poncho too effective at cold protection (0.1 cooling coefficient) while providing minimal heat protection (1.1 heating coefficient).

Consider adjusting the values to be more balanced:

  - type: TemperatureProtection
-   heatingCoefficient: 1.1
-   coolingCoefficient: 0.1
+   heatingCoefficient: 0.9
+   coolingCoefficient: 0.3
Resources/Prototypes/Catalog/VendingMachines/Inventories/secdrobe.yml (1)

Line range hint 1-29: LGTM! Consider documenting item relocations.

The reorganization of security clothing items improves consistency with the art direction. The removal of incongruous items and addition of formal/weather-appropriate gear enhances the theme.

Consider adding a comment in the SecTech inventory file to document that body armor was moved there from SecDrobe.

Resources/Prototypes/_Impstation/Entities/Clothing/Uniforms/jumpsuits.yml (1)

4-6: Consider revising the description.

The "contract killer" reference might be inappropriate for the game's tone.

Resources/Prototypes/Reagents/gases.yml (1)

310-321: Review the new anesthesia effect implementation.

The new anesthesia effect for NitrousOxide parallels the existing ForcedSleep effect. However, consider:

  1. Should the duration (200) be configurable?
  2. Should the effect be refreshable for continuous anesthesia?

Consider making the duration configurable through a constant or configuration value:

        time: 200
+       # time: !type:ConstantFloat
+       #   constant: AnesthesiaDuration
Resources/Prototypes/_Impstation/Loadouts/Jobs/Civilian/lawyer.yml (1)

1-9: Consider clarifying the purpose of the "#imp" comment.

The "#imp" comment appears to be a marker but its meaning is not immediately clear. Consider either removing it if unnecessary or adding a more descriptive comment explaining its purpose.

Resources/Prototypes/Entities/Structures/Machines/lathe.yml (3)

1138-1138: Verify the order of recipe additions.

The recipe additions at lines 1138 and 1350-1352 appear to be inserted at seemingly random positions in the file. Consider grouping related items together for better maintainability.

Also applies to: 1350-1352


Line range hint 1138-1352: Consider adding comments for recipe grouping.

The recipe list is quite long and would benefit from comment headers grouping related items (e.g., "# Medical Equipment", "# Security Equipment", etc.) for better organization.


Line range hint 1138-1352: Consider adding documentation for the medical biofabricator.

This appears to be a significant new feature. Consider adding:

  1. Usage documentation
  2. Recipe requirements
  3. Integration testing guidelines
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 9cffeab and 4bccb4e.

⛔ Files ignored due to path filters (109)
  • Resources/Audio/_Impstation/Voice/Reptilian/reptillian_hiss1.ogg is excluded by !**/*.ogg
  • Resources/Textures/_DV/Clothing/Neck/Misc/cwparctic.rsi/equipped-NECK.png is excluded by !**/*.png
  • Resources/Textures/_DV/Clothing/Neck/Misc/cwparctic.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_DV/Clothing/Neck/Misc/cwparctic.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_DV/Clothing/Neck/Misc/cwparctic.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_DV/Clothing/Neck/Misc/cwpsec.rsi/equipped-NECK.png is excluded by !**/*.png
  • Resources/Textures/_DV/Clothing/Neck/Misc/cwpsec.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_DV/Clothing/Neck/Misc/cwpsec.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_DV/Clothing/Neck/Misc/cwpsec.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/brosblazer.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/brosblazer.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/brosblazer.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/brosblazer.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/brosblazer.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/brownsuit.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/brownsuit.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/brownsuit.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/brownsuit.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/brownsuit.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/creamsuit.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/creamsuit.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/creamsuit.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/creamsuit.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/creamsuit.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/detectivesuit.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/detectivesuit.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/detectivesuit.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/detectivesuit.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/detectivesuit.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/funeralsuit.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/funeralsuit.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/funeralsuit.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/funeralsuit.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/funeralsuit.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/hitmansuit.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/hitmansuit.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/hitmansuit.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/hitmansuit.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/hitmansuit.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/miamivice.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/miamivice.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/miamivice.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/miamivice.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/miamivice.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/mrspacewide.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/mrspacewide.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/mrspacewide.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/mrspacewide.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/mrspacewide.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/nightclubsuit.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/nightclubsuit.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/nightclubsuit.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/nightclubsuit.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/nightclubsuit.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/senior_bartender.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/senior_bartender.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/senior_bartender.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/senior_bartender.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/senior_bartender.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/brosblazer.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/brosblazer.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/brosblazer.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/brosblazer.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/brosblazer.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/brownsuit.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/brownsuit.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/brownsuit.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/brownsuit.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/brownsuit.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/creamsuit.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/creamsuit.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/creamsuit.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/creamsuit.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/creamsuit.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/detectivesuit.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/detectivesuit.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/detectivesuit.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/detectivesuit.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/detectivesuit.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/funeralsuit.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/funeralsuit.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/funeralsuit.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/funeralsuit.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/funeralsuit.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/hitmansuit.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/hitmansuit.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/hitmansuit.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/hitmansuit.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/hitmansuit.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/miamivice.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/miamivice.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/miamivice.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/miamivice.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/miamivice.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/mrspacewide.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/mrspacewide.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/mrspacewide.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/mrspacewide.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/mrspacewide.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/nightclubsuit.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/nightclubsuit.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/nightclubsuit.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/nightclubsuit.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/nightclubsuit.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/senior_bartender.rsi/equipped-INNERCLOTHING-monkey.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/senior_bartender.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/senior_bartender.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/senior_bartender.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/senior_bartender.rsi/inhand-right.png is excluded by !**/*.png
📒 Files selected for processing (82)
  • Content.Client/Doors/DoorSystem.cs (1 hunks)
  • Content.Client/HealthAnalyzer/UI/HealthAnalyzerWindow.xaml.cs (5 hunks)
  • Content.Server/_Shitmed/Medical/Surgery/SurgerySystem.cs (3 hunks)
  • Content.Shared/_DV/Surgery/AnesthesiaComponent.cs (1 hunks)
  • Content.Shared/_DV/Traits/Assorted/UnborgableComponent.cs (1 hunks)
  • Content.Shared/_DV/Traits/Assorted/UnborgableSystem.cs (1 hunks)
  • Content.Shared/_Shitmed/Surgery/SharedSurgerySystem.Steps.cs (1 hunks)
  • Content.Shared/_Shitmed/Surgery/SharedSurgerySystem.cs (2 hunks)
  • Resources/Audio/_Impstation/Voice/Reptilian/attributions.yml (1 hunks)
  • Resources/Changelog/DeltaVChangelog.yml (1 hunks)
  • Resources/Locale/en-US/_DV/borg/borg.ftl (1 hunks)
  • Resources/Locale/en-US/_DV/job/job-description.ftl (1 hunks)
  • Resources/Locale/en-US/_DV/medical/components/health-analyzer-component.ftl (1 hunks)
  • Resources/Locale/en-US/_DV/prototypes/catalog/fills/crates/medical-crates.ftl (1 hunks)
  • Resources/Locale/en-US/_DV/traits/traits.ftl (1 hunks)
  • Resources/Maps/arena.yml (28 hunks)
  • Resources/Maps/byoin.yml (86 hunks)
  • Resources/Maps/hive.yml (35 hunks)
  • Resources/Maps/tortuga.yml (12 hunks)
  • Resources/Prototypes/Catalog/Cargo/cargo_vending.yml (1 hunks)
  • Resources/Prototypes/Catalog/Fills/Items/briefcases.yml (1 hunks)
  • Resources/Prototypes/Catalog/VendingMachines/Inventories/bardrobe.yml (1 hunks)
  • Resources/Prototypes/Catalog/VendingMachines/Inventories/chapel.yml (1 hunks)
  • Resources/Prototypes/Catalog/VendingMachines/Inventories/curadrobe.yml (1 hunks)
  • Resources/Prototypes/Catalog/VendingMachines/Inventories/detdrobe.yml (1 hunks)
  • Resources/Prototypes/Catalog/VendingMachines/Inventories/lawdrobe.yml (1 hunks)
  • Resources/Prototypes/Catalog/VendingMachines/Inventories/secdrobe.yml (1 hunks)
  • Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml (2 hunks)
  • Resources/Prototypes/Entities/Clothing/OuterClothing/misc.yml (1 hunks)
  • Resources/Prototypes/Entities/Clothing/OuterClothing/vests.yml (1 hunks)
  • Resources/Prototypes/Entities/Mobs/NPCs/animals.yml (2 hunks)
  • Resources/Prototypes/Entities/Mobs/NPCs/simplemob.yml (2 hunks)
  • Resources/Prototypes/Entities/Mobs/Species/base.yml (1 hunks)
  • Resources/Prototypes/Entities/Mobs/Species/reptilian.yml (1 hunks)
  • Resources/Prototypes/Entities/Objects/Specific/Robotics/mmi.yml (1 hunks)
  • Resources/Prototypes/Entities/Structures/Machines/lathe.yml (2 hunks)
  • Resources/Prototypes/Loadouts/loadout_groups.yml (7 hunks)
  • Resources/Prototypes/Maps/arena.yml (1 hunks)
  • Resources/Prototypes/Maps/asterisk.yml (1 hunks)
  • Resources/Prototypes/Maps/byoin.yml (1 hunks)
  • Resources/Prototypes/Maps/glacier.yml (1 hunks)
  • Resources/Prototypes/Maps/hive.yml (1 hunks)
  • Resources/Prototypes/Maps/lighthouse.yml (1 hunks)
  • Resources/Prototypes/Maps/tortuga.yml (1 hunks)
  • Resources/Prototypes/Reagents/gases.yml (1 hunks)
  • Resources/Prototypes/Reagents/narcotics.yml (1 hunks)
  • Resources/Prototypes/Reagents/toxins.yml (2 hunks)
  • Resources/Prototypes/Recipes/Reactions/chemicals.yml (1 hunks)
  • Resources/Prototypes/Voice/speech_emote_sounds.yml (2 hunks)
  • Resources/Prototypes/_DV/Catalog/Cargo/cargo_medical.yml (1 hunks)
  • Resources/Prototypes/_DV/Catalog/Fills/Crates/medical.yml (1 hunks)
  • Resources/Prototypes/_DV/Entities/Clothing/Belt/belts.yml (1 hunks)
  • Resources/Prototypes/_DV/Entities/Clothing/Neck/misc.yml (1 hunks)
  • Resources/Prototypes/_DV/Entities/Markers/Spawners/Random/laws.yml (1 hunks)
  • Resources/Prototypes/_DV/Recipes/Lathes/clothing.yml (1 hunks)
  • Resources/Prototypes/_DV/Recipes/Lathes/medical.yml (1 hunks)
  • Resources/Prototypes/_DV/Traits/disabilities.yml (1 hunks)
  • Resources/Prototypes/_DV/status_effects.yml (1 hunks)
  • Resources/Prototypes/_DV/tags.yml (1 hunks)
  • Resources/Prototypes/_Impstation/Entities/Clothing/Uniforms/jumpskirts.yml (1 hunks)
  • Resources/Prototypes/_Impstation/Entities/Clothing/Uniforms/jumpsuits.yml (1 hunks)
  • Resources/Prototypes/_Impstation/Loadouts/Jobs/Civilian/bartender.yml (1 hunks)
  • Resources/Prototypes/_Impstation/Loadouts/Jobs/Civilian/chaplain.yml (1 hunks)
  • Resources/Prototypes/_Impstation/Loadouts/Jobs/Civilian/lawyer.yml (1 hunks)
  • Resources/Prototypes/_Impstation/Loadouts/Jobs/Civilian/librarian.yml (1 hunks)
  • Resources/Prototypes/_Impstation/Loadouts/Jobs/Civilian/musician.yml (1 hunks)
  • Resources/Prototypes/_Impstation/Loadouts/Jobs/Security/detective.yml (1 hunks)
  • Resources/Prototypes/_Impstation/Loadouts/Jobs/Wildcards/reporter.yml (1 hunks)
  • Resources/Prototypes/_Impstation/SoundCollections/reptilian.yml (1 hunks)
  • Resources/Textures/_DV/Clothing/Neck/Misc/cwparctic.rsi/meta.json (1 hunks)
  • Resources/Textures/_DV/Clothing/Neck/Misc/cwpsec.rsi/meta.json (1 hunks)
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/brosblazer.rsi/meta.json (1 hunks)
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/brownsuit.rsi/meta.json (1 hunks)
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/creamsuit.rsi/meta.json (1 hunks)
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/detectivesuit.rsi/meta.json (1 hunks)
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/funeralsuit.rsi/meta.json (1 hunks)
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/hitmansuit.rsi/meta.json (1 hunks)
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/miamivice.rsi/meta.json (1 hunks)
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/mrspacewide.rsi/meta.json (1 hunks)
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/nightclubsuit.rsi/meta.json (1 hunks)
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/senior_bartender.rsi/meta.json (1 hunks)
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/brosblazer.rsi/meta.json (1 hunks)
⛔ Files not processed due to max files limit (9)
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/brownsuit.rsi/meta.json
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/creamsuit.rsi/meta.json
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/detectivesuit.rsi/meta.json
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/funeralsuit.rsi/meta.json
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/hitmansuit.rsi/meta.json
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/miamivice.rsi/meta.json
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/mrspacewide.rsi/meta.json
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/nightclubsuit.rsi/meta.json
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/senior_bartender.rsi/meta.json
✅ Files skipped from review due to trivial changes (19)
  • Resources/Locale/en-US/_DV/medical/components/health-analyzer-component.ftl
  • Resources/Textures/_DV/Clothing/Neck/Misc/cwparctic.rsi/meta.json
  • Resources/Prototypes/_Impstation/SoundCollections/reptilian.yml
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/nightclubsuit.rsi/meta.json
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/hitmansuit.rsi/meta.json
  • Resources/Textures/_DV/Clothing/Neck/Misc/cwpsec.rsi/meta.json
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/miamivice.rsi/meta.json
  • Resources/Prototypes/_Impstation/Loadouts/Jobs/Civilian/musician.yml
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/funeralsuit.rsi/meta.json
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/creamsuit.rsi/meta.json
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/senior_bartender.rsi/meta.json
  • Resources/Locale/en-US/_DV/prototypes/catalog/fills/crates/medical-crates.ftl
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/brosblazer.rsi/meta.json
  • Resources/Audio/_Impstation/Voice/Reptilian/attributions.yml
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/detectivesuit.rsi/meta.json
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/brosblazer.rsi/meta.json
  • Resources/Prototypes/_Impstation/Loadouts/Jobs/Civilian/librarian.yml
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/brownsuit.rsi/meta.json
  • Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/mrspacewide.rsi/meta.json
🧰 Additional context used
🪛 GitHub Actions: Build & Test Debug
Resources/Prototypes/Maps/arena.yml

[error] Map loading failed due to duplicate 'version' key in map file

Resources/Maps/arena.yml

[error] Map loading failed due to duplicate 'version' key in map file

🔇 Additional comments (72)
Resources/Prototypes/Voice/speech_emote_sounds.yml (1)

95-96: Verify sound collection dependency.

The changes reference a 'ReptillianHiss' collection. Let's verify that this collection is properly defined.

Also applies to: 121-122

✅ Verification successful

Sound collection dependency verified successfully

The 'ReptillianHiss' collection is properly defined in Resources/Prototypes/_Impstation/SoundCollections/reptilian.yml and correctly references the existing audio file.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check if the ReptillianHiss sound collection is defined
rg -l "ReptillianHiss" "Resources/Prototypes/_Impstation/SoundCollections/"

# Check if the referenced audio file exists
fd "reptillian_hiss1.ogg" "Resources/Audio/_Impstation/Voice/Reptilian/"

Length of output: 273


Script:

#!/bin/bash
# Check the content of the reptilian.yml file
cat "Resources/Prototypes/_Impstation/SoundCollections/reptilian.yml"

Length of output: 183

Resources/Prototypes/Entities/Mobs/NPCs/animals.yml (2)

1518-1518: LGTM! Consistent emote addition.

The addition of 'Hiss' to the allowedEmotes list for MobBaseKobold is consistent with the sound emotes defined in speech_emote_sounds.yml.


1905-1915: LGTM! Well-structured component additions.

The new components added to MobLizard are well-structured and properly configured:

  • ReplacementAccent with kobold accent
  • Speech component with appropriate sounds and verbs
  • Vocal component with gender-specific sound configurations
Resources/Prototypes/Entities/Mobs/Species/reptilian.yml (2)

34-34: LGTM! The YAML changes look correct.

The addition of 'Hiss' to allowedEmotes is properly formatted and placed within the Speech component configuration.


34-34: Verify the 'Hiss' emote dependencies.

Please ensure that all required assets and definitions for the 'Hiss' emote are in place:

  1. Sound assets for the hissing sound
  2. Emote definition in the emotes configuration
  3. Integration with the Vocal and BodyEmotes components
✅ Verification successful

All required dependencies for the 'Hiss' emote are properly configured.

  • Sound asset exists at Resources/Audio/_Impstation/Voice/Reptilian/reptillian_hiss1.ogg
  • Sound collection ReptillianHiss is properly defined and references the sound file
  • Emote is properly defined with appropriate chat triggers and icon
  • Species configuration includes the emote in allowedEmotes
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the existence of required 'Hiss' emote assets and configurations

# Check for hiss sound assets
echo "Checking for hiss sound assets..."
fd -e ogg -e wav . Resources/Audio/ -x echo "Found sound file: {}"

# Check for hiss emote definition
echo "Checking for hiss emote definition..."
rg -l "Hiss" Resources/Prototypes/Emotes/

# Check for other reptilian entities that might need the hiss emote
echo "Checking for other reptilian entities..."
rg "species: Reptilian" Resources/Prototypes/

Length of output: 66110


Script:

#!/bin/bash
# Search for emote definitions and reptilian content

# Find all YAML files that might contain emote definitions
echo "Searching for emote definition files..."
fd -e yml -e yaml . Resources/ -x echo "Found YAML file: {}"

# Search for hiss emote definitions with proper YAML syntax
echo -e "\nSearching for hiss emote definitions..."
rg -i "hiss.*emote|emote.*hiss" -g "*.yml" -g "*.yaml"

# Search for reptilian species references with proper YAML syntax
echo -e "\nSearching for reptilian species references..."
rg -i "species:\s*[\"']?Reptilian[\"']?" -g "*.yml" -g "*.yaml"

# Search for references to the hiss sound file
echo -e "\nSearching for references to hiss sound file..."
rg -i "reptillian_hiss1" -g "*.yml" -g "*.yaml"

Length of output: 66338


Script:

#!/bin/bash
# Broader search for hiss and reptilian related content

# Search for any hiss-related content in YAML files
echo "Searching for hiss-related content..."
rg -i "hiss" -A 5 -B 5 -g "*.yml" -g "*.yaml"

# Search for sound collection definitions
echo -e "\nSearching for sound collections..."
rg -i "sound.*collection|collection.*sound" -g "*.yml" -g "*.yaml"

# Search for reptilian with more flexible pattern
echo -e "\nSearching for reptilian references..."
rg -i "reptilian" -g "*.yml" -g "*.yaml"

Length of output: 66405

Content.Shared/_DV/Surgery/AnesthesiaComponent.cs (1)

1-9: LGTM! Well-structured component implementation.

The component is properly implemented with appropriate attributes and documentation. The empty component pattern is suitable for this status effect use case.

Content.Shared/_DV/Traits/Assorted/UnborgableComponent.cs (1)

1-10: LGTM! Well-documented trait component.

The component is properly implemented with clear documentation explaining its purpose and behavior. The implementation follows best practices for trait components.

Resources/Locale/en-US/_DV/job/job-description.ftl (1)

2-2: LGTM! Surgeon description maintains appropriate tone.

The description effectively communicates the role's responsibilities while maintaining the game's characteristic humor.

Content.Shared/_DV/Traits/Assorted/UnborgableSystem.cs (2)

48-50: ⚠️ Potential issue

Fix the inverted condition in OnExamined.

The current condition prevents showing the message when a BodyComponent exists, which seems incorrect based on the comment.

-        if (!args.IsInDetailsRange || HasComp<BodyComponent>(ent))
+        if (!args.IsInDetailsRange || !HasComp<BodyComponent>(ent))
             return;

Likely invalid or redundant comment.


5-5: Address the TODO comment before merging.

The comment indicates waiting for "shitmed" to be merged. This dependency should be resolved before merging this PR.

Content.Server/_Shitmed/Medical/Surgery/SurgerySystem.cs (1)

147-149: ⚠️ Potential issue

Validate damage calculation with anesthesia.

The damage calculation with anesthesia needs bounds checking to prevent potential exploits.

 if (HasComp<AnesthesiaComponent>(args.Body)) // DeltaV: anesthesia
-    damageChange = damageChange * ent.Comp.SleepModifier;
+    damageChange = damageChange * Math.Max(0, Math.Min(1, ent.Comp.SleepModifier));
Content.Client/HealthAnalyzer/UI/HealthAnalyzerWindow.xaml.cs (1)

215-221: Verify localization key exists.

Ensure that the localization key "health-analyzer-window-entity-unborgable-text" is defined in the localization files.

✅ Verification successful

Localization key verified
The key "health-analyzer-window-entity-unborgable-text" is properly defined in the DeltaV localization files.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check if the localization key exists
rg "health-analyzer-window-entity-unborgable-text" -g "*.ftl"

Length of output: 269

Content.Shared/_Shitmed/Surgery/SharedSurgerySystem.cs (1)

24-24: LGTM! Clean dependency injection.

The TagSystem dependency is properly injected and follows the established pattern.

Also applies to: 51-51

Resources/Maps/hive.yml (4)

Line range hint 308-324: LGTM: Map structure changes for the delivery area.

The new tile configurations and delivery node with decals are well-organized and properly configured.

Also applies to: 4299-4311


163213-163235: LGTM: Surgeon spawn points are well-configured.

The spawn points for the new Surgeon role are properly positioned and include correct rotations.


136874-136895: LGTM: Device link configurations for door control.

The device link sources and sinks are properly configured with correct port mappings for door status toggling.


20858-20867: ⚠️ Potential issue

Check for duplicate entity UIDs.

Several entity UIDs (30104-30111) appear multiple times in the file. This could cause entity resolution issues at runtime.

Run this script to verify unique UIDs:

Also applies to: 59969-60058

Resources/Maps/byoin.yml (5)

117-117: Verify the tile modifications for the surgery area.

The tile data has been modified significantly. Please ensure that:

  1. The floor plan changes align with the medical facility requirements
  2. The tile connections are properly configured
  3. There are no gaps or misaligned tiles

Also applies to: 157-157


Line range hint 315-2125: Room structure looks good!

The surgery room is properly enclosed with:

  • Corner tiles at all four corners
  • Continuous wall tiles connecting the corners
  • Consistent positioning forming a rectangular space

Line range hint 3235-3480: Atmospheric system configuration is properly structured.

The atmospheric indices are correctly configured to support the surgery room's ventilation requirements.


3667-3681: Gas mixture configuration is appropriate for medical use.

The atmospheric settings are suitable for a surgery room:

  • Temperature: 20°C (293.15K)
  • Standard breathable air mixture

Line range hint 6123-47661: Medical equipment layout is comprehensive and well-organized.

The surgery room is properly equipped with:

  • Secured access through medical airlocks
  • Essential surgical equipment and monitoring systems
  • Medical gas supply systems
  • Storage for surgical supplies

Please verify that the equipment placement aligns with standard medical protocols and procedures.

Resources/Maps/tortuga.yml (3)

148185-148196: Review surgeon spawn point distribution and equipment access.

The configuration adds multiple surgeon spawn points and dedicated lockers. Consider:

  1. The spawn points (5 locations) seem excessive given the typical surgeon count of [1, 2] mentioned in the AI summary
  2. Verify that surgeon lockers are conveniently accessible from spawn points
  3. The purpose of SpawnMobSmile in the medical context needs clarification

Consider reducing the number of spawn points to match the maximum number of surgeons allowed (2) to prevent unused spawn points and maintain a cleaner configuration.

Also applies to: 185545-185551, 186592-186618


18830-18836: Verify medical facility zoning and privacy considerations.

The addition of surgery-specific airlocks and various colored curtains suggests a well-structured medical facility. However, please ensure that:

  1. The curtain placements provide adequate privacy for patients
  2. The color-coding of curtains follows a consistent scheme for different medical zones
  3. The surgery area is properly isolated from general medical areas

Also applies to: 73401-73424, 73430-73492, 73527-73536, 73569-73592

✅ Verification successful

Medical facility layout verification successful

The medical facility layout demonstrates proper isolation and privacy considerations:

  • Surgery area is well-isolated with dedicated airlock (pos: -81.5,2.5)
  • Separate zones are clearly defined with appropriate access control
  • Surveillance system provides comprehensive coverage while maintaining patient privacy through dedicated zone monitoring
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Analyze the medical facility layout
# Check if surgery area is properly isolated with airlocks and curtains

# Look for any direct paths to surgery area that bypass airlocks
rg -l "Transform.*pos:.*[-]8[0-9],.*[0-9]" | while read -r file; do
  echo "=== $file ==="
  rg "Transform.*pos:.*[-]8[0-9],.*[0-9]" "$file"
done

# Verify curtain placement around patient areas
rg -l "Curtains.*Transform.*pos:" | while read -r file; do
  echo "=== $file ==="
  rg "Curtains.*Transform.*pos:" "$file"
done

Length of output: 110


Script:

#!/bin/bash
# First, let's understand the structure by looking for medical-related entities
echo "=== Medical and Surgery Related Entities ==="
rg -i "type:.*(?i)(medical|surgery|airlock|curtain)" Resources/Maps/tortuga.yml

# Then look for coordinate patterns in the relevant sections
echo -e "\n=== Coordinate Patterns Around Medical Areas ==="
rg -A 5 -B 5 "(?i)(medical|surgery)" Resources/Maps/tortuga.yml

# Check for airlock patterns specifically
echo -e "\n=== Airlock Patterns ==="
rg -A 3 "type:.*[Aa]irlock" Resources/Maps/tortuga.yml

Length of output: 14602


215466-215509: Review turret coverage and behavior changes.

The renaming from WeaponTurretAllHostile to WeaponTurretAI suggests a behavior change. Please ensure:

  1. The new AI behavior is properly documented
  2. The turret positions provide adequate coverage without overlapping fields of fire
  3. The rotation values create an effective security perimeter
✅ Verification successful

Turret placement and behavior changes verified.

The WeaponTurretAI implementation is properly documented and strategically placed:

  • Turrets are deployed in pairs for redundant coverage
  • Positions are at strategic defensive points
  • Rotation values provide overlapping fields of fire
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Analyze turret placement and coverage

# Check for documentation of new turret AI behavior
rg -l "WeaponTurretAI" | while read -r file; do
  echo "=== $file ==="
  rg -B2 -A2 "WeaponTurretAI" "$file"
done

# Analyze turret positions and rotations for coverage gaps
rg "WeaponTurretAI.*Transform" -A 3

Length of output: 1840


Script:

#!/bin/bash
# Search for turret positions and rotations in map files
for map in "lighthouse.yml" "tortuga.yml" "hive.yml" "glacier.yml" "arena.yml"; do
  echo "=== $map ==="
  rg -B5 -A10 "proto: WeaponTurretAI" "Resources/Maps/$map"
done

# Search for any additional turret configuration
rg -l "WeaponTurretAI" | xargs rg "Transform|Position|Rotation" -B2 -A2

Length of output: 68221

Resources/Maps/arena.yml (4)

Line range hint 9852-10027: LGTM!

The coordinate and property adjustments appear to be routine position refinements.

🧰 Tools
🪛 GitHub Actions: Build & Test Debug

[error] Map loading failed due to duplicate 'version' key in map file


Line range hint 1-190608: Fix duplicate 'version' key in map file.

The pipeline is failing due to a duplicate 'version' key in the YAML file. This is a critical issue that needs to be resolved.

Run this script to locate the duplicate keys:

After identifying the duplicates, ensure only one 'version' key exists at the root level of the YAML file.

🧰 Tools
🪛 GitHub Actions: Build & Test Debug

[error] Map loading failed due to duplicate 'version' key in map file


20555-20574: Verify security implications of new entities.

Multiple new entities have been added in what appears to be a secure area. These entities are linked to security systems (turrets, cameras, and lockable buttons).

Run this script to analyze the security layout:

✅ Verification successful

Security configuration follows standard patterns

The new entities form a standard secure area layout with:

  • Surveillance cameras positioned at strategic corners (-70.5,-75.5 and -76.5,-70.5)
  • Integrated device network monitoring
  • Standard parent-child relationships
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Analyze security-related entities and their positions
# Look for patterns that might create security vulnerabilities

# Search for security-related entities and their positions
rg -A 5 "proto: (WeaponTurret|SurveillanceCamera|LockableButton)" Resources/Maps/

# Check for any existing security measures in the same area
rg -A 5 "pos: -7[0-9]\.[0-9],-7[0-9]\.[0-9]" Resources/Maps/

Length of output: 67746


Script:

#!/bin/bash
# Search for entities and security measures in the target area
# Look for parent entity references and nearby security components

# Find all entities around the target coordinates
rg "pos: -7[0-9]\.[0-9],-7[0-9]\.[0-9]" -B 2 -A 2 Resources/Maps/arena.yml

# Look for parent entity references
rg "parent: 6747" -B 2 -A 2 Resources/Maps/arena.yml

# Search for security-related components near target area
rg "(WeaponTurret|SurveillanceCamera|LockableButton).*pos: -7[0-9]" -B 2 -A 2 Resources/Maps/arena.yml

Length of output: 76562

🧰 Tools
🪛 GitHub Actions: Build & Test Debug

[error] Map loading failed due to duplicate 'version' key in map file


162460-162476: Verify surgeon spawn point placement.

The addition of surgeon spawn points aligns with the new surgical mechanics. However, ensure that the spawn locations (5.5,-38.5, 11.5,-31.5, 11.5,-33.5) are appropriately placed relative to the medical facilities.

Run this script to verify the spawn point placement:

✅ Verification successful

Surgeon spawn points are appropriately placed

The spawn points are well-integrated within medical facilities, with direct access to:

  • Medical hallways and treatment areas
  • Surgical equipment and supplies
  • Medical storage and vendors
  • Hospital facilities and patient areas
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify surgeon spawn points are near medical facilities

# Search for medical-related entities near spawn points
rg -A 5 "pos: (5\.5,-3[89]|11\.5,-3[123])" Resources/Maps/

# Look for medical facility markers in the vicinity
ast-grep --pattern 'proto: (Medical|Surgery|Hospital)' Resources/Maps/

Length of output: 67813


Script:

#!/bin/bash
# Search for medical-related entities and markers near spawn points

# Look for medical-related terms in broader context around spawn coordinates
rg -i "medbay|clinic|infirmary|surgery|medical|hospital|doctor" -C 5 "pos: (5\.5,-3[89]|11\.5,-3[123])" Resources/Maps/

# Search for medical equipment and facilities
ast-grep --pattern 'proto: $_(Medical|Surgery|Hospital|Medbay|Operating|Clinic|Doctor|Infirmary)$_'

Length of output: 81126

🧰 Tools
🪛 GitHub Actions: Build & Test Debug

[error] Map loading failed due to duplicate 'version' key in map file

Resources/Prototypes/_DV/status_effects.yml (1)

12-14: ⚠️ Potential issue

Verify impact of removing core medical status effects

The removal of addiction and pain mechanics without apparent replacement systems could significantly impact:

  • Medical gameplay balance
  • Character progression
  • Existing medical items and procedures

Run this script to check for remaining references to removed effects:

Resources/Prototypes/Catalog/VendingMachines/Inventories/curadrobe.yml (1)

15-16: Please clarify the purpose of "#imp" comments.

The "#imp" comments next to the new clothing items are ambiguous. If these are implementation notes, consider removing them or providing more descriptive comments.

Resources/Prototypes/_DV/Catalog/Fills/Crates/medical.yml (1)

12-21: Review painkiller crate quantity and description.

The description "Running out of these is not an option" suggests these are critical medical supplies, but:

  1. The crate only contains 3 painkiller canisters
  2. This might create resource scarcity issues during extended medical emergencies

Consider:

  • Increasing the quantity to match the critical nature described
  • Adjusting the description if the limited quantity is intentional
Resources/Prototypes/_DV/Catalog/Cargo/cargo_medical.yml (1)

21-29: Review painkiller crate cost balancing.

The cost of the painkiller crate (1000) needs review:

  1. It's 2x more expensive than the removed scrubs crate (500)
  2. Each canister effectively costs ~333 credits
  3. Consider if this pricing aligns with the intended medical economy balance
Resources/Prototypes/_DV/Entities/Markers/Spawners/Random/laws.yml (1)

14-27: Review law board selection implications.

The random spawner includes multiple law board variants that could significantly impact gameplay:

  1. Some combinations might create conflicting directives (e.g., Asimov vs. Corporate)
  2. Certain law sets might be too permissive or restrictive for balanced gameplay

Consider:

  • Grouping compatible law boards together
  • Adding weights to control spawn probabilities
  • Documenting the intended balance between different law sets
Resources/Prototypes/Catalog/VendingMachines/Inventories/bardrobe.yml (1)

13-14: LGTM! Appropriate additions for bar attire.

The new nightclub suit variants enhance the bartender's wardrobe options.

Resources/Prototypes/Catalog/VendingMachines/Inventories/lawdrobe.yml (1)

12-13: LGTM! Good addition to lawyer wardrobe.

The cream suit variants complement the existing color options nicely.

Resources/Prototypes/Catalog/VendingMachines/Inventories/detdrobe.yml (1)

23-26: LGTM! Verify new clothing items are properly configured.

The new detective and Miami Vice suits look good. The #imp tag suggests these are important replacements for the removed items.

Let's verify these new clothing items are properly configured:

✅ Verification successful

All new detective clothing items are properly configured ✓

The detective and Miami Vice suits (both regular and skirt variants) have complete configurations:

  • Entity definitions with sprites in _Impstation prototypes
  • Integration in detective loadouts and loadout groups
  • Correct vending machine inventory entries
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check if the new clothing items have their required entity definitions
rg "ClothingUniformDetectiveSuit|ClothingUniformDetectiveSuitSkirt|ClothingUniformMiamiVice|ClothingUniformMiamiViceSkirt" -A 5

Length of output: 5756

Resources/Prototypes/Catalog/Fills/Items/briefcases.yml (1)

28-28: LGTM! Thematically appropriate change.

Replacing the lawyer's suit with a hitman suit in the sniper bundle makes more thematic sense.

Resources/Prototypes/_DV/Entities/Clothing/Neck/misc.yml (1)

34-43: LGTM! Good inheritance structure.

The arctic variant properly inherits from the security variant while overriding only the necessary components.

Resources/Prototypes/Maps/byoin.yml (1)

40-40: LGTM! Surgeon role properly configured.

The addition of the Surgeon role with [1, 1] availability is consistent with other specialized medical positions in the station.

Resources/Prototypes/_DV/tags.yml (2)

Line range hint 1-109: LGTM! Comprehensive cleanup of unused tags.

The removal of deprecated tags, particularly those related to Borg security components and craftable weapons, helps maintain a clean codebase.


111-112: LGTM! Well-defined surgery tag.

The new PermissibleForSurgery tag is clearly described and aligns with the PR's enhanced surgery mechanics.

Let's verify the tag's usage:

✅ Verification successful

Tag implementation and usage verified successfully

The PermissibleForSurgery tag is properly integrated into the surgery system and currently applied to select clothing items in vests and misc categories.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check which items are tagged as PermissibleForSurgery
rg "PermissibleForSurgery" -A 2

Length of output: 937

Resources/Prototypes/Entities/Mobs/NPCs/simplemob.yml (1)

33-33: Verify AnesthesiaComponent implementation.

The addition of the Anesthesia status effect to both mob bases is appropriate for the new surgical mechanics. However, we should verify the component's implementation.

Also applies to: 112-112

✅ Verification successful

AnesthesiaComponent implementation verified successfully

The component is properly implemented as a networked status effect and correctly integrated with the surgery system, providing both damage reduction and pain suppression during surgical procedures.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Verify AnesthesiaComponent implementation and its integration with the surgery system
ast-grep --pattern 'class AnesthesiaComponent {
  $$$
}'

# Check for surgery system integration
ast-grep --pattern 'class SurgerySystem {
  $$$
  Anesthesia
  $$$
}'

Length of output: 130


Script:

#!/bin/bash
# Find all files containing Anesthesia references
rg -l "Anesthesia" --type-add 'cs:*.cs' --type cs

# Search for component registration patterns
rg -A 5 "IComponent|Component>" --type cs

# Look for anesthesia-related systems
rg -l "Surgery|Medical|Anesthesia" --type yaml

Length of output: 76175


Script:

#!/bin/bash
# Get AnesthesiaComponent implementation with context
rg -C 10 "class AnesthesiaComponent" Content.Shared/_DV/Surgery/AnesthesiaComponent.cs

# Look for anesthesia usage in surgery system
rg -C 5 "Anesthesia" Content.Server/_Shitmed/Medical/Surgery/SurgerySystem.cs

Length of output: 1441

Resources/Prototypes/Maps/asterisk.yml (1)

47-49: LGTM! Verify role dependencies.

The redistribution of medical staff slots and addition of the Surgeon role improves specialization while maintaining overall medical coverage.

✅ Verification successful

Role properly integrated and dependencies verified

The Surgeon role is fully implemented with proper department integration, equipment loadouts, and consistent slot allocation across all maps. The recent addition (PR DeltaV-Station#2645) includes all necessary role dependencies and access configurations.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for surgeon role definition and dependencies
rg -A 10 "Surgeon:" Resources/Prototypes/Roles/Jobs/Medical/

Length of output: 60


Script:

#!/bin/bash
# Find all role-related files and search for surgeon
fd -e yml -e yaml | xargs rg -i "surgeon" -A 5

# Specifically look for role definitions
ast-grep --pattern 'Surgeon:'

Length of output: 31575

Resources/Prototypes/Maps/lighthouse.yml (1)

56-59: LGTM! Well-balanced role distribution.

The adjustment of medical slots and addition of Surgeon role maintains appropriate medical coverage for the station size while adding specialization.

Resources/Prototypes/Maps/tortuga.yml (1)

41-46: LGTM! Proportional staff adjustments.

The reduction in MedicalDoctor slots and addition of Surgeon role maintains appropriate medical coverage for Tortuga's high player capacity while adding surgical specialization.

Resources/Prototypes/Maps/arena.yml (1)

41-46: LGTM: Job slot adjustments are reasonable.

The reduction in MedicalDoctor slots and addition of the Surgeon role maintains a balanced medical staff composition.

🧰 Tools
🪛 GitHub Actions: Build & Test Debug

[error] Map loading failed due to duplicate 'version' key in map file

Resources/Prototypes/Maps/glacier.yml (1)

58-58: LGTM: Surgeon role properly integrated.

The Surgeon role is correctly placed in the medical section with appropriate slot allocation.

Resources/Prototypes/Maps/hive.yml (1)

42-47: LGTM: Medical staff adjustments are consistent.

The changes maintain consistency with other map configurations for medical staff composition.

Resources/Prototypes/_DV/Entities/Clothing/Belt/belts.yml (2)

107-110: LGTM: Enhanced paperwork belt functionality.

Added HandLabeler and Stamp support improves the belt's utility for administrative tasks.


Line range hint 42-65: Verify storage grid expansion impact.

The storage grid dimensions have been expanded. Please ensure this doesn't cause UI overflow or item accessibility issues.

✅ Verification successful

Storage grid changes align with standard belt layout pattern

The storage grid expansion follows the established "Split Inventory" pattern used across multiple belt types in the codebase, with identical dimensions (0,0,3,1 and 5,0,8,1) and spacing. The modest size increase and consistent gap between segments suggests this is a tested and safe configuration.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for similar storage grid configurations
rg -A 2 'grid:.*\d+,\d+,\d+,\d+' Resources/Prototypes/

Length of output: 56


Script:

#!/bin/bash
# Search for Storage components in belt-related files
fd belt.yml --exec grep -A 10 "type: Storage" {} \;

# Search for grid patterns with more flexible matching
rg -U "(?s)type: Storage.*?grid:" Resources/Prototypes/

# Search specifically in the Clothing directory
fd . Resources/Prototypes/Clothing --exec grep -A 10 "type: Storage" {} \;

Length of output: 71645


Script:

#!/bin/bash
# Search for belt storage configurations
fd belt -e yml --exec grep -B 2 -A 4 "grid:" {} \;

# Search for storage grid patterns in belt files
ast-grep --pattern 'type: Storage
    grid:
      - $$$'

Length of output: 2528

Resources/Prototypes/Entities/Clothing/OuterClothing/vests.yml (1)

94-97: Verify surgery system compatibility.

The addition of PermissibleForSurgery tag needs verification against the surgery system implementation.

✅ Verification successful

Tag implementation verified and working as intended.

The PermissibleForSurgery tag is correctly integrated into the surgery system in SharedSurgerySystem.Steps.cs, allowing surgery to be performed through tagged clothing items.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for PermissibleForSurgery tag usage in surgery system
ast-grep --pattern 'PermissibleForSurgery'

# Search for other items with surgery permission
rg -l 'PermissibleForSurgery' Resources/Prototypes/

Length of output: 548


Script:

#!/bin/bash
# Search for surgery-related systems and components
rg -l "surgery|Surgery" Content.Server/Medical/

# Look for tag checks in surgery-related code
ast-grep --pattern 'HasTag($_)'
ast-grep --pattern 'HasComp<TagComponent>'

# Find surgery-related YAML configurations
rg -l "surgery|Surgery" Resources/Prototypes/

Length of output: 251


Script:

#!/bin/bash
# Broader search for surgery-related code
rg -l "surgery|Surgery" Content.Server/
rg -l "surgery|Surgery" Content.Shared/

# Search for tag validation patterns in surgery context
rg -C 2 "PermissibleForSurgery" Content.Server/
rg -C 2 "PermissibleForSurgery" Content.Shared/

# Look for surgery-related systems
fd -e cs -e yml ".*Surgery.*"

Length of output: 10771

Resources/Prototypes/Entities/Objects/Specific/Robotics/mmi.yml (1)

44-46: LGTM! Verify Unborgable component.

The blacklist implementation for preventing unborgable brains in MMI is correct.

Let's verify the existence of the Unborgable component:

✅ Verification successful

Verification successful: Unborgable component exists and is properly implemented

The component is correctly defined and its purpose aligns perfectly with its usage in the MMI blacklist.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the Unborgable component exists and is properly defined
rg -l "UnborgableComponent" 

Length of output: 140


Script:

#!/bin/bash
# Check the component implementation
cat Content.Shared/_DV/Traits/Assorted/UnborgableComponent.cs

Length of output: 426

Resources/Prototypes/_Impstation/Entities/Clothing/Uniforms/jumpsuits.yml (1)

1-110: Verify sprite resources exist.

The implementation looks good, but let's verify the sprite resources exist.

✅ Verification successful

All sprite resources verified successfully

All referenced sprite files exist at the correct location under Resources/Textures/_Impstation/Clothing/Uniforms/Jumpsuit/.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify all referenced sprite files exist
fd -e rsi "_Impstation/Clothing/Uniforms/Jumpsuit/" 

Length of output: 51


Script:

#!/bin/bash
# First, let's find any .rsi files to understand the directory structure
fd -e rsi

# Then search for any files matching jumpsuit pattern case-insensitively
fd -i jumpsuit

Length of output: 73393

Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml (1)

28-29: LGTM! Inventory additions are properly structured.

The new clothing items are correctly added to the AutoDrobeInventory with appropriate quantities.

Also applies to: 111-114

Resources/Prototypes/_DV/Recipes/Lathes/clothing.yml (2)

65-72: LGTM! Material costs are well-balanced.

The poncho recipe is properly defined with appropriate material costs.


74-77: Verify impact of security clothing recipe removals.

While the new poncho recipes are good, the removal of security jumpsuit/jumpskirt recipes might affect gameplay.

✅ Verification successful

Security uniform availability is maintained despite recipe removals

While the lathe recipes for security jumpsuits are being removed, the uniforms remain readily available through:

  • SecDrobe vending machines (3 of each variant)
  • Security officer and warden loadout options
  • Additional variants (formal, senior) are also accessible
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check if removed security clothing items are available through other means
rg -l "ClothingUniformJumpsuit(Sec|Warden)(Blue|Grey)" 

Length of output: 1010


Script:

#!/bin/bash
# Check the specific security uniform recipes that were removed
rg "ClothingUniformJumpsuit(Sec|Warden)" Resources/Prototypes/_DV/Recipes/Lathes/clothing.yml -B 2 -A 2

# Check availability in vending machines
rg "ClothingUniformJumpsuit(Sec|Warden)" Resources/Prototypes/Catalog/VendingMachines/Inventories/secdrobe.yml

# Check security locker contents
rg "ClothingUniformJumpsuit(Sec|Warden)" Resources/Prototypes/Catalog/Fills/Lockers/security.yml

# Check security officer and warden loadouts
rg "ClothingUniformJumpsuit(Sec|Warden)" Resources/Prototypes/Loadouts/Jobs/Security/security_officer.yml Resources/Prototypes/Loadouts/Jobs/Security/warden.yml

Length of output: 2460

Resources/Prototypes/Catalog/Cargo/cargo_vending.yml (3)

46-46: LGTM!

Minor cost adjustment for AutoDrobe restock crate.


Line range hint 149-149: Verify the significant cost increase for ChemVend restock.

The cost has been increased by 65% (from 3820 to 6300). While this appears to be coordinated with rebase PR #53, please ensure this substantial increase is balanced with the medical gameplay economy.


Line range hint 365-365: Consider updating the Seeds restock price.

The comment indicates that the price needs to be higher due to more seeds, but no change has been made yet.

Resources/Prototypes/Recipes/Reactions/chemicals.yml (1)

365-365: Verify the balance impact of increased ChloralHydrate yield.

Tripling the yield of ChloralHydrate could significantly affect medical gameplay balance, especially in conjunction with the new anesthesia system. Please ensure this doesn't make anesthesia too easily accessible.

✅ Verification successful

Balance changes to ChloralHydrate appear well-considered

The increased yield is appropriately balanced by its anesthesia threshold (10 units) and toxic effects at higher doses (20+ units). The slower metabolism rate makes it more practical for its intended surgical use, aligning with the new anesthesia system.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for ChloralHydrate usage in medical/surgery systems
rg -A 5 "ChloralHydrate.*anesthesia|ChloralHydrate.*surgery"

# Check for any balance-related comments or configurations
ast-grep --pattern 'ChloralHydrate:
  $$$
  metabolismRate: $_'

Length of output: 128


Script:

#!/bin/bash
# Search for all ChloralHydrate references
rg -i "chloral.?hydrate" -A 5

# Find reagent definitions
fd "reagents" --type f --exec rg -l "Chloral"

# Look for medical/surgery related files that might use sedatives
fd . --type f --exec rg -l "sedative|anesthesia|unconscious"

Length of output: 18724

Resources/Prototypes/Entities/Mobs/Species/base.yml (1)

149-149: LGTM!

The Anesthesia status effect is appropriately added to the allowed effects list, maintaining consistency with other medical effects like pain and addiction systems.

Resources/Prototypes/Entities/Clothing/OuterClothing/misc.yml (1)

281-284: Verify the surgery permission system implementation.

The addition of the PermissibleForSurgery tag suggests a new system for handling clothing during surgery. The comment indicates tank harnesses are also permitted, but this needs verification.

✅ Verification successful

Surgery permission system implementation is correctly implemented

The PermissibleForSurgery tag is properly defined, documented, and consistently used across hospital gowns and tank harnesses. The surgery system correctly handles these items by checking for the tag during surgery operations.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for other items with PermissibleForSurgery tag
rg "PermissibleForSurgery"

# Check the surgery system's handling of this tag
ast-grep --pattern 'type: SharedSurgerySystem
  $$$
  PermissibleForSurgery
  $$$'

Length of output: 617

Resources/Prototypes/Reagents/narcotics.yml (1)

337-341: LGTM! Anesthesia effect properly integrated.

The addition of anesthesia effect to Nocturine aligns with the new surgery system requirements, while maintaining its existing forced sleep functionality.

Resources/Prototypes/Reagents/toxins.yml (1)

58-58: LGTM! Well-balanced anesthesia configuration.

The changes to ChloralHydrate are well thought out:

  • Slower metabolism rate (0.25) helps maintain anesthesia during surgery
  • Minimum threshold of 10 units provides control over activation
  • 4 second non-refreshing duration allows for monitoring

Also applies to: 73-82

Resources/Prototypes/Loadouts/loadout_groups.yml (1)

341-344: LGTM! Nice variety of new uniform options.

The new uniform additions provide good role customization options while maintaining thematic consistency for each job role.

Also applies to: 400-401, 417-418, 465-466, 706-707, 1348-1351, 1628-1629

Resources/Changelog/DeltaVChangelog.yml (1)

3752-3849: LGTM! Changelog entries match code changes.

Resources/Prototypes/_Impstation/Loadouts/Jobs/Wildcards/reporter.yml (1)

1-9: LGTM!

The loadout configurations are well-structured and consistent with other loadout files.

Resources/Prototypes/_Impstation/Loadouts/Jobs/Civilian/chaplain.yml (1)

1-9: LGTM!

The loadout configurations maintain consistency with the established pattern.

Resources/Prototypes/_Impstation/Loadouts/Jobs/Security/detective.yml (1)

1-19: LGTM!

The loadout configurations are well-structured and provide good variety with both Miami Vice and Detective suit variants.

Resources/Prototypes/Entities/Structures/Machines/lathe.yml (2)

Line range hint 1138-1352: Verify sprite assets.

The medical biofabricator references sprites in the _Shitmed directory. Ensure these assets are properly included in the PR.


Line range hint 1138-1352: Verify recipe dependencies.

Some of the new recipes might require additional materials or components. Ensure that all dependencies are properly defined and available.

✅ Verification successful

All recipe dependencies are properly configured.

The new recipes use standard materials (Steel, Glass, Plastic, Cloth, Durathread) that are already established in existing medical lathe recipes, with quantities within normal ranges for similar items. No additional material dependencies need to be defined.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for recipe dependencies in material definitions
rg -A 5 "TankHarness|ClothingNeckCWPSec|ClothingNeckCWPArctic" Resources/Prototypes/

Length of output: 27849


Script:

#!/bin/bash
# Search for LauncherSyringe and MiniSyringe recipe definitions
rg -A 5 "id: (LauncherSyringe|MiniSyringe)$" Resources/Prototypes/

# Check material definitions in lathe
rg -B 5 "materials:" Resources/Prototypes/Entities/Structures/Machines/lathe.yml

Length of output: 2117


Script:

#!/bin/bash
# Check materials used in medical lathe recipes
rg -A 3 "materials:" Resources/Prototypes/_DV/Recipes/Lathes/medical.yml Resources/Prototypes/Recipes/Lathes/medical.yml

# Check if the lathe has material whitelist/blacklist
rg "materialWhitelist|materialBlacklist" Resources/Prototypes/Entities/Structures/Machines/lathe.yml

Length of output: 5818

Comment on lines +29 to +32
{
// technically this will apply for any organ not just brain, but assume nobody will be evil and do that
return _body.GetBodyOrganEntityComps<UnborgableComponent>(ent).Count > 0;
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Security concern: Validate organ type in IsUnborgable.

The comment "technically this will apply for any organ not just brain" indicates a potential security issue. The method should explicitly check for brain organs to prevent misuse.

 public bool IsUnborgable(Entity<BodyComponent?> ent)
 {
-    // technically this will apply for any organ not just brain, but assume nobody will be evil and do that
-    return _body.GetBodyOrganEntityComps<UnborgableComponent>(ent).Count > 0;
+    var brainOrgans = _body.GetBodyOrganEntityComps<BrainComponent>(ent);
+    return brainOrgans.Any(brain => HasComp<UnborgableComponent>(brain));
 }

Committable suggestion skipped: line range outside the PR's diff.

Comment on lines +286 to +288
if (_tagSystem.HasTag(containerSlot.ContainedEntity.Value, "PermissibleForSurgery")) // DeltaV: allow some clothing items to be operated through
continue;

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Consider adding validation for the contained entity.

The code assumes the contained entity is valid. Consider adding explicit validation.

         if (!containerSlot.ContainedEntity.HasValue)
             continue;

+                var containedEntity = containerSlot.ContainedEntity.Value;
+                if (!_entityManager.IsAlive(containedEntity))
+                    continue;
+
-                if (_tagSystem.HasTag(containerSlot.ContainedEntity.Value, "PermissibleForSurgery"))
+                if (_tagSystem.HasTag(containedEntity, PermissibleForSurgeryTag))
                     continue;
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
if (_tagSystem.HasTag(containerSlot.ContainedEntity.Value, "PermissibleForSurgery")) // DeltaV: allow some clothing items to be operated through
continue;
if (!containerSlot.ContainedEntity.HasValue)
continue;
var containedEntity = containerSlot.ContainedEntity.Value;
if (!_entityManager.IsAlive(containedEntity))
continue;
if (_tagSystem.HasTag(containedEntity, PermissibleForSurgeryTag))
continue;

Comment on lines +25 to +32

- type: latheRecipe
id: TankHarness
result: ClothingOuterVestTank
completetime: 2
materials:
Plastic: 300
Steel: 100
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codebase verification

⚠️ Removal of items requires coordinated changes across multiple systems

The removed items have active dependencies that need to be addressed:

  • AACTablet: Has active system implementation in Content.Server/_DV/AACTablet/ and UI components
  • LauncherSyringe: Referenced in weapons (pneumatic cannon) and multiple maps
  • MiniSyringe: Referenced in chemistry systems and maps

Please ensure these removals are part of a coordinated change that includes updates to all dependent systems and maps.

🔗 Analysis chain

Verify impact of removed medical items.

While the addition of TankHarness looks good, the removal of AACTablet, LauncherSyringe, and MiniSyringe could impact existing medical gameplay. Please ensure:

  1. These items are no longer referenced in other systems
  2. Their removal aligns with the new medical mechanics
  3. Any dependent crafting recipes or medical procedures have been updated
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for references to removed items
echo "Searching for references to removed items..."
for item in "AACTablet" "LauncherSyringe" "MiniSyringe"; do
  echo "References to $item:"
  rg -l "$item"
done

Length of output: 1695


Script:

#!/bin/bash
# Check recent changes to medical systems and related files
echo "Checking for related changes in medical systems..."
git log -n 1 --name-only --pretty=format:"" | grep -iE "medical|syringe|tablet|chemistry"

echo -e "\nChecking for potential replacement systems..."
rg -l "(?i)(medical|syringe|tablet).*system" Content.Server/

Length of output: 769

Comment on lines +8 to +9
- type: Transform
anchored: false
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Fix unanchored transform.

The Transform component is set to anchored: false, which could lead to unintended movement of the spawner. Consider anchoring it to prevent displacement.

  - type: Transform
-   anchored: false
+   anchored: true
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- type: Transform
anchored: false
- type: Transform
anchored: true

Comment on lines +34 to +40
- type: trait
id: Depression
name: trait-depression-name
description: trait-depression-desc
traitGear: PillCanisterNeurozenium
category: Disabilities
components: []
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codebase verification

⚠️ Potential issue

Depression trait needs components for behavior implementation

All other traits with traitGear in the codebase have specific components that implement their behavior:

  • InPain trait has Pain component
  • Scottish Accent has ScottishAccent component
  • Vision-related traits have PermanentBlindness component

The empty components list for Depression trait is inconsistent with this pattern and may prevent the trait from functioning properly.

🔗 Analysis chain

Depression trait needs components definition.

The Depression trait has traitGear defined but no components. This might cause issues if the trait behavior is expected to be handled by components.

Let's verify if other traits with traitGear have components defined:

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for traits with traitGear to verify component patterns
rg "traitGear:" -A 5 "Resources/Prototypes" | grep -E "traitGear:|components:"

Length of output: 895


Script:

#!/bin/bash
# Get full context for traits with traitGear
rg "traitGear:" -B 2 -A 7 "Resources/Prototypes"

Length of output: 3218

Comment on lines +25 to +32

- type: trait
id: Unborgable
name: trait-unborgable-name
description: trait-unborgable-desc
category: Disabilities
components:
- type: Unborgable # Automatically gets moved to the brain
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codebase verification

Update required across multiple systems for InPain removal

The removal of the InPain trait requires coordinated updates in several core systems:

  • Pain System (SharedPainSystem.cs, InPain.cs)
  • Status Effects System (status_effects.yml)
  • Reagent Effect System (EntityEffect implementation)

Please ensure these systems are either updated or removed to maintain consistency.

🔗 Analysis chain

Verify impact of removing InPain trait.

The removal of the InPain trait and addition of Unborgable trait represents a significant gameplay change. Ensure all systems previously depending on InPain trait are updated.

Let's check for any remaining references to the removed traits:

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for references to removed traits
echo "Checking for InPain references..."
rg "InPain" -l

echo "Checking for Uncloneable references..."
rg "Uncloneable" -l

echo "Checking for Addicted references..."
rg "Addicted" -l

Length of output: 1294


Script:

#!/bin/bash
# Check implementation details of pain system
echo "=== SharedPainSystem.cs ==="
rg "InPain" -C 5 Content.Shared/_DV/Pain/SharedPainSystem.cs

echo -e "\n=== status_effects.yml ==="
rg "InPain" -C 5 Resources/Prototypes/_DV/status_effects.yml

echo -e "\n=== InPain.cs ==="
cat Content.Server/_DV/EntityEffects/Effects/InPain.cs

Length of output: 1887


Script:

#!/bin/bash
# Check reagent files for InPain references
echo "=== Checking reagent files for InPain effect usage ==="
rg "InPain" Resources/Prototypes/Reagents/ -C 5

echo -e "\n=== Checking DV-specific reagent files ==="
rg "InPain" Resources/Prototypes/_DV/Reagents/ -C 5

Length of output: 319

Comment on lines +1 to +110
sprite: _Impstation/Clothing/Uniforms/Jumpskirt/hitmansuit.rsi

- type: entity
parent: [ClothingUniformBase]
id: ClothingUniformFuneralSuitSkirt
name: funeral suitskirt
description: For when no color is allowed and all must be mourned.
components:
- type: Sprite
sprite: _Impstation/Clothing/Uniforms/Jumpskirt/funeralsuit.rsi
- type: Clothing
sprite: _Impstation/Clothing/Uniforms/Jumpskirt/funeralsuit.rsi

- type: entity
parent: [ClothingUniformBase]
id: ClothingUniformNightclubSuitSkirt
name: nightclub suitskirt
description: ID please?
components:
- type: Sprite
sprite: _Impstation/Clothing/Uniforms/Jumpskirt/nightclubsuit.rsi
- type: Clothing
sprite: _Impstation/Clothing/Uniforms/Jumpskirt/nightclubsuit.rsi

- type: entity
parent: [ClothingUniformBase]
id: ClothingUniformMrSpaceWideSkirt
name: mr space wide suitskirt
description: The unspoken attire for any hotel, motel, or branded inn activities.
components:
- type: Sprite
sprite: _Impstation/Clothing/Uniforms/Jumpskirt/mrspacewide.rsi
- type: Clothing
sprite: _Impstation/Clothing/Uniforms/Jumpskirt/mrspacewide.rsi

- type: entity
parent: [ClothingUniformBase]
id: ClothingUniformBrownSuitSkirt
name: brown suitskirt
description: Not even the worst coffee spills will show up on this puppy, guaranteed.
components:
- type: Sprite
sprite: _Impstation/Clothing/Uniforms/Jumpskirt/brownsuit.rsi
- type: Clothing
sprite: _Impstation/Clothing/Uniforms/Jumpskirt/brownsuit.rsi

- type: entity
parent: [ClothingUniformBase]
id: ClothingUniformCreamSuitSkirt
name: cream suitskirt
description: A suit fit for a humble, small town gentleman with something to say.
components:
- type: Sprite
sprite: _Impstation/Clothing/Uniforms/Jumpskirt/creamsuit.rsi
- type: Clothing
sprite: _Impstation/Clothing/Uniforms/Jumpskirt/creamsuit.rsi

- type: entity
parent: [ClothingUniformBase]
id: ClothingUniformDetectiveSuitSkirt
name: detective suitskirt
description: Now excuse me, if I may just have a moment of your time...
components:
- type: Sprite
sprite: _Impstation/Clothing/Uniforms/Jumpskirt/detectivesuit.rsi
- type: Clothing
sprite: _Impstation/Clothing/Uniforms/Jumpskirt/detectivesuit.rsi

- type: entity
parent: [ClothingUniformBase]
id: ClothingUniformMiamiViceSkirt
name: miami vice suitskirt
description: When you need to arrest the clown at twelve o'clock and boogie board at one.
components:
- type: Sprite
sprite: _Impstation/Clothing/Uniforms/Jumpskirt/miamivice.rsi
- type: Clothing
sprite: _Impstation/Clothing/Uniforms/Jumpskirt/miamivice.rsi

- type: entity
parent: [ClothingUniformBase]
id: ClothingUniformSeniorBartenderSkirt
name: senior bartender suitskirt
description: But you are the bartender, you've always been the bartender.
components:
- type: Sprite
sprite: _Impstation/Clothing/Uniforms/Jumpskirt/senior_bartender.rsi
- type: Clothing
sprite: _Impstation/Clothing/Uniforms/Jumpskirt/senior_bartender.rsi

- type: entity
parent: [ClothingUniformBase]
id: ClothingUniformBrosBlazerSkirt
name: BROS blazer and jeans skirt
description: BROS... Two!
components:
- type: Sprite
sprite: _Impstation/Clothing/Uniforms/Jumpskirt/brosblazer.rsi
- type: Clothing
sprite: _Impstation/Clothing/Uniforms/Jumpskirt/brosblazer.rsi
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codebase verification

Sprite paths need to be updated with correct prefix

All sprite files exist but the paths in the YAML need to be prefixed with Resources/Textures/. Please update all sprite paths to match the actual file locations.

Example correction:

  - type: Sprite
    sprite: Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/hitmansuit.rsi
  - type: Clothing
    sprite: Resources/Textures/_Impstation/Clothing/Uniforms/Jumpskirt/hitmansuit.rsi
🔗 Analysis chain

LGTM! Verify skirt variant sprites.

The skirt variants are properly implemented, mirroring the jumpsuit versions.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify all referenced skirt variant sprite files exist
fd -e rsi "_Impstation/Clothing/Uniforms/Jumpskirt/"

Length of output: 52


Script:

#!/bin/bash
# Check if _Impstation directory exists and look for any .rsi files
fd -e rsi -p "_Impstation/"

# Search for specific sprite names
fd "hitmansuit.rsi|funeralsuit.rsi|nightclubsuit.rsi|mrspacewide.rsi|brownsuit.rsi|creamsuit.rsi|detectivesuit.rsi|miamivice.rsi|senior_bartender.rsi|brosblazer.rsi"

Length of output: 3219

@GeneralGaws GeneralGaws merged commit 9be051d into master Jan 12, 2025
19 of 21 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.