New roles - #51
Conversation
# Conflicts: # Resources/Locale/en-US/_Starlight/job/job-desc.ftl # Resources/Prototypes/Catalog/Fills/Crates/fun.yml # Resources/Prototypes/Entities/Structures/Machines/Computers/arcades.yml # Resources/Prototypes/_StarLight/Entities/Clothing/Uniforms/jumpsuits.yml # Resources/Prototypes/_StarLight/Entities/Markers/Spawners/jobs.yml # Resources/Prototypes/_StarLight/Entities/Objects/Devices/pda.yml # Resources/Prototypes/_StarLight/Entities/Objects/Misc/identification_cards.yml # Resources/Prototypes/_StarLight/Loadouts/role_loadouts.yml # Resources/Prototypes/_StarLight/Roles/play_time_trackers.yml # Resources/Prototypes/_StarLight/Roles/salaries.yml # Resources/Textures/Interface/Misc/job_icons.rsi/meta.json
# Conflicts: # Resources/Locale/en-US/_Starlight/preferences/loadout-groups.ftl # Resources/Prototypes/Access/command.yml # Resources/Prototypes/Access/misc.yml # Resources/Prototypes/Entities/Objects/Tools/access_configurator.yml # Resources/Prototypes/_StarLight/Entities/Clothing/Eyes/glasses.yml # Resources/Prototypes/_StarLight/Loadouts/loadout_groups.yml
# Conflicts: # Resources/Prototypes/_StarLight/Entities/Clothing/Eyes/glasses.yml # Resources/Prototypes/_StarLight/Entities/Clothing/Uniforms/jumpsuits.yml # Resources/Prototypes/_StarLight/Entities/Objects/Misc/identification_cards.yml # Resources/Prototypes/_StarLight/Roles/play_time_trackers.yml
# Conflicts: # Resources/Prototypes/_StarLight/Catalog/Fills/Items/belt.yml # Resources/Prototypes/_StarLight/Entities/Clothing/Back/backpacks.yml # Resources/Prototypes/_StarLight/Entities/Clothing/Back/duffel.yml
# Conflicts: # Resources/Prototypes/_StarLight/Catalog/Fills/Paper/documents.yml
# Conflicts: # Resources/Prototypes/_StarLight/Entities/Structures/Storage/Closets/Lockers/lockers.yml
# Conflicts: # Resources/Prototypes/_StarLight/Catalog/Fills/Lockers/representatives.yml
# Conflicts: # Resources/Textures/Structures/floor_web.rsi/meta.json # Resources/Textures/_Starlight/Clothing/Neck/Cloaks/bso_formal.rsi/equipped-NECK-cyclorite.png # Resources/Textures/_Starlight/Clothing/Neck/Cloaks/bso_formal.rsi/equipped-NECK-resomi.png # Resources/Textures/_Starlight/Clothing/Neck/Cloaks/bso_formal.rsi/equipped-NECK-vox.png # Resources/Textures/_Starlight/Clothing/Neck/Cloaks/bso_formal.rsi/equipped-NECK-vulpakin.png # Resources/Textures/_Starlight/Clothing/Neck/Cloaks/bso_formal.rsi/equipped-NECK.png
# Conflicts: # Resources/Prototypes/_StarLight/Loadouts/loadout_groups.yml # Resources/Prototypes/_StarLight/Loadouts/role_loadouts.yml
# Conflicts: # Resources/Textures/_Starlight/Clothing/OuterClothing/Coats/blueshield_coat.rsi/equipped-OUTERCLOTHING-cyclorite.png # Resources/Textures/_Starlight/Clothing/OuterClothing/Coats/blueshield_coat.rsi/equipped-OUTERCLOTHING-felionoid.png # Resources/Textures/_Starlight/Clothing/OuterClothing/Coats/blueshield_coat.rsi/equipped-OUTERCLOTHING-resomi.png # Resources/Textures/_Starlight/Clothing/OuterClothing/Coats/blueshield_coat.rsi/equipped-OUTERCLOTHING-vox.png # Resources/Textures/_Starlight/Clothing/OuterClothing/Coats/blueshield_coat.rsi/equipped-OUTERCLOTHING-vulpakin.png # Resources/Textures/_Starlight/Clothing/OuterClothing/Coats/blueshield_coat.rsi/equipped-OUTERCLOTHING.png
…eshield_coat.rsi directory # Conflicts: # Resources/Textures/Clothing/OuterClothing/Vests/pressvest.rsi/meta.json
Главное изменение
Prediction / networking
Resources / localization
Validation / risk
Рекомендации (для автора/мейнтейнеров)
WalkthroughДобавлены компоненты Changes
Sequence DiagramsequenceDiagram
participant Player as Игрок
participant System as GavelSystem
participant Hammer as GavelHammerComponent
participant Block as GavelBlockComponent
participant Entity as TargetEntity
Player->>System: AfterInteractEvent (удар)
System->>System: Проверка: args.Handled / reachable / target exists
System->>Block: Есть ли GavelBlockComponent на цели?
alt Нет блока
System-->>Player: Игнор
else Есть блок
System->>Block: Проверка PrevSound / Cooldown
alt Кулдаун прошёл
System->>System: Воспроизвести HitSound (если указан)
System->>Block: Counter++
System->>System: Counter > MaxCounter?
alt Счётчик превышен
System->>Entity: Получить метаданные и показать popup (gavel-broken)
System->>Entity: Обновить DisplayName (префикс gavel-broken-entityname-prefix)
System->>Block: Удалить GavelBlockComponent
System->>Hammer: Удалить GavelHammerComponent
end
else
System-->>Player: Только обновлён PrevSound (без звука/счётчика)
end
end
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Suggested reviewers
🚥 Pre-merge checks | ✅ 2 | ❌ 2❌ Failed checks (2 inconclusive)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
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. Review rate limit: 0/1 reviews remaining, refill in 60 minutes.Comment |
There was a problem hiding this comment.
Actionable comments posted: 118
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (4)
Resources/Prototypes/_StarLight/Entities/Objects/Weapons/Melee/cane_nt.yml (1)
1-72:⚠️ Potential issue | 🟡 MinorФайл целиком закомментирован — мёртвый код.
Прототип
CaneNTне существует в рантайме и не используется. Загрузка NanoTrasenRepresentative ссылается наOffsetCaneNT(изoffset_cane.yml), который работает корректно. Удалите файл перед мерджем, чтобы не тащить неиспользуемый код.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@Resources/Prototypes/_StarLight/Entities/Objects/Weapons/Melee/cane_nt.yml` around lines 1 - 72, This file contains a fully commented-out unused prototype (CaneNT) and should be removed; delete Resources/Prototypes/_StarLight/Entities/Objects/Weapons/Melee/cane_nt.yml from the branch so the dead CaneNT prototype is not carried into the merge—ensure no other code references CaneNT (the runtime uses OffsetCaneNT from offset_cane.yml) before removing.Resources/Textures/_Starlight/Clothing/Neck/Cloaks/bso_formal.rsi/meta.json (1)
1-46:⚠️ Potential issue | 🟡 MinorIndent: 2 пробела вместо 4.
As per coding guidelines: "Keep RSI
meta.jsonordered asversion,license,copyright,size,stateswith 4-space indentation".🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@Resources/Textures/_Starlight/Clothing/Neck/Cloaks/bso_formal.rsi/meta.json` around lines 1 - 46, The meta.json uses 2-space indentation instead of the required 4-space formatting; reformat the JSON to use 4-space indentation throughout while preserving the existing key order (version, license, copyright, size, states) and the existing state entries (e.g., "states", "size", individual state names like "equipped-NECK" etc.).Resources/Prototypes/_StarLight/Roles/play_time_trackers.yml (1)
1-21:⚠️ Potential issue | 🟡 MinorTrailing whitespace и непоследовательные пустые строки.
Строки 3, 6, 9, 12, 18 содержат хвостовые пробелы, а строка 15 — пустая. YAML-линтер, скорее всего, ругнётся. Уберите пробелы и приведите разделители к одному пустому ряду.
As per coding guidelines: "Separate prototype blocks with one blank line".
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@Resources/Prototypes/_StarLight/Roles/play_time_trackers.yml` around lines 1 - 21, Remove trailing whitespace from the playTimeTracker prototype entries (e.g., the blocks with id values JobBrigmedic, JobRoboticist, JobMagistrate, JobNanoTrasenRepresentative, JobIAA, JobCentralCommandOperator, JobBlueShield) and normalize separators so each prototype block is separated by exactly one blank line; ensure no extra blank lines remain (remove the stray empty line near JobIAA) and that each "- type: playTimeTracker" block has no trailing spaces at the end of its line.Resources/Prototypes/_StarLight/Catalog/Fills/Items/belt.yml (1)
1-213: 🛠️ Refactor suggestion | 🟠 MajorПорядок полей entity-прототипа.
Везде
type, id, parent, suffix. Гайдлайн требуетtype, parent, id, ...(suffix после name). Привести в соответствие за один проход.As per coding guidelines: «Keep entity prototype field order as type, abstract, parent, id, categories, name, suffix, description, components».
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@Resources/Prototypes/_StarLight/Catalog/Fills/Items/belt.yml` around lines 1 - 213, The entity prototypes in this file (e.g., ClothingAbductorBeltFilled, ClothingBeltBrigmedicFilled, ClothingBeltCorpsmanFilled, ClothingOuterVestWebEliteFilledMAA, ClothingBeltMilitaryWebbingFilledNavigator, ClothingBeltMilitaryWebbingFilledGunner, etc.) have their YAML keys ordered as type, id, parent, suffix; reorder each prototype to match the project guideline key order: type, abstract (if present), parent, id, categories (if present), name (if present), suffix, description (if present), components — then leave components as-is; apply this change across every entity block in the file so all prototypes follow the same canonical ordering.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
Run ID: 24714049-2b6f-4192-9608-c01ced725c7f
⛔ Files ignored due to path filters (157)
Resources/Audio/_Starlight/Items/gavelhammer.oggis excluded by!**/*.oggResources/Textures/Interface/Misc/job_icons.rsi/BlueShield.pngis excluded by!**/*.pngResources/Textures/Interface/Misc/job_icons.rsi/IAA.pngis excluded by!**/*.pngResources/Textures/Interface/Misc/job_icons.rsi/Magistrate.pngis excluded by!**/*.pngResources/Textures/Objects/Misc/bureaucracy.rsi/paper_stamp-magistrate.pngis excluded by!**/*.pngResources/Textures/Objects/Misc/bureaucracy.rsi/paper_stamp-ntrep.pngis excluded by!**/*.pngResources/Textures/Objects/Misc/id_cards.rsi/ert_commander.pngis excluded by!**/*.pngResources/Textures/_StarLight/Clothing/Eyes/Hud/blueshieldpatch.rsi/equipped-EYES-dog.pngis excluded by!**/*.pngResources/Textures/_StarLight/Clothing/Eyes/Hud/blueshieldpatch.rsi/equipped-EYES-moth.pngis excluded by!**/*.pngResources/Textures/_StarLight/Clothing/Eyes/Hud/blueshieldpatch.rsi/equipped-EYES-resomi.pngis excluded by!**/*.pngResources/Textures/_StarLight/Clothing/Eyes/Hud/blueshieldpatch.rsi/equipped-EYES.pngis excluded by!**/*.pngResources/Textures/_StarLight/Clothing/Eyes/Hud/blueshieldpatch.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_StarLight/Markers/jobs.rsi/iaa.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Back/Backpacks/blueshield.rsi/equipped-BACKPACK.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Back/Backpacks/blueshield.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Back/Backpacks/blueshield.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Back/Backpacks/blueshield.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Back/Duffels/blueshield.rsi/equipped-BACKPACK.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Back/Duffels/blueshield.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Back/Duffels/blueshield.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Back/Duffels/blueshield.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Belt/blueshieldmedicalbelt.rsi/equipped-BELT.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Belt/blueshieldmedicalbelt.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Belt/blueshieldmedicalbelt.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Belt/blueshieldmedicalbelt.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Eyes/Glasses/blueshield.rsi/equipped-EYES.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Eyes/Glasses/blueshield.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Eyes/Glasses/blueshield.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Eyes/Glasses/blueshield.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Eyes/Glasses/sunhudskill.rsi/equipped-EYES-vox.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Eyes/Glasses/sunhudskill.rsi/equipped-EYES.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Eyes/Glasses/sunhudskill.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Eyes/Glasses/sunhudskill.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Eyes/Glasses/sunhudskill.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Head/Hats/BSO_Bounty_Hunter_hat.rsi/equipped-HELMET-hamster.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Head/Hats/BSO_Bounty_Hunter_hat.rsi/equipped-HELMET.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Head/Hats/BSO_Bounty_Hunter_hat.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Head/Hats/BSO_Bounty_Hunter_hat.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Head/Hats/BSO_Bounty_Hunter_hat.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Head/Hats/blueshield.rsi/equipped-HELMET-hamster.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Head/Hats/blueshield.rsi/equipped-HELMET.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Head/Hats/blueshield.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Head/Hats/ntrep.rsi/equipped-HELMET-vox.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Head/Hats/ntrep.rsi/equipped-HELMET.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Head/Hats/ntrep.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Head/Hats/ntrep.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Head/Hats/ntrep.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Neck/Cloaks/bso_formal.rsi/equipped-NECK-cyclorite.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Neck/Cloaks/bso_formal.rsi/equipped-NECK-felionoid.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Neck/Cloaks/bso_formal.rsi/equipped-NECK-resomi.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Neck/Cloaks/bso_formal.rsi/equipped-NECK-vox.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Neck/Cloaks/bso_formal.rsi/equipped-NECK-vulpakin.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Neck/Cloaks/bso_formal.rsi/equipped-NECK.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Neck/Cloaks/bso_formal.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Neck/Cloaks/bso_formal.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Neck/Cloaks/bso_formal.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Neck/Cloaks/bso_poncho/equipped-NECK.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Neck/Cloaks/bso_poncho/icon.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Neck/Cloaks/bso_poncho/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Neck/Cloaks/bso_poncho/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/OuterClothing/Armor/blueshield.rsi/equipped-OUTERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/OuterClothing/Armor/blueshield.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/OuterClothing/Armor/blueshield.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/OuterClothing/Armor/blueshield.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/OuterClothing/Coats/blueshield_coat.rsi/equipped-OUTERCLOTHING-cyclorite.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/OuterClothing/Coats/blueshield_coat.rsi/equipped-OUTERCLOTHING-felionoid.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/OuterClothing/Coats/blueshield_coat.rsi/equipped-OUTERCLOTHING-resomi.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/OuterClothing/Coats/blueshield_coat.rsi/equipped-OUTERCLOTHING-vox.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/OuterClothing/Coats/blueshield_coat.rsi/equipped-OUTERCLOTHING-vulpakin.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/OuterClothing/Coats/blueshield_coat.rsi/equipped-OUTERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/OuterClothing/Coats/blueshield_coat.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/OuterClothing/Coats/blueshield_coat.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/OuterClothing/Coats/blueshield_coat.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/OuterClothing/Coats/ntrep.rsi/equipped-OUTERCLOTHING-vox.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/OuterClothing/Coats/ntrep.rsi/equipped-OUTERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/OuterClothing/Coats/ntrep.rsi/icon-open.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/OuterClothing/Coats/ntrep.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/OuterClothing/Coats/ntrep.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/OuterClothing/Coats/ntrep.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/OuterClothing/Coats/ntrep.rsi/open-equipped-OUTERCLOTHING-vox.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/OuterClothing/Coats/ntrep.rsi/open-equipped-OUTERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/OuterClothing/Coats/ntrep.rsi/open-inhand-left.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/OuterClothing/Coats/ntrep.rsi/open-inhand-right.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Uniforms/Jumpskirt/blueshield.rsi/equipped-INNERCLOTHING-monkey.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Uniforms/Jumpskirt/blueshield.rsi/equipped-INNERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Uniforms/Jumpskirt/blueshield.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Uniforms/Jumpskirt/blueshield.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Uniforms/Jumpskirt/blueshield.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Uniforms/Jumpskirt/blueshieldskirt.rsi/equipped-INNERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Uniforms/Jumpskirt/blueshieldskirt.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Uniforms/Jumpskirt/blueshieldskirt.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Uniforms/Jumpskirt/blueshieldskirt.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Uniforms/Jumpskirt/ntrep.rsi/equipped-INNERCLOTHING-vox.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Uniforms/Jumpskirt/ntrep.rsi/equipped-INNERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Uniforms/Jumpskirt/ntrep.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Uniforms/Jumpskirt/ntrep.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Uniforms/Jumpskirt/ntrep.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Uniforms/Jumpsuit/blueshield.rsi/equipped-INNERCLOTHING-monkey.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Uniforms/Jumpsuit/blueshield.rsi/equipped-INNERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Uniforms/Jumpsuit/blueshield.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Uniforms/Jumpsuit/blueshield.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Uniforms/Jumpsuit/blueshield.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Uniforms/Jumpsuit/blueshieldshirt.rsi/equipped-INNERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Uniforms/Jumpsuit/blueshieldshirt.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Uniforms/Jumpsuit/blueshieldshirt.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Uniforms/Jumpsuit/blueshieldshirt.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Uniforms/Jumpsuit/magistrate.rsi/equipped-INNERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Uniforms/Jumpsuit/magistrate.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Uniforms/Jumpsuit/magistrate.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Uniforms/Jumpsuit/magistrate.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Uniforms/Jumpsuit/ntrep.rsi/equipped-INNERCLOTHING-vox.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Uniforms/Jumpsuit/ntrep.rsi/equipped-INNERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Uniforms/Jumpsuit/ntrep.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Uniforms/Jumpsuit/ntrep.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Uniforms/Jumpsuit/ntrep.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Uniforms/Jumpsuit/ntrepformal.rsi/equipped-INNERCLOTHING-vox.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Uniforms/Jumpsuit/ntrepformal.rsi/equipped-INNERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Uniforms/Jumpsuit/ntrepformal.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Uniforms/Jumpsuit/ntrepformal.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Starlight/Clothing/Uniforms/Jumpsuit/ntrepformal.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Starlight/Markers/jobs.rsi/green.pngis excluded by!**/*.pngResources/Textures/_Starlight/Markers/jobs.rsi/jobicon.pngis excluded by!**/*.pngResources/Textures/_Starlight/Markers/jobs.rsi/magistrate.pngis excluded by!**/*.pngResources/Textures/_Starlight/Markers/jobs.rsi/ntrep.pngis excluded by!**/*.pngResources/Textures/_Starlight/Objects/Devices/pda.rsi/equipped-BELT.pngis excluded by!**/*.pngResources/Textures/_Starlight/Objects/Devices/pda.rsi/equipped-IDCARD.pngis excluded by!**/*.pngResources/Textures/_Starlight/Objects/Devices/pda.rsi/id_overlay.pngis excluded by!**/*.pngResources/Textures/_Starlight/Objects/Devices/pda.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Starlight/Objects/Devices/pda.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Starlight/Objects/Devices/pda.rsi/insert_overlay.pngis excluded by!**/*.pngResources/Textures/_Starlight/Objects/Devices/pda.rsi/light_overlay.pngis excluded by!**/*.pngResources/Textures/_Starlight/Objects/Devices/pda.rsi/pda-blueshield.pngis excluded by!**/*.pngResources/Textures/_Starlight/Objects/Devices/pda.rsi/pda-veteranblueshield.pngis excluded by!**/*.pngResources/Textures/_Starlight/Objects/Misc/id_cards.rsi/default.pngis excluded by!**/*.pngResources/Textures/_Starlight/Objects/Misc/id_cards.rsi/gold.pngis excluded by!**/*.pngResources/Textures/_Starlight/Objects/Misc/id_cards.rsi/idblueshield.pngis excluded by!**/*.pngResources/Textures/_Starlight/Objects/Misc/id_cards.rsi/idiaa.pngis excluded by!**/*.pngResources/Textures/_Starlight/Objects/Misc/id_cards.rsi/idmagistrate.pngis excluded by!**/*.pngResources/Textures/_Starlight/Objects/Misc/id_cards.rsi/silver.pngis excluded by!**/*.pngResources/Textures/_Starlight/Objects/Misc/stamps.rsi/stamp-iaa.pngis excluded by!**/*.pngResources/Textures/_Starlight/Objects/Misc/stamps.rsi/stamp-magistrate.pngis excluded by!**/*.pngResources/Textures/_Starlight/Objects/Misc/stamps.rsi/stamp-ntrep.pngis excluded by!**/*.pngResources/Textures/_Starlight/Objects/Tools/gavelhammer.rsi/gavelblock.pngis excluded by!**/*.pngResources/Textures/_Starlight/Objects/Tools/gavelhammer.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Starlight/Objects/Weapons/Melee/cane_nt.rsi/cane-nt-active.pngis excluded by!**/*.pngResources/Textures/_Starlight/Objects/Weapons/Melee/cane_nt.rsi/cane-nt.pngis excluded by!**/*.pngResources/Textures/_Starlight/Objects/Weapons/Melee/cane_nt.rsi/off-inhand-left.pngis excluded by!**/*.pngResources/Textures/_Starlight/Objects/Weapons/Melee/cane_nt.rsi/off-inhand-right.pngis excluded by!**/*.pngResources/Textures/_Starlight/Objects/Weapons/Melee/cane_nt.rsi/on-inhand-left.pngis excluded by!**/*.pngResources/Textures/_Starlight/Objects/Weapons/Melee/cane_nt.rsi/on-inhand-right.pngis excluded by!**/*.pngResources/Textures/_Starlight/Structures/Storage/closet.rsi/bssecure.pngis excluded by!**/*.pngResources/Textures/_Starlight/Structures/Storage/closet.rsi/bssecure_door.pngis excluded by!**/*.pngResources/Textures/_Starlight/Structures/Storage/closet.rsi/bssecure_open.pngis excluded by!**/*.pngResources/Textures/_Starlight/Structures/Storage/closet.rsi/locked.pngis excluded by!**/*.pngResources/Textures/_Starlight/Structures/Storage/closet.rsi/sparking.pngis excluded by!**/*.pngResources/Textures/_Starlight/Structures/Storage/closet.rsi/unlocked.pngis excluded by!**/*.pngResources/Textures/_Starlight/Structures/Storage/closet.rsi/welded.pngis excluded by!**/*.png
📒 Files selected for processing (90)
Content.Server/_Starlight/Gavel/GavelBlockComponent.csContent.Server/_Starlight/Gavel/GavelHammerComponent.csContent.Server/_Starlight/Gavel/GavelSystem.csResources/Locale/en-US/_Starlight/gavel/gavel.ftlResources/Locale/en-US/_Starlight/headset/headset-component.ftlResources/Locale/en-US/_Starlight/job/department-desc.ftlResources/Locale/en-US/_Starlight/job/department.ftlResources/Locale/en-US/_Starlight/job/job-desc.ftlResources/Locale/en-US/_Starlight/job/job.ftlResources/Locale/en-US/_Starlight/loadout/loadouts.ftlResources/Locale/en-US/_Starlight/preferences/loadout-groups.ftlResources/Locale/en-US/_Starlight/prototypes/access/accesses.ftlResources/Prototypes/Access/command.ymlResources/Prototypes/Access/misc.ymlResources/Prototypes/Entities/Objects/Tools/access_configurator.ymlResources/Prototypes/Recipes/Lathes/Packs/clothing.ymlResources/Prototypes/Recipes/Lathes/clothing.ymlResources/Prototypes/Roles/Jobs/departments.ymlResources/Prototypes/_StarLight/Access/command.ymlResources/Prototypes/_StarLight/Catalog/Fills/Items/belt.ymlResources/Prototypes/_StarLight/Catalog/Fills/Items/briefcases.ymlResources/Prototypes/_StarLight/Catalog/Fills/Lockers/representatives.ymlResources/Prototypes/_StarLight/Catalog/Fills/Paper/documents.ymlResources/Prototypes/_StarLight/Entities/Clothing/Back/backpacks.ymlResources/Prototypes/_StarLight/Entities/Clothing/Back/duffel.ymlResources/Prototypes/_StarLight/Entities/Clothing/Belt/belts.ymlResources/Prototypes/_StarLight/Entities/Clothing/Ears/headsets.ymlResources/Prototypes/_StarLight/Entities/Clothing/Eyes/glasses.ymlResources/Prototypes/_StarLight/Entities/Clothing/Head/hats.ymlResources/Prototypes/_StarLight/Entities/Clothing/Neck/cloaks.ymlResources/Prototypes/_StarLight/Entities/Clothing/OuterClothing/armor.ymlResources/Prototypes/_StarLight/Entities/Clothing/OuterClothing/coats.ymlResources/Prototypes/_StarLight/Entities/Clothing/Uniforms/jumpskirts.ymlResources/Prototypes/_StarLight/Entities/Clothing/Uniforms/jumpsuits.ymlResources/Prototypes/_StarLight/Entities/Markers/Spawners/jobs.ymlResources/Prototypes/_StarLight/Entities/Objects/Devices/Electronics/door_access.ymlResources/Prototypes/_StarLight/Entities/Objects/Devices/encryption_keys.ymlResources/Prototypes/_StarLight/Entities/Objects/Devices/pda.ymlResources/Prototypes/_StarLight/Entities/Objects/Misc/identification_cards.ymlResources/Prototypes/_StarLight/Entities/Objects/Misc/rubber_stamp.ymlResources/Prototypes/_StarLight/Entities/Objects/Tools/gavelblock.ymlResources/Prototypes/_StarLight/Entities/Objects/Tools/gavelhammer.ymlResources/Prototypes/_StarLight/Entities/Objects/Weapons/Melee/cane_nt.ymlResources/Prototypes/_StarLight/Entities/Structures/Doors/Airlocks/access.ymlResources/Prototypes/_StarLight/Entities/Structures/Storage/Closets/Lockers/lockers.ymlResources/Prototypes/_StarLight/Loadouts/Jobs/Command/nanotrasenrepresentative.ymlResources/Prototypes/_StarLight/Loadouts/Jobs/blueshield.ymlResources/Prototypes/_StarLight/Loadouts/loadout_groups.ymlResources/Prototypes/_StarLight/Loadouts/role_loadouts.ymlResources/Prototypes/_StarLight/Recipes/Lathes/clothing.ymlResources/Prototypes/_StarLight/Roles/Jobs/Law/Magistrate.ymlResources/Prototypes/_StarLight/Roles/Jobs/Law/iaa.ymlResources/Prototypes/_StarLight/Roles/Jobs/Representives/blueshield.ymlResources/Prototypes/_StarLight/Roles/Jobs/Representives/nanotrasenrepresentative.ymlResources/Prototypes/_StarLight/Roles/Jobs/departments.ymlResources/Prototypes/_StarLight/Roles/play_time_trackers.ymlResources/Prototypes/_StarLight/StatusIcon/job.ymlResources/Prototypes/_StarLight/radio_channels.ymlResources/Textures/Interface/Misc/job_icons.rsi/meta.jsonResources/Textures/Objects/Misc/bureaucracy.rsi/meta.jsonResources/Textures/Objects/Misc/id_cards.rsi/meta.jsonResources/Textures/_StarLight/Clothing/Eyes/Hud/blueshieldpatch.rsi/meta.jsonResources/Textures/_Starlight/Clothing/Back/Backpacks/blueshield.rsi/meta.jsonResources/Textures/_Starlight/Clothing/Back/Duffels/blueshield.rsi/meta.jsonResources/Textures/_Starlight/Clothing/Belt/blueshieldmedicalbelt.rsi/meta.jsonResources/Textures/_Starlight/Clothing/Eyes/Glasses/blueshield.rsi/meta.jsonResources/Textures/_Starlight/Clothing/Eyes/Glasses/sunhudskill.rsi/meta.jsonResources/Textures/_Starlight/Clothing/Head/Hats/BSO_Bounty_Hunter_hat.rsi/meta.jsonResources/Textures/_Starlight/Clothing/Head/Hats/blueshield.rsi/meta.jsonResources/Textures/_Starlight/Clothing/Head/Hats/ntrep.rsi/meta.jsonResources/Textures/_Starlight/Clothing/Neck/Cloaks/bso_formal.rsi/meta.jsonResources/Textures/_Starlight/Clothing/Neck/Cloaks/bso_poncho/meta.jsonResources/Textures/_Starlight/Clothing/OuterClothing/Armor/blueshield.rsi/meta.jsonResources/Textures/_Starlight/Clothing/OuterClothing/Coats/blueshield_coat.rsi/meta.jsonResources/Textures/_Starlight/Clothing/OuterClothing/Coats/ntrep.rsi/meta.jsonResources/Textures/_Starlight/Clothing/Uniforms/Jumpskirt/blueshield.rsi/meta.jsonResources/Textures/_Starlight/Clothing/Uniforms/Jumpskirt/blueshieldskirt.rsi/meta.jsonResources/Textures/_Starlight/Clothing/Uniforms/Jumpskirt/ntrep.rsi/meta.jsonResources/Textures/_Starlight/Clothing/Uniforms/Jumpsuit/blueshield.rsi/meta.jsonResources/Textures/_Starlight/Clothing/Uniforms/Jumpsuit/blueshieldshirt.rsi/meta.jsonResources/Textures/_Starlight/Clothing/Uniforms/Jumpsuit/magistrate.rsi/meta.jsonResources/Textures/_Starlight/Clothing/Uniforms/Jumpsuit/ntrep.rsi/meta.jsonResources/Textures/_Starlight/Clothing/Uniforms/Jumpsuit/ntrepformal.rsi/meta.jsonResources/Textures/_Starlight/Markers/jobs.rsi/meta.jsonResources/Textures/_Starlight/Objects/Devices/pda.rsi/meta.jsonResources/Textures/_Starlight/Objects/Misc/id_cards.rsi/meta.jsonResources/Textures/_Starlight/Objects/Misc/stamps.rsi/meta.jsonResources/Textures/_Starlight/Objects/Tools/gavelhammer.rsi/meta.jsonResources/Textures/_Starlight/Objects/Weapons/Melee/cane_nt.rsi/meta.jsonResources/Textures/_Starlight/Structures/Storage/closet.rsi/meta.json
| @@ -0,0 +1,21 @@ | |||
| using Robust.Shared.Audio; | |||
|
|
|||
| namespace Content.Server.Starlight.Gavel; | |||
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
fd -e cs . Content.Server/_Starlight | head -50 | xargs -I{} rg -nH '^namespace ' {}Repository: ss14-art/open-space
Length of output: 353
🏁 Script executed:
fd -type d '^_[A-Z]' Content.Server | head -20Repository: ss14-art/open-space
Length of output: 234
🏁 Script executed:
rg 'namespace Content\.Server\._' Content.Server --max-count=5Repository: ss14-art/open-space
Length of output: 886
🏁 Script executed:
find .cursor/rules -name '*.md' -o -name '*.mdc' | xargs grep -l "_Starlight\|_OpenSpace\|fork.*namespace" 2>/dev/null | head -5Repository: ss14-art/open-space
Length of output: 45
🏁 Script executed:
fd -e cs . Content.Server/_Starlight/Gavel | xargs rg -nH '^namespace 'Repository: ss14-art/open-space
Length of output: 353
Namespace должен содержать префикс _Starlight согласно конвенции форка.
Все файлы в Content.Server/_Starlight/Gavel/ используют Content.Server.Starlight.Gavel, но согласно стилю _OpenSpace и другому коду _Starlight (например, EdgeConnectionSystem), форк-директории сохраняют underscore в namespace: Content.Server._Starlight.Gavel.
Затронуты 3 файла: GavelBlockComponent.cs, GavelHammerComponent.cs, GavelSystem.cs.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@Content.Server/_Starlight/Gavel/GavelBlockComponent.cs` at line 3, The
namespace declarations in GavelBlockComponent, GavelHammerComponent, and
GavelSystem use Content.Server.Starlight.Gavel but must use the fork convention
with an underscore: Content.Server._Starlight.Gavel; update the namespace line
in each file (e.g., the namespace declaration that contains class
GavelBlockComponent, class GavelHammerComponent, and class GavelSystem) to
include the underscore, and then fix any affected using/import references or
fully-qualified type references to match the new namespace.
| [DataField(readOnly: true)] | ||
| public int Counter; | ||
|
|
||
| [DataField(readOnly: true)] | ||
| public int MaxCounter = 60; |
There was a problem hiding this comment.
🛠️ Refactor suggestion | 🟠 Major
readOnly: true на рантайм-состоянии и конфиге — пересмотрите.
Counter — мутабельное состояние времени выполнения, ему readOnly: true концептуально не подходит; систему оно не блокирует (readOnly влияет только на YAML-сериализацию), но смущает читателя и мешает map-сейвам отражать прогресс. Для MaxCounter это конфиг — readOnly здесь избыточен, хватит обычного [DataField].
Предлагаемая правка
- [DataField(readOnly: true)]
- public int Counter;
-
- [DataField(readOnly: true)]
- public int MaxCounter = 60;
+ public int Counter;
+
+ [DataField]
+ public int MaxCounter = 60;📝 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.
| [DataField(readOnly: true)] | |
| public int Counter; | |
| [DataField(readOnly: true)] | |
| public int MaxCounter = 60; | |
| public int Counter; | |
| [DataField] | |
| public int MaxCounter = 60; |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@Content.Server/_Starlight/Gavel/GavelBlockComponent.cs` around lines 14 - 18,
Remove the misleading readOnly flags from the component fields: make Counter
mutable at runtime by removing readOnly: true on the Counter DataField and allow
MaxCounter to be a normal config field by replacing [DataField(readOnly: true)]
on MaxCounter with a plain [DataField]; update the GavelBlockComponent field
annotations so Counter is not marked readOnly and MaxCounter uses the standard
[DataField] attribute.
| @@ -0,0 +1,6 @@ | |||
| namespace Content.Server.Starlight.Gavel; | |||
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
rg -nP '^namespace\s+Content\.(Server|Shared|Client)\._?Starlight' --type=cs -g '!**/obj/**'
fd -t f -e cs . Content.Server/_Starlight | head -50Repository: ss14-art/open-space
Length of output: 872
Namespace не соответствует пути папки.
Все файлы в Content.Server/_Starlight/Gavel/ используют Content.Server.Starlight.Gavel (без подчёркивания), но должны использовать Content.Server._Starlight.Gavel. Соседний модуль EdgeConnection в той же иерархии корректно использует подчёркивание в namespace. Исправьте во всех трёх файлах: GavelHammerComponent, GavelBlockComponent и GavelSystem.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@Content.Server/_Starlight/Gavel/GavelHammerComponent.cs` at line 1, В трёх
файлах GavelHammerComponent, GavelBlockComponent и GavelSystem текущий namespace
объявлен как Content.Server.Starlight.Gavel, но по структуре папок должен быть
Content.Server._Starlight.Gavel; исправьте декларации namespace в этих трёх
файлах на Content.Server._Starlight.Gavel и убедитесь, что внутри файлов имена
классов (GavelHammerComponent, GavelBlockComponent, GavelSystem) остаются без
изменений и что любые локальные using/qualified references по необходимости
обновлены чтобы соответствовать новому namespace.
| department-Law-description = Protect, prosecute or punish criminals. | ||
| department-Representives-description = High-ranking people whose goal is to protect the station in one way or another. No newline at end of file |
There was a problem hiding this comment.
Описания слабоваты для player-facing текста.
«Protect, prosecute or punish criminals» и «High-ranking people whose goal is to protect the station…» — пресновато и противоречиво (Law-департамент описан только как Sec-функция, без юридической составляющей; Representives — слишком общо). Не блокер, но стоит расширить под реальные обязанности магистрата/IAA/NTrep до релиза.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@Resources/Locale/en-US/_Starlight/job/department-desc.ftl` around lines 1 -
2, Update the two player-facing description strings to be more specific and
informative: replace department-Law-description with a line that reflects both
security and legal/magistrate duties (investigations, arrests, evidence
handling, trials/sentencing and oversight) and replace
department-Representives-description (department-Representives-description) with
a line that clearly identifies the faction role (e.g., magistrate/IAA/NT
representative duties like diplomacy, policy enforcement, legal appeals, and
liaison work) — keep each string concise, active-voice, and aimed at players
(what the role actually does in-game), preserving the existing key names so
callers still find department-Law-description and
department-Representives-description.
| { | ||
| "version": 1, | ||
| "license": "CC-BY-SA-3.0", | ||
| "copyright": "Taked from ParadiseStation", |
There was a problem hiding this comment.
Опечатка в copyright.
"Taked from ParadiseStation" → "Taken from Paradise Station". Поле атрибуции, в идентичных RSI по PR этот же артефакт встречается несколько раз — стоит выровнять разом.
Diff
- "copyright": "Taked from ParadiseStation",
+ "copyright": "Taken from Paradise Station",📝 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.
| "copyright": "Taked from ParadiseStation", | |
| "copyright": "Taken from Paradise Station", |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@Resources/Textures/_Starlight/Objects/Tools/gavelhammer.rsi/meta.json` at
line 4, The "copyright" JSON field currently contains a typo "Taked from
ParadiseStation"; update the value to "Taken from Paradise Station" (fix
spelling and spacing), and sweep other RSI metadata entries that contain the
same incorrect string to normalize them to the corrected value; target the JSON
key "copyright" where the value equals "Taked from ParadiseStation".
| { | ||
| "name": "cane-nt-active", | ||
| "delays": [ | ||
| [ | ||
| 0.1, | ||
| 0.1, | ||
| 0.1, | ||
| 0.1 | ||
| ] | ||
| ] | ||
| }, |
There was a problem hiding this comment.
Табы вместо пробелов.
Строки 13-23 используют табы. По стандарту RSI meta.json должен использовать 4 пробела для отступов. Based on learnings: Keep RSI meta.json ordered as version, license, copyright, size, states with 4-space indentation.
🔧 Исправление отступов
},
- {
- "name": "cane-nt-active",
- "delays": [
- [
- 0.1,
- 0.1,
- 0.1,
- 0.1
- ]
- ]
- },
+ {
+ "name": "cane-nt-active",
+ "delays": [
+ [
+ 0.1,
+ 0.1,
+ 0.1,
+ 0.1
+ ]
+ ]
+ },
{📝 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.
| { | |
| "name": "cane-nt-active", | |
| "delays": [ | |
| [ | |
| 0.1, | |
| 0.1, | |
| 0.1, | |
| 0.1 | |
| ] | |
| ] | |
| }, | |
| { | |
| "name": "cane-nt-active", | |
| "delays": [ | |
| [ | |
| 0.1, | |
| 0.1, | |
| 0.1, | |
| 0.1 | |
| ] | |
| ] | |
| }, |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@Resources/Textures/_Starlight/Objects/Weapons/Melee/cane_nt.rsi/meta.json`
around lines 13 - 23, The JSON fragment uses tabs for indentation and the
project requires 4-space indentation and a specific key order for RSI meta.json;
replace all tabs with 4-space indents in this file and ensure the top-level keys
follow the required order (version, license, copyright, size, states), placing
the "cane-nt-active" state object inside the states array with consistent
4-space indentation and preserved array values.
| ] | ||
| } | ||
| ] | ||
| } No newline at end of file |
There was a problem hiding this comment.
Отсутствует финальный перенос строки.
Файл должен заканчиваться переносом строки после закрывающей скобки.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@Resources/Textures/_Starlight/Objects/Weapons/Melee/cane_nt.rsi/meta.json` at
line 85, Файл meta.json заканчивается закрывающей скобкой '}' без финального
перевода строки; откройте файл
Resources/Textures/_Starlight/Objects/Weapons/Melee/cane_nt.rsi/meta.json и
добавьте один конечный перенос строки сразу после последнего символа '}'
(обеспечьте LF/UNIX EOL) so the file ends with a newline.
| "size": { | ||
| "x": 32, | ||
| "y": 32 | ||
| }, | ||
| "copyright": "Taken from tgstation. Resprite BlueShield Closet by CatBG (Discord:catbg)", | ||
| "license": "CC-BY-SA-3.0", |
There was a problem hiding this comment.
Неверный порядок полей в RSI meta.json.
На Line 3-8 size стоит раньше license/copyright. Для этого файла нужен порядок: version, license, copyright, size, states.
Предложенный фикс
- "size": {
- "x": 32,
- "y": 32
- },
- "copyright": "Taken from tgstation. Resprite BlueShield Closet by CatBG (Discord:catbg)",
- "license": "CC-BY-SA-3.0",
+ "license": "CC-BY-SA-3.0",
+ "copyright": "Taken from tgstation. Resprite BlueShield Closet by CatBG (Discord:catbg)",
+ "size": {
+ "x": 32,
+ "y": 32
+ },📝 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.
| "size": { | |
| "x": 32, | |
| "y": 32 | |
| }, | |
| "copyright": "Taken from tgstation. Resprite BlueShield Closet by CatBG (Discord:catbg)", | |
| "license": "CC-BY-SA-3.0", | |
| "license": "CC-BY-SA-3.0", | |
| "copyright": "Taken from tgstation. Resprite BlueShield Closet by CatBG (Discord:catbg)", | |
| "size": { | |
| "x": 32, | |
| "y": 32 | |
| }, |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@Resources/Textures/_Starlight/Structures/Storage/closet.rsi/meta.json` around
lines 3 - 8, The meta.json for this RSI has fields in the wrong order; open
meta.json and reorder the top-level keys so they appear as: "version",
"license", "copyright", "size", "states" (replace the current order where "size"
appears before "license"/"copyright"), ensure 4-space indentation and preserve
existing values (e.g. the "size" object and strings), and apply the same
ordering rule for other Resources/**/**/meta.json files if needed.
| { | ||
| "name": "ert_commander" | ||
| }, |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
fd -t f 'ert_commander' Resources/Textures/Objects/Misc/id_cards.rsiRepository: ss14-art/open-space
Length of output: 126
🏁 Script executed:
cat -n Resources/Textures/Objects/Misc/id_cards.rsi/meta.json | sed -n '40,55p'Repository: ss14-art/open-space
Length of output: 497
🏁 Script executed:
cat Resources/Textures/Objects/Misc/id_cards.rsi/meta.json | head -15Repository: ss14-art/open-space
Length of output: 836
Исправить отступ для ert_commander.
В строке 47 у поля "name": "ert_commander" 8 пробелов вместо 12. Все соседние состояния используют 12 пробелов. Файл ert_commander.png присутствует в папке RSI.
♻️ Diff
{
- "name": "ert_commander"
+ "name": "ert_commander"
},📝 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.
| { | |
| "name": "ert_commander" | |
| }, | |
| { | |
| "name": "ert_commander" | |
| }, |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@Resources/Textures/Objects/Misc/id_cards.rsi/meta.json` around lines 46 - 48,
Включение свойства "name": "ert_commander" в объекте имеет 8 пробелов отступа,
тогда как соседние элементы используют 12; откройте объект содержащий
"ert_commander" в meta.json и поправьте отступ перед строкой "name":
"ert_commander" до 12 пробелов, сохранив синтаксис JSON и существующее
запятые/фигурные скобки (имя файла ресурса — ert_commander.png).
| job-description-roboticist = A scientist whose purpose is to repair and create mechanoids, cyborgs, and other mechanical creations. | ||
| job-description-magistrate = You are the very justice of the station, your job is to try all major troublemakers. | ||
| job-description-ntrep = You are an auditor sent by Central Command to make sure that all personnel are working efficiently and in the best interest of the corporation. | ||
| job-description-iaa = You are a servant of the people, defend, condemn the citizens of your station! No newline at end of file |
There was a problem hiding this comment.
Уточни формулировку job-description-iaa
Текст на Line 4 звучит противоречиво (defend, condemn) и неочевиден для игрока. Нужна более однозначная формулировка обязанностей роли.
As per coding guidelines: "Treat localization as mandatory: Every player-facing string should be localized... Check consistency when prototype names, descriptions, markings, or UI text changed."
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@Resources/Locale/en-US/_Starlight/job/job-desc.ftl` at line 4, The
job-description-iaa string is ambiguous and contradictory ("defend, condemn");
update the FTL entry for job-description-iaa to a clear, unambiguous
player-facing duty summary (e.g., state core responsibilities like protecting
citizens and enforcing station law), keep it concise, maintain FTL key
job-description-iaa, add matching translations for other locales if present, and
run the localization consistency/lint checks to ensure the new wording aligns
with prototype names and UI text.
| loadout-group-blueshield-head = Blueshield head | ||
| loadout-group-blueshield-backpack = Blueshield backpack | ||
| loadout-group-blueshield-jumpsuit = Blueshield jumpsuit | ||
| loadout-group-blueshield-eyewear = Blueshield eyewear | ||
| loadout-group-blueshield-outerclothing = Blueshield Outer Clothing | ||
| loadout-group-blueshield-belt = Blueshield Belt | ||
| loadout-group-blueshield-neck = Blueshield Neck | ||
| loadout-group-blueshield-id = Blueshield ID |
There was a problem hiding this comment.
Несогласованный регистр слов в значениях.
Выше: Blueshield head/backpack/jumpsuit/eyewear (строчные). Ниже: Blueshield Outer Clothing/Belt/Neck/ID (с заглавных). Приведите к одному стилю — иначе в preferences UI это бросается в глаза.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@Resources/Locale/en-US/_Starlight/preferences/loadout-groups.ftl` around
lines 25 - 32, The values for the Blueshield loadout group are using
inconsistent title casing; normalize them to a single style (prefer sentence or
title case per project standard) so UI reads consistently. Update the string
values for loadout-group-blueshield-head, -backpack, -jumpsuit, -eyewear,
-outerclothing, -belt, -neck, and -id to use the same capitalization (e.g.,
"Blueshield head", "Blueshield backpack", "Blueshield outer clothing",
"Blueshield belt", "Blueshield neck", "Blueshield ID" or all Title Case if
that’s the convention) so all entries match.
| loadout-group-magistrate-shoes = Magistrate shoes | ||
| loadout-group-iia-shoes = Lawyer shoes | ||
|
|
||
| # Civilian | ||
| loadout-group-civilian-shoes = Shoes |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
rg -nP '\b(IAA|iaa|iia)Shoes\b' --type yaml
rg -nP '\bid:\s*(IAA|Iaa|Iia)\w*Shoes' --type yaml
rg -nP 'loadout-group-(iaa|iia)-shoes'Repository: ss14-art/open-space
Length of output: 266
🏁 Script executed:
cat -n Resources/Prototypes/_StarLight/Loadouts/loadout_groups.yml | sed -n '375,390p'Repository: ss14-art/open-space
Length of output: 411
🏁 Script executed:
rg -i 'iaa|iia' --type yaml -B 2 -A 2 | head -60Repository: ss14-art/open-space
Length of output: 29189
🏁 Script executed:
rg -i 'internal affairs|lawyer' --type yaml -B 1 -A 1 | head -40Repository: ss14-art/open-space
Length of output: 1982
Исправить семантическую рассинхрон id и name в loadout группе.
В Resources/Prototypes/_StarLight/Loadouts/loadout_groups.yml строка 381: id: LawyerShoes, но строка 382: name: loadout-group-iia-shoes. Аббревиатура iia не существует в кодовой базе — используется либо lawyer (основная терминология), либо iaa для Internal Affairs Agent. Нужно привести name в соответствие с id:
- type: loadoutGroup
id: LawyerShoes
- name: loadout-group-lawyer-shoes
+ name: loadout-group-iaa-shoes
И обновить FTL соответственно (строка 43):
- loadout-group-iia-shoes = Lawyer shoes
+ loadout-group-iaa-shoes = Internal Affairs Agent shoes
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@Resources/Locale/en-US/_Starlight/preferences/loadout-groups.ftl` around
lines 42 - 46, The loadout group has a semantic mismatch: the prototype uses id
"LawyerShoes" while the name key is "loadout-group-iia-shoes" (typo/incorrect
abbreviation "iia"); update the prototype entry where id: LawyerShoes to set
name: loadout-group-lawyer-shoes (or if intended for Internal Affairs Agent,
change id to IaaShoes and name to loadout-group-iaa-shoes) so id and name match,
and then update the FTL entry (replace loadout-group-iia-shoes with the
corrected key and change the English text to "Lawyer shoes" or "Internal Affairs
Agent shoes" to match the chosen id/name.
| - type: entity | ||
| id: ClothingBeltBrigmedicFilled | ||
| parent: ClothingBeltBrigmedic | ||
| suffix: Filled | ||
| components: | ||
| - type: EntityTableContainerFill | ||
| containers: | ||
| storagebase: !type:AllSelector | ||
| children: | ||
| - id: Stunbaton | ||
| - id: Handcuffs | ||
| - id: Brutepack | ||
| - id: Ointment | ||
| - id: Gauze | ||
|
|
||
| - type: entity | ||
| id: ClothingBeltBrigmedicWebFilled | ||
| parent: ClothingBeltBrigmedicWeb | ||
| suffix: Filled | ||
| components: | ||
| - type: EntityTableContainerFill | ||
| containers: | ||
| storagebase: !type:AllSelector | ||
| children: | ||
| - id: Stunbaton | ||
| - id: Handcuffs | ||
| - id: Brutepack | ||
| - id: Ointment | ||
| - id: Gauze | ||
|
|
||
| - type: entity | ||
| id: ClothingBeltCorpsmanFilled | ||
| parent: ClothingBeltCorpsman | ||
| suffix: Filled | ||
| components: | ||
| - type: EntityTableContainerFill | ||
| containers: | ||
| storagebase: !type:AllSelector | ||
| children: | ||
| - id: Stunbaton | ||
| - id: Handcuffs | ||
| - id: Brutepack | ||
| - id: Ointment | ||
| - id: Gauze |
There was a problem hiding this comment.
🧹 Nitpick | 🔵 Trivial
DRY: одинаковое наполнение Brigmedic/BrigmedicWeb/Corpsman.
ClothingBeltBrigmedicFilled, ClothingBeltBrigmedicWebFilled, ClothingBeltCorpsmanFilled имеют идентичный набор Stunbaton/Handcuffs/Brutepack/Ointment/Gauze. При балансе это три места правок. Можно вынести абстрактный родитель с этим EntityTableContainerFill и наследоваться, либо использовать YAML-якорь.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@Resources/Prototypes/_StarLight/Catalog/Fills/Items/belt.yml` around lines 17
- 60, Вынеси общий блок заполнения в переиспользуемый родитель или YAML-якорь и
унаследуйся от него: создай абстрактный сущность/шаблон (например
ClothingBeltMedBase или YAML-анккор для EntityTableContainerFill) содержащую
компонент EntityTableContainerFill с контейнером storagebase и детьми Stunbaton,
Handcuffs, Brutepack, Ointment, Gauze, затем в сущностях
ClothingBeltBrigmedicFilled, ClothingBeltBrigmedicWebFilled и
ClothingBeltCorpsmanFilled убери повторяющийся компонент и замените
наследованием/анкором на этот общий блок (сохрани существующие id и parent
ссылки).
| { | ||
| "version": 1, | ||
| "license": "CC-BY-SA-3.0", | ||
| "copyright": "Taken from Paradise build, inhand sprited by Rinary1 (Github)", | ||
| "size": { | ||
| "x": 32, | ||
| "y": 32 | ||
| }, | ||
| "states": [ | ||
| { | ||
| "name": "icon" | ||
| }, | ||
| { | ||
| "name": "icon-open" | ||
| }, | ||
| { | ||
| "name": "equipped-OUTERCLOTHING", | ||
| "directions": 4 | ||
| }, | ||
| { | ||
| "name": "equipped-OUTERCLOTHING-vox", | ||
| "directions": 4 | ||
| }, | ||
| { | ||
| "name": "open-equipped-OUTERCLOTHING", | ||
| "directions": 4 | ||
| }, | ||
| { | ||
| "name": "open-equipped-OUTERCLOTHING-vox", | ||
| "directions": 4 | ||
| }, | ||
| { | ||
| "name": "inhand-left", | ||
| "directions": 4 | ||
| }, | ||
| { | ||
| "name": "inhand-right", | ||
| "directions": 4 | ||
| }, | ||
| { | ||
| "name": "open-inhand-left", | ||
| "directions": 4 | ||
| }, | ||
| { | ||
| "name": "open-inhand-right", | ||
| "directions": 4 | ||
| } | ||
| ] | ||
| } |
There was a problem hiding this comment.
meta.json нужно привести к 4-пробельным отступам
Структура корректная, но формат не соответствует требованию по отступам (сейчас 2 пробела).
Based on learnings: "Applies to Resources///meta.json : Keep RSI meta.json ordered as version, license, copyright, size, states with 4-space indentation"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In
`@Resources/Textures/_Starlight/Clothing/OuterClothing/Coats/ntrep.rsi/meta.json`
around lines 1 - 49, The meta.json uses 2-space indentation and must be
reformatted to 4-space indentation and keep the key order as: "version",
"license", "copyright", "size", "states"; update the JSON in
Resources/Textures/_Starlight/Clothing/OuterClothing/Coats/ntrep.rsi/meta.json
so all nested objects (including "size" and each entry in "states") use 4 spaces
per indent, preserving the existing content and ordering exactly as listed;
validate the file is still valid JSON after reformatting.
| { | ||
| "version": 1, | ||
| "license": "CC-BY-SA-3.0", | ||
| "copyright": "State based copyrights", | ||
| "size": { | ||
| "x": 32, | ||
| "y": 32 | ||
| }, | ||
| "states": [ | ||
| { | ||
| "name": "icon", | ||
| "copyright": "Made by SapphicHaymaker for Starlight" | ||
| }, | ||
| { | ||
| "name": "equipped-INNERCLOTHING", | ||
| "copyright": "Made by SapphicHaymaker for Starlight", | ||
| "directions": 4 | ||
| }, | ||
| { | ||
| "name": "inhand-left", | ||
| "copyright": "Made by SapphicHaymaker for Starlight", | ||
| "directions": 4 | ||
| }, | ||
| { | ||
| "name": "inhand-right", | ||
| "copyright": "Made by SapphicHaymaker for Starlight", | ||
| "directions": 4 | ||
| } | ||
| ] | ||
| } |
There was a problem hiding this comment.
Отступы 2 пробела вместо 4.
Порядок ключей корректный, но indent — 2 пробела. По правилам RSI meta.json должен быть 4-space.
As per coding guidelines: "Keep RSI meta.json ordered as version, license, copyright, size, states with 4-space indentation".
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In
`@Resources/Textures/_Starlight/Clothing/Uniforms/Jumpskirt/blueshieldskirt.rsi/meta.json`
around lines 1 - 30, The meta.json uses 2-space indentation instead of the
required 4-space indentation; update the entire JSON to use 4-space indents
while preserving the existing key order (version, license, copyright, size,
states) and the state objects (icon, equipped-INNERCLOTHING, inhand-left,
inhand-right) and their properties so the file conforms to RSI meta.json
formatting rules.
| { | ||
| "version": 1, | ||
| "license": "CC-BY-SA-3.0", | ||
| "copyright": "Taked from Paradise station, inhand sprited by Rinary1 (Github)", |
There was a problem hiding this comment.
Опечатка в copyright: "Taked" → "Taken".
Мелочь, но это атрибуция автору, лучше починить сразу.
Details
- "copyright": "Taked from Paradise station, inhand sprited by Rinary1 (Github)",
+ "copyright": "Taken from Paradise station, inhand sprited by Rinary1 (Github)",📝 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.
| "copyright": "Taked from Paradise station, inhand sprited by Rinary1 (Github)", | |
| "copyright": "Taken from Paradise station, inhand sprited by Rinary1 (Github)", |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In
`@Resources/Textures/_Starlight/Clothing/Uniforms/Jumpskirt/ntrep.rsi/meta.json`
at line 4, Fix the typo in the meta.json attribute: update the "copyright" value
in meta.json (the "copyright" field shown in the diff) by replacing "Taked from
Paradise station, inhand sprited by Rinary1 (Github)" with "Taken from Paradise
station, inhand sprited by Rinary1 (Github)" so the attribution reads correctly.
| { | ||
| "version": 1, | ||
| "license": "CC-BY-SA-3.0", | ||
| "copyright": "Taken from ParadiseStation | Salvage/Mining PDAs by mikeysaurus, Veteran Salvage/Mining PDAs by PeterPoley for Starlight | Senior Chemist/Corpsman+Vet Corpsman PDA by wonderfulnewworld (github) for Starlight | Paramedic and Senior Paramedic by TacoLlama (github)", | ||
| "size": { | ||
| "x": 32, | ||
| "y": 32 | ||
| }, | ||
| "states": [ | ||
| { | ||
| "name": "pda" | ||
| }, | ||
| { | ||
| "name": "id_overlay" | ||
| }, | ||
| { | ||
| "name": "equipped-BELT", | ||
| "directions": 4 | ||
| }, | ||
| { | ||
| "name": "inhand-left", | ||
| "directions": 4 | ||
| }, | ||
| { | ||
| "name": "inhand-right", | ||
| "directions": 4 | ||
| }, | ||
| { | ||
| "name": "insert_overlay" | ||
| }, | ||
| { | ||
| "name": "light_overlay" | ||
| }, | ||
| { | ||
| "name": "equipped-IDCARD", | ||
| "directions": 4 | ||
| }, | ||
| { | ||
| "name": "pda-blueshield", | ||
| "copyright": "Made by SapphicHaymaker for Starlight", | ||
| "delays": [ | ||
| [ | ||
| 0.3, | ||
| 0.3, | ||
| 0.3, | ||
| 0.3 | ||
| ] | ||
| ] | ||
| }, | ||
| { | ||
| "name": "pda-veteranblueshield", | ||
| "copyright": "Made by SapphicHaymaker for Starlight", | ||
| "delays": [ | ||
| [ | ||
| 0.3, | ||
| 0.3, | ||
| 0.3, | ||
| 0.3 | ||
| ] | ||
| ] | ||
| }, | ||
| { | ||
| "name": "pda-mining" | ||
| }, | ||
| { | ||
| "name": "pda-mailtech" | ||
| }, | ||
| { | ||
| "name": "pda-ntnc-cs" | ||
| }, | ||
| { | ||
| "name": "pda-commander" | ||
| }, | ||
| { | ||
| "name": "pda-salvagelead" | ||
| }, | ||
| { | ||
| "name": "pda-veteransalvagelead" | ||
| }, | ||
| { | ||
| "name": "pda-veteransalvage" | ||
| }, | ||
| { | ||
| "name": "pda-veteranmining" | ||
| }, | ||
| { | ||
| "name": "pda-paramedic", | ||
| "delays": [ | ||
| [ | ||
| 0.3, | ||
| 0.3, | ||
| 0.3, | ||
| 0.3 | ||
| ] | ||
| ] | ||
| }, | ||
| { | ||
| "name": "pda-seniorparamedic", | ||
| "delays": [ | ||
| [ | ||
| 0.3, | ||
| 0.3, | ||
| 0.3, | ||
| 0.3 | ||
| ] | ||
| ] | ||
| }, | ||
| { | ||
| "name": "pda-seniorchemist" | ||
| }, | ||
| { | ||
| "name": "pda-veteranbrigmedic", | ||
| "delays": [ | ||
| [ | ||
| 0.3, | ||
| 0.3, | ||
| 0.3, | ||
| 0.3 | ||
| ] | ||
| ] | ||
| }, | ||
| { | ||
| "name": "pda-corpsman", | ||
| "delays": [ | ||
| [ | ||
| 0.3, | ||
| 0.3, | ||
| 0.3, | ||
| 0.3 | ||
| ] | ||
| ] | ||
| }, | ||
| { | ||
| "name": "pda-veterancorpsman", | ||
| "delays": [ | ||
| [ | ||
| 0.3, | ||
| 0.3, | ||
| 0.3, | ||
| 0.3 | ||
| ] | ||
| ] | ||
| } | ||
| ] | ||
| } |
There was a problem hiding this comment.
Приведи формат JSON к единому стилю (4 пробела, без табов)
Сейчас в файле смешаны табы и разные отступы. Для RSI meta.json здесь ожидается 4-пробельная индентация.
Based on learnings: "Applies to Resources///meta.json : Keep RSI meta.json ordered as version, license, copyright, size, states with 4-space indentation"
🧰 Tools
🪛 GitHub Actions: RSI Validator
[error] 1-1: validate_rsis failed: pda: failed to open state pda.png
[error] 1-1: validate_rsis failed: pda-mining: failed to open state pda-mining.png
[error] 1-1: validate_rsis failed: pda-mailtech: failed to open state pda-mailtech.png
[error] 1-1: validate_rsis failed: pda-ntnc-cs: failed to open state pda-ntnc-cs.png
[error] 1-1: validate_rsis failed: pda-commander: failed to open state pda-commander.png
[error] 1-1: validate_rsis failed: pda-salvagelead: failed to open state pda-salvagelead.png
[error] 1-1: validate_rsis failed: pda-veteransalvagelead: failed to open state pda-veteransalvagelead.png
[error] 1-1: validate_rsis failed: pda-veteranmining: failed to open state pda-veteranmining.png
[error] 1-1: validate_rsis failed: pda-paramedic: failed to open state pda-paramedic.png
[error] 1-1: validate_rsis failed: pda-seniorparamedic: failed to open state pda-seniorparamedic.png
[error] 1-1: validate_rsis failed: pda-seniorchemist: failed to open state pda-seniorchemist.png
[error] 1-1: validate_rsis failed: pda-veteranbrigmedic: failed to open state pda-veteranbrigmedic.png
[error] 1-1: validate_rsis failed: pda-corpsman: failed to open state pda-corpsman.png
[error] 1-1: validate_rsis failed: pda-veterancorpsman: failed to open state pda-veterancorpsman.png
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@Resources/Textures/_Starlight/Objects/Devices/pda.rsi/meta.json` around lines
1 - 145, The meta.json mixes tabs and inconsistent indentation and the top-level
keys/order must follow RSI style; open
Resources/Textures/_Starlight/Objects/Devices/pda.rsi/meta.json and reformat the
entire file to use 4-space indentation (no tabs), ensure the top-level keys are
ordered as: version, license, copyright, size, states, and make each state
object (e.g., entries with "name": "pda", "pda-blueshield", "pda-corpsman",
etc.) consistently indented with their nested arrays (like "delays") aligned to
4-space levels; preserve all existing property names/values but normalize
spacing and alignment throughout.
| "states": [ | ||
| { | ||
| "name": "pda" | ||
| }, | ||
| { | ||
| "name": "id_overlay" | ||
| }, | ||
| { | ||
| "name": "equipped-BELT", | ||
| "directions": 4 | ||
| }, | ||
| { | ||
| "name": "inhand-left", | ||
| "directions": 4 | ||
| }, | ||
| { | ||
| "name": "inhand-right", | ||
| "directions": 4 | ||
| }, | ||
| { | ||
| "name": "insert_overlay" | ||
| }, | ||
| { | ||
| "name": "light_overlay" | ||
| }, | ||
| { | ||
| "name": "equipped-IDCARD", | ||
| "directions": 4 | ||
| }, | ||
| { | ||
| "name": "pda-blueshield", | ||
| "copyright": "Made by SapphicHaymaker for Starlight", | ||
| "delays": [ | ||
| [ | ||
| 0.3, | ||
| 0.3, | ||
| 0.3, | ||
| 0.3 | ||
| ] | ||
| ] | ||
| }, | ||
| { | ||
| "name": "pda-veteranblueshield", | ||
| "copyright": "Made by SapphicHaymaker for Starlight", | ||
| "delays": [ | ||
| [ | ||
| 0.3, | ||
| 0.3, | ||
| 0.3, | ||
| 0.3 | ||
| ] | ||
| ] | ||
| }, | ||
| { | ||
| "name": "pda-mining" | ||
| }, | ||
| { | ||
| "name": "pda-mailtech" | ||
| }, | ||
| { | ||
| "name": "pda-ntnc-cs" | ||
| }, | ||
| { | ||
| "name": "pda-commander" | ||
| }, | ||
| { | ||
| "name": "pda-salvagelead" | ||
| }, | ||
| { | ||
| "name": "pda-veteransalvagelead" | ||
| }, | ||
| { | ||
| "name": "pda-veteransalvage" | ||
| }, | ||
| { | ||
| "name": "pda-veteranmining" | ||
| }, | ||
| { | ||
| "name": "pda-paramedic", | ||
| "delays": [ | ||
| [ | ||
| 0.3, | ||
| 0.3, | ||
| 0.3, | ||
| 0.3 | ||
| ] | ||
| ] | ||
| }, | ||
| { | ||
| "name": "pda-seniorparamedic", | ||
| "delays": [ | ||
| [ | ||
| 0.3, | ||
| 0.3, | ||
| 0.3, | ||
| 0.3 | ||
| ] | ||
| ] | ||
| }, | ||
| { | ||
| "name": "pda-seniorchemist" | ||
| }, | ||
| { | ||
| "name": "pda-veteranbrigmedic", | ||
| "delays": [ | ||
| [ | ||
| 0.3, | ||
| 0.3, | ||
| 0.3, | ||
| 0.3 | ||
| ] | ||
| ] | ||
| }, | ||
| { | ||
| "name": "pda-corpsman", | ||
| "delays": [ | ||
| [ | ||
| 0.3, | ||
| 0.3, | ||
| 0.3, | ||
| 0.3 | ||
| ] | ||
| ] | ||
| }, | ||
| { | ||
| "name": "pda-veterancorpsman", | ||
| "delays": [ | ||
| [ | ||
| 0.3, | ||
| 0.3, | ||
| 0.3, | ||
| 0.3 | ||
| ] | ||
| ] | ||
| } | ||
| ] |
There was a problem hiding this comment.
Блокер: states ссылаются на отсутствующие PNG (падает RSI Validator)
По логам пайплайна не открываются pda.png, pda-mining.png, pda-mailtech.png и ряд других состояний из этого списка. Нужно либо добавить соответствующие файлы в pda.rsi, либо удалить/переименовать состояния в meta.json до фактических имен ассетов.
As per coding guidelines: "Run RSI validation for RSI metadata changes"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@Resources/Textures/_Starlight/Objects/Devices/pda.rsi/meta.json` around lines
9 - 144, meta.json's "states" include entries that reference missing sprite
files (e.g., "pda", "pda-mining", "pda-mailtech", "pda-ntnc-cs",
"pda-commander", etc.), causing the RSI Validator to fail; fix by either adding
the corresponding PNG assets into the PDA RSI bundle with matching filenames or
remove/rename the offending state entries in meta.json to the actual asset
names, then re-run the RSI validator to confirm; check and update the specific
state entries like "pda", "pda-mining", "pda-mailtech", "pda-ntnc-cs",
"pda-commander", "pda-salvagelead", "pda-paramedic", "pda-seniorparamedic",
"pda-veteranbrigmedic", "pda-corpsman", and "pda-veterancorpsman" to ensure they
map to real PNGs.
| public sealed class GavelSystem : EntitySystem | ||
| { | ||
| [Dependency] private readonly SharedAudioSystem _audio = default!; | ||
| [Dependency] private readonly IGameTiming _timing = default!; | ||
| [Dependency] private readonly PopupSystem _popup = default!; | ||
| [Dependency] private readonly MetaDataSystem _metaData = default!; |
There was a problem hiding this comment.
🧹 Nitpick | 🔵 Trivial
Server-only поведение без shared/prediction.
Удар Gavel — действие игрока, для него ожидается мгновенный фидбек. Сейчас вся логика серверная: при лагах попап и звук появятся с задержкой. Если хочется UX без рывков — вынесите общую часть (cooldown gate, увеличение Counter, popup) в Content.Shared/_Starlight/Gavel/SharedGavelSystem.cs и оставьте authority-операции (RemComp, переименование) на сервере. Если намеренно server-only — оставьте, это допустимо для администраторских/редких событий.
Based on learnings: «If a shared system needs client/server special cases, keep a shared base plus both server and client concrete systems» и «For player-facing actions in Content.Server, verify the shared prediction path».
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@Content.Server/_Starlight/Gavel/GavelSystem.cs` around lines 10 - 15, Сейчас
вся логика удара Gavel живёт в серверной GavelSystem, из‑за чего клиентский
фидбек (звук, попап, увеличение счётчика, cooldown) задерживается при лаге;
вынесите общую предсказуемую часть в новый SharedGavelSystem
(Content.Shared/_Starlight/Gavel/SharedGavelSystem.cs) — туда поместите cooldown
gate, увеличение Counter, показ popup и воспроизведение локального
звука/эффекта, чтобы клиент мог предсказать действие; оставьте в GavelSystem
только авторитетные операции (удаление компонентов через RemComp,
переименование/синхронизация метаданных и любые серверные side‑effects) и вызовы
SharedGavelSystem для общей логики; при реализации убедитесь, что
подписки/вызовы в GavelSystem используют и делегируют в SharedGavelSystem, а
SharedGavelSystem не выполняет серверных-only операций вроде RemComp или
_metaData изменения.
| private void OnHit(EntityUid uid, GavelHammerComponent component, AfterInteractEvent args) | ||
| { | ||
| if (args.Target == null || | ||
| args.CanReach == false || | ||
| args.Handled || | ||
| !TryComp<GavelBlockComponent>(args.Target, out var comp)) | ||
| return; | ||
|
|
||
| if ((comp.PrevSound != null && _timing.CurTime - comp.PrevSound > comp.Cooldown) || comp.PrevSound == null) | ||
| { | ||
| comp.Counter += 1; | ||
| _audio.PlayPvs(comp.HitSound, args.Target.Value); | ||
| comp.PrevSound = _timing.CurTime; | ||
| } | ||
|
|
||
| if (comp.Counter > comp.MaxCounter) | ||
| { | ||
| var blockMeta = MetaData(args.Target.Value); | ||
| var hammerMeta = MetaData(uid); | ||
|
|
||
| _popup.PopupEntity(Loc.GetString("gavel-broken", ("ent", blockMeta.EntityName)), args.Target.Value, PopupType.MediumCaution); | ||
| _popup.PopupEntity(Loc.GetString("gavel-broken", ("ent", hammerMeta.EntityName)), uid, PopupType.MediumCaution); | ||
|
|
||
| _metaData.SetEntityName(args.Target.Value, $"{Loc.GetString("gavel-broken-entityname-prefix")} {blockMeta.EntityName}"); | ||
| _metaData.SetEntityName(uid, $"{Loc.GetString("gavel-broken-entityname-prefix")} {hammerMeta.EntityName}"); | ||
|
|
||
| RemComp<GavelBlockComponent>(args.Target.Value); | ||
| RemComp<GavelHammerComponent>(uid); | ||
| } | ||
| } |
There was a problem hiding this comment.
args.Handled не выставляется при пробитии.
После того как блок «сломан» (L48-49), args.Handled остаётся false. Другие подписчики AfterInteractEvent (как на молотке-Hammer, так и на стороне цели) продолжат отрабатывать тот же удар — потенциально с уже снятыми компонентами, но с побочными эффектами на target/uid. На срабатывании cooldown тоже стоит сигнализировать «обработано», иначе двойные popup-ы и звуки от других систем на тот же клик.
Предлагаемый фикс
- if (args.Target == null ||
- args.CanReach == false ||
- args.Handled ||
- !TryComp<GavelBlockComponent>(args.Target, out var comp))
+ if (args.Target == null ||
+ !args.CanReach ||
+ args.Handled ||
+ !TryComp<GavelBlockComponent>(args.Target, out var comp))
return;
- if ((comp.PrevSound != null && _timing.CurTime - comp.PrevSound > comp.Cooldown) || comp.PrevSound == null)
+ if (comp.PrevSound is null || _timing.CurTime - comp.PrevSound.Value > comp.Cooldown)
{
comp.Counter += 1;
_audio.PlayPvs(comp.HitSound, args.Target.Value);
comp.PrevSound = _timing.CurTime;
+ args.Handled = true;
}
if (comp.Counter > comp.MaxCounter)
{
...
RemComp<GavelBlockComponent>(args.Target.Value);
RemComp<GavelHammerComponent>(uid);
+ args.Handled = true;
}🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@Content.Server/_Starlight/Gavel/GavelSystem.cs` around lines 22 - 51, The
AfterInteractEvent's Handled flag isn't set, so other handlers run after the
gavel logic; update OnHit to set args.Handled = true whenever you consume the
interaction: set args.Handled = true after playing the hit sound/cooldown branch
(where comp.Counter is incremented/comp.PrevSound updated) and also set
args.Handled = true in the block-broken branch (where you show popups, rename
entities, remove GavelBlockComponent and GavelHammerComponent) so the event is
not processed further by other subscribers.
| _metaData.SetEntityName(args.Target.Value, $"{Loc.GetString("gavel-broken-entityname-prefix")} {blockMeta.EntityName}"); | ||
| _metaData.SetEntityName(uid, $"{Loc.GetString("gavel-broken-entityname-prefix")} {hammerMeta.EntityName}"); |
There was a problem hiding this comment.
Конкатенация локализованных строк через $"..." обходит локализацию.
SetEntityName в виде "{префикс} {EntityName}" жёстко хардкодит порядок и пробел между токенами. Для языков с другим порядком слов это сломается. Используйте Fluent-плейсхолдер с аргументом, как в gavel-broken:
Предлагаемый фикс (FTL + код)
- _metaData.SetEntityName(args.Target.Value, $"{Loc.GetString("gavel-broken-entityname-prefix")} {blockMeta.EntityName}");
- _metaData.SetEntityName(uid, $"{Loc.GetString("gavel-broken-entityname-prefix")} {hammerMeta.EntityName}");
+ _metaData.SetEntityName(args.Target.Value,
+ Loc.GetString("gavel-broken-entityname", ("ent", blockMeta.EntityName)));
+ _metaData.SetEntityName(uid,
+ Loc.GetString("gavel-broken-entityname", ("ent", hammerMeta.EntityName)));В .ftl:
gavel-broken-entityname = сломанный {$ent}
As per coding guidelines: «Every player-facing string must be localized» — а локализация — это не только Loc.GetString, но и порядок токенов внутри fluent-сообщений.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@Content.Server/_Starlight/Gavel/GavelSystem.cs` around lines 45 - 46, The
code concatenates a localized prefix and an entity name directly in
GavelSystem.cs (_metaData.SetEntityName calls), which breaks localization order;
change both SetEntityName calls to use a fluent/localization key with a
placeholder (e.g. "gavel-broken-entityname") and pass the entity name as the
"ent" argument instead of using $"..."; also add/update the corresponding .ftl
entry (gavel-broken-entityname = сломанный {$ent}) so the formatter controls
token order and spacing.
| - type: entity | ||
| id: ClothingOuterVestWebEliteFilledMAA | ||
| parent: ClothingOuterVestWebElite | ||
| suffix: Filled | ||
| components: | ||
| - type: Storage #Starlight | ||
| maxItemSize: Normal | ||
| grid: | ||
| - 0,0,1,0 #left | ||
| - 0,1,0,1 #left - cube | ||
| - 3,0,10,1 | ||
| - 12,0,13,1 #right | ||
| whitelist: | ||
| tags: | ||
| - Bola | ||
| - CigPack | ||
| - Taser | ||
| - SecBeltEquip | ||
| - Radio | ||
| - Sidearm | ||
| - MagazinePistol | ||
| - MagazineMagnum | ||
| - CombatKnife | ||
| - Truncheon | ||
| - HandGrenade | ||
| components: | ||
| - Stunbaton | ||
| - FlashOnTrigger | ||
| - SmokeOnTrigger | ||
| - Flash | ||
| - Handcuff | ||
| - BallisticAmmoProvider | ||
| - CartridgeAmmo | ||
| - DoorRemote | ||
| - Whistle | ||
| - BalloonPopper | ||
| - type: EntityTableContainerFill | ||
| containers: | ||
| storagebase: !type:AllSelector | ||
| children: | ||
| - id: WeaponPistolStechkin | ||
| - id: MagazinePistolFMJ | ||
| - id: MagazinePistolSP | ||
| - id: Stunbaton | ||
| - id: Handcuffs | ||
| - id: Handcuffs | ||
| - id: GrenadeShrapnel | ||
| - id: Bola | ||
| - id: HoloprojectorSecurity |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
ast-grep --pattern $'- type: entity
id: ClothingOuterVestWebElite
$$$'Repository: ss14-art/open-space
Length of output: 241
🏁 Script executed:
rg -A 20 'id: ClothingOuterVestWebElite' Resources/Repository: ss14-art/open-space
Length of output: 3708
🏁 Script executed:
fd -g 'belt.yml' -o -g 'vests.yml' Resources/Repository: ss14-art/open-space
Length of output: 180
🏁 Script executed:
rg 'ClothingOuterVestWebElite' Resources/ -t ymlRepository: ss14-art/open-space
Length of output: 91
🏁 Script executed:
rg -A 50 'id: ClothingOuterVestWebElite$' Resources/Prototypes/Entities/Clothing/OuterClothing/armor.ymlRepository: ss14-art/open-space
Length of output: 1711
🏁 Script executed:
ls -la Resources/Prototypes/_StarLight/Catalog/Fills/Items/Repository: ss14-art/open-space
Length of output: 297
🏁 Script executed:
grep -E '^- type: entity| id: ' Resources/Prototypes/_StarLight/Catalog/Fills/Items/belt.yml | head -30Repository: ss14-art/open-space
Length of output: 725
🏁 Script executed:
find Resources/Prototypes/_StarLight/Catalog/Fills -name '*.yml' | xargs grep -l 'ClothingOuter'Repository: ss14-art/open-space
Length of output: 198
🏁 Script executed:
rg 'ClothingOuter.*Filled' Resources/Prototypes/_StarLight/Catalog/Fills/ -lRepository: ss14-art/open-space
Length of output: 124
🏁 Script executed:
ls -la Resources/Prototypes/_StarLight/Catalog/Fills/Items/Repository: ss14-art/open-space
Length of output: 297
Перенесите vest из belt.yml в отдельный файл.
ClothingOuterVestWebEliteFilledMAA — это outer-vest, а не belt. Он не должен находиться в belt.yml. Создайте Resources/Prototypes/_StarLight/Catalog/Fills/Items/vests.yml и переместите туда все outer-clothing fills (в т. ч. этот).
Примечание: Storage в child-е — не дублирование. Parent ClothingOuterVestWebElite Storage-компонента не содержит, поэтому добавление его в child логично и не создаёт рассинхронов.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@Resources/Prototypes/_StarLight/Catalog/Fills/Items/belt.yml` around lines
115 - 163, Перенесите запись сущности ClothingOuterVestWebEliteFilledMAA из
belt.yml в новый файл
Resources/Prototypes/_StarLight/Catalog/Fills/Items/vests.yml: создайте
vests.yml, переместите туда весь блок entity с id:
ClothingOuterVestWebEliteFilledMAA (и прочие outer-clothing fills из текущего
belt.yml), сохранив полностью секции components (включая Storage и
EntityTableContainerFill) и структуру YAML; не удаляйте Storage в child (Storage
в parent ClothingOuterVestWebElite отсутствует, поэтому компонент должен
остаться в child), и обновите перечисления/импорты при необходимости, чтобы
ссылки на этот fill продолжали работать.
| id: ClothingBeltMilitaryWebbingFilledDamageControle | ||
| parent: ClothingBeltMilitaryWebbing | ||
| suffix: Filled | ||
| components: | ||
| - type: EntityTableContainerFill | ||
| containers: | ||
| storagebase: !type:AllSelector | ||
| children: | ||
| - id: SyndicateJawsOfLife | ||
| - id: PowerDrill | ||
| - id: Multitool | ||
| - id: MetalFoamGrenade | ||
| - id: MetalFoamGrenade | ||
| - id: AirGrenade | ||
|
|
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
rg -nP 'DamageControle'Repository: ss14-art/open-space
Length of output: 182
Исправить опечатку в ID: DamageControle → DamageControl.
ID ещё не используется в ссылках кодовой базы, поэтому переименование безопасно. После фиксации описание public interface останется корректным.
Фикс
- id: ClothingBeltMilitaryWebbingFilledDamageControle
+ id: ClothingBeltMilitaryWebbingFilledDamageControl📝 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.
| id: ClothingBeltMilitaryWebbingFilledDamageControle | |
| parent: ClothingBeltMilitaryWebbing | |
| suffix: Filled | |
| components: | |
| - type: EntityTableContainerFill | |
| containers: | |
| storagebase: !type:AllSelector | |
| children: | |
| - id: SyndicateJawsOfLife | |
| - id: PowerDrill | |
| - id: Multitool | |
| - id: MetalFoamGrenade | |
| - id: MetalFoamGrenade | |
| - id: AirGrenade | |
| id: ClothingBeltMilitaryWebbingFilledDamageControl | |
| parent: ClothingBeltMilitaryWebbing | |
| suffix: Filled | |
| components: | |
| - type: EntityTableContainerFill | |
| containers: | |
| storagebase: !type:AllSelector | |
| children: | |
| - id: SyndicateJawsOfLife | |
| - id: PowerDrill | |
| - id: Multitool | |
| - id: MetalFoamGrenade | |
| - id: MetalFoamGrenade | |
| - id: AirGrenade |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@Resources/Prototypes/_StarLight/Catalog/Fills/Items/belt.yml` around lines
166 - 180, Переименовать опечатанный ID в блоке описания: заменить
ClothingBeltMilitaryWebbingFilledDamageControle на
ClothingBeltMilitaryWebbingFilledDamageControl в YAML (тот же сущностный блок с
type EntityTableContainerFill), оставив все остальные поля без изменений;
проверьте проект на случайные вхождения старого ID и обновите их при
обнаружении, но сейчас можно просто исправить значение ID в этом файле.
| equipment: | ||
| # head: ClothingHeadHatBeretBlueShield | ||
| # id: BlueShieldPDA | ||
| ears: ClothingHeadsetAltBSO # Starlight | ||
| # belt: ClothingBeltBlueShieldWebbingFilled | ||
| gloves: ClothingHandsGlovesCombat | ||
| pocket1: WeaponMultiphaseGun | ||
| pocket2: HandheldBSOCrewMonitor | ||
| storage: | ||
| back: | ||
| - Flash | ||
| - ClothingMaskGasBSO |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
rg -nP --type=yaml '\bid:\s*BlueShieldPDA\b'
rg -nP --type=yaml '\bid:\s*ClothingHeadHatBeretBlueShield\b'
rg -nP --type=yaml '\bid:\s*ClothingBeltBlueShieldWebbingFilled\b'Repository: ss14-art/open-space
Length of output: 839
🏁 Script executed:
head -80 Resources/Prototypes/_StarLight/Roles/Jobs/Representives/blueshield.yml | cat -nRepository: ss14-art/open-space
Length of output: 2181
🏁 Script executed:
sed -n '1,70p' Resources/Prototypes/_StarLight/Roles/Jobs/Representives/blueshield.yml | cat -nRepository: ss14-art/open-space
Length of output: 2043
🏁 Script executed:
rg -B5 -A15 'access:' Resources/Prototypes/_StarLight/Roles/Jobs/Representives/blueshield.yml | head -50Repository: ss14-art/open-space
Length of output: 450
🏁 Script executed:
rg -A30 'id: BlueShield' Resources/Prototypes/_StarLight/Loadouts/Jobs/blueshield.yml | head -60Repository: ss14-art/open-space
Length of output: 1303
🏁 Script executed:
rg -B2 -A10 'radio' Resources/Prototypes/_StarLight/Roles/Jobs/Representives/blueshield.ymlRepository: ss14-art/open-space
Length of output: 45
🏁 Script executed:
rg -B5 -A20 'type: loadoutGroup' Resources/Prototypes/_StarLight/Loadouts/loadout_groups.yml | grep -A20 'BlueShield'Repository: ss14-art/open-space
Length of output: 2469
🏁 Script executed:
sed -n '100,150p' Resources/Prototypes/_StarLight/Loadouts/Jobs/blueshield.yml | cat -nRepository: ss14-art/open-space
Length of output: 921
🏁 Script executed:
rg -B5 -A25 'id: BlueShield' Resources/Prototypes/_StarLight/Roles/Jobs/Representives/blueshield.yml | head -40Repository: ss14-art/open-space
Length of output: 1042
🏁 Script executed:
rg 'loadouts' Resources/Prototypes/_StarLight/Roles/Jobs/Representives/blueshield.ymlRepository: ss14-art/open-space
Length of output: 45
🏁 Script executed:
cat Resources/Prototypes/_StarLight/Roles/Jobs/Representives/blueshield.ymlRepository: ss14-art/open-space
Length of output: 1663
🏁 Script executed:
rg -B3 -A3 'loadouts:' Resources/Prototypes/_StarLight/Roles/Jobs/ | head -40Repository: ss14-art/open-space
Length of output: 45
🏁 Script executed:
grep -r 'type: job' Resources/Prototypes/_StarLight/Roles/Jobs/Representives/ | head -5Repository: ss14-art/open-space
Length of output: 245
🏁 Script executed:
rg 'type: job' Resources/Prototypes/_StarLight/Roles/Jobs/Representives/blueshield.yml -A50 | grep -E '(startingGear|loadouts)'Repository: ss14-art/open-space
Length of output: 94
Раскомментируйте id: BlueShieldPDA в startingGear.
Без ID-карты персонаж не сможет использовать access-список (L20–L49). Двери не откроются, каналы радио недоступны. Предметы существуют в кодовой базе:
BlueShieldPDAопределён в pda.yml и loadout_groups.ymlClothingHeadHatBeretBlueShieldесть в hats.ymlClothingBeltBlueShieldWebbingFilledесть в belt.yml
Либо включите эти строки, либо явно поясните причину отключения.
Предлагаемый фикс
equipment:
- # head: ClothingHeadHatBeretBlueShield
- # id: BlueShieldPDA
+ head: ClothingHeadHatBeretBlueShield
+ id: BlueShieldPDA
ears: ClothingHeadsetAltBSO # Starlight
- # belt: ClothingBeltBlueShieldWebbingFilled
+ belt: ClothingBeltBlueShieldWebbingFilled📝 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.
| equipment: | |
| # head: ClothingHeadHatBeretBlueShield | |
| # id: BlueShieldPDA | |
| ears: ClothingHeadsetAltBSO # Starlight | |
| # belt: ClothingBeltBlueShieldWebbingFilled | |
| gloves: ClothingHandsGlovesCombat | |
| pocket1: WeaponMultiphaseGun | |
| pocket2: HandheldBSOCrewMonitor | |
| storage: | |
| back: | |
| - Flash | |
| - ClothingMaskGasBSO | |
| equipment: | |
| head: ClothingHeadHatBeretBlueShield | |
| id: BlueShieldPDA | |
| ears: ClothingHeadsetAltBSO # Starlight | |
| belt: ClothingBeltBlueShieldWebbingFilled | |
| gloves: ClothingHandsGlovesCombat | |
| pocket1: WeaponMultiphaseGun | |
| pocket2: HandheldBSOCrewMonitor | |
| storage: | |
| back: | |
| - Flash | |
| - ClothingMaskGasBSO |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@Resources/Prototypes/_StarLight/Roles/Jobs/Representives/blueshield.yml`
around lines 56 - 67, В файле роли раскомментируйте строку с идентификатором
PDA, чтобы персонаж получал карту доступа: восстановите "id: BlueShieldPDA" в
блоке startingGear/equipment (и при необходимости связанные строки типа "head:
ClothingHeadHatBeretBlueShield" или "belt: ClothingBeltBlueShieldWebbingFilled")
— это гарантирует работу access-списка, открытия дверей и доступа к радио; если
вы намеренно отключаете карту, добавьте рядом краткую комментарий/пояснение
причины отключения вместо простого комментирования строки.
| - !type:DepartmentTimeRequirement | ||
| department: Command | ||
| time: 62000 # 20 hrs |
There was a problem hiding this comment.
Комментарий не соответствует значению.
62000 секунд ≈ 17.2 часа, не 20. В соседнем blueshield.yml для тех же «20 hrs» стоит 72000. Либо приведите значение к 72000, либо исправьте комментарий, чтобы playtime-гейт у Representative не «уезжал» относительно остальных ролей.
Предлагаемый фикс
- !type:DepartmentTimeRequirement
department: Command
- time: 62000 # 20 hrs
+ time: 72000 # 20 hrs📝 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.
| - !type:DepartmentTimeRequirement | |
| department: Command | |
| time: 62000 # 20 hrs | |
| - !type:DepartmentTimeRequirement | |
| department: Command | |
| time: 72000 # 20 hrs |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In
`@Resources/Prototypes/_StarLight/Roles/Jobs/Representives/nanotrasenrepresentative.yml`
around lines 7 - 9, Значение в блоке !type:DepartmentTimeRequirement
(department: Command, time: 62000) не соответствует комментарию "20 hrs" — 62000
с ≈17.2 ч, тогда как в blueshield.yml для 20 ч используется 72000; либо
увеличьте time до 72000, либо поправьте комментарий на корректное время (~17.2
hrs) так чтобы playtime‑гейт для Representative согласовывался с остальными
ролями (исправьте поле time в том же !type:DepartmentTimeRequirement или
обновите комментарий).
| - Cargo | ||
| - Atmospherics | ||
| - Cargo | ||
| - Medical |
There was a problem hiding this comment.
Дубликат Cargo в access.
- Cargo
- Atmospherics
- - Cargo
- Medical📝 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.
| - Cargo | |
| - Atmospherics | |
| - Cargo | |
| - Medical | |
| - Cargo | |
| - Atmospherics | |
| - Medical |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In
`@Resources/Prototypes/_StarLight/Roles/Jobs/Representives/nanotrasenrepresentative.yml`
around lines 34 - 37, В файле nanotrasenrepresentative.yml в секции access
присутствует дублирующая запись "Cargo"; удалите одну из повторяющихся строк в
списке access, оставив уникальные значения (например Cargo, Atmospherics,
Medical) чтобы убрать дубликат и сохранить корректный набор прав.
| - type: latheRecipe | ||
| parent: BaseJumpsuitRecipe | ||
| id: ClothingUniformJumpskirtCargoFormal | ||
| result: ClothingUniformJumpsuitCargoFormal | ||
|
|
||
| - type: latheRecipe | ||
| parent: BaseJumpsuitRecipe | ||
| id: ClothingUniformJumpsuitCargoAlt | ||
| result: ClothingUniformJumpsuitCargoAlt | ||
|
|
||
| - type: latheRecipe | ||
| parent: BaseJumpsuitRecipe | ||
| id: ClothingUniformJumpsuitCargoFormal | ||
| result: ClothingUniformJumpsuitCargoFormal | ||
|
|
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
rg -nP '^\s*id:\s*ClothingUniformJumpskirtCargoFormal\b' --type=yml -C2Repository: ss14-art/open-space
Length of output: 91
🏁 Script executed:
# Найти все вхождения id и result с Jumpskirt/Jumpsuit в clothing.yml
rg -n 'ClothingUniformJumpskirt|ClothingUniformJumpsuit' Resources/Prototypes/Recipes/Lathes/clothing.yml
# Найти все вхождения Coroner в clothing.yml
rg -n 'Coroner|MedicalDoctor' Resources/Prototypes/Recipes/Lathes/clothing.yml | head -20Repository: ss14-art/open-space
Length of output: 12730
🏁 Script executed:
# Проверить наличие прототипов в Resources/Prototypes
rg -n 'id:\s*ClothingUniformJumpskirtCargoFormal' Resources/Prototypes/ 2>/dev/null
rg -n 'id:\s*ClothingUniformJumpsuitCargoFormal' Resources/Prototypes/ 2>/dev/nullRepository: ss14-art/open-space
Length of output: 490
🏁 Script executed:
# Check if Coroner prototypes exist
rg -n 'id:\s*ClothingUniformJumpsuitCoroner|id:\s*ClothingUniformJumpsuitCoronerAlt|id:\s*ClothingUniformJumpskirtCoroner' Resources/Prototypes/ 2>/dev/null | grep -v 'clothing.yml'Repository: ss14-art/open-space
Length of output: 410
Три мисматча id и result в рецептах юниформ.
- L458-459 — jumpskirt id → jumpsuit result:
- type: latheRecipe
parent: BaseJumpsuitRecipe
id: ClothingUniformJumpskirtCargoFormal
- result: ClothingUniformJumpsuitCargoFormal
+ result: ClothingUniformJumpskirtCargoFormal- L555-556 — Coroner suit id → MedicalDoctor result:
- type: latheRecipe
parent: BaseJumpsuitRecipe
id: ClothingUniformJumpsuitCoroner
- result: ClothingUniformJumpsuitMedicalDoctor
+ result: ClothingUniformJumpsuitCoroner- L565-566 — CoronerAlt suit id → MedicalDoctor result:
- type: latheRecipe
parent: BaseJumpsuitRecipe
id: ClothingUniformJumpsuitCoronerAlt
- result: ClothingUniformJumpsuitMedicalDoctor
+ result: ClothingUniformJumpsuitCoronerAltВсе три прототипа существуют. Рецепты должны производить именно заявленные предметы.
📝 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.
| - type: latheRecipe | |
| parent: BaseJumpsuitRecipe | |
| id: ClothingUniformJumpskirtCargoFormal | |
| result: ClothingUniformJumpsuitCargoFormal | |
| - type: latheRecipe | |
| parent: BaseJumpsuitRecipe | |
| id: ClothingUniformJumpsuitCargoAlt | |
| result: ClothingUniformJumpsuitCargoAlt | |
| - type: latheRecipe | |
| parent: BaseJumpsuitRecipe | |
| id: ClothingUniformJumpsuitCargoFormal | |
| result: ClothingUniformJumpsuitCargoFormal | |
| - type: latheRecipe | |
| parent: BaseJumpsuitRecipe | |
| id: ClothingUniformJumpskirtCargoFormal | |
| result: ClothingUniformJumpskirtCargoFormal | |
| - type: latheRecipe | |
| parent: BaseJumpsuitRecipe | |
| id: ClothingUniformJumpsuitCargoAlt | |
| result: ClothingUniformJumpsuitCargoAlt | |
| - type: latheRecipe | |
| parent: BaseJumpsuitRecipe | |
| id: ClothingUniformJumpsuitCargoFormal | |
| result: ClothingUniformJumpsuitCargoFormal |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@Resources/Prototypes/Recipes/Lathes/clothing.yml` around lines 456 - 470, The
three latheRecipe entries have mismatched result values: the recipe with id
ClothingUniformJumpskirtCargoFormal currently results in
ClothingUniformJumpsuitCargoFormal — change its result to
ClothingUniformJumpskirtCargoFormal; the Coroner suit and CoronerAlt recipe
entries that currently have result MedicalDoctor should have their result fields
set to their respective coroner prototype ids (e.g., ClothingUniformCoronerSuit
and ClothingUniformCoronerAlt) so each recipe's result matches the intended
prototype id.
| - type: latheRecipe | ||
| parent: BaseJumpsuitRecipe | ||
| id: ClothingUniformJumpsuitCoroner | ||
| result: ClothingUniformJumpsuitMedicalDoctor | ||
|
|
||
| - type: latheRecipe | ||
| parent: BaseJumpsuitRecipe | ||
| id: ClothingUniformJumpskirtSuitNurse | ||
| result: ClothingUniformJumpskirtSuitNurse | ||
|
|
||
| - type: latheRecipe | ||
| parent: BaseJumpsuitRecipe | ||
| id: ClothingUniformJumpsuitCoronerAlt | ||
| result: ClothingUniformJumpsuitMedicalDoctor | ||
|
|
||
| - type: latheRecipe | ||
| parent: BaseJumpsuitRecipe | ||
| id: ClothingUniformJumpskirtCoroner | ||
| result: ClothingUniformJumpskirtCoroner | ||
|
|
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
rg -nP '^\s*id:\s*ClothingUniformJumpsuit(Coroner|CoronerAlt)\b' --type=yml -C2Repository: ss14-art/open-space
Length of output: 91
🏁 Script executed:
#!/bin/bash
# Search for the problematic recipes
rg -nP 'id:\s*ClothingUniformJumpsuit(Coroner|CoronerAlt)' -C3Repository: ss14-art/open-space
Length of output: 2875
🏁 Script executed:
#!/bin/bash
# Read the actual file to verify current state
cd Resources/Prototypes/Recipes/Lathes
head -n 575 clothing.yml | tail -n 30Repository: ss14-art/open-space
Length of output: 882
🏁 Script executed:
#!/bin/bash
# Verify if the result entity IDs actually exist
rg -nP 'id:\s*ClothingUniformJumpsuit(Coroner|CoronerAlt|MedicalDoctor)' -C1Repository: ss14-art/open-space
Length of output: 2529
Рецепты Coroner выдают неправильное снаряжение
Рецепты ClothingUniformJumpsuitCoroner (L555–556) и ClothingUniformJumpsuitCoronerAlt (L565–566) указывают result: ClothingUniformJumpsuitMedicalDoctor, хотя должны давать соответствующие предметы. Сущности ClothingUniformJumpsuitCoroner и ClothingUniformJumpsuitCoronerAlt существуют. Рецепт ClothingUniformJumpskirtCoroner (L570–571) задан корректно, что подтверждает ошибку.
Исправление
- type: latheRecipe
parent: BaseJumpsuitRecipe
id: ClothingUniformJumpsuitCoroner
- result: ClothingUniformJumpsuitMedicalDoctor
+ result: ClothingUniformJumpsuitCoroner
- type: latheRecipe
parent: BaseJumpsuitRecipe
id: ClothingUniformJumpsuitCoronerAlt
- result: ClothingUniformJumpsuitMedicalDoctor
+ result: ClothingUniformJumpsuitCoronerAlt🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@Resources/Prototypes/Recipes/Lathes/clothing.yml` around lines 553 - 572, В
блоках рецептов с id ClothingUniformJumpsuitCoroner и
ClothingUniformJumpsuitCoronerAlt замените неверное result:
ClothingUniformJumpsuitMedicalDoctor на корректные результаты — соответственно
ClothingUniformJumpsuitCoroner и ClothingUniformJumpsuitCoronerAlt; проверьте,
что id-ы рецептов (ClothingUniformJumpsuitCoroner,
ClothingUniformJumpsuitCoronerAlt) точно соответствуют существующим сущностям и
что результатные поля теперь указывают на эти сущности вместо
ClothingUniformJumpsuitMedicalDoctor.
|
RSI Diff Bot; head commit cfd9068 merging into f9ce7ca Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Boxes/improvised.rsi
Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi
Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Boxes/toz.rsi
Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Casings/improvised_casing.rsi
Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Casings/laser_casing.rsi
Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell_toz.rsi
Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Battery/lr30_mag.rsi
Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/LightRifle/light_rifle_heavy.rsi
Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_rifle_mag.rsi
Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/40.rsi
Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/improvised_pistol_magazine.rsi
Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/dmr_mag.rsi
Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/m-52.rsi
Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/SMGs/improvised_smg_magazine.rsi
Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/SMGs/ppsh.rsi
Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/SMGs/uzi.rsi
Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Shotgun/toz.rsi
Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/improvised_lever_action_speed_loader.rsi
Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/improvised_magnum_speed_loader.rsi
Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Shotgun/shotgun_speed_loader.rsi
Resources/Audio/_Starlight/Objects/Weapons/Guns/Battery/Energy_Magnum.rsi
Resources/Audio/_Starlight/Objects/Weapons/Guns/Battery/adv_taser.rsi
Resources/Audio/_Starlight/Objects/Weapons/Guns/Battery/alien.rsi
Resources/Audio/_Starlight/Objects/Weapons/Guns/Battery/decloner.rsi
Resources/Audio/_Starlight/Objects/Weapons/Guns/Battery/dominator.rsi
|
There was a problem hiding this comment.
Actionable comments posted: 18
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (6)
Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Shotgun/toz.rsi/meta.json (1)
1-29:⚠️ Potential issue | 🟡 MinorНарушен порядок полей meta.json.
Поля должны идти в порядке:
version,license,copyright,size,states. Сейчасsizeстоит передlicenseиcopyright. Как указано в coding guidelines, RSImeta.jsonдолжен следовать строгому порядку полей.♻️ Исправление порядка полей
{ "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "By Peter Poley (wassuythefourth_47721); inhands reused from .40 magazine by TiniestShark (github)", "size": { "x": 32, "y": 32 }, - "license": "CC-BY-SA-3.0", - "copyright": "By Peter Poley (wassuythefourth_47721); inhands reused from .40 magazine by TiniestShark (github)", "states": [🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Shotgun/toz.rsi/meta.json` around lines 1 - 29, Reorder the fields in the JSON so they follow the required RSI meta.json order: put "version" first, then "license", then "copyright", then "size", and finally "states"; update the current object (which currently has "size" before "license"/"copyright") to that exact sequence, preserving all existing values and state entries like "base", "extended", "mag-1", "inhand-left-mag", and "inhand-right-mag".Resources/Audio/_Starlight/Objects/Weapons/Guns/Battery/decloner.rsi/meta.json (1)
1-58:⚠️ Potential issue | 🟡 MinorНесогласованные отступы в meta.json.
Файл использует смешанные отступы (2 и 4 пробела). Согласно coding guidelines, RSI
meta.jsonдолжен использовать 4-пробельные отступы повсеместно.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@Resources/Audio/_Starlight/Objects/Weapons/Guns/Battery/decloner.rsi/meta.json` around lines 1 - 58, The meta.json uses mixed 2- and 4-space indentation; update the file so every nested level uses 4-space indentation consistently (particularly inside the top-level objects "states" and the state entries like "normal", "mag-unshaded-0", "inhand-left", "inhand-right"), and ensure arrays of delays and nested objects align with 4 spaces throughout; no content changes, only reformat spacing to match the RSI 4-space guideline.Resources/Audio/_Starlight/Objects/Weapons/Guns/Battery/adv_taser.rsi/meta.json (1)
1-218:⚠️ Potential issue | 🟡 MinorНеправильные отступы в meta.json.
Файл использует 2-пробельные отступы. Согласно coding guidelines, RSI
meta.jsonдолжен использовать 4-пробельные отступы.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@Resources/Audio/_Starlight/Objects/Weapons/Guns/Battery/adv_taser.rsi/meta.json` around lines 1 - 218, The meta.json uses 2-space indentation but must use 4-space indentation; reformat the entire JSON (root keys like "version", "license", "size", and the "states" array including entries such as "disable0-inhand-left", "disable-unshaded-0", "stun", "stun4-inhand-right") to use 4-space indenting, preserve all keys/values and arrays/delays exactly as-is, and validate the file is still valid JSON after reformatting.Resources/Audio/_Starlight/Objects/Weapons/Guns/Battery/alien.rsi/meta.json (1)
1-47:⚠️ Potential issue | 🟡 MinorНесогласованные отступы в meta.json.
Файл использует смешанные отступы (2 и 4 пробела). Согласно coding guidelines, RSI
meta.jsonдолжен использовать 4-пробельные отступы повсеместно.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@Resources/Audio/_Starlight/Objects/Weapons/Guns/Battery/alien.rsi/meta.json` around lines 1 - 47, The meta.json uses mixed 2- and 4-space indentation; normalize the file to use 4-space indentation everywhere so all top-level keys (version, license, copyright, size) and nested structures (size.x/size.y, the states array and each state object such as "mag-unshaded-0", "mag-unshaded-1", "inhand-left", "inhand-right") are consistently indented with 4 spaces; update the entire file formatting (or run your JSON formatter/editor config) to convert any 2-space indents and align arrays/objects to 4 spaces throughout.Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/m-52.rsi/meta.json (1)
1-73:⚠️ Potential issue | 🟡 MinorНарушен порядок полей meta.json.
Поля должны идти в порядке:
version,license,copyright,size,states. Сейчасsizeстоит передlicenseиcopyright. Как указано в coding guidelines, RSImeta.jsonдолжен следовать строгому порядку полей.♻️ Исправление порядка полей
{ "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taked from RU Paradise station, updated by Rinary for new ammo types and mag states, inhands by TiniestShark (github)", "size": { "x": 32, "y": 32 }, - "license": "CC-BY-SA-3.0", - "copyright": "Taked from RU Paradise station, updated by Rinary for new ammo types and mag states, inhands by TiniestShark (github)", "states": [🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/m-52.rsi/meta.json` around lines 1 - 73, The meta.json field order is incorrect; reorder the top-level keys so they follow the required sequence: "version", then "license", then "copyright", then "size", then "states" (i.e. move the "size" block after the copyright and before "states"); update the file Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/m-52.rsi/meta.json accordingly so the JSON object uses that exact key order.Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/improvised_lever_action_speed_loader.rsi/meta.json (1)
1-66:⚠️ Potential issue | 🟡 MinorНарушен порядок полей meta.json.
Поля должны идти в порядке:
version,license,copyright,size,states. Сейчасsizeстоит передlicenseиcopyright. Как указано в coding guidelines, RSImeta.jsonдолжен следовать строгому порядку полей.♻️ Исправление порядка полей
{ "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Made by Killer Tamashi (Discord)", "size": { "x": 32, "y": 32 }, - "license": "CC-BY-SA-3.0", - "copyright": "Made by Killer Tamashi (Discord)", "states": [🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/improvised_lever_action_speed_loader.rsi/meta.json` around lines 1 - 66, The meta.json fields are out of the required order; reorder the top-level keys so they follow the strict RSI sequence: "version", then "license", then "copyright", then "size", and finally "states" (preserve the existing "size" object and "states" array contents), i.e., move the "license" and "copyright" entries before "size" in the current meta.json that contains "version", "size", "license", "copyright", "states".
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In
`@Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Boxes/improvised.rsi/meta.json`:
- Around line 1-23: The meta.json uses 2-space indentation and must be formatted
with 4-space indentation and the keys ordered as: "version", "license",
"copyright", "size", "states"; open the meta.json for the improvised ammo (look
for the top-level keys "version", "license", "copyright", "size", "states") and
reformat the file to use 4 spaces per indent level while preserving the existing
key order and values.
In
`@Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi/meta.json`:
- Around line 1-38: The meta.json uses 2-space indentation instead of the
required 4 spaces and should preserve the key order (version, license,
copyright, size, states); update
Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi/meta.json
to use 4-space indentation throughout and ensure the top-level keys remain in
the order "version", "license", "copyright", "size", "states" while leaving the
existing state entries ("base", "mag-1", "mag-2", "mag-3", "incendiary", "sp",
"fmj", "ap", "uranium") unchanged.
In
`@Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Boxes/toz.rsi/meta.json`:
- Around line 2-13: Update the meta.json for the TOZ ammunition box to use
4-space indentation and ensure the keys are ordered as required: "version",
"license", "copyright", "size", "states"; open
Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Boxes/toz.rsi/meta.json,
reformat the entire JSON with 4-space indents (not 2), preserve the same key
names and values, and keep the existing "size" and "states" object/array
structures intact.
In
`@Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Casings/improvised_casing.rsi/meta.json`:
- Around line 2-9: В файле meta.json поля идут в неправильном порядке; переставь
поля так, чтобы порядок был "version", затем "license", затем "copyright", затем
"size" и затем "states" (с 4-пробельным отступом), обновив соответствующую
запись в RSI (найди текущие ключи "version", "size", "license", "copyright",
"states" и переупорядочь их).
In
`@Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Casings/laser_casing.rsi/meta.json`:
- Around line 1-20: The meta.json field order is incorrect: it currently has
"size" before "license" and "copyright"; reorder the top-level keys in
Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Casings/laser_casing.rsi/meta.json
so they follow the required sequence version, license, copyright, size, states
(preserve existing values for "version", "size", and the "states" array with
"base", "tip", "base-spent").
In
`@Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell_toz.rsi/meta.json`:
- Around line 2-9: Reorder the keys in the meta.json so they follow the
canonical RSI order and use 4-space indentation: place "version" first, then
"license", then "copyright", then "size", then "states"; update the object in
Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell_toz.rsi/meta.json
to that sequence and ensure all entries are indented with 4 spaces.
In
`@Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Battery/lr30_mag.rsi/meta.json`:
- Around line 2-8: The meta.json has fields in the wrong order; open
lr30_mag.rsi's meta.json and reorder the top-level keys to exactly: "version",
"license", "copyright", "size", "states" (replace the current "size" position so
license/copyright appear before size), ensure 4-space indentation and keep
values unchanged.
In
`@Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/LightRifle/light_rifle_heavy.rsi/meta.json`:
- Around line 2-8: The meta.json fields are out of the required order; reorder
the top-level keys in the light_rifle_heavy.rsi meta.json so they appear exactly
as: "version", "license", "copyright", "size", "states" (replace the current
"size" position), and ensure 4-space indentation for the JSON file; update the
object that currently contains "version", "size", "license", "copyright" to
follow the required sequence.
In
`@Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_rifle_mag.rsi/meta.json`:
- Around line 2-8: В meta.json для RSI (файл meta.json) поля идут в неверном
порядке; откройте метаданные и переставьте ключи так, чтобы порядок был:
"version", "license", "copyright", "size", "states" (четыре пробела для
отступа), сохраняя существующие значения и запятые/синтаксис JSON; проверьте,
что после перестановки JSON валиден и форматирование соответствует 4‑пробельному
отступу.
In
`@Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/40.rsi/meta.json`:
- Around line 2-9: The top-level keys in the RSI meta.json are out of the
required order; update the JSON so the top-level object lists keys in this exact
sequence: "version", "license", "copyright", "size", "states" (move the existing
"size" to after "copyright"), and ensure all entries use 4-space indentation
consistent with the project style; keep the rest of the values unchanged.
In
`@Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/improvised_pistol_magazine.rsi/meta.json`:
- Around line 2-9: Reorder the top-level keys in the meta.json so they follow
the required sequence: version, license, copyright, size, states; keep all
existing values intact (e.g. the current "version": 1 value, "license":
"CC-BY-SA-3.0", the copyright string, the "size" object, and "states" array) and
format the file with 4-space indentation for each level; locate the file
meta.json for the improvised_pistol_magazine resource and move the "size" block
after the copyright and before "states", ensuring valid JSON syntax is
preserved.
In
`@Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/dmr_mag.rsi/meta.json`:
- Around line 2-8: Reorder the keys in the meta.json so they follow the required
RSI order: place "license" and "copyright" immediately after "version", then
"size", and finally "states"; update the existing meta.json object (currently
containing "version", "size", "license", "copyright", "states") to the sequence
"version", "license", "copyright", "size", "states" and ensure 4-space
indentation is preserved.
In
`@Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/SMGs/improvised_smg_magazine.rsi/meta.json`:
- Around line 2-9: Переставь поля в meta.json так, чтобы они шли в порядке
version, license, copyright, size, states; в текущем файле поменяй местами
"size" и "license"/"copyright" и отформатируй весь JSON с 4‑пробельным отступом;
проверь, что имена полей точные ("version", "license", "copyright", "size",
"states") и структура (массив states) осталась прежней.
In
`@Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/SMGs/ppsh.rsi/meta.json`:
- Around line 1-32: В meta.json переставьте свойства в строго указанный порядок:
сначала "version", затем "license", затем "copyright", затем "size", и в конце
"states"; в текущем файле поле "size" стоит перед "license" и "copyright" —
переместите "size" после "copyright" так, чтобы порядок ключей был exactly:
version, license, copyright, size, states.
In
`@Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/SMGs/uzi.rsi/meta.json`:
- Around line 3-9: Reorder and correct the meta.json keys so they follow the
project convention: ensure the top-level keys appear in the order version,
license, copyright, size, states; move the existing "size" block to come after
"copyright" and correct the typo in the attribution string from "Taked" to
"Taken"; also ensure the file uses 4-space indentation for all object levels and
retains the existing values (e.g., the size x/y and license string).
In
`@Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/improvised_magnum_speed_loader.rsi/meta.json`:
- Around line 2-8: The meta.json fields are out of the required order; reorder
the top-level keys in the RSI meta (in
Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/improvised_magnum_speed_loader.rsi/meta.json)
to follow the canonical sequence: "version", "license", "copyright", "size",
"states"; ensure 4-space indentation is used and preserve existing values (e.g.,
keep the current copyright string and the size object) while moving "license"
and "copyright" above "size".
In
`@Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Shotgun/shotgun_speed_loader.rsi/meta.json`:
- Around line 2-9: The meta.json fields are out of order: reorder the top-level
keys so they appear as version, license, copyright, size, states (i.e., move
"size" below "license" and "copyright") and ensure 4-space indentation for each
field; update the JSON in shotgun_speed_loader.rsi's meta.json so the keys read
exactly in that order and maintain consistent 4-space indentation.
In
`@Resources/Audio/_Starlight/Objects/Weapons/Guns/Battery/Energy_Magnum.rsi/meta.json`:
- Around line 2-24: The meta.json uses 2-space indentation and must be converted
to 4-space indentation and preserve the required key order (version, license,
copyright, size, states); update the file so each nested level (e.g., the "size"
object and the "states" array entries like "base", "icon", "inhand-left",
"inhand-right") is indented with 4 spaces, ensure the keys remain in the
specified order and that array/object formatting follows RSI meta.json
conventions.
---
Outside diff comments:
In
`@Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/m-52.rsi/meta.json`:
- Around line 1-73: The meta.json field order is incorrect; reorder the
top-level keys so they follow the required sequence: "version", then "license",
then "copyright", then "size", then "states" (i.e. move the "size" block after
the copyright and before "states"); update the file
Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/m-52.rsi/meta.json
accordingly so the JSON object uses that exact key order.
In
`@Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Shotgun/toz.rsi/meta.json`:
- Around line 1-29: Reorder the fields in the JSON so they follow the required
RSI meta.json order: put "version" first, then "license", then "copyright", then
"size", and finally "states"; update the current object (which currently has
"size" before "license"/"copyright") to that exact sequence, preserving all
existing values and state entries like "base", "extended", "mag-1",
"inhand-left-mag", and "inhand-right-mag".
In
`@Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/improvised_lever_action_speed_loader.rsi/meta.json`:
- Around line 1-66: The meta.json fields are out of the required order; reorder
the top-level keys so they follow the strict RSI sequence: "version", then
"license", then "copyright", then "size", and finally "states" (preserve the
existing "size" object and "states" array contents), i.e., move the "license"
and "copyright" entries before "size" in the current meta.json that contains
"version", "size", "license", "copyright", "states".
In
`@Resources/Audio/_Starlight/Objects/Weapons/Guns/Battery/adv_taser.rsi/meta.json`:
- Around line 1-218: The meta.json uses 2-space indentation but must use 4-space
indentation; reformat the entire JSON (root keys like "version", "license",
"size", and the "states" array including entries such as "disable0-inhand-left",
"disable-unshaded-0", "stun", "stun4-inhand-right") to use 4-space indenting,
preserve all keys/values and arrays/delays exactly as-is, and validate the file
is still valid JSON after reformatting.
In `@Resources/Audio/_Starlight/Objects/Weapons/Guns/Battery/alien.rsi/meta.json`:
- Around line 1-47: The meta.json uses mixed 2- and 4-space indentation;
normalize the file to use 4-space indentation everywhere so all top-level keys
(version, license, copyright, size) and nested structures (size.x/size.y, the
states array and each state object such as "mag-unshaded-0", "mag-unshaded-1",
"inhand-left", "inhand-right") are consistently indented with 4 spaces; update
the entire file formatting (or run your JSON formatter/editor config) to convert
any 2-space indents and align arrays/objects to 4 spaces throughout.
In
`@Resources/Audio/_Starlight/Objects/Weapons/Guns/Battery/decloner.rsi/meta.json`:
- Around line 1-58: The meta.json uses mixed 2- and 4-space indentation; update
the file so every nested level uses 4-space indentation consistently
(particularly inside the top-level objects "states" and the state entries like
"normal", "mag-unshaded-0", "inhand-left", "inhand-right"), and ensure arrays of
delays and nested objects align with 4 spaces throughout; no content changes,
only reformat spacing to match the RSI 4-space guideline.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
Run ID: 33780d87-02c3-47e0-a492-ba7da083a75e
⛔ Files ignored due to path filters (271)
Resources/Audio/_Starlight/Effects/Radio/ai.oggis excluded by!**/*.oggResources/Audio/_Starlight/Effects/Radio/brigmedic.oggis excluded by!**/*.oggResources/Audio/_Starlight/Effects/Radio/bso.oggis excluded by!**/*.oggResources/Audio/_Starlight/Effects/Radio/captain.oggis excluded by!**/*.oggResources/Audio/_Starlight/Effects/Radio/cc.oggis excluded by!**/*.oggResources/Audio/_Starlight/Effects/Radio/ce.oggis excluded by!**/*.oggResources/Audio/_Starlight/Effects/Radio/cmo.oggis excluded by!**/*.oggResources/Audio/_Starlight/Effects/Radio/deathsquad.oggis excluded by!**/*.oggResources/Audio/_Starlight/Effects/Radio/hos.oggis excluded by!**/*.oggResources/Audio/_Starlight/Effects/Radio/marauder.oggis excluded by!**/*.oggResources/Audio/_Starlight/Effects/Radio/marauder_agent.oggis excluded by!**/*.oggResources/Audio/_Starlight/Effects/Radio/marauder_commander.oggis excluded by!**/*.oggResources/Audio/_Starlight/Effects/Radio/ninja.oggis excluded by!**/*.oggResources/Audio/_Starlight/Effects/Radio/qm.oggis excluded by!**/*.oggResources/Audio/_Starlight/Effects/Radio/rd.oggis excluded by!**/*.oggResources/Audio/_Starlight/Effects/Radio/secoff.oggis excluded by!**/*.oggResources/Audio/_Starlight/Effects/Radio/soviet.oggis excluded by!**/*.oggResources/Audio/_Starlight/Effects/Radio/warden.oggis excluded by!**/*.oggResources/Audio/_Starlight/Effects/Radio/wizard.oggis excluded by!**/*.oggResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Boxes/improvised.rsi/base.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Boxes/improvised.rsi/mag-1.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Boxes/improvised.rsi/mag-2.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Boxes/improvised.rsi/mag-3.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi/ap.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi/base.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi/fmj.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi/incendiary.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi/mag-1.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi/mag-2.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi/mag-3.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi/sp.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi/uranium.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Boxes/toz.rsi/base.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Casings/improvised_casing.rsi/base-spent.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Casings/improvised_casing.rsi/base.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Casings/improvised_casing.rsi/tip.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Casings/laser_casing.rsi/base-spent.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Casings/laser_casing.rsi/base.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Casings/laser_casing.rsi/tip.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell_toz.rsi/base.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell_toz.rsi/spent.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell_toz.rsi/tip.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Battery/lr30_mag.rsi/base.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Battery/lr30_mag.rsi/mag-1.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Battery/lr30_mag.rsi/mag-2.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Battery/lr30_mag.rsi/mag-3.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Battery/lr30_mag.rsi/mag-4.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/LightRifle/light_rifle_heavy.rsi/ap.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/LightRifle/light_rifle_heavy.rsi/base.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/LightRifle/light_rifle_heavy.rsi/fmj.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/LightRifle/light_rifle_heavy.rsi/hp.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/LightRifle/light_rifle_heavy.rsi/incendiary.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/LightRifle/light_rifle_heavy.rsi/inhand-left-mag.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/LightRifle/light_rifle_heavy.rsi/inhand-left-stripe.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/LightRifle/light_rifle_heavy.rsi/inhand-right-mag.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/LightRifle/light_rifle_heavy.rsi/inhand-right-stripe.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/LightRifle/light_rifle_heavy.rsi/mag-0.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/LightRifle/light_rifle_heavy.rsi/mag-1.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/LightRifle/light_rifle_heavy.rsi/mag-2.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/LightRifle/light_rifle_heavy.rsi/mag-3.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/LightRifle/light_rifle_heavy.rsi/mag-4.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/LightRifle/light_rifle_heavy.rsi/mag-5.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/LightRifle/light_rifle_heavy.rsi/mag-6.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/LightRifle/light_rifle_heavy.rsi/mag-7.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/LightRifle/light_rifle_heavy.rsi/sp.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/LightRifle/light_rifle_heavy.rsi/uranium.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_rifle_mag.rsi/base.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_rifle_mag.rsi/mag-1.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_rifle_mag.rsi/red.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/40.rsi/ap.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/40.rsi/base.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/40.rsi/fmj.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/40.rsi/incendiary.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/40.rsi/inhand-left-mag.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/40.rsi/inhand-left-stripe.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/40.rsi/inhand-right-mag.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/40.rsi/inhand-right-stripe.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/40.rsi/mag-1.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/40.rsi/mag-2.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/40.rsi/mag-3.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/40.rsi/mag-4.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/40.rsi/mag-5.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/40.rsi/mag-6.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/40.rsi/red-icon.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/40.rsi/red.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/40.rsi/sp.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/40.rsi/uranium.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/improvised_pistol_magazine.rsi/base.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/improvised_pistol_magazine.rsi/inhand-left-mag.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/improvised_pistol_magazine.rsi/inhand-right-mag.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/improvised_pistol_magazine.rsi/mag-1.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/improvised_pistol_magazine.rsi/mag-2.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/improvised_pistol_magazine.rsi/mag-3.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/improvised_pistol_magazine.rsi/mag-4.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/improvised_pistol_magazine.rsi/mag-5.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/dmr_mag.rsi/ap.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/dmr_mag.rsi/base.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/dmr_mag.rsi/fmj.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/dmr_mag.rsi/incendiary.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/dmr_mag.rsi/inhand-left-mag.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/dmr_mag.rsi/inhand-left-stripe.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/dmr_mag.rsi/inhand-right-mag.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/dmr_mag.rsi/inhand-right-stripe.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/dmr_mag.rsi/mag-1.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/dmr_mag.rsi/practice.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/dmr_mag.rsi/red.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/dmr_mag.rsi/rubber.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/dmr_mag.rsi/sp.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/dmr_mag.rsi/uranium.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/m-52.rsi/ap.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/m-52.rsi/base.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/m-52.rsi/fmj.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/m-52.rsi/incendiary.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/m-52.rsi/inhand-left-mag.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/m-52.rsi/inhand-left-stripe.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/m-52.rsi/inhand-right-mag.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/m-52.rsi/inhand-right-stripe.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/m-52.rsi/mag-1.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/m-52.rsi/mag-2.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/m-52.rsi/mag-3.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/m-52.rsi/mag-4.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/m-52.rsi/mag-5.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/m-52.rsi/mag-6.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/m-52.rsi/practice.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/m-52.rsi/red.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/m-52.rsi/rubber.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/m-52.rsi/sp.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/m-52.rsi/uranium.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/SMGs/improvised_smg_magazine.rsi/base.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/SMGs/improvised_smg_magazine.rsi/inhand-left-mag.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/SMGs/improvised_smg_magazine.rsi/inhand-right-mag.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/SMGs/improvised_smg_magazine.rsi/mag-1.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/SMGs/improvised_smg_magazine.rsi/mag-2.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/SMGs/ppsh.rsi/base.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/SMGs/ppsh.rsi/inhand-left.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/SMGs/ppsh.rsi/inhand-right.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/SMGs/ppsh.rsi/mag-1.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/SMGs/ppsh.rsi/mag-2.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/SMGs/ppsh.rsi/mag-3.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/SMGs/ppsh.rsi/mag-4.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/SMGs/uzi.rsi/base.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/SMGs/uzi.rsi/inhand-left-mag.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/SMGs/uzi.rsi/inhand-left-stripe.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/SMGs/uzi.rsi/inhand-right-mag.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/SMGs/uzi.rsi/inhand-right-stripe.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/SMGs/uzi.rsi/mag-1.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/SMGs/uzi.rsi/mag-2.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/SMGs/uzi.rsi/mag-3.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/SMGs/uzi.rsi/mag-4.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/SMGs/uzi.rsi/mag-5.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/SMGs/uzi.rsi/mag-6.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/SMGs/uzi.rsi/mag-7.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/SMGs/uzi.rsi/mag-8.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Shotgun/toz.rsi/base.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Shotgun/toz.rsi/extended.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Shotgun/toz.rsi/inhand-left-mag.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Shotgun/toz.rsi/inhand-right-mag.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Shotgun/toz.rsi/mag-1.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/improvised_lever_action_speed_loader.rsi/base-1.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/improvised_lever_action_speed_loader.rsi/base-2.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/improvised_lever_action_speed_loader.rsi/base-3.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/improvised_lever_action_speed_loader.rsi/base-4.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/improvised_lever_action_speed_loader.rsi/base-5.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/improvised_lever_action_speed_loader.rsi/base-6.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/improvised_lever_action_speed_loader.rsi/base-7.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/improvised_lever_action_speed_loader.rsi/base-8.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/improvised_lever_action_speed_loader.rsi/base-tip-1.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/improvised_lever_action_speed_loader.rsi/base-tip-2.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/improvised_lever_action_speed_loader.rsi/base-tip-3.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/improvised_lever_action_speed_loader.rsi/base-tip-4.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/improvised_lever_action_speed_loader.rsi/base-tip-5.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/improvised_lever_action_speed_loader.rsi/base-tip-6.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/improvised_lever_action_speed_loader.rsi/base-tip-7.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/improvised_lever_action_speed_loader.rsi/base-tip-8.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/improvised_lever_action_speed_loader.rsi/base.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/improvised_lever_action_speed_loader.rsi/icon.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/improvised_magnum_speed_loader.rsi/base-1.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/improvised_magnum_speed_loader.rsi/base-2.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/improvised_magnum_speed_loader.rsi/base-3.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/improvised_magnum_speed_loader.rsi/base-4.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/improvised_magnum_speed_loader.rsi/base-tip-1.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/improvised_magnum_speed_loader.rsi/base-tip-2.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/improvised_magnum_speed_loader.rsi/base-tip-3.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/improvised_magnum_speed_loader.rsi/base-tip-4.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/improvised_magnum_speed_loader.rsi/base.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/improvised_magnum_speed_loader.rsi/icon.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/rubber-1.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/rubber-2.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/rubber-3.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/rubber-4.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/rubber-5.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/rubber-6.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Shotgun/shotgun_speed_loader.rsi/base-1.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Shotgun/shotgun_speed_loader.rsi/base-2.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Shotgun/shotgun_speed_loader.rsi/base-3.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Shotgun/shotgun_speed_loader.rsi/base-4.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Shotgun/shotgun_speed_loader.rsi/base-5.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Shotgun/shotgun_speed_loader.rsi/base-6.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Shotgun/shotgun_speed_loader.rsi/base-7.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Shotgun/shotgun_speed_loader.rsi/base-tip-1.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Shotgun/shotgun_speed_loader.rsi/base-tip-2.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Shotgun/shotgun_speed_loader.rsi/base-tip-3.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Shotgun/shotgun_speed_loader.rsi/base-tip-4.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Shotgun/shotgun_speed_loader.rsi/base-tip-5.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Shotgun/shotgun_speed_loader.rsi/base-tip-6.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Shotgun/shotgun_speed_loader.rsi/base-tip-7.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Shotgun/shotgun_speed_loader.rsi/base.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Shotgun/shotgun_speed_loader.rsi/icon.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/Energy_Magnum.rsi/base.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/Energy_Magnum.rsi/icon.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/Energy_Magnum.rsi/inhand-left.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/Energy_Magnum.rsi/inhand-right.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/adv_taser.rsi/base.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/adv_taser.rsi/disable-unshaded-0.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/adv_taser.rsi/disable-unshaded-1.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/adv_taser.rsi/disable-unshaded-2.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/adv_taser.rsi/disable-unshaded-3.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/adv_taser.rsi/disable-unshaded-4.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/adv_taser.rsi/disable.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/adv_taser.rsi/disable0-inhand-left.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/adv_taser.rsi/disable0-inhand-right.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/adv_taser.rsi/disable1-inhand-left.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/adv_taser.rsi/disable1-inhand-right.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/adv_taser.rsi/disable2-inhand-left.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/adv_taser.rsi/disable2-inhand-right.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/adv_taser.rsi/disable3-inhand-left.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/adv_taser.rsi/disable3-inhand-right.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/adv_taser.rsi/disable4-inhand-left.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/adv_taser.rsi/disable4-inhand-right.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/adv_taser.rsi/icon.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/adv_taser.rsi/stun-unshaded-0.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/adv_taser.rsi/stun-unshaded-1.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/adv_taser.rsi/stun-unshaded-2.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/adv_taser.rsi/stun-unshaded-3.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/adv_taser.rsi/stun-unshaded-4.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/adv_taser.rsi/stun.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/adv_taser.rsi/stun0-inhand-left.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/adv_taser.rsi/stun0-inhand-right.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/adv_taser.rsi/stun1-inhand-left.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/adv_taser.rsi/stun1-inhand-right.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/adv_taser.rsi/stun2-inhand-left.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/adv_taser.rsi/stun2-inhand-right.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/adv_taser.rsi/stun3-inhand-left.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/adv_taser.rsi/stun3-inhand-right.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/adv_taser.rsi/stun4-inhand-left.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/adv_taser.rsi/stun4-inhand-right.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/alien.rsi/base.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/alien.rsi/icon.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/alien.rsi/inhand-left.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/alien.rsi/inhand-right.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/alien.rsi/mag-unshaded-0.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/alien.rsi/mag-unshaded-1.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/alien.rsi/mag-unshaded-2.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/alien.rsi/mag-unshaded-3.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/alien.rsi/mag-unshaded-4.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/decloner.rsi/base.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/decloner.rsi/icon.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/decloner.rsi/inhand-left.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/decloner.rsi/inhand-right.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/decloner.rsi/mag-unshaded-0.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/decloner.rsi/mag-unshaded-1.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/decloner.rsi/mag-unshaded-2.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/decloner.rsi/mag-unshaded-3.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/decloner.rsi/mag-unshaded-4.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/decloner.rsi/normal.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/dominator.rsi/base.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/dominator.rsi/destroy-unshaded-0.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/dominator.rsi/destroy-unshaded-1.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/dominator.rsi/destroy-unshaded-2.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/dominator.rsi/destroy-unshaded-3.pngis excluded by!**/*.pngResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/dominator.rsi/disable-unshaded-0.pngis excluded by!**/*.png
📒 Files selected for processing (25)
Resources/Audio/_Starlight/Effects/Radio/attributions.ymlResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Boxes/improvised.rsi/meta.jsonResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi/meta.jsonResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Boxes/toz.rsi/meta.jsonResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Casings/improvised_casing.rsi/meta.jsonResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Casings/laser_casing.rsi/meta.jsonResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell_toz.rsi/meta.jsonResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Battery/lr30_mag.rsi/meta.jsonResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/LightRifle/light_rifle_heavy.rsi/meta.jsonResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_rifle_mag.rsi/meta.jsonResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/40.rsi/meta.jsonResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/improvised_pistol_magazine.rsi/meta.jsonResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/dmr_mag.rsi/meta.jsonResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/m-52.rsi/meta.jsonResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/SMGs/improvised_smg_magazine.rsi/meta.jsonResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/SMGs/ppsh.rsi/meta.jsonResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/SMGs/uzi.rsi/meta.jsonResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/Shotgun/toz.rsi/meta.jsonResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/improvised_lever_action_speed_loader.rsi/meta.jsonResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/improvised_magnum_speed_loader.rsi/meta.jsonResources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Shotgun/shotgun_speed_loader.rsi/meta.jsonResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/Energy_Magnum.rsi/meta.jsonResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/adv_taser.rsi/meta.jsonResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/alien.rsi/meta.jsonResources/Audio/_Starlight/Objects/Weapons/Guns/Battery/decloner.rsi/meta.json
| { | ||
| "version": 1, | ||
| "license": "CC-BY-SA-3.0", | ||
| "copyright": "Taken from cev-eris at https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi , tweaked by Alekshhh, tider-ifed by Killer Tamashi (Discord)", | ||
| "size": { | ||
| "x": 32, | ||
| "y": 32 | ||
| }, | ||
| "states": [ | ||
| { | ||
| "name": "base" | ||
| }, | ||
| { | ||
| "name": "mag-1" | ||
| }, | ||
| { | ||
| "name": "mag-2" | ||
| }, | ||
| { | ||
| "name": "mag-3" | ||
| } | ||
| ] | ||
| } |
There was a problem hiding this comment.
Неверный отступ в meta.json.
Файл использует 2-пробельные отступы вместо требуемых 4-пробельных.
🔧 Предлагаемое исправление
{
- "version": 1,
- "license": "CC-BY-SA-3.0",
- "copyright": "Taken from cev-eris at https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi , tweaked by Alekshhh, tider-ifed by Killer Tamashi (Discord)",
- "size": {
- "x": 32,
- "y": 32
- },
- "states": [
- {
- "name": "base"
- },
- {
- "name": "mag-1"
- },
- {
- "name": "mag-2"
- },
- {
- "name": "mag-3"
- }
- ]
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "Taken from cev-eris at https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi , tweaked by Alekshhh, tider-ifed by Killer Tamashi (Discord)",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "base"
+ },
+ {
+ "name": "mag-1"
+ },
+ {
+ "name": "mag-2"
+ },
+ {
+ "name": "mag-3"
+ }
+ ]
}Based on learnings: Keep RSI meta.json ordered as version, license, copyright, size, states with 4-space indentation.
📝 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.
| { | |
| "version": 1, | |
| "license": "CC-BY-SA-3.0", | |
| "copyright": "Taken from cev-eris at https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi , tweaked by Alekshhh, tider-ifed by Killer Tamashi (Discord)", | |
| "size": { | |
| "x": 32, | |
| "y": 32 | |
| }, | |
| "states": [ | |
| { | |
| "name": "base" | |
| }, | |
| { | |
| "name": "mag-1" | |
| }, | |
| { | |
| "name": "mag-2" | |
| }, | |
| { | |
| "name": "mag-3" | |
| } | |
| ] | |
| } | |
| { | |
| "version": 1, | |
| "license": "CC-BY-SA-3.0", | |
| "copyright": "Taken from cev-eris at https://github.com/discordia-space/CEV-Eris/raw/89456d18dd3e7c330839121e3c6bc8c609700137/icons/obj/ammo.dmi , tweaked by Alekshhh, tider-ifed by Killer Tamashi (Discord)", | |
| "size": { | |
| "x": 32, | |
| "y": 32 | |
| }, | |
| "states": [ | |
| { | |
| "name": "base" | |
| }, | |
| { | |
| "name": "mag-1" | |
| }, | |
| { | |
| "name": "mag-2" | |
| }, | |
| { | |
| "name": "mag-3" | |
| } | |
| ] | |
| } |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In
`@Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Boxes/improvised.rsi/meta.json`
around lines 1 - 23, The meta.json uses 2-space indentation and must be
formatted with 4-space indentation and the keys ordered as: "version",
"license", "copyright", "size", "states"; open the meta.json for the improvised
ammo (look for the top-level keys "version", "license", "copyright", "size",
"states") and reformat the file to use 4 spaces per indent level while
preserving the existing key order and values.
| { | ||
| "version": 1, | ||
| "license": "CC-BY-SA-3.0", | ||
| "copyright": "Made by Killer Tamashi", | ||
| "size": { | ||
| "x": 32, | ||
| "y": 32 | ||
| }, | ||
| "states": [ | ||
| { | ||
| "name": "base" | ||
| }, | ||
| { | ||
| "name": "mag-1" | ||
| }, | ||
| { | ||
| "name": "mag-2" | ||
| }, | ||
| { | ||
| "name": "mag-3" | ||
| }, | ||
| { | ||
| "name": "incendiary" | ||
| }, | ||
| { | ||
| "name": "sp" | ||
| }, | ||
| { | ||
| "name": "fmj" | ||
| }, | ||
| { | ||
| "name": "ap" | ||
| }, | ||
| { | ||
| "name": "uranium" | ||
| } | ||
| ] | ||
| } |
There was a problem hiding this comment.
Неверный отступ в meta.json.
Файл использует 2-пробельные отступы вместо требуемых 4-пробельных.
🔧 Предлагаемое исправление отступов
{
- "version": 1,
- "license": "CC-BY-SA-3.0",
- "copyright": "Made by Killer Tamashi",
- "size": {
- "x": 32,
- "y": 32
- },
- "states": [
- {
- "name": "base"
- },
- {
- "name": "mag-1"
- },
- {
- "name": "mag-2"
- },
- {
- "name": "mag-3"
- },
- {
- "name": "incendiary"
- },
- {
- "name": "sp"
- },
- {
- "name": "fmj"
- },
- {
- "name": "ap"
- },
- {
- "name": "uranium"
- }
- ]
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "Made by Killer Tamashi",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "base"
+ },
+ {
+ "name": "mag-1"
+ },
+ {
+ "name": "mag-2"
+ },
+ {
+ "name": "mag-3"
+ },
+ {
+ "name": "incendiary"
+ },
+ {
+ "name": "sp"
+ },
+ {
+ "name": "fmj"
+ },
+ {
+ "name": "ap"
+ },
+ {
+ "name": "uranium"
+ }
+ ]
}Based on learnings: Keep RSI meta.json ordered as version, license, copyright, size, states with 4-space indentation.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In
`@Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi/meta.json`
around lines 1 - 38, The meta.json uses 2-space indentation instead of the
required 4 spaces and should preserve the key order (version, license,
copyright, size, states); update
Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi/meta.json
to use 4-space indentation throughout and ensure the top-level keys remain in
the order "version", "license", "copyright", "size", "states" while leaving the
existing state entries ("base", "mag-1", "mag-2", "mag-3", "incendiary", "sp",
"fmj", "ap", "uranium") unchanged.
| "version": 1, | ||
| "license": "CC-BY-SA-3.0", | ||
| "copyright": "By Peter Poley (wassuythefourth_47721)", | ||
| "size": { | ||
| "x": 32, | ||
| "y": 32 | ||
| }, | ||
| "states": [ | ||
| { | ||
| "name": "base" | ||
| } | ||
| ] |
There was a problem hiding this comment.
Приведи JSON к отступам в 4 пробела.
Сейчас используется 2 пробела; для RSI meta.json в репозитории требуется 4.
As per coding guidelines: Keep RSI meta.json ordered as version, license, copyright, size, states with 4-space indentation.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In
`@Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Boxes/toz.rsi/meta.json`
around lines 2 - 13, Update the meta.json for the TOZ ammunition box to use
4-space indentation and ensure the keys are ordered as required: "version",
"license", "copyright", "size", "states"; open
Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Boxes/toz.rsi/meta.json,
reformat the entire JSON with 4-space indents (not 2), preserve the same key
names and values, and keep the existing "size" and "states" object/array
structures intact.
| "version": 1, | ||
| "size": { | ||
| "x": 32, | ||
| "y": 32 | ||
| }, | ||
| "license": "CC-BY-SA-3.0", | ||
| "copyright": "Taken from https://github.com/vgstation-coders/vgstation13/blob/0b3ab17dbad632ddf738b63900ef8df1926bba47/icons/obj/ammo.dmi, modified by Topy, then recolored to greyscale by Killer Tamashi (Discord)", | ||
| "states": [ |
There was a problem hiding this comment.
Исправь порядок полей в RSI meta.json.
Поле size должно идти после license и copyright.
Предложение правки
{
"version": 1,
- "size": {
- "x": 32,
- "y": 32
- },
"license": "CC-BY-SA-3.0",
"copyright": "Taken from https://github.com/vgstation-coders/vgstation13/blob/0b3ab17dbad632ddf738b63900ef8df1926bba47/icons/obj/ammo.dmi, modified by Topy, then recolored to greyscale by Killer Tamashi (Discord)",
+ "size": {
+ "x": 32,
+ "y": 32
+ },As per coding guidelines: Keep RSI meta.json ordered as version, license, copyright, size, states with 4-space indentation.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In
`@Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Casings/improvised_casing.rsi/meta.json`
around lines 2 - 9, В файле meta.json поля идут в неправильном порядке;
переставь поля так, чтобы порядок был "version", затем "license", затем
"copyright", затем "size" и затем "states" (с 4-пробельным отступом), обновив
соответствующую запись в RSI (найди текущие ключи "version", "size", "license",
"copyright", "states" и переупорядочь их).
| { | ||
| "version": 1, | ||
| "size": { | ||
| "x": 32, | ||
| "y": 32 | ||
| }, | ||
| "license": "CC-BY-SA-3.0", | ||
| "copyright": "Taken from Paradise Station", | ||
| "states": [ | ||
| { | ||
| "name": "base" | ||
| }, | ||
| { | ||
| "name": "tip" | ||
| }, | ||
| { | ||
| "name": "base-spent" | ||
| } | ||
| ] | ||
| } |
There was a problem hiding this comment.
Нарушен порядок полей meta.json.
Поля должны идти в порядке: version, license, copyright, size, states. Сейчас size стоит перед license и copyright. Как указано в coding guidelines, RSI meta.json должен следовать строгому порядку полей.
♻️ Исправление порядка полей
{
"version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "Taken from Paradise Station",
"size": {
"x": 32,
"y": 32
},
- "license": "CC-BY-SA-3.0",
- "copyright": "Taken from Paradise Station",
"states": [🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In
`@Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Casings/laser_casing.rsi/meta.json`
around lines 1 - 20, The meta.json field order is incorrect: it currently has
"size" before "license" and "copyright"; reorder the top-level keys in
Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Casings/laser_casing.rsi/meta.json
so they follow the required sequence version, license, copyright, size, states
(preserve existing values for "version", "size", and the "states" array with
"base", "tip", "base-spent").
| { | ||
| "version": 1, | ||
| "size": { | ||
| "x": 32, | ||
| "y": 32 | ||
| }, | ||
| "license": "CC-BY-SA-3.0", | ||
| "copyright": "Made by CringeCursed(Github/Discord)", | ||
| "states": [ | ||
| { | ||
| "name": "base" | ||
| }, | ||
| { | ||
| "name": "mag-1" | ||
| }, | ||
| { | ||
| "name": "mag-2" | ||
| }, | ||
| { | ||
| "name": "mag-3" | ||
| }, | ||
| { | ||
| "name": "mag-4" | ||
| }, | ||
| { | ||
| "name": "inhand-left" | ||
| }, | ||
| { | ||
| "name": "inhand-right" | ||
| } | ||
| ] | ||
| } No newline at end of file |
There was a problem hiding this comment.
Нарушен порядок полей meta.json.
Поля должны идти в порядке: version, license, copyright, size, states. Сейчас size стоит перед license и copyright. Как указано в coding guidelines, RSI meta.json должен следовать строгому порядку полей.
♻️ Исправление порядка полей
{
"version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "Made by CringeCursed(Github/Discord)",
"size": {
"x": 32,
"y": 32
},
- "license": "CC-BY-SA-3.0",
- "copyright": "Made by CringeCursed(Github/Discord)",
"states": [📝 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.
| { | |
| "version": 1, | |
| "size": { | |
| "x": 32, | |
| "y": 32 | |
| }, | |
| "license": "CC-BY-SA-3.0", | |
| "copyright": "Made by CringeCursed(Github/Discord)", | |
| "states": [ | |
| { | |
| "name": "base" | |
| }, | |
| { | |
| "name": "mag-1" | |
| }, | |
| { | |
| "name": "mag-2" | |
| }, | |
| { | |
| "name": "mag-3" | |
| }, | |
| { | |
| "name": "mag-4" | |
| }, | |
| { | |
| "name": "inhand-left" | |
| }, | |
| { | |
| "name": "inhand-right" | |
| } | |
| ] | |
| } | |
| { | |
| "version": 1, | |
| "license": "CC-BY-SA-3.0", | |
| "copyright": "Made by CringeCursed(Github/Discord)", | |
| "size": { | |
| "x": 32, | |
| "y": 32 | |
| }, | |
| "states": [ | |
| { | |
| "name": "base" | |
| }, | |
| { | |
| "name": "mag-1" | |
| }, | |
| { | |
| "name": "mag-2" | |
| }, | |
| { | |
| "name": "mag-3" | |
| }, | |
| { | |
| "name": "mag-4" | |
| }, | |
| { | |
| "name": "inhand-left" | |
| }, | |
| { | |
| "name": "inhand-right" | |
| } | |
| ] | |
| } |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In
`@Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/SMGs/ppsh.rsi/meta.json`
around lines 1 - 32, В meta.json переставьте свойства в строго указанный
порядок: сначала "version", затем "license", затем "copyright", затем "size", и
в конце "states"; в текущем файле поле "size" стоит перед "license" и
"copyright" — переместите "size" после "copyright" так, чтобы порядок ключей был
exactly: version, license, copyright, size, states.
| "size": { | ||
| "x": 32, | ||
| "y": 32 | ||
| }, | ||
| "license": "CC-BY-SA-3.0", | ||
| "copyright": "Taked from Paradise station, inhands by TiniestShark (github)", | ||
| "states": [ |
There was a problem hiding this comment.
Нужно выровнять порядок ключей и поправить опечатку в атрибуции.
size должен быть после license/copyright; также исправь Taked → Taken.
As per coding guidelines: Keep RSI meta.json ordered as version, license, copyright, size, states with 4-space indentation.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In
`@Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/Magazine/SMGs/uzi.rsi/meta.json`
around lines 3 - 9, Reorder and correct the meta.json keys so they follow the
project convention: ensure the top-level keys appear in the order version,
license, copyright, size, states; move the existing "size" block to come after
"copyright" and correct the typo in the attribution string from "Taked" to
"Taken"; also ensure the file uses 4-space indentation for all object levels and
retains the existing values (e.g., the size x/y and license string).
| "version": 1, | ||
| "size": { | ||
| "x": 32, | ||
| "y": 32 | ||
| }, | ||
| "license": "CC-BY-SA-3.0", | ||
| "copyright": "https://github.com/tgstation/tgstation/pull/1684/commits/19e51caef09e78ca1122d26455b539ff5968d334, https://github.com/tgstation/tgstation/blob/master/icons/obj/weapons/guns/ammo.dmi, tip by darkrell, 4-shot version by Killer Tamashi (Discord)", |
There was a problem hiding this comment.
Неверный порядок полей в meta.json.
Порядок должен быть: version, license, copyright, size, states. Текущий: version, size, license, copyright, states.
🔧 Предлагаемое исправление
{
"version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "https://github.com/tgstation/tgstation/pull/1684/commits/19e51caef09e78ca1122d26455b539ff5968d334, https://github.com/tgstation/tgstation/blob/master/icons/obj/weapons/guns/ammo.dmi, tip by darkrell, 4-shot version by Killer Tamashi (Discord)",
"size": {
"x": 32,
"y": 32
},
- "license": "CC-BY-SA-3.0",
- "copyright": "https://github.com/tgstation/tgstation/pull/1684/commits/19e51caef09e78ca1122d26455b539ff5968d334, https://github.com/tgstation/tgstation/blob/master/icons/obj/weapons/guns/ammo.dmi, tip by darkrell, 4-shot version by Killer Tamashi (Discord)",
"states": [Based on learnings: Keep RSI meta.json ordered as version, license, copyright, size, states with 4-space indentation.
📝 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.
| "version": 1, | |
| "size": { | |
| "x": 32, | |
| "y": 32 | |
| }, | |
| "license": "CC-BY-SA-3.0", | |
| "copyright": "https://github.com/tgstation/tgstation/pull/1684/commits/19e51caef09e78ca1122d26455b539ff5968d334, https://github.com/tgstation/tgstation/blob/master/icons/obj/weapons/guns/ammo.dmi, tip by darkrell, 4-shot version by Killer Tamashi (Discord)", | |
| { | |
| "version": 1, | |
| "license": "CC-BY-SA-3.0", | |
| "copyright": "https://github.com/tgstation/tgstation/pull/1684/commits/19e51caef09e78ca1122d26455b539ff5968d334, https://github.com/tgstation/tgstation/blob/master/icons/obj/weapons/guns/ammo.dmi, tip by darkrell, 4-shot version by Killer Tamashi (Discord)", | |
| "size": { | |
| "x": 32, | |
| "y": 32 | |
| }, | |
| "states": [ |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In
`@Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/improvised_magnum_speed_loader.rsi/meta.json`
around lines 2 - 8, The meta.json fields are out of the required order; reorder
the top-level keys in the RSI meta (in
Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/improvised_magnum_speed_loader.rsi/meta.json)
to follow the canonical sequence: "version", "license", "copyright", "size",
"states"; ensure 4-space indentation is used and preserve existing values (e.g.,
keep the current copyright string and the size object) while moving "license"
and "copyright" above "size".
| "version": 1, | ||
| "size": { | ||
| "x": 32, | ||
| "y": 32 | ||
| }, | ||
| "license": "CC-BY-SA-3.0", | ||
| "copyright": "Taked from RU Paradise Station, tip by Rinary", | ||
| "states": [ |
There was a problem hiding this comment.
Порядок полей не соответствует стандарту RSI meta.json.
Перемести size ниже license и copyright.
As per coding guidelines: Keep RSI meta.json ordered as version, license, copyright, size, states with 4-space indentation.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In
`@Resources/Audio/_Starlight/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Shotgun/shotgun_speed_loader.rsi/meta.json`
around lines 2 - 9, The meta.json fields are out of order: reorder the top-level
keys so they appear as version, license, copyright, size, states (i.e., move
"size" below "license" and "copyright") and ensure 4-space indentation for each
field; update the JSON in shotgun_speed_loader.rsi's meta.json so the keys read
exactly in that order and maintain consistent 4-space indentation.
| "version": 1, | ||
| "license": "CC-BY-SA-3.0", | ||
| "copyright": "Taken/modified from desertrose at https://github.com/DesertRose2/desertrose/commit/0b8f7b7694a4a814724ba8ed59f695916ce845ce , https://github.com/DesertRose2/desertrose/blob/master/icons/obj/guns/projectile.dmi retextured and remade into the Energy Magnum by scarlet!", | ||
| "size": { | ||
| "x": 32, | ||
| "y": 32 | ||
| }, | ||
| "states": [ | ||
| { | ||
| "name": "base" | ||
| }, | ||
| { | ||
| "name": "icon" | ||
| }, | ||
| { | ||
| "name": "inhand-left", | ||
| "directions": 4 | ||
| }, | ||
| { | ||
| "name": "inhand-right", | ||
| "directions": 4 | ||
| } | ||
| ] |
There was a problem hiding this comment.
Отступы должны быть 4 пробела.
В файле сейчас 2 пробела, что расходится с требованием для RSI meta.json.
As per coding guidelines: Keep RSI meta.json ordered as version, license, copyright, size, states with 4-space indentation.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In
`@Resources/Audio/_Starlight/Objects/Weapons/Guns/Battery/Energy_Magnum.rsi/meta.json`
around lines 2 - 24, The meta.json uses 2-space indentation and must be
converted to 4-space indentation and preserve the required key order (version,
license, copyright, size, states); update the file so each nested level (e.g.,
the "size" object and the "states" array entries like "base", "icon",
"inhand-left", "inhand-right") is indented with 4 spaces, ensure the keys remain
in the specified order and that array/object formatting follows RSI meta.json
conventions.
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
There was a problem hiding this comment.
♻️ Duplicate comments (2)
Content.Server/_Starlight/Gavel/GavelBlockComponent.cs (2)
3-3:⚠️ Potential issue | 🟠 MajorNamespace форка не по конвенции (
_Starlightпропущен).Сейчас namespace выбивается из принятого шаблона для fork-путей и уже отмечался ранее; лучше привести к
_Starlight, чтобы не плодить расхождения по ссылкам/using.Предлагаемая правка
-namespace Content.Server.Starlight.Gavel; +namespace Content.Server._Starlight.Gavel;Based on learnings: Applies to Content.Server/Content/Server/**/*.cs : Load
ss14-naming-conventionsguideline set for Content.Server work.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@Content.Server/_Starlight/Gavel/GavelBlockComponent.cs` at line 3, The namespace in this file is missing the fork convention `_Starlight` — change the declared namespace symbol from `Content.Server.Starlight.Gavel` to `Content.Server._Starlight.Gavel` and update any internal references/usings or project references that rely on this namespace so they match the fork naming convention (ensure the namespace declaration in `GavelBlockComponent` is the only change and build compiles).
14-18: 🛠️ Refactor suggestion | 🟠 Major
readOnly: trueнаCounterиMaxCounterлучше убрать.
Counterменяется вGavelSystem, поэтому пометкаreadOnlyздесь вводит в заблуждение. ДляMaxCounterдостаточно обычного[DataField].Предлагаемая правка
- [DataField(readOnly: true)] + [DataField] public int Counter; - [DataField(readOnly: true)] + [DataField] public int MaxCounter = 60;🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@Content.Server/_Starlight/Gavel/GavelBlockComponent.cs` around lines 14 - 18, The DataField attributes on GavelBlockComponent incorrectly mark Counter and MaxCounter as readOnly; remove the readOnly: true flag so Counter can be mutated by GavelSystem and MaxCounter is a normal configurable field (i.e., change [DataField(readOnly: true)] on Counter and MaxCounter to simply [DataField] while leaving the field names and default value for MaxCounter intact).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Duplicate comments:
In `@Content.Server/_Starlight/Gavel/GavelBlockComponent.cs`:
- Line 3: The namespace in this file is missing the fork convention `_Starlight`
— change the declared namespace symbol from `Content.Server.Starlight.Gavel` to
`Content.Server._Starlight.Gavel` and update any internal references/usings or
project references that rely on this namespace so they match the fork naming
convention (ensure the namespace declaration in `GavelBlockComponent` is the
only change and build compiles).
- Around line 14-18: The DataField attributes on GavelBlockComponent incorrectly
mark Counter and MaxCounter as readOnly; remove the readOnly: true flag so
Counter can be mutated by GavelSystem and MaxCounter is a normal configurable
field (i.e., change [DataField(readOnly: true)] on Counter and MaxCounter to
simply [DataField] while leaving the field names and default value for
MaxCounter intact).
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
Run ID: a489edf7-c6d0-4b83-9891-3c8ce7a4d919
📒 Files selected for processing (1)
Content.Server/_Starlight/Gavel/GavelBlockComponent.cs
📜 Review details
⏰ Context from checks skipped due to timeout of 180000ms. 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: YAML Linter
- GitHub Check: build (ubuntu-latest)
- GitHub Check: Test Packaging
🧰 Additional context used
📓 Path-based instructions (8)
**/*.cs
📄 CodeRabbit inference engine (.github/copilot-instructions.md)
**/*.cs: Read.agents/rules/ss14-csharp-style.mdbefore editing
For C# gameplay work, load thess14-ecs-componentsskill
For C# gameplay work, load thess14-ecs-entitiesskill
For C# gameplay work, load thess14-ecs-systemsskill
For C# gameplay work, load thess14-eventsskill
For C# gameplay work, load thess14-predictionskill
For C# text orLocIdfields, load thess14-localization-codeskill
For hot paths orUpdate()methods, load thess14-standard-optimizationsskill
For network events,NetEntity, or replicated state work, load thess14-netcodeskill
ForAppearanceandGenericVisualizerwork, load thess14-graphics-generic-visualizer-appearanceskill
Keep components data-only and put behavior in systems
UseOn... -> Try... -> Can... -> Do...interaction flow
PreferEntity<T?>,ProtoId<T>, and localized strings
Files:
Content.Server/_Starlight/Gavel/GavelBlockComponent.cs
**/*.{xaml,cs}
📄 CodeRabbit inference engine (.github/copilot-instructions.md)
For XAML or BUI work, load the
ss14-ui-buiskill
Files:
Content.Server/_Starlight/Gavel/GavelBlockComponent.cs
Content.Server/**/*.cs
📄 CodeRabbit inference engine (.github/instructions/ss14-server.instructions.md)
Content.Server/**/*.cs: Keep authority, round rules, persistence, and server-only side effects in Content.Server code
For player-facing actions in Content.Server, verify the shared prediction path to ensure the local player feels the action immediately, rather than leaving the behavior server-only by accident
Load ss14-tests-authoring when behavior changes are risky enough to warrant test coverage
Files:
Content.Server/_Starlight/Gavel/GavelBlockComponent.cs
⚙️ CodeRabbit configuration file
Content.Server/**/*.cs: Review Content.Server for authority and fork-maintenance discipline:
- Server owns authority, persistence, round logic, and non-predicted side effects.
- If a player action should feel immediate, call out missing shared prediction rather than accepting a server-only path.
- Keep upstream diffs narrow and prefer fork-scoped extensions over broad edits to upstream behavior.
- When player-visible behavior changes, check whether matching prototype and locale updates are missing.
Files:
Content.Server/_Starlight/Gavel/GavelBlockComponent.cs
Content.{Shared,Server,Client,Tests,IntegrationTests}/**/*.cs
📄 CodeRabbit inference engine (.cursor/rules/ss14-csharp.mdc)
Content.{Shared,Server,Client,Tests,IntegrationTests}/**/*.cs: Follow C# ECS architecture patterns as defined in SS14 gameplay code
Follow SS14 interaction flow rules and patterns
Follow SS14 C# style guidelines and conventions
Apply SS14 naming conventions when defining classes, methods, properties, and identifiers
Implement ECS components following SS14 component patterns and best practices
Implement ECS entities following SS14 entity patterns and best practices
Implement ECS systems following SS14 system patterns and best practices
Follow SS14 event patterns and best practices for event-driven gameplay code
Follow SS14 netcode patterns and best practices for network synchronization
Follow SS14 localization code patterns for text and message handling
Files:
Content.Server/_Starlight/Gavel/GavelBlockComponent.cs
Content.{Shared,Server,Client}/**/*Component.cs
📄 CodeRabbit inference engine (AGENTS.md)
Keep components data-only; put gameplay logic in entity systems
Files:
Content.Server/_Starlight/Gavel/GavelBlockComponent.cs
Content.{Shared,Server,Client}/**/*.cs
📄 CodeRabbit inference engine (AGENTS.md)
Content.{Shared,Server,Client}/**/*.cs: Prefer[Dependency]fields over ad-hocIoCManager.Resolve(...)inside methods
UseEntityUid?for optional entities; do not useEntityUid.Invalidas a 'missing' sentinel
Usesealed,abstract,static, or[Virtual]on new classes where appropriate
Prefer prototypes over enums for in-game content types
UseProtoId<T>orEntProtoIdinstead of raw prototype ID strings in data fields and static references
Prefer[DataField]without string field names on new code unless serializer compatibility or a non-default data name is required
Event handlers should useOn...names
Public action methods should preferTry...names
Check methods should preferCan...names
Dependency fields should use the existing underscore-prefixed style such as_popup,_hands,_audio
Keep new prototype IDs, event names, and component names aligned with nearby conventions rather than inventing new suffixes
Use sound collections/specifiers and sprite specifiers instead of ad-hoc raw asset strings in code when reusable content is intended
Do not compare localized strings or expose raw enumToString()output to players
When adding or changing OpenSpace-specific code in a file outside any_OpenSpacepath, wrap each OpenSpace-specific block with edit markers:// open-space edit startand// open-space edit end
Keep edit-marker ranges as narrow as practical; for files that do not use//comments, use the native comment syntax while preservingopen-space edit startandopen-space edit end
Files:
Content.Server/_Starlight/Gavel/GavelBlockComponent.cs
Content.{Server,Client}/**/*Component.cs
📄 CodeRabbit inference engine (AGENTS.md)
Never add
NetworkedComponentto purely server-only or purely client-only components
Files:
Content.Server/_Starlight/Gavel/GavelBlockComponent.cs
Content.{Shared,Server,Client}/**/*.{cs,xaml}
📄 CodeRabbit inference engine (AGENTS.md)
Every player-facing string must be localized
Files:
Content.Server/_Starlight/Gavel/GavelBlockComponent.cs
🧠 Learnings (18)
📚 Learning: 2026-04-21T19:10:13.901Z
Learnt from: CR
Repo: ss14-art/open-space PR: 0
File: .cursor/rules/ss14-csharp.mdc:0-0
Timestamp: 2026-04-21T19:10:13.901Z
Learning: Applies to Content.{Shared,Server,Client,Tests,IntegrationTests}/**/*.cs : Implement ECS components following SS14 component patterns and best practices
Applied to files:
Content.Server/_Starlight/Gavel/GavelBlockComponent.cs
📚 Learning: 2026-04-21T20:10:46.780Z
Learnt from: CR
Repo: ss14-art/open-space PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-21T20:10:46.780Z
Learning: Applies to Content.Shared/**/*Component.cs : Shared predicted components should use `NetworkedComponent`, `AutoGenerateComponentState`, and `AutoNetworkedField` where appropriate
Applied to files:
Content.Server/_Starlight/Gavel/GavelBlockComponent.cs
📚 Learning: 2026-04-21T20:10:46.780Z
Learnt from: CR
Repo: ss14-art/open-space PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-21T20:10:46.780Z
Learning: Applies to Content.{Shared,Server,Client}/**/*Component.cs : Keep components data-only; put gameplay logic in entity systems
Applied to files:
Content.Server/_Starlight/Gavel/GavelBlockComponent.cs
📚 Learning: 2026-04-21T19:10:23.860Z
Learnt from: CR
Repo: ss14-art/open-space PR: 0
File: .cursor/rules/ss14-shared.mdc:0-0
Timestamp: 2026-04-21T19:10:23.860Z
Learning: Applies to Content.Shared/**/*.cs : Apply SS14 ECS component patterns when editing component files
Applied to files:
Content.Server/_Starlight/Gavel/GavelBlockComponent.cs
📚 Learning: 2026-04-21T19:09:31.929Z
Learnt from: CR
Repo: ss14-art/open-space PR: 0
File: .github/instructions/ss14-shared.instructions.md:0-0
Timestamp: 2026-04-21T19:09:31.929Z
Learning: Applies to Content.Shared/**/*.cs : Load `ss14-ecs-components`, `ss14-ecs-entities`, `ss14-ecs-systems`, `ss14-events`, `ss14-prediction`, and `ss14-netcode` modules in Content.Shared code
Applied to files:
Content.Server/_Starlight/Gavel/GavelBlockComponent.cs
📚 Learning: 2026-04-21T20:11:10.713Z
Learnt from: CR
Repo: ss14-art/open-space PR: 0
File: Content.Server/AGENTS.md:0-0
Timestamp: 2026-04-21T20:11:10.713Z
Learning: Applies to Content.Server/Content/Server/**/*Component.cs : Load `ss14-ecs-components` guideline set for Content.Server work
Applied to files:
Content.Server/_Starlight/Gavel/GavelBlockComponent.cs
📚 Learning: 2026-04-21T19:10:13.901Z
Learnt from: CR
Repo: ss14-art/open-space PR: 0
File: .cursor/rules/ss14-csharp.mdc:0-0
Timestamp: 2026-04-21T19:10:13.901Z
Learning: Applies to Content.{Shared,Server,Client,Tests,IntegrationTests}/**/*.cs : Follow C# ECS architecture patterns as defined in SS14 gameplay code
Applied to files:
Content.Server/_Starlight/Gavel/GavelBlockComponent.cs
📚 Learning: 2026-04-21T20:10:46.780Z
Learnt from: CR
Repo: ss14-art/open-space PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-21T20:10:46.780Z
Learning: Applies to Content.{Shared,Server,Client}/**/*.cs : When adding or changing OpenSpace-specific code in a file outside any `_OpenSpace` path, wrap each OpenSpace-specific block with edit markers: `// open-space edit start` and `// open-space edit end`
Applied to files:
Content.Server/_Starlight/Gavel/GavelBlockComponent.cs
📚 Learning: 2026-04-21T20:11:10.713Z
Learnt from: CR
Repo: ss14-art/open-space PR: 0
File: Content.Server/AGENTS.md:0-0
Timestamp: 2026-04-21T20:11:10.713Z
Learning: Applies to Content.Server/Content/Server/**/*.cs : Load `ss14-naming-conventions` guideline set for Content.Server work
Applied to files:
Content.Server/_Starlight/Gavel/GavelBlockComponent.cs
📚 Learning: 2026-04-21T20:10:46.780Z
Learnt from: CR
Repo: ss14-art/open-space PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-21T20:10:46.780Z
Learning: Applies to Content.{Shared,Server,Client}/**/*.cs : Keep new prototype IDs, event names, and component names aligned with nearby conventions rather than inventing new suffixes
Applied to files:
Content.Server/_Starlight/Gavel/GavelBlockComponent.cs
📚 Learning: 2026-04-21T20:10:46.780Z
Learnt from: CR
Repo: ss14-art/open-space PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-21T20:10:46.780Z
Learning: Applies to Content.{Shared,Server,Client}/**/*.cs : Dependency fields should use the existing underscore-prefixed style such as `_popup`, `_hands`, `_audio`
Applied to files:
Content.Server/_Starlight/Gavel/GavelBlockComponent.cs
📚 Learning: 2026-04-21T20:11:10.713Z
Learnt from: CR
Repo: ss14-art/open-space PR: 0
File: Content.Server/AGENTS.md:0-0
Timestamp: 2026-04-21T20:11:10.713Z
Learning: Applies to Content.Server/Content/Server/**/*System.cs : Load `ss14-ecs-systems` guideline set for Content.Server work
Applied to files:
Content.Server/_Starlight/Gavel/GavelBlockComponent.cs
📚 Learning: 2026-04-21T19:10:13.901Z
Learnt from: CR
Repo: ss14-art/open-space PR: 0
File: .cursor/rules/ss14-csharp.mdc:0-0
Timestamp: 2026-04-21T19:10:13.901Z
Learning: Applies to Content.{Shared,Server,Client,Tests,IntegrationTests}/**/*.cs : Implement ECS systems following SS14 system patterns and best practices
Applied to files:
Content.Server/_Starlight/Gavel/GavelBlockComponent.cs
📚 Learning: 2026-04-21T19:10:13.901Z
Learnt from: CR
Repo: ss14-art/open-space PR: 0
File: .cursor/rules/ss14-csharp.mdc:0-0
Timestamp: 2026-04-21T19:10:13.901Z
Learning: Applies to Content.{Shared,Server,Client,Tests,IntegrationTests}/**/*.cs : Follow SS14 netcode patterns and best practices for network synchronization
Applied to files:
Content.Server/_Starlight/Gavel/GavelBlockComponent.cs
📚 Learning: 2026-04-21T19:10:23.860Z
Learnt from: CR
Repo: ss14-art/open-space PR: 0
File: .cursor/rules/ss14-shared.mdc:0-0
Timestamp: 2026-04-21T19:10:23.860Z
Learning: Applies to Content.Shared/**/*.cs : Apply SS14 ECS system patterns when editing system files
Applied to files:
Content.Server/_Starlight/Gavel/GavelBlockComponent.cs
📚 Learning: 2026-04-21T20:10:46.780Z
Learnt from: CR
Repo: ss14-art/open-space PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-04-21T20:10:46.780Z
Learning: Applies to Content.{Shared,Server,Client}/**/*.cs : Use sound collections/specifiers and sprite specifiers instead of ad-hoc raw asset strings in code when reusable content is intended
Applied to files:
Content.Server/_Starlight/Gavel/GavelBlockComponent.cs
📚 Learning: 2026-04-21T20:11:18.817Z
Learnt from: CR
Repo: ss14-art/open-space PR: 0
File: Content.Shared/AGENTS.md:0-0
Timestamp: 2026-04-21T20:11:18.817Z
Learning: Applies to Content.Shared/**/*.cs : Load ss14-audio knowledge base when shared components or events carry sound specifiers or predicted audio intent
Applied to files:
Content.Server/_Starlight/Gavel/GavelBlockComponent.cs
📚 Learning: 2026-04-21T20:11:10.713Z
Learnt from: CR
Repo: ss14-art/open-space PR: 0
File: Content.Server/AGENTS.md:0-0
Timestamp: 2026-04-21T20:11:10.713Z
Learning: Applies to Content.Server/Content/Server/**/*Audio*.cs : Load `ss14-audio` guideline set for server-routed world audio, PVS audio, or global sound playback
Applied to files:
Content.Server/_Starlight/Gavel/GavelBlockComponent.cs
🔇 Additional comments (2)
Content.Server/_Starlight/Gavel/GavelBlockComponent.cs (2)
8-12: Хорошо: компонент остаётся data-only,HitSoundnullable.Этот блок выглядит корректно для ECS-компонента, поведение остаётся в системе.
As per coding guidelines: Keep components data-only and put behavior in systems.
3-21:⚠️ Potential issue | 🟠 MajorДобавьте
open-space editмаркеры для fork-правок.В этом файле нет обязательных маркеров для OpenSpace-изменений вне
_OpenSpaceпути.Пример минимальной обёртки
+// open-space edit start namespace Content.Server.Starlight.Gavel; @@ public sealed partial class GavelBlockComponent : Component { @@ public TimeSpan? PrevSound; } +// open-space edit endAs per coding guidelines: When adding or changing OpenSpace-specific code in a file outside any
_OpenSpacepath, wrap each OpenSpace-specific block with edit markers:// open-space edit startand// open-space edit end.⛔ Skipped due to learnings
Learnt from: CR Repo: ss14-art/open-space PR: 0 File: AGENTS.md:0-0 Timestamp: 2026-04-21T20:10:46.780Z Learning: Applies to Content.{Shared,Server,Client}/**/*.cs : When adding or changing OpenSpace-specific code in a file outside any `_OpenSpace` path, wrap each OpenSpace-specific block with edit markers: `// open-space edit start` and `// open-space edit end`Learnt from: CR Repo: ss14-art/open-space PR: 0 File: AGENTS.md:0-0 Timestamp: 2026-04-21T20:10:46.780Z Learning: Applies to Content.{Shared,Server,Client}/**/*.cs : Keep edit-marker ranges as narrow as practical; for files that do not use `//` comments, use the native comment syntax while preserving `open-space edit start` and `open-space edit end`Learnt from: CR Repo: ss14-art/open-space PR: 0 File: AGENTS.md:0-0 Timestamp: 2026-04-21T20:10:46.780Z Learning: For fork-only behavior, prefer extending `_OpenSpace` or another clearly fork-scoped area instead of hiding fork logic in unrelated upstream filesLearnt from: CR Repo: ss14-art/open-space PR: 0 File: .cursor/rules/ss14-shared.mdc:0-0 Timestamp: 2026-04-21T19:10:23.860Z Learning: Applies to Content.Shared/**/*.cs : Apply SS14 ECS component patterns when editing component filesLearnt from: CR Repo: ss14-art/open-space PR: 0 File: .cursor/rules/ss14-shared.mdc:0-0 Timestamp: 2026-04-21T19:10:23.860Z Learning: Applies to Content.Shared/**/*.cs : Apply SS14 ECS system patterns when editing system filesLearnt from: CR Repo: ss14-art/open-space PR: 0 File: .cursor/rules/ss14-ui.mdc:0-0 Timestamp: 2026-04-21T19:10:33.591Z Learning: Applies to Content.Client/**/*.cs : Follow SS14 upstream maintenance practices when editing client codeLearnt from: CR Repo: ss14-art/open-space PR: 0 File: .cursor/rules/ss14-shared.mdc:0-0 Timestamp: 2026-04-21T19:10:23.860Z Learning: Applies to Content.Shared/**/*.cs : Apply SS14 prediction-aware patterns when editing gameplay codeLearnt from: cryals Repo: ss14-art/open-space PR: 8 File: Resources/Prototypes/_Corvax/Decals/crayons.yml:2-133 Timestamp: 2026-03-17T09:20:45.898Z Learning: In the ss14-art/open-space repository, PRs that port content from the upstream space-syndicate/space-station-14 repository should not have extra fields or modifications added that are not present in the upstream source. Faithful ports should be left as-is to match the original.
ReWAFFlution
left a comment
There was a problem hiding this comment.
Прошёлся глазом по ПРу:
Необходимо много исправлений в мете, прототипах и тд.
Конечно я всё не отметил, но видно какие ошибки заметил кролик.
По коду сам пройдусь
There was a problem hiding this comment.
Исправить согласно комментарию кролика
There was a problem hiding this comment.
Исправить согласно комментарию кролика
There was a problem hiding this comment.
Исправить согласно комментарию кролика
There was a problem hiding this comment.
Исправить согласно комментарию кролика
There was a problem hiding this comment.
Исправить согласно комментарию кролика
There was a problem hiding this comment.
Исправить согласно комментарию кролика
|
Этот Pull Request содержит конфликты. Почините их, прежде чем мы начнем проверять его. |














































































































































































































































Краткое описание
Куча всяких ролей. Rabbit, с тебя описание :)
А так, пока что этот пр не доделан и его надо править, ведь здесь куча всякого фаршированного кала, которого надо разгребать.
Связанные задачи
Почему мы должны добавить это?
Медиа (Видео/Скриншоты)
Проверочный пункт
Changelog