Skip to content

Контент для Феликса - #693

Open
DeimonFly wants to merge 2 commits into
imperial-space:developfrom
DeimonFly:develop
Open

Контент для Феликса#693
DeimonFly wants to merge 2 commits into
imperial-space:developfrom
DeimonFly:develop

Conversation

@DeimonFly

@DeimonFly DeimonFly commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

О ПР`е

Тип: feat
Изменения:

  • Ивентовый контент: добавлены новые предметы, декорации и объекты для маппинга.

Технические детали

Нет

Изменения кода официальных разработчиков

Нет

Summary by CodeRabbit

  • Новые возможности

    • Добавлена кислотная поверхность: она наносит урон, визуально анимируется и образует пузырьки.
    • Добавлены новые предметы и объекты Felix: взрывчатка, верёвочные наручники, деревья, антенны, баррикады, ящики, полки, кресты, знаки и лабораторный стол.
    • Разрушаемые объекты получили соответствующие повреждения, звуки и выпадение материалов.
  • Локализация

    • Добавлены русские названия и описания нового содержимого Felix.
  • Визуальные улучшения

    • Добавлены текстуры и анимации кислотных эффектов и новых объектов.

@github-actions github-actions Bot added the size/Small Насколько сложно будет апстримить label Jul 24, 2026
@coderabbitai

coderabbitai Bot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Walkthrough

Добавлена кислотная поверхность с ядовитым уроном и пузырьками. Реализованы объекты Felix: C-4, наручники, деревья, антенна, баррикады, кресты, ящики, полки, знаки и лабораторный стол. Добавлены параметры разрушения, отображения и выпадения материалов, русские локализации и метаданные RSI-текстур. Обновлён .gitignore.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant FloorAcidEntity
  participant TimedSpawner
  participant AcidBubble
  participant PoisonDamage
  FloorAcidEntity->>PoisonDamage: наносит Poison-урон 4
  FloorAcidEntity->>TimedSpawner: запускает периодический спавн
  TimedSpawner->>AcidBubble: создаёт пузырёк с вероятностью 0.12
  AcidBubble->>AcidBubble: удаляется через 2.2 секунды
Loading
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed Название точно и кратко отражает основное изменение — добавление игрового контента для Феликса.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

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

❤️ Share

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

@github-actions github-actions Bot added Resprite Изменения заменяют оригинальные текстуры визардов Prototypes Изменения добавляет новые прототипы Change WIz Prototypes Изменения вмешиваются в код прототипов визардов Sprite Изменения добавляют спрайты labels Jul 24, 2026
@The-Fiafi

Copy link
Copy Markdown
Contributor

Линтеры должны проходить

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 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 `@Resources/Prototypes/Imperial/DeimonFly/object/acid.yml`:
- Line 3: Replace the acid surface prototype’s parent FloorWaterEntity with a
neutral floor prototype so it does not inherit water mechanics such as
extinguishing, pumping, slowing, slipping, or water sounds. Preserve the
acid-specific behavior while removing the inherited water components rather than
duplicating them.

In `@Resources/Prototypes/Imperial/DeimonFly/object/felix_content.yml`:
- Around line 262-296: Удалите дублирующий блок Fixtures из сущности
FelixBarricadeMetal и оставьте параметры коллизии унаследованными от
BaseFelixBarricade. Сохраните остальные компоненты и настройки
FelixBarricadeMetal без изменений.
🪄 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: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: b7b25946-3f4e-46a3-8a11-4036da013a30

📥 Commits

Reviewing files that changed from the base of the PR and between 67a19fb and 8538852.

⛔ Files ignored due to path filters (51)
  • Resources/Textures/Imperial/DeimonFly/Acid/acid.rsi/full.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Acid/acid.rsi/water0.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Acid/acid.rsi/water1.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Acid/acid.rsi/water2.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Acid/acid.rsi/water3.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Acid/acid.rsi/water4.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Acid/acid.rsi/water5.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Acid/acid.rsi/water6.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Acid/acid.rsi/water7.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Acid/acid_bubble.rsi/bubble.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Felix/Bombs/felix_c4.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Felix/Bombs/felix_c4.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Felix/Bombs/felix_c4.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Felix/Bombs/felix_c4.rsi/primed.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/antenna.rsi/animation.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/antenna.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/barricade_metal.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/barricade_sandy.rsi/bags4.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/barricade_sandy.rsi/bags5.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/barricade_snowy.rsi/bags4.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/barricade_snowy.rsi/bags5.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/black_tree_animated.rsi/animated.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/black_tree_large.rsi/large.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/black_tree_small.rsi/small.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/felix_crate_tier1.rsi/Base_Brute_10.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/felix_crate_tier1.rsi/Base_Brute_20.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/felix_crate_tier1.rsi/Base_Brute_30.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/felix_crate_tier1.rsi/Base_Brute_40.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/felix_crate_tier1.rsi/Base_Brute_50.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/felix_crate_tier1.rsi/base.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/felix_crate_tier2.rsi/Base_Brute_15.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/felix_crate_tier2.rsi/Base_Brute_30.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/felix_crate_tier2.rsi/Base_Brute_45.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/felix_crate_tier2.rsi/base.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/felix_crates.rsi/event1.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/felix_crates.rsi/event2.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/felix_shelves.rsi/shelf1.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/felix_shelves.rsi/shelf2.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/felix_signs_32.rsi/danger_mines.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/felix_signs_32.rsi/lab_area.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/felix_signs_32.rsi/no_guns.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/felix_signs_32.rsi/radiation.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/felix_signs_32.rsi/secure_area.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/felix_signs_64.rsi/minefield.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/felix_signs_64.rsi/stop.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/felix_signs_wide.rsi/area_map.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/felix_signs_wide.rsi/broken_display.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/felix_signs_wide.rsi/whiteboard.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/felix_tablet.rsi/tablet.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/grave_crosses.rsi/grave1.png is excluded by !**/*.png
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/grave_crosses.rsi/grave2.png is excluded by !**/*.png
📒 Files selected for processing (23)
  • .gitignore
  • Resources/Locale/ru-RU/Imperial/DeimonFly/FelixContent.ftl
  • Resources/Prototypes/Imperial/DeimonFly/object/acid.yml
  • Resources/Prototypes/Imperial/DeimonFly/object/felix_content.yml
  • Resources/Textures/Imperial/DeimonFly/Acid/acid.rsi/meta.json
  • Resources/Textures/Imperial/DeimonFly/Acid/acid_bubble.rsi/meta.json
  • Resources/Textures/Imperial/DeimonFly/Felix/Bombs/felix_c4.rsi/meta.json
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/antenna.rsi/meta.json
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/barricade_metal.rsi/meta.json
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/barricade_sandy.rsi/meta.json
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/barricade_snowy.rsi/meta.json
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/black_tree_animated.rsi/meta.json
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/black_tree_large.rsi/meta.json
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/black_tree_small.rsi/meta.json
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/felix_crate_tier1.rsi/meta.json
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/felix_crate_tier2.rsi/meta.json
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/felix_crates.rsi/meta.json
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/felix_shelves.rsi/meta.json
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/felix_signs_32.rsi/meta.json
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/felix_signs_64.rsi/meta.json
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/felix_signs_wide.rsi/meta.json
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/felix_tablet.rsi/meta.json
  • Resources/Textures/Imperial/DeimonFly/Felix/Structures/grave_crosses.rsi/meta.json

@@ -0,0 +1,41 @@
- type: entity
id: FloorAcidEntity
parent: FloorWaterEntity

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟠 Major | 🏗️ Heavy lift

Не наследуйте водную механику для кислотной поверхности.

parent: FloorWaterEntity переносит на кислоту водный раствор, возможность откачки, замедление, скольжение, водные звуки шагов и Extinguish. В результате кислотный тайл тушит огонь и ведёт себя как вода, что противоречит заявленному назначению токсичной поверхности. Используйте нейтральный родительский прототип либо явно удалите/замените водные компоненты.

Основание: Resources/Prototypes/Entities/Tiles/water.yml:20-63 из предоставленного контекста.

🤖 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/Imperial/DeimonFly/object/acid.yml` at line 3, Replace
the acid surface prototype’s parent FloorWaterEntity with a neutral floor
prototype so it does not inherit water mechanics such as extinguishing, pumping,
slowing, slipping, or water sounds. Preserve the acid-specific behavior while
removing the inherited water components rather than duplicating them.

Comment on lines +262 to +296
- type: entity
id: FelixBarricadeMetal
parent: BaseFelixBarricade
name: metal barricade
description: A low barricade assembled from metal posts.
components:
- type: Sprite
sprite: Imperial/DeimonFly/Felix/Structures/barricade_metal.rsi
state: icon
- type: Fixtures
fixtures:
fix1:
shape:
!type:PhysShapeAabb
bounds: "-0.49,-0.35,0.49,0.35"
density: 1000
mask:
- FullTileMask
layer:
- MidImpassable
- LowImpassable
- type: Damageable
damageContainer: StructuralInorganic
damageModifierSet: MetalBarricadeDamageModifierSet
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 150
behaviors:
- !type:PlaySoundBehavior
sound:
collection: MetalBreak
- !type:DoActsBehavior
acts: [ "Destruction" ]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Дублирование блока Fixtures у FelixBarricadeMetal.

FelixBarricadeMetal наследуется от BaseFelixBarricade, но заново объявляет абсолютно идентичный блок Fixtures (те же bounds, density, mask, layer), уже заданный в родителе (строки 201-212). Это избыточно и создаёт риск рассинхронизации, если параметры коллизии родителя изменятся в будущем, а тут — нет.

♻️ Предлагаемое исправление
   - type: Sprite
     sprite: Imperial/DeimonFly/Felix/Structures/barricade_metal.rsi
     state: icon
-  - type: Fixtures
-    fixtures:
-      fix1:
-        shape:
-          !type:PhysShapeAabb
-          bounds: "-0.49,-0.35,0.49,0.35"
-        density: 1000
-        mask:
-        - FullTileMask
-        layer:
-        - MidImpassable
-        - LowImpassable
   - type: Damageable
     damageContainer: StructuralInorganic
     damageModifierSet: MetalBarricadeDamageModifierSet
📝 Committable suggestion

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

Suggested change
- type: entity
id: FelixBarricadeMetal
parent: BaseFelixBarricade
name: metal barricade
description: A low barricade assembled from metal posts.
components:
- type: Sprite
sprite: Imperial/DeimonFly/Felix/Structures/barricade_metal.rsi
state: icon
- type: Fixtures
fixtures:
fix1:
shape:
!type:PhysShapeAabb
bounds: "-0.49,-0.35,0.49,0.35"
density: 1000
mask:
- FullTileMask
layer:
- MidImpassable
- LowImpassable
- type: Damageable
damageContainer: StructuralInorganic
damageModifierSet: MetalBarricadeDamageModifierSet
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 150
behaviors:
- !type:PlaySoundBehavior
sound:
collection: MetalBreak
- !type:DoActsBehavior
acts: [ "Destruction" ]
- type: entity
id: FelixBarricadeMetal
parent: BaseFelixBarricade
name: metal barricade
description: A low barricade assembled from metal posts.
components:
- type: Sprite
sprite: Imperial/DeimonFly/Felix/Structures/barricade_metal.rsi
state: icon
- type: Damageable
damageContainer: StructuralInorganic
damageModifierSet: MetalBarricadeDamageModifierSet
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 150
behaviors:
- !type:PlaySoundBehavior
sound:
collection: MetalBreak
- !type:DoActsBehavior
acts: [ "Destruction" ]
🤖 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/Imperial/DeimonFly/object/felix_content.yml` around
lines 262 - 296, Удалите дублирующий блок Fixtures из сущности
FelixBarricadeMetal и оставьте параметры коллизии унаследованными от
BaseFelixBarricade. Сохраните остальные компоненты и настройки
FelixBarricadeMetal без изменений.

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

Labels

Change WIz Prototypes Изменения вмешиваются в код прототипов визардов Prototypes Изменения добавляет новые прототипы Resprite Изменения заменяют оригинальные текстуры визардов size/Small Насколько сложно будет апстримить Sprite Изменения добавляют спрайты

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants