[ADD] Новые эмоуты для панели. Небольшой рефактор панели#76
Conversation
|
Warning Review limit reached
More reviews will be available in 54 minutes and 15 seconds. Learn how PR review limits work. Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file). ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based credits. 🚦 How do rate limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan refill rate. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, the refill rate gradually slows as usage increases. The highest same-day bursts are limited more strictly. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (3)
WalkthroughДобавлена тег-based фильтрация ERP-взаимодействий ( ChangesERP Panel: RequiresERP-фильтрация и новые взаимодействия
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Possibly related PRs
Suggested reviewers
🚥 Pre-merge checks | ✅ 4✅ Passed checks (4 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. Comment |
There was a problem hiding this comment.
Actionable comments posted: 3
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (2)
Resources/Prototypes/_Arcane/Interactions/ERP/mouth.yml (1)
1-23:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winКатегория Feet в файле mouth.yml - ошибка организации.
Взаимодействие
FeetMouthимеет категориюFeet, но находится в файлеmouth.yml. Либо переместить вfeet.yml, либо исправить категорию наMouth(если она должна быть по смыслу).🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@Resources/Prototypes/_Arcane/Interactions/ERP/mouth.yml` around lines 1 - 23, The FeetMouth interaction has a category field set to "Feet" but is located in the mouth.yml file, creating an organizational inconsistency. Either move the entire FeetMouth panel interaction definition to the feet.yml file to match its category, or change the category field from "Feet" to "Mouth" to align with the current file location. Ensure that the file organization and category field remain consistent with the codebase convention.Resources/Prototypes/_Arcane/Interactions/ERP/neck.yml (1)
123-138:⚠️ Potential issue | 🟠 MajorBlowSlap: перемещение в face.yml и добавление RequiresERP.
- BlowSlap с
category: Faceнаходится вneck.ymlвместоface.yml— файлы организованы по целевой части тела, переместить в соответствующий файл.- BlowSlap не имеет тега
RequiresERP, в то время как другие ERP-взаимодействия вneck.ymlего содержат — добавить:tags: - RequiresERP🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@Resources/Prototypes/_Arcane/Interactions/ERP/neck.yml` around lines 123 - 138, The BlowSlap interaction has category Face but is defined in neck.yml when it should be in face.yml based on the file organization by target body part. Move the entire BlowSlap panelInteraction block (including all properties from type through icon) from neck.yml to the appropriate location in face.yml. Additionally, add a tags section with the RequiresERP tag to the BlowSlap interaction definition to match the pattern used by other ERP interactions in neck.yml, placing it after the id field and before category for consistency.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@Content.Server/_Arcane/ErpPanel/ErpPanelSystem.cs`:
- Around line 23-24: The constant ErpInteractionTag defined in ErpPanelSystem.cs
is duplicated in the client-side ErpPanelWindow.xaml.cs file, and the helper
methods IsErpInteraction and CanUseErp are also duplicated across server and
client implementations. To eliminate this duplication, move the
ErpInteractionTag constant and the IsErpInteraction and CanUseErp helper methods
to a shared location in the Content.Shared folder (either within
ErpPanelPrototypes.cs or a new dedicated static class). Then update both the
server ErpPanelSystem.cs and client ErpPanelWindow.xaml.cs to reference these
shared implementations instead of maintaining duplicate code.
In `@Resources/Prototypes/_Arcane/Interactions/ERP/friendship.yml`:
- Around line 113-264: The nine new panel interactions (FriendlyFlyingKiss,
FriendlyNoseBoop, FriendlyTailPull, KissHand, PatShoulder, PetHead,
PlayfulNibble, HornsPat, and Kitty) are missing the range property that all
other existing interactions in this file explicitly define. Add range: 1 to each
of these new interactions to maintain consistency with the established pattern
and ensure they use the correct interaction distance instead of the default 1.5f
value. Place this property after the icon field in each interaction definition.
In `@Resources/Prototypes/_Arcane/Interactions/ERP/penis.yml`:
- Around line 295-325: The panelInteraction definitions in the penis.yml file
reference icon files that do not exist in the _Arcane/Interface/ErpPanel/
directory. For each interaction that has an icon property (such as the icon path
_Arcane/Interface/ErpPanel/legs_cock_fuckt_tail.png in the LegsCockFuckTail
interaction), either create the corresponding PNG image files in the referenced
directory or update the icon paths to point to existing image files that are
available in your resources.
---
Outside diff comments:
In `@Resources/Prototypes/_Arcane/Interactions/ERP/mouth.yml`:
- Around line 1-23: The FeetMouth interaction has a category field set to "Feet"
but is located in the mouth.yml file, creating an organizational inconsistency.
Either move the entire FeetMouth panel interaction definition to the feet.yml
file to match its category, or change the category field from "Feet" to "Mouth"
to align with the current file location. Ensure that the file organization and
category field remain consistent with the codebase convention.
In `@Resources/Prototypes/_Arcane/Interactions/ERP/neck.yml`:
- Around line 123-138: The BlowSlap interaction has category Face but is defined
in neck.yml when it should be in face.yml based on the file organization by
target body part. Move the entire BlowSlap panelInteraction block (including all
properties from type through icon) from neck.yml to the appropriate location in
face.yml. Additionally, add a tags section with the RequiresERP tag to the
BlowSlap interaction definition to match the pattern used by other ERP
interactions in neck.yml, placing it after the id field and before category for
consistency.
🪄 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 Plus
Run ID: 28cb575f-a077-43e9-a303-e6bf4d15ac49
📒 Files selected for processing (17)
Content.Client/_Arcane/ErpPanel/ErpPanelWindow.xaml.csContent.Server/_Arcane/ErpPanel/ErpPanelSystem.csContent.Shared/_Arcane/ErpPanel/ErpPanelPrototypes.csContent.Shared/_Arcane/ErpPanel/Requirements/EmptyInventorySlotRequirement.csContent.Shared/_Arcane/ErpPanel/Requirements/HeldItemRequirement.csResources/Prototypes/_Arcane/Interactions/ERP/anus.ymlResources/Prototypes/_Arcane/Interactions/ERP/boobs.ymlResources/Prototypes/_Arcane/Interactions/ERP/butt.ymlResources/Prototypes/_Arcane/Interactions/ERP/categories.ymlResources/Prototypes/_Arcane/Interactions/ERP/ears.ymlResources/Prototypes/_Arcane/Interactions/ERP/face.ymlResources/Prototypes/_Arcane/Interactions/ERP/friendship.ymlResources/Prototypes/_Arcane/Interactions/ERP/mouth.ymlResources/Prototypes/_Arcane/Interactions/ERP/neck.ymlResources/Prototypes/_Arcane/Interactions/ERP/penis.ymlResources/Prototypes/_Arcane/Interactions/ERP/pussy.ymlResources/Prototypes/_Arcane/tags.yml
📜 Review details
🧰 Additional context used
📓 Path-based instructions (19)
**/*.cs
📄 CodeRabbit inference engine (GEMINI.md)
**/*.cs: Keep components data-only and behavior in systems
UseOn... -> Try... -> Can... -> Do...pattern for gameplay actions
PreferEntity<T?>,ProtoId<T>,EntProtoId, and localized strings for type usage
**/*.cs: When writing or editing C# gameplay code, load skills:ss14-ecs-components,ss14-ecs-entities,ss14-ecs-prototypes,ss14-ecs-systems,ss14-events, andss14-prediction.
If the C# change is large or the task needs reviewable notes, load skillss14-documentation-writing.
If the code touches hot paths,Update(), or frequently raised events, load skillss14-standard-optimizations.
If the task adds or changes player-facing text, load skillsss14-localization-stringsandss14-localization-codewhen the change also touchesLoc.GetString(...),LocId, popup text, or localized component fields.
If the task touches network events,NetEntity, replicated state routing, or shared/server/client message flow, load skillss14-netcode.
If the task touchesAppearance,GenericVisualizer, visual state enums, or sprite-layer toggles, load skillss14-graphics-generic-visualizer-appearance.
If the task touches sprites, RSI metadata, overlays, shaders, or custom client visual effects, load skillss14-sprite-overlays-shaders.
If the task is about learning or explaining SS14 architecture, first features, or where code belongs, load skillsss14-prototype-basics,ss14-ecs-basics, andss14-client-server-shared.
If the task is about bug hunting, VV, logs, breakpoints, or runtime inspection, load skillsss14-debugging-workflowandss14-common-api-patterns.
If the task touches common gameplay helpers such as entity-system methods, spawning, prototypes, audio, popups, or random, load skillsss14-common-api-patternsandss14-audiowhen the work changes audio routing, sound assets, sound collections, or predicted sound feedback.
If the task ports code or assets from another repository, or needs license or attribution guidance,...
Files:
Content.Shared/_Arcane/ErpPanel/Requirements/HeldItemRequirement.csContent.Shared/_Arcane/ErpPanel/ErpPanelPrototypes.csContent.Shared/_Arcane/ErpPanel/Requirements/EmptyInventorySlotRequirement.csContent.Client/_Arcane/ErpPanel/ErpPanelWindow.xaml.csContent.Server/_Arcane/ErpPanel/ErpPanelSystem.cs
Content.Shared/**
📄 CodeRabbit inference engine (Content.Shared/AGENTS.md)
Content.Shared/**: Load ss14-naming-conventions agent notes for Content.Shared work
Load ss14-ecs-prototypes, ss14-ecs-components, ss14-ecs-entities, and ss14-ecs-systems agent notes for Content.Shared work
Load ss14-upstream-maintenance agent notes for Content.Shared work
Load ss14-events agent notes for Content.Shared work
Load ss14-prediction and ss14-netcode agent notes for Content.Shared work
Load ss14-localization-code agent notes when shared code emits player text or stores LocId
Load ss14-graphics-generic-visualizer-appearance agent notes when shared gameplay state drives Appearance or GenericVisualizer
Load ss14-audio agent notes when shared components or events carry sound specifiers or predicted audio intent
Load ss14-atmos agent notes when shared components, UI messages, or enums belong to atmos features
Load ss14-transform-physics agent notes for shared coordinates, movement, collision, anchoring, or physics contracts
Load ss14-pvs agent notes for PVS-sensitive shared/network contracts
Load ss14-npc-ai agent notes for shared NPC, HTN, steering, pathfinding, or debug contracts
Shared code must own replicated state, shared events, and prediction-aware logic without adding direct client-only or server-only dependencies
Files:
Content.Shared/_Arcane/ErpPanel/Requirements/HeldItemRequirement.csContent.Shared/_Arcane/ErpPanel/ErpPanelPrototypes.csContent.Shared/_Arcane/ErpPanel/Requirements/EmptyInventorySlotRequirement.cs
+(Content.Shared|Content.Server|Content.Client|Content.Goobstation.Shared|Content.Goobstation.Server|Content.Goobstation.Client|Content.Goobstation.Common|Content.Goobstation.Maths|Content.Goobstation.UIKit|Content.Server.Database|Content.Shared.Database|Content.Tests|Content.IntegrationTests)/**/*.cs
📄 CodeRabbit inference engine (.cursor/rules/ss14-csharp.mdc)
+(Content.Shared|Content.Server|Content.Client|Content.Goobstation.Shared|Content.Goobstation.Server|Content.Goobstation.Client|Content.Goobstation.Common|Content.Goobstation.Maths|Content.Goobstation.UIKit|Content.Server.Database|Content.Shared.Database|Content.Tests|Content.IntegrationTests)/**/*.cs: Apply C# ECS style rules from ss14-interaction-flow.md
Apply ss14-csharp-style.md rules for C# code formatting and conventions
Follow ss14-naming-conventions for variable, method, and type naming in C# gameplay code
Files:
Content.Shared/_Arcane/ErpPanel/Requirements/HeldItemRequirement.csContent.Shared/_Arcane/ErpPanel/ErpPanelPrototypes.csContent.Shared/_Arcane/ErpPanel/Requirements/EmptyInventorySlotRequirement.csContent.Client/_Arcane/ErpPanel/ErpPanelWindow.xaml.csContent.Server/_Arcane/ErpPanel/ErpPanelSystem.cs
{Content.Shared,Content.Goobstation.Shared,Content.Goobstation.Common,Content.Goobstation.Maths,Content.Shared.Database}/**/*.cs
📄 CodeRabbit inference engine (.cursor/rules/ss14-shared.mdc)
{Content.Shared,Content.Goobstation.Shared,Content.Goobstation.Common,Content.Goobstation.Maths,Content.Shared.Database}/**/*.cs: Apply SS14 C# style guidelines from @.agents/rules/ss14-csharp-style.md
Follow SS14 ECS component patterns as defined in @.agents/skills/ss14-ecs-components/SKILL.md
Follow SS14 ECS entity patterns as defined in @.agents/skills/ss14-ecs-entities/SKILL.md
Follow SS14 ECS system patterns as defined in @.agents/skills/ss14-ecs-systems/SKILL.md
Follow SS14 event patterns as defined in @.agents/skills/ss14-events/SKILL.md
Follow SS14 prediction-aware gameplay code patterns as defined in @.agents/skills/ss14-prediction/SKILL.md
Follow SS14 netcode patterns as defined in @.agents/skills/ss14-netcode/SKILL.md
Follow SS14 localization identifier patterns as defined in @.agents/skills/ss14-localization-code/SKILL.md
Files:
Content.Shared/_Arcane/ErpPanel/Requirements/HeldItemRequirement.csContent.Shared/_Arcane/ErpPanel/ErpPanelPrototypes.csContent.Shared/_Arcane/ErpPanel/Requirements/EmptyInventorySlotRequirement.cs
**/*.{cs,xaml,yml,yaml}
📄 CodeRabbit inference engine (AGENTS.md)
If the task adds tests or you need to choose the right test layer, load skill
ss14-tests-authoring.
Files:
Content.Shared/_Arcane/ErpPanel/Requirements/HeldItemRequirement.csResources/Prototypes/_Arcane/Interactions/ERP/mouth.ymlResources/Prototypes/_Arcane/tags.ymlContent.Shared/_Arcane/ErpPanel/ErpPanelPrototypes.csContent.Shared/_Arcane/ErpPanel/Requirements/EmptyInventorySlotRequirement.csResources/Prototypes/_Arcane/Interactions/ERP/ears.ymlContent.Client/_Arcane/ErpPanel/ErpPanelWindow.xaml.csResources/Prototypes/_Arcane/Interactions/ERP/neck.ymlResources/Prototypes/_Arcane/Interactions/ERP/pussy.ymlResources/Prototypes/_Arcane/Interactions/ERP/anus.ymlResources/Prototypes/_Arcane/Interactions/ERP/face.ymlResources/Prototypes/_Arcane/Interactions/ERP/friendship.ymlResources/Prototypes/_Arcane/Interactions/ERP/boobs.ymlResources/Prototypes/_Arcane/Interactions/ERP/butt.ymlResources/Prototypes/_Arcane/Interactions/ERP/penis.ymlResources/Prototypes/_Arcane/Interactions/ERP/categories.ymlContent.Server/_Arcane/ErpPanel/ErpPanelSystem.cs
{Content.Shared,Content.Goobstation.Shared}/**/*.cs
📄 CodeRabbit inference engine (AGENTS.md)
{Content.Shared,Content.Goobstation.Shared}/**/*.cs: Put main shared data, shared events, networked state, and predicted logic inContent.Shared/; useContent.Goobstation.Shared/only for code that belongs to that existing module path.
Do not make shared projects depend on client-only or server-only projects.
Predicted systems and their relevant components belong inContent.Shared/. Shared predicted components should useNetworkedComponent,AutoGenerateComponentState, andAutoNetworkedFieldwhere appropriate.
Files:
Content.Shared/_Arcane/ErpPanel/Requirements/HeldItemRequirement.csContent.Shared/_Arcane/ErpPanel/ErpPanelPrototypes.csContent.Shared/_Arcane/ErpPanel/Requirements/EmptyInventorySlotRequirement.cs
Content.Shared/**/*.cs
⚙️ CodeRabbit configuration file
Content.Shared/**/*.cs: Review Content.Shared as shared gameplay and prediction code:
- Shared owns replicated state, shared events, prediction, and data both client and server must understand.
- Flag client-only or server-only dependencies in Shared.
- For local-player actions, verify prediction support instead of accepting delayed server-only UX.
- When state is networked, check NetworkedComponent, AutoGenerateComponentState, AutoNetworkedField, and Dirty/DirtyField usage.
- Prefer entity-system APIs and Entity<T?> / Resolve patterns over ad-hoc tuples or old-style access.
- Flag EntityUid.Invalid used as a "missing" sentinel.
Files:
Content.Shared/_Arcane/ErpPanel/Requirements/HeldItemRequirement.csContent.Shared/_Arcane/ErpPanel/ErpPanelPrototypes.csContent.Shared/_Arcane/ErpPanel/Requirements/EmptyInventorySlotRequirement.cs
Resources/**/*.{yml,ftl,json}
📄 CodeRabbit inference engine (.cursor/rules/ss14-resources.mdc)
Resources/**/*.{yml,ftl,json}: Follow SS14 naming conventions when editing prototype, localization, and resource files
Follow SS14 upstream maintenance practices when editing resource files
Files:
Resources/Prototypes/_Arcane/Interactions/ERP/mouth.ymlResources/Prototypes/_Arcane/tags.ymlResources/Prototypes/_Arcane/Interactions/ERP/ears.ymlResources/Prototypes/_Arcane/Interactions/ERP/neck.ymlResources/Prototypes/_Arcane/Interactions/ERP/pussy.ymlResources/Prototypes/_Arcane/Interactions/ERP/anus.ymlResources/Prototypes/_Arcane/Interactions/ERP/face.ymlResources/Prototypes/_Arcane/Interactions/ERP/friendship.ymlResources/Prototypes/_Arcane/Interactions/ERP/boobs.ymlResources/Prototypes/_Arcane/Interactions/ERP/butt.ymlResources/Prototypes/_Arcane/Interactions/ERP/penis.ymlResources/Prototypes/_Arcane/Interactions/ERP/categories.yml
Resources/**/*.yml
📄 CodeRabbit inference engine (.cursor/rules/ss14-resources.mdc)
Resources/**/*.yml: Follow SS14 ECS prototype patterns and conventions
Follow SS14 graphics generic visualizer appearance conventions and patterns
Resources/**/*.yml: Loadss14-naming-conventionsdocumentation for Resources work
Loadss14-ecs-prototypesdocumentation for Resources work
Loadss14-upstream-maintenancedocumentation for Resources work
Loadss14-prototypes-localedocumentation for Resources work
Loadss14-localization-stringsdocumentation for Resources work
Loadss14-sprite-overlays-shadersdocumentation when working with RSI metadata, textures, sprite layers, overlays, or shader resources
Validate YAML after editsRun
dotnet run --project Content.YAMLLinter/Content.YAMLLinter.csproj -c DebugOptto validate YAML and resource edits.
Files:
Resources/Prototypes/_Arcane/Interactions/ERP/mouth.ymlResources/Prototypes/_Arcane/tags.ymlResources/Prototypes/_Arcane/Interactions/ERP/ears.ymlResources/Prototypes/_Arcane/Interactions/ERP/neck.ymlResources/Prototypes/_Arcane/Interactions/ERP/pussy.ymlResources/Prototypes/_Arcane/Interactions/ERP/anus.ymlResources/Prototypes/_Arcane/Interactions/ERP/face.ymlResources/Prototypes/_Arcane/Interactions/ERP/friendship.ymlResources/Prototypes/_Arcane/Interactions/ERP/boobs.ymlResources/Prototypes/_Arcane/Interactions/ERP/butt.ymlResources/Prototypes/_Arcane/Interactions/ERP/penis.ymlResources/Prototypes/_Arcane/Interactions/ERP/categories.yml
Resources/**/*.{yml,ftl}
📄 CodeRabbit inference engine (.cursor/rules/ss14-resources.mdc)
Follow SS14 prototype locale integration rules and practices
Files:
Resources/Prototypes/_Arcane/Interactions/ERP/mouth.ymlResources/Prototypes/_Arcane/tags.ymlResources/Prototypes/_Arcane/Interactions/ERP/ears.ymlResources/Prototypes/_Arcane/Interactions/ERP/neck.ymlResources/Prototypes/_Arcane/Interactions/ERP/pussy.ymlResources/Prototypes/_Arcane/Interactions/ERP/anus.ymlResources/Prototypes/_Arcane/Interactions/ERP/face.ymlResources/Prototypes/_Arcane/Interactions/ERP/friendship.ymlResources/Prototypes/_Arcane/Interactions/ERP/boobs.ymlResources/Prototypes/_Arcane/Interactions/ERP/butt.ymlResources/Prototypes/_Arcane/Interactions/ERP/penis.ymlResources/Prototypes/_Arcane/Interactions/ERP/categories.yml
Resources/Prototypes/**/*.yml
📄 CodeRabbit inference engine (AGENTS.md)
Resources/Prototypes/**/*.yml: Put prototypes under the most specific existing subtree inResources/Prototypes/. If you introduce a new prototype parent tree, put parent prototypes inbase.ymland variants in sibling files.
Keep entity prototype field order astype,abstract,parent,id,categories,name,suffix,description,components. Do not insert blank lines between- type:entries inside acomponents:list. Separate prototype blocks with one blank line.
Prefersuffixfor spawn-menu distinctions instead of changing prototypename.
Files:
Resources/Prototypes/_Arcane/Interactions/ERP/mouth.ymlResources/Prototypes/_Arcane/tags.ymlResources/Prototypes/_Arcane/Interactions/ERP/ears.ymlResources/Prototypes/_Arcane/Interactions/ERP/neck.ymlResources/Prototypes/_Arcane/Interactions/ERP/pussy.ymlResources/Prototypes/_Arcane/Interactions/ERP/anus.ymlResources/Prototypes/_Arcane/Interactions/ERP/face.ymlResources/Prototypes/_Arcane/Interactions/ERP/friendship.ymlResources/Prototypes/_Arcane/Interactions/ERP/boobs.ymlResources/Prototypes/_Arcane/Interactions/ERP/butt.ymlResources/Prototypes/_Arcane/Interactions/ERP/penis.ymlResources/Prototypes/_Arcane/Interactions/ERP/categories.yml
⚙️ CodeRabbit configuration file
Resources/Prototypes/**/*.yml: Review SS14 prototypes carefully:
- Use the narrowest existing subtree and avoid duplicating nearby prototype files or parent trees.
- Keep entity field order as: type, abstract, parent, id, categories, name, suffix, description, components.
- Prefer base.yml for parent trees and sibling files for variants.
- Do not add blank lines inside components lists.
- Call out broken inheritance, risky prototype ID changes, missing paired locale updates, and Appearance / GenericVisualizer mismatches.
Files:
Resources/Prototypes/_Arcane/Interactions/ERP/mouth.ymlResources/Prototypes/_Arcane/tags.ymlResources/Prototypes/_Arcane/Interactions/ERP/ears.ymlResources/Prototypes/_Arcane/Interactions/ERP/neck.ymlResources/Prototypes/_Arcane/Interactions/ERP/pussy.ymlResources/Prototypes/_Arcane/Interactions/ERP/anus.ymlResources/Prototypes/_Arcane/Interactions/ERP/face.ymlResources/Prototypes/_Arcane/Interactions/ERP/friendship.ymlResources/Prototypes/_Arcane/Interactions/ERP/boobs.ymlResources/Prototypes/_Arcane/Interactions/ERP/butt.ymlResources/Prototypes/_Arcane/Interactions/ERP/penis.ymlResources/Prototypes/_Arcane/Interactions/ERP/categories.yml
{Content.Client,Content.Goobstation.Client,Content.Goobstation.UIKit}/**/*.{cs,xaml}
📄 CodeRabbit inference engine (.cursor/rules/ss14-ui.mdc)
{Content.Client,Content.Goobstation.Client,Content.Goobstation.UIKit}/**/*.{cs,xaml}: Follow SS14 naming conventions when editing UI, XAML, and client-state files
Maintain upstream compatibility when editing SS14 client code
Follow SS14 UI and BUI conventions when implementing UI components and behavior-driven user interfaces
Files:
Content.Client/_Arcane/ErpPanel/ErpPanelWindow.xaml.cs
{Content.Client,Content.Goobstation.Client,Content.Goobstation.UIKit}/**/*.cs
📄 CodeRabbit inference engine (.cursor/rules/ss14-ui.mdc)
{Content.Client,Content.Goobstation.Client,Content.Goobstation.UIKit}/**/*.cs: Apply SS14 prediction patterns when working with predicted client-state in SS14 client code
Follow SS14 localization code practices in UI and client-state implementationsPut main client-only visuals, overlays, XAML, and BUI front-ends in
Content.Client/; useContent.Goobstation.Client/orContent.Goobstation.UIKit/only when matching existing references and ownership.
Files:
Content.Client/_Arcane/ErpPanel/ErpPanelWindow.xaml.cs
{Content.Client,Content.Goobstation.Client,Content.Goobstation.UIKit}/**/*.{xaml,xaml.cs}
📄 CodeRabbit inference engine (.cursor/rules/ss14-ui.mdc)
Use proper localization strings in SS14 client XAML and UI code
Files:
Content.Client/_Arcane/ErpPanel/ErpPanelWindow.xaml.cs
**/*.xaml{,.cs}
📄 CodeRabbit inference engine (AGENTS.md)
**/*.xaml{,.cs}: If the task edits XAML windows, controls, code-behind, or client UI layout, load skillss14-ui-xaml.
Keep.xamlpaired with.xaml.csand the relevant BUI/client system.
Files:
Content.Client/_Arcane/ErpPanel/ErpPanelWindow.xaml.cs
Content.Client/**/*.cs
⚙️ CodeRabbit configuration file
Content.Client/**/*.cs: Review Content.Client for presentation-only behavior:
- Keep authority out of the client.
- Prefer reading already-networked component state instead of duplicating BUI state unless the pattern requires it.
- Flag missing localization for player-visible text.
- Prefer nearby established UI and visual patterns over custom one-off structures.
Files:
Content.Client/_Arcane/ErpPanel/ErpPanelWindow.xaml.cs
{Content.Server,Content.Goobstation.Server}/**/*.cs
📄 CodeRabbit inference engine (AGENTS.md)
Put main server-only authority and non-predicted server simulation in
Content.Server/; useContent.Goobstation.Server/for features already rooted in that module.
Files:
Content.Server/_Arcane/ErpPanel/ErpPanelSystem.cs
**/*System.cs
📄 CodeRabbit inference engine (AGENTS.md)
Public entity-system APIs that operate on entities should usually take
Entity<T?>orEntityUidfirst and callResolve(...)early.
Files:
Content.Server/_Arcane/ErpPanel/ErpPanelSystem.cs
Content.Server/**/*.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/_Arcane/ErpPanel/ErpPanelSystem.cs
🧠 Learnings (1)
📚 Learning: 2026-06-04T21:17:36.815Z
Learnt from: MataVsn
Repo: ArcaneSS14/arcane-station PR: 31
File: Content.Client/Fluids/PuddleSystem.cs:41-41
Timestamp: 2026-06-04T21:17:36.815Z
Learning: In this repo (ArcaneSS14/arcane-station), reviewers should use the Arcane inline fork-edit marker naming for single-line edits outside `_Arcane` paths: prefer `// Arcane` or `// Arcane-edit` and do not use `// Orion` for this purpose. Repo-specific AGENTS guidance that mentions `// Orion` does not apply to these single-line changes; only `_Arcane` paths follow the applicable different convention.
Applied to files:
Content.Shared/_Arcane/ErpPanel/Requirements/HeldItemRequirement.csContent.Shared/_Arcane/ErpPanel/ErpPanelPrototypes.csContent.Shared/_Arcane/ErpPanel/Requirements/EmptyInventorySlotRequirement.csContent.Client/_Arcane/ErpPanel/ErpPanelWindow.xaml.csContent.Server/_Arcane/ErpPanel/ErpPanelSystem.cs
🔇 Additional comments (21)
Content.Shared/_Arcane/ErpPanel/ErpPanelPrototypes.cs (1)
32-34: LGTM!Content.Shared/_Arcane/ErpPanel/Requirements/HeldItemRequirement.cs (1)
1-27: LGTM!Content.Shared/_Arcane/ErpPanel/Requirements/EmptyInventorySlotRequirement.cs (1)
1-21: LGTM!Content.Server/_Arcane/ErpPanel/ErpPanelSystem.cs (2)
235-238: LGTM!
261-287: LGTM!Content.Client/_Arcane/ErpPanel/ErpPanelWindow.xaml.cs (1)
21-22: LGTM!Also applies to: 336-338, 363-381
Resources/Prototypes/_Arcane/Interactions/ERP/ears.yml (1)
17-93: LGTM!Resources/Prototypes/_Arcane/Interactions/ERP/face.yml (1)
1-220: LGTM!Resources/Prototypes/_Arcane/tags.yml (1)
52-62: LGTM!Resources/Prototypes/_Arcane/Interactions/ERP/penis.yml (1)
20-193: LGTM!Also applies to: 199-294, 326-347
Resources/Prototypes/_Arcane/Interactions/ERP/pussy.yml (1)
24-167: LGTM!Resources/Prototypes/_Arcane/Interactions/ERP/friendship.yml (1)
3-3: LGTM!Also applies to: 18-18, 37-37, 64-64, 98-98
Resources/Prototypes/_Arcane/Interactions/ERP/categories.yml (1)
25-44: Удаление категории Friendship очищено корректно. Проверка подтверждает отсутствие ссылок на удалённую категорию — все panelInteraction записи ссылаются на существующие категории из categories.yml.Resources/Prototypes/_Arcane/Interactions/ERP/anus.yml (3)
20-21: LGTM!Also applies to: 47-48, 69-70, 95-96
110-156: LGTM!
157-186: LGTM!Resources/Prototypes/_Arcane/Interactions/ERP/boobs.yml (1)
19-20: LGTM!Also applies to: 41-42, 68-69, 95-96, 124-125, 147-148, 179-210
Resources/Prototypes/_Arcane/Interactions/ERP/butt.yml (1)
18-24: LGTM!Also applies to: 25-44, 45-72, 73-91, 92-111, 112-133, 134-157
Resources/Prototypes/_Arcane/Interactions/ERP/neck.yml (3)
15-16: LGTM!Also applies to: 35-36, 55-56
81-96: LGTM!Also applies to: 98-122
60-60: КатегорияShouldersсуществует, ноShoulderMassage— новая сущность, не переназначение.Категория
Shouldersкорректно создана в categories.yml. Однако файл был добавлен впервые —ShoulderMassageизначально получил категориюShoulders, а не был переназначен изNeck. Другие взаимодействия в файле (BiteNeck, LickNeck, KissNeck) корректно используют категориюNeck.> Likely an incorrect or invalid review comment.
| private const string ErpInteractionTag = "RequiresERP"; | ||
|
|
There was a problem hiding this comment.
🧹 Nitpick | 🔵 Trivial | ⚡ Quick win
Дублирование константы с клиентом.
Константа ErpInteractionTag продублирована в Content.Client/_Arcane/ErpPanel/ErpPanelWindow.xaml.cs:21. Хелперы IsErpInteraction и CanUseErp тоже идентичны на сервере и клиенте (строки 270-286 здесь, 364-381 в клиенте).
Рассмотри вынос в Shared для переиспользования:
- Константа →
ErpPanelPrototypes.csили отдельный статический класс - Хелперы → extension methods или shared system
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@Content.Server/_Arcane/ErpPanel/ErpPanelSystem.cs` around lines 23 - 24, The
constant ErpInteractionTag defined in ErpPanelSystem.cs is duplicated in the
client-side ErpPanelWindow.xaml.cs file, and the helper methods IsErpInteraction
and CanUseErp are also duplicated across server and client implementations. To
eliminate this duplication, move the ErpInteractionTag constant and the
IsErpInteraction and CanUseErp helper methods to a shared location in the
Content.Shared folder (either within ErpPanelPrototypes.cs or a new dedicated
static class). Then update both the server ErpPanelSystem.cs and client
ErpPanelWindow.xaml.cs to reference these shared implementations instead of
maintaining duplicate code.
|
На тест можно забить, я пофиксил в мастере |
Описание PR
Новые тэги и новые требования к панели. Тэги на секс игрушки на будущее. Проверка на свободный слот в инвентаре, прим, босые ноги. Категория дружбы была удалена, всё раскидано по категориям. Панель теперь доступна всем, ЕРП интеракции не показываются при ERP - No
anus
AnalLick2 Глубоко вылизать анус
AnalFingering2 Двумя пальцами в анус
ToyButt Использовать игрушку в попе
boobs.yml
BoobsSuck Сосать сосок
butt
ButtMassage Массировать попку
ButtTail Гладить попу хвостом
HandsOnButt Схватить за попку
KissButt Поцеловать попку
SlapButt Шлёпнуть по попе
HornsAssF Водить рогом по попе
ears
BiteEarsHuman Укусить ухо
EarsKiss Поцеловать в ухо
PatEars Погладить ушки
PatEarsHuman Потеребить уши
face
CheeksKiss Поцеловать в щёку
CheeksKissBoth Поцеловать в обе щёки
CheeksPat Похлопать по щекам
CheeksPress Сжать щёки
GentleKiss Нежный поцелуй
KissLips Страстный поцелуй
FaceRubCat Потереться мордочкой о лицо
FaceSitting Сесть лицом
FaceDickSlap Шлёпнуть членом по лицу
LegsSqueezeface Сдавить лицо ляжками
Mewing Замяукать в лицо
friendship.yml
FriendlyFlyingKiss Послать воздушный поцелуй
FriendlyNoseBoop Дать по носику
FriendlyTailPull Потянуть за хвост
KissHand Поцеловать руку
PatShoulder Похлопать по плечу
PetHead Погладить по голове
PlayfulNibble Игриво укусить
HornsPat Погладить рога
Kitty Потереться мордочкой
mouth
FeetMouth Футфетиш
neck
NuzzleNeck Уткнуться в шею
NuzzleNeckVulpa Ткнуться мордочкой в шею
BlowSlap Дать пощёчину
penis
CockBlowjob Сделать минет
CockNearAssTail Водить членом по попе с хвостом
HairFaceFuck Трахать в рот держа за волосы
LegsCockFuckTail Трахать ляжками с хвостом
HornsBlowjobF Лизать рог
pussy.yml
PussyTouch Потрогать вагину
PussyTailFuck Трахать вагину хвостом
ToyPussy Использовать игрушку
Медиа
Тип PR