Skip to content

Conversation

@Creatorbot01
Copy link
Collaborator

@Creatorbot01 Creatorbot01 commented Oct 22, 2025

Description

Dnr still havent fix it yet. My gotdamn dorm decided to do fire drill while making this pr
no longer applied i fix it.


Changelog

🆑

  • add: Added knuckle duster. now punch with style
  • fix: ntpd locker sprite.
  • remove: Removed fun :(
@Creatorbot01
Copy link
Collaborator Author

Do not merge DNR this shit

@Creatorbot01
Copy link
Collaborator Author

And i on phone in the middle of field while writing this pr guh

@coderabbitai
Copy link

coderabbitai bot commented Oct 22, 2025

📝 Walkthrough

Walkthrough

Adds knuckle duster weapons and variants (standard, brass, syndicate, quartermaster, bone crushers): new entity prototypes, sprite metadata, a construction recipe/graph for brass knuckles, an uplink catalog entry, loadout additions/enabled gloves group, and two localization entries.

Changes

Cohort / File(s) Summary
Localization
Resources/Locale/en-US/store/uplink-catalog.ftl
Added two locale keys: uplink-gloves-knuckleduster-name and uplink-gloves-knuckleduster-desc.
Entity Definitions (gloves)
Resources/Prototypes/_Goobstation/Entities/Clothing/Hands/gloves.yml
Added ClothingHandsKnuckleDustersBase (abstract) and multiple concrete variants: ClothingHandsKnuckleDusters, ClothingHandsKnuckleDustersBrass, ClothingHandsKnuckleDustersSyndicate, ClothingHandsKnuckleDustersQM, ClothingHandsKnuckleBoneCrushers with components (Sprite, Clothing, MeleeWeapon, tags, pricing/composition on QM variant).
Construction recipes & graph
Resources/Prototypes/Recipes/Construction/weapons.yml,
Resources/Prototypes/Recipes/Construction/Graphs/weapons/brass_knuckles.yml
Added construction catalog entry for brass knuckles and a graph (BrassKnuckles) requiring Brass x6 with a doAfter 10 step mapping to ClothingHandsKnuckleDustersBrass.
Uplink catalog
Resources/Prototypes/_Goobstation/Catalog/uplink_catalog.yml
Added UplinkGlovesKnuckleDusters listing under UplinkWeaponry referencing ClothingHandsKnuckleDustersSyndicate and using localization keys; cost: Telecrystal 20.
Loadouts / Item groups
Resources/Prototypes/CharacterItemGroups/Jobs/Logistics/logisticsOfficer.yml,
Resources/Prototypes/Loadouts/Jobs/Logistics/logisticsOfficer.yml
Re-enabled LoadoutLogisticsOfficerGloves group and added glove loadouts LoadoutCommandQMBlackGlove and LoadoutCommandQMKnuckleDuster; updated logistics officer loadouts (added gloves entries, removed several head/id/neck/outer/uniform entries as indicated).
Texture assets (gloves)
Resources/Textures/_Goobstation/Clothing/Hands/Gloves/knuckleduster.rsi/meta.json
Added sprite metadata and states: knuckleduster, goldenknuckleduster, brassknuckleduster, syndicateknuckleduster, and equipped-HAND frames.
Closet sprite states
Resources/Textures/Structures/Storage/closet.rsi/meta.json
Inserted three NTPD-related sprite states: NTPD, NTPD_door, NTPD_open.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  participant Player
  participant ConstructionUI as Construction UI
  participant RecipeSystem as Recipe System
  participant World as World / Spawner

  Note over Player,ConstructionUI: Crafting brass knuckles
  Player->>ConstructionUI: Select "Brass knuckle dusters"
  ConstructionUI->>RecipeSystem: Start graph "ClothingHandsKnuckleDustersBrass"
  RecipeSystem->>RecipeSystem: Verify materials (Brass x6)
  RecipeSystem-->>Player: Begin doAfter(10s)
  RecipeSystem->>World: Spawn entity `ClothingHandsKnuckleDustersBrass` at targetNode
  World-->>Player: Item created (brass knuckles)
Loading
sequenceDiagram
  autonumber
  participant Player
  participant Uplink as Uplink Store
  participant Inventory

  Note over Player,Uplink: Purchasing Syndicate Knuckle Dusters via uplink
  Player->>Uplink: Purchase `UplinkGlovesKnuckleDusters` (Telecrystal 20)
  Uplink->>Inventory: Grant `ClothingHandsKnuckleDustersSyndicate`
  Inventory-->>Player: Item in inventory
Loading
sequenceDiagram
  autonumber
  participant Player
  participant LoadoutUI as Loadout System
  participant ItemGroups

  Note over Player,LoadoutUI: Loadout selection includes new gloves
  Player->>LoadoutUI: Open logistics officer loadouts
  LoadoutUI->>ItemGroups: Query `LoadoutLogisticsOfficerGloves`
  ItemGroups-->>LoadoutUI: Options include `LoadoutCommandQMBlackGlove`, `LoadoutCommandQMKnuckleDuster`
  LoadoutUI-->>Player: Present glove options
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

  • Rationale: Multiple heterogeneous additions (entity prototypes with component configurations, construction graphs, loadouts, texture metadata, catalog and localization) require cross-file consistency checks.
  • Areas to focus review on:
    • Resources/Prototypes/_Goobstation/Entities/Clothing/Hands/gloves.yml — component correctness, damage/stamina values, parent/tag assignments.
    • Construction graph and recipe (weapons.yml and brass_knuckles.yml) — node mapping and material requirements.
    • Uplink catalog localization keys matching Resources/Locale/en-US/store/uplink-catalog.ftl.
    • Loadout entries and referenced item group names for correctness.
    • Sprite state names in knuckleduster.rsi/meta.json matching entity Sprite states.

Suggested reviewers

  • Guloveos

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Title Check ✅ Passed The pull request title "port Knuckle duster and fixing ntpd locker sprite" directly aligns with the changeset. The vast majority of changes involve adding knuckle duster functionality across multiple files (locale entries, entity definitions, construction recipes, loadouts, uplink catalog, and textures), while a secondary change adds NTPD locker sprite states. The title clearly identifies both the primary objective (porting knuckle dusters) and the secondary fix (NTPD locker sprite), making it specific and understandable to someone reviewing the project history.
Description Check ✅ Passed The pull request description is related to the changeset through its changelog entries. The changelog explicitly references "Added knuckle duster" and "ntpd locker sprite" fixes, which directly correspond to the actual changes in the repository. While the description includes informal personal context about the author's circumstances, this does not detract from the core changelog which accurately reflects the modifications being introduced in this pull request.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

📜 Recent review details

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 18d4070 and 99d5ed0.

📒 Files selected for processing (1)
  • Resources/Locale/en-US/store/uplink-catalog.ftl (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
  • GitHub Check: build (ubuntu-latest)
  • GitHub Check: Test Packaging
  • GitHub Check: YAML Linter
  • GitHub Check: build (ubuntu-latest)
🔇 Additional comments (1)
Resources/Locale/en-US/store/uplink-catalog.ftl (1)

8-10: LGTM! Previous typo has been corrected.

The localization entries for the Syndicate Knuckle Dusters are well-formed and follow the file's conventions. The possessive apostrophe in "Captain's jaw" has been properly added, resolving the issue flagged in the previous review.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

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: 3

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 359b11d and e4a4e70.

⛔ Files ignored due to path filters (12)
  • Resources/Textures/_Arcadis/Structure/locker.rsi/NTPD.png is excluded by !**/*.png
  • Resources/Textures/_Arcadis/Structure/locker.rsi/NTPD_door.png is excluded by !**/*.png
  • Resources/Textures/_Arcadis/Structure/locker.rsi/NTPD_open.png is excluded by !**/*.png
  • Resources/Textures/_Arcadis/Structure/locker.rsi/generic.png is excluded by !**/*.png
  • Resources/Textures/_Arcadis/Structure/locker.rsi/generic_door.png is excluded by !**/*.png
  • Resources/Textures/_Arcadis/Structure/locker.rsi/generic_open.png is excluded by !**/*.png
  • Resources/Textures/_Arcadis/Structure/locker.rsi/welded.png is excluded by !**/*.png
  • Resources/Textures/_Goobstation/Clothing/Hands/Gloves/knuckleduster.rsi/brassknuckleduster.png is excluded by !**/*.png
  • Resources/Textures/_Goobstation/Clothing/Hands/Gloves/knuckleduster.rsi/equipped-HAND.png is excluded by !**/*.png
  • Resources/Textures/_Goobstation/Clothing/Hands/Gloves/knuckleduster.rsi/goldenknuckleduster.png is excluded by !**/*.png
  • Resources/Textures/_Goobstation/Clothing/Hands/Gloves/knuckleduster.rsi/knuckleduster.png is excluded by !**/*.png
  • Resources/Textures/_Goobstation/Clothing/Hands/Gloves/knuckleduster.rsi/syndicateknuckleduster.png is excluded by !**/*.png
📒 Files selected for processing (10)
  • Resources/Locale/en-US/store/uplink-catalog.ftl (1 hunks)
  • Resources/Prototypes/CharacterItemGroups/Jobs/Logistics/logisticsOfficer.yml (1 hunks)
  • Resources/Prototypes/Loadouts/Jobs/Logistics/logisticsOfficer.yml (1 hunks)
  • Resources/Prototypes/Recipes/Construction/Graphs/weapons/brass_knuckles.yml (1 hunks)
  • Resources/Prototypes/Recipes/Construction/weapons.yml (1 hunks)
  • Resources/Prototypes/_Arc/Structures/Misc/lockers.yml (1 hunks)
  • Resources/Prototypes/_Goobstation/Catalog/uplink_catalog.yml (1 hunks)
  • Resources/Prototypes/_Goobstation/Entities/Clothing/Hands/gloves.yml (1 hunks)
  • Resources/Textures/_Arcadis/Structure/locker.rsi/meta.json (1 hunks)
  • Resources/Textures/_Goobstation/Clothing/Hands/Gloves/knuckleduster.rsi/meta.json (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (5)
  • GitHub Check: Test Packaging
  • GitHub Check: build (ubuntu-latest)
  • GitHub Check: YAML Linter
  • GitHub Check: YAML map schema validator
  • GitHub Check: build (ubuntu-latest)
🔇 Additional comments (12)
Resources/Prototypes/Loadouts/Jobs/Logistics/logisticsOfficer.yml (2)

13-37: AI summary inconsistency detected.

The AI summary claims multiple loadout entries were removed (LoadoutCommandQMHeadSoft, LoadoutLogisticsOfficerNTPDA, LoadoutCommandQMNeckCloak, LoadoutQMWinterCoat, and uniform entries), but the provided code shows these entries still exist in lines 39-144. Only the Gloves section (lines 13-37) was added/modified based on the ~ markers.


13-37: Entity ClothingHandsKnuckleDustersQM is defined and the loadout entries are properly structured.

The entity ClothingHandsKnuckleDustersQM is confirmed to exist in Resources/Prototypes/_Goobstation/Entities/Clothing/Hands/gloves.yml. The loadout configuration is correct and both glove loadout entries reference valid entities.

Resources/Textures/_Arcadis/Structure/locker.rsi/meta.json (1)

1-32: LGTM!

The RSI metadata is properly structured with appropriate states for the NTPD locker variants. The license and copyright information are correctly specified.

Resources/Prototypes/CharacterItemGroups/Jobs/Logistics/logisticsOfficer.yml (1)

27-34: LGTM!

The character item group properly references the loadout entries added in Resources/Prototypes/Loadouts/Jobs/Logistics/logisticsOfficer.yml. The structure is correct with appropriate max items limit.

Resources/Prototypes/_Arc/Structures/Misc/lockers.yml (1)

10-28: LGTM! NTPD locker sprite fix implemented correctly.

The sprite configuration properly references the new _Arcadis/Structure/locker.rsi asset added in this PR. The layer structure follows the standard locker pattern, and the NTPD-specific states (lines 30-32) correctly reference the states defined in the texture metadata.

Resources/Prototypes/Recipes/Construction/Graphs/weapons/brass_knuckles.yml (1)

1-13: Code changes approved.

All verification checks passed. The entity ClothingHandsKnuckleDustersBrass is properly defined in gloves.yml, and the construction recipe in weapons.yml correctly references this graph. The construction graph structure is valid.

Resources/Prototypes/_Goobstation/Catalog/uplink_catalog.yml (1)

161-170: All references verified — no issues found.

Entity ClothingHandsKnuckleDustersSyndicate is properly defined in the entities file, sprite file exists at the specified path, and sprite state syndicateknuckleduster is confirmed in the RSI metadata. All catalog entry references are valid.

Resources/Prototypes/_Goobstation/Entities/Clothing/Hands/gloves.yml (4)

1-31: Base entity structure is solid.

The abstract base entity correctly defines the common melee weapon configuration with reasonable defaults: attackRate 1.5, 12 blunt damage, punch sounds/animation, and proper clothing slots. The component hierarchy is well-structured.


38-48: No issues found—construction graph is properly configured.

The referenced construction graph file exists and is correctly configured. The ClothingHandsKnuckleDustersBrass ID matches the entity reference, the material requirements (6 Brass) are defined, and the entity mapping is accurate. The "Craftable Version" comment is legitimate and fully supported by the construction graph implementation.


1-101: Rewritten review comment:

Clarify PR merge status before proceeding.

The sprite assets and construction graph dependencies referenced in this file are present and correctly configured:

  • ✓ All sprite states exist: knuckleduster, brassknuckleduster, syndicateknuckleduster, goldenknuckleduster
  • ✓ Construction graph file exists: Resources/Prototypes/Recipes/Construction/Graphs/weapons/brass_knuckles.yml

However, the PR status requires confirmation. If the developer marked this PR as "do not merge," this should be explicitly resolved and the status updated before this can be merged.


87-101: Clarify attack speed and DPS calculations—review contains mathematical errors.

The damage ratio comparison is accurate (50 is ~4.17× base and 3.125× syndicate), and the tag override appears intentional. However, the review contains two mathematical errors:

  1. Attack speed multiplier: attackRate is 2 versus base 1.5, which is 1.33× faster (33% increase), not double. Double attack speed would be 3.0.
  2. DPS calculation: 50 damage × 2 attackRate = 100 DPS maximum, not 200 DPS.

The underlying balance concern is reasonable to verify given the high relative damage, but the specific quantitative claims require correction. Review the actual DPS impact (100 DPS versus syndicate's 24 DPS) against centcomm equipment tier expectations.

Likely an incorrect or invalid review comment.

Resources/Prototypes/Recipes/Construction/weapons.yml (1)

177-186: All dependencies verified—construction recipe is complete and correct.

The construction recipe references a properly defined entity, construction graph, and sprite asset. No issues found.

Creatorbot01 and others added 2 commits October 22, 2025 22:13
Added locked state
Phone webedit pt2
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: 1

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e4a4e70 and fa38a4c.

⛔ Files ignored due to path filters (1)
  • Resources/Textures/_Arcadis/Structure/locker.rsi/locked.png is excluded by !**/*.png
📒 Files selected for processing (1)
  • Resources/Textures/_Arcadis/Structure/locker.rsi/meta.json (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (5)
  • GitHub Check: YAML map schema validator
  • GitHub Check: build (ubuntu-latest)
  • GitHub Check: build (ubuntu-latest)
  • GitHub Check: YAML Linter
  • GitHub Check: Test Packaging
@Creatorbot01
Copy link
Collaborator Author

done you can merge this now

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: 1

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between fa38a4c and 18d4070.

📒 Files selected for processing (1)
  • Resources/Textures/Structures/Storage/closet.rsi/meta.json (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
  • GitHub Check: YAML Linter
  • GitHub Check: build (ubuntu-latest)
  • GitHub Check: build (ubuntu-latest)
  • GitHub Check: Test Packaging
Copy link
Member

@TheDoctor1977 TheDoctor1977 left a comment

Choose a reason for hiding this comment

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

seconding the bot’s reviews. most of those will actually cause problems if unresolved

@TheDoctor1977 TheDoctor1977 added the Status: Awaiting Changes This PR needs its reviews addressed or changes to be made in order to be merged. label Oct 22, 2025
@Creatorbot01
Copy link
Collaborator Author

seconding the bot’s reviews. most of those will actually cause problems if unresolved

Eh consistency be damn you can blame gulo for the consistency issue when he put the name of the file.
Beside this not gonna break it.

@Creatorbot01
Copy link
Collaborator Author

Because the file it self is capital letter so it not going to break or anything

- type: entity
parent: [ClothingHandsKnuckleDustersBase, BaseCommandContraband]
id: ClothingHandsKnuckleDustersQM
#suffix: DO NOT MAP - Arcadis turn em into normal command item
Copy link
Member

Choose a reason for hiding this comment

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

this should just be done as part of this PR. remove from the loadout and add to the LO’s locker fill

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

what wrong letting it be in loadout. beside qm got the dollar thing as steal objective so should be fine.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

beside the knuckleduster arent steal objective. it just optional qm glove.

@Creatorbot01
Copy link
Collaborator Author

also fuck code rabbit i prob should try and fix the other test fail so that stupid ass rabbit wouldnt be rellied upon.

Copy link
Member

@TheDoctor1977 TheDoctor1977 left a comment

Choose a reason for hiding this comment

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

content approval
@eris-webserv review for code approval when you have the time

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Changes: Localization Changes: Sprite Changes: YML Status: Awaiting Changes This PR needs its reviews addressed or changes to be made in order to be merged.

2 participants