Skip to content

NeoAvali: Female displacement fixes pt. 2 - #5558

Merged
Rinary1 merged 10 commits into
ss14Starlight:starlight-devfrom
Spaghetti-bit:ProtoAvaliDisplacementsFix2
Aug 11, 2026
Merged

NeoAvali: Female displacement fixes pt. 2#5558
Rinary1 merged 10 commits into
ss14Starlight:starlight-devfrom
Spaghetti-bit:ProtoAvaliDisplacementsFix2

Conversation

@Spaghetti-bit

@Spaghetti-bit Spaghetti-bit commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Short description

Fixes some missed displacements, mainly the shoes and other clothing, the only thing that was fixed by #5515 was the uniform.

Moves the inventory definition to Resources\Prototypes\_Starlight\Inventory\inventories.yml and assigns it the ID of BaseInventoryNeoAvali.

BaseInventoryNeoAvali is a child of BaseInventoryAvali.

id: BaseMobNeoAvali now is a child of BaseInventoryNeoAvali. Easier to manage.

Why we need to add this

Cursed four legged avali bad.

Media (Video/Screenshots)

Before

image image image image

After

Renala our guinea pig (again):

image image image image

Random outfit:

image image image image

Checks

  • I do not require assistance to complete the PR.
  • Before posting/requesting review of a PR, I have verified that the changes work.
  • I have added screenshots/videos of the changes, or this PR does not change in-game mechanics.
  • I affirm that my changes are licensed under the MIT License and grant permission for use in this repository under its conditions.

Changelog
🆑 Spaghetti-Bit

  • fix: Properly fixes the rest of neo-avali female sprite displacements (Shoes, armor, backpack, mask, and head).

@Spaghetti-bit
Spaghetti-bit requested a review from a team August 7, 2026 19:00
@github-actions github-actions Bot added size/M Changes: No C# Changes: Prototypes S: Untriaged Status: Indicates an item has not been triaged and doesn't have appropriate labels. labels Aug 7, 2026
@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Summary

This PR fixes additional female ProtoAvali sprite displacements. It primarily corrects shoes and clothing placements, including armor, backpacks, masks, head items, hands, and gloves.

The inventory definition moves to Resources/Prototypes/_Starlight/Inventory/inventories.yml. The new abstract BaseInventoryNeoAvali inherits BaseInventoryAvali and defines Avali species, Neocyte template, and female displacement mappings.

BaseMobNeoAvali and AppearanceNeoAvali now inherit BaseInventoryNeoAvali. Their duplicated inline inventory and displacement configuration is removed.

User impact

Female ProtoAvali equipment should align correctly during gameplay. The shared inventory configuration reduces duplication between the affected prototypes.

Risk areas

  • Incorrect inheritance or displacement mappings can affect sprite alignment.
  • Changes to AppearanceNeoAvali may affect entities that use the appearance prototype without the expected inventory component.
  • The prototype naming differs between the PR objective (ProtoAvali) and the changed entities (NeoAvali), which requires verification.

Guideline gaps

  • The PR does not explain why the inventory definition belongs in Starlight instead of Shared.
  • The PR does not include an explicit Starlight ownership comment.
  • The PR does not document possible breaking effects from moving and inheriting the inventory configuration.
  • The PR does not state the design impact of applying these mappings to AppearanceNeoAvali.

Walkthrough

The changes add a reusable BaseInventoryNeoAvali prototype with Neocyte metadata and Avali displacement mappings. Neo Avali mob and appearance prototypes now inherit this shared inventory configuration.

Changes

Neo Avali inventory configuration

Layer / File(s) Summary
Define shared Neo Avali inventory
Resources/Prototypes/_Starlight/Inventory/inventories.yml
Adds the abstract BaseInventoryNeoAvali prototype with Avali species, Neocyte template, and female displacement mappings.
Apply shared inventory to Avali prototypes
Resources/Prototypes/_Starlight/Entities/Mobs/Species/Neocyte/avali.yml
Updates BaseMobNeoAvali and AppearanceNeoAvali to inherit the shared inventory prototype. Removes duplicated appearance inventory and displacement data.

Estimated code review effort: 2 (Simple) | ~10 minutes

Suggested reviewers: redmushie, rinary1

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
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.
Title check ✅ Passed The title clearly identifies the main change: additional female NeoAvali displacement fixes.
Description check ✅ Passed The description directly explains the displacement fixes, inventory refactor, affected clothing, and validation images.

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.

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

🤖 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/_Starlight/Entities/Mobs/Species/Protogen/avali.yml`:
- Line 114: Update the parent ordering for the Protogen Avali prototype so
BaseInventoryProtoAvali appears before BaseSpeciesDummy, while preserving
BaseProtogenAppearance and the existing parent set.
🪄 Autofix

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: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 412021db-fa6d-4ce6-928c-bd5ec13c7c07

📥 Commits

Reviewing files that changed from the base of the PR and between e22931e and ed41062.

📒 Files selected for processing (2)
  • Resources/Prototypes/_Starlight/Entities/Mobs/Species/Protogen/avali.yml
  • Resources/Prototypes/_Starlight/Inventory/inventories.yml

Comment thread Resources/Prototypes/_Starlight/Entities/Mobs/Species/Protogen/avali.yml Outdated
@github-actions github-actions Bot added the S: Needs Review Status: Requires additional reviews before being fully accepted. Not to be replaced by S: Approved. label Aug 7, 2026
@Spaghetti-bit

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor
⚠️ Action not completed

Already reviewed.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@Spaghetti-bit

Copy link
Copy Markdown
Contributor Author

@coderabbitai please review again.

@coderabbitai

coderabbitai Bot commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

@Spaghetti-bit I will perform a full review of pull request #5558.

✅ Action performed

Full review finished.

@github-actions github-actions Bot added the S: Merge Conflict Status: Needs to resolve merge conflicts before it can be accepted label Aug 10, 2026
@github-actions

Copy link
Copy Markdown
Contributor

This pull request has conflicts, please resolve those before we can evaluate the pull request.

@github-actions github-actions Bot removed the S: Merge Conflict Status: Needs to resolve merge conflicts before it can be accepted label Aug 10, 2026
@coderabbitai

coderabbitai Bot commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Note

GitHub couldn't provide a complete incremental comparison for this pull request, so CodeRabbit is performing a full review instead. This review may take a little longer.

@coderabbitai

coderabbitai Bot commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Note

GitHub couldn't provide a complete incremental comparison for this pull request, so CodeRabbit is performing a full review instead. This review may take a little longer.

@Spaghetti-bit Spaghetti-bit changed the title ProtoAvali: Female displacement fixes pt. 2 NeoAvali: Female displacement fixes pt. 2 Aug 10, 2026
@Spaghetti-bit

Copy link
Copy Markdown
Contributor Author

Fixed merge conflicts.

@github-actions

github-actions Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Content + Integration Test Results

Summary:

Tests 📝 Passed ✅ Failed ❌ Skipped ⏭️
1682 1661 1 20

Failed Tests:

Failed Tests ❌ Fail Message
❌ SpawnAndDirtyAllEntities SERVER: 48.843s [ERRO] resolve: Can't resolve "Robust.Shared.Physics.Components.PhysicsComponent" on entity NanoTrasen navy marine hardsuit helmet (323148/n323148, ClothingHeadHelmetHardsuitNTNCConsortium)!
at System.Environment.get_StackTrace()
at Robust.Shared.Physics.Systems.SharedPhysicsSystem.ApplyLinearImpulse(EntityUid uid, Vector2 impulse, FixturesComponent manager, PhysicsComponent body) in /home/runner/work/space-station-14/space-station-14/RobustToolbox/Robust.Shared/Physics/Systems/SharedPhysicsSystem.Components.cs:line 222
at Content.Shared.Gibbing.GibbingSystem.FlingDroppedEntity(EntityUid target) in /home/runner/work/space-station-14/space-station-14/Content.Shared/Gibbing/GibbingSystem.cs:line 68
at Content.Shared.Gibbing.GibbingSystem.Gib(EntityUid ent, Boolean dropGiblets, Nullable`1 user) in /home/runner/work/space-station-14/space-station-14/Content.Shared/Gibbing/GibbingSystem.cs:line 51
at Content.Shared.Trigger.Systems.GibOnTriggerSystem.OnTrigger(Entity`1 ent, EntityUid target, TriggerEvent& args) in /home/runner/work/space-station-14/space-station-14/Content.Shared/Trigger/Systems/GibOnTriggerSystem.cs:line 24
at DMD?26311959::Robust.Shared.GameObjects.EntityEventBus::EntDispatch>(EntityEventBus this, EntityUid euid, Type eventType, Unit& args)
at SyncProxy(EntityEventBus , EntityUid , Type , Unit& )
at Content.Shared.Trigger.Systems.TriggerSystem.Trigger(EntityUid trigger, Nullable`1 user, String key, Boolean predicted) in /home/runner/work/space-station-14/space-station-14/Content.Shared/Trigger/Systems/TriggerSystem.cs:line 80
at Content.Shared.Trigger.Systems.TriggerOnMobstateChangeSystem.OnMobStateRelay(EntityUid uid, TriggerOnMobstateChangeComponent component, ImplantRelayEvent`1 args) in /home/runner/work/space-station-14/space-station-14/Content.Shared/Trigger/Systems/TriggerOnMobstateChangeSystem.cs:line 37
at DMD?26311959::Robust.Shared.GameObjects.EntityEventBus::EntDispatch>(EntityEventBus this, EntityUid euid, Type eventType, Unit& args)
at SyncProxy(EntityEventBus , EntityUid , Type , Unit& )
at Content.Shared.Implants.SharedSubdermalImplantSystem.RelayToImplantEvent[T](EntityUid uid, ImplantedComponent component, T args) in /home/runner/work/space-station-14/space-station-14/Content.Shared/Implants/SharedSubdermalImplantSystem.Relays.cs:line 36
at Robust.Shared.GameObjects.EntityEventBus.<>c__DisplayClass54_0`2.g__EventHandler|0(EntityUid uid, IComponent comp, Unit& ev) in /home/runner/work/space-station-14/space-station-14/RobustToolbox/Robust.Shared/GameObjects/EntityEventBus.Directed.cs:line 267
at Robust.Shared.GameObjects.EntityEventBus.RaiseLocalOrdered(EntityUid uid, Type eventType, EventData subs, Unit& unitRef, Boolean broadcast) in /home/runner/work/space-station-14/space-station-14/RobustToolbox/Robust.Shared/GameObjects/EntityEventBus.Ordering.cs:line 43
at Content.Shared.Mobs.Systems.MobStateSystem.ChangeState(EntityUid target, MobStateComponent component, MobState newState, Nullable`1 origin) in /home/runner/work/space-station-14/space-station-14/Content.Shared/Mobs/Systems/MobStateSystem.StateMachine.cs:line 114
at Content.Shared.Mobs.Systems.MobStateSystem.UpdateMobState(EntityUid entity, MobStateComponent component, Nullable`1 origin) in /home/runner/work/space-station-14/space-station-14/Content.Shared/Mobs/Systems/MobStateSystem.StateMachine.cs:line 37
at Content.Shared.Mobs.Systems.MobThresholdSystem.OnDamaged(EntityUid target, MobThresholdsComponent thresholds, DamageChangedEvent args) in /home/runner/work/space-station-14/space-station-14/Content.Shared/Mobs/Systems/MobThresholdSystem.cs:line 430
at Robust.Shared.GameObjects.EntityEventBus.RaiseLocalOrdered(EntityUid uid, Type eventType, EventData subs, Unit& unitRef, Boolean broadcast) in /home/runner/work/space-station-14/space-station-14/RobustToolbox/Robust.Shared/GameObjects/EntityEventBus.Ordering.cs:line 43
at Content.Shared.Damage.Systems.DamageableSystem.OnEntityDamageChanged(Entity`1 ent, DamageSpecifier damageDelta, Boolean interruptsDoAfters, Nullable`1 origin) in /home/runner/work/space-station-14/space-station-14/Content.Shared/Damage/Systems/DamageableSystem.cs:line 69
at Content.Shared.Damage.Systems.DamageableSystem.ChangeDamage(Entity`1 ent, DamageSpecifier damage, Boolean ignoreResistances, Boolean interruptsDoAfters, Nullable`1 origin, Boolean ignoreGlobalModifiers, Single armorPenetration, Boolean canHeal) in /home/runner/work/space-station-14/space-station-14/Content.Shared/Damage/Systems/DamageableSystem.API.cs:line 211
at Content.Shared.Body.Systems.SharedBodySystem.PartRemoveDamage(Entity`1 bodyEnt, Entity`1 partEnt) in /home/runner/work/space-station-14/space-station-14/Content.Shared/_Starlight/Medical/Body/Systems/SharedBodySystem.Parts.cs:line 210
at Content.Server._Starlight.Medical.Body.Systems.BodySystem.RemovePart(Entity`1 bodyEnt, Entity`1 partEnt, String slotId) in /home/runner/work/space-station-14/space-station-14/Content.Server/_Starlight/Medical/Body/Systems/BodySystem.cs:line 84
at Content.Shared.Body.Systems.SharedBodySystem.OnBodyPartRemoved(Entity`1 ent, EntRemovedFromContainerMessage& args) in /home/runner/work/space-station-14/space-station-14/Content.Shared/_Starlight/Medical/Body/Systems/SharedBodySystem.Parts.cs:line 68
at Robust.Shared.GameObjects.EntityEventBus.RaiseLocalOrdered(EntityUid uid, Type eventType, EventData subs, Unit& unitRef, Boolean broadcast) in /home/runner/work/space-station-14/space-station-14/RobustToolbox/Robust.Shared/GameObjects/EntityEventBus.Ordering.cs:line 43
at Robust.Shared.Containers.SharedContainerSystem.Remove(Entity`2 toRemove, BaseContainer container, Boolean reparent, Boolean force, Nullable`1 destination, Nullable`1 localRotation) in /home/runner/work/space-station-14/space-station-14/RobustToolbox/Robust.Shared/Containers/SharedContainerSystem.Remove.cs:line 101
at Robust.Shared.Containers.SharedContainerSystem.RemoveEntity(EntityUid uid, EntityUid toremove, ContainerManagerComponent containerManager, TransformComponent containedXform, MetaDataComponent containedMeta, Boolean reparent, Boolean force, Nullable`1 destination, Nullable`1 localRotation) in /home/runner/work/space-station-14/space-station-14/RobustToolbox/Robust.Shared/Containers/SharedContainerSystem.cs:line 258
at Robust.Shared.Containers.SharedContainerSystem.OnParentChanged(EntParentChangedMessage& message) in /home/runner/work/space-station-14/space-station-14/RobustToolbox/Robust.Shared/Containers/SharedContainerSystem.cs:line 680
at Robust.Shared.GameObjects.SharedTransformSystem.RaiseMoveEvent(Entity`2 ent, EntityUid oldParent, Vector2 oldPosition, Angle oldRotation, Nullable`1 oldMap, Boolean checkTraversal) in /home/runner/work/space-station-14/space-station-14/RobustToolbox/Robust.Shared/GameObjects/Systems/SharedTransformSystem.cs:line 273
at Robust.Shared.GameObjects.SharedTransformSystem.SetCoordinates(Entity`2 entity, EntityCoordinates value, Nullable`1 rotation, Boolean unanchor, TransformComponent newParent, TransformComponent oldParent) in /home/runner/work/space-station-14/space-station-14/RobustToolbox/Robust.Shared/GameObjects/Systems/SharedTransformSystem.Component.cs:line 667
at Robust.Shared.GameObjects.SharedTransformSystem.DetachEntityInternal(EntityUid uid, TransformComponent xform, MetaDataComponent meta, TransformComponent oldXform, Boolean terminating) in /home/runner/work/space-station-14/space-station-14/RobustToolbox/Robust.Shared/GameObjects/Systems/SharedTransformSystem.Component.cs:line 1640
at Robust.Shared.GameObjects.EntityManager.RecursiveDeleteEntity(EntityUid uid, MetaDataComponent metadata, TransformComponent transform, TransformComponent parentXform) in /home/runner/work/space-station-14/space-station-14/RobustToolbox/Robust.Shared/GameObjects/EntityManager.cs:line 678
at Robust.Shared.GameObjects.EntityManager.DeleteEntity(EntityUid e, MetaDataComponent meta, TransformComponent xform) in /home/runner/work/space-station-14/space-station-14/RobustToolbox/Robust.Shared/GameObjects/EntityManager.cs:line 634
at Robust.Shared.GameObjects.EntityManager.DeleteEntity(Nullable`1 uid) in /home/runner/work/space-station-14/space-station-14/RobustToolbox/Robust.Shared/GameObjects/EntityManager.cs:line 567
at Content.IntegrationTests.Tests.EntityTest.<>c__DisplayClass8_1.b__5() in /home/runner/work/space-station-14/space-station-14/Content.IntegrationTests/Tests/EntityTest.cs:line 224
at Robust.UnitTesting.RobustIntegrationTest.IntegrationGameLoop.SingleThreadRunUntilEmpty() in /home/runner/work/space-station-14/space-station-14/RobustToolbox/Robust.UnitTesting/RobustIntegrationTest.cs:line 1234
at Robust.UnitTesting.RobustIntegrationTest.IntegrationGameLoop.Run() in /home/runner/work/space-station-14/space-station-14/RobustToolbox/Robust.UnitTesting/RobustIntegrationTest.cs:line 1221
at Robust.UnitTesting.RobustIntegrationTest.ServerIntegrationInstance._serverMain() in /home/runner/work/space-station-14/space-station-14/RobustToolbox/Robust.UnitTesting/RobustIntegrationTest.cs:line 771
at System.Threading.Thread.StartHelper.Callback(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) Exception:

Github Test Reporter by CTRF 💚

🔄 This comment has been updated

@Spaghetti-bit

Copy link
Copy Markdown
Contributor Author

Content + Integration Test Results

Summary:

Tests 📝 Passed ✅ Failed ❌ Skipped ⏭️
1682 1661 1 20

Failed Tests:

Failed Tests ❌ Fail Message
❌ TestAllConcurrent SERVER: 32.133s [ERRO] system.antag_selection: Found no valid positions to place antag spawner for game rule: (845918/n845918, TerminatorSpawn), antag: Terminator Exception:
Github Test Reporter by CTRF 💚

...What?

@starlightgithub starlightgithub Bot added S: Approved Status: Reviewed and approved by at least one maintainer or dev; a PR may require another approval. and removed S: Needs Review Status: Requires additional reviews before being fully accepted. Not to be replaced by S: Approved. labels Aug 11, 2026
@Rinary1
Rinary1 added this pull request to the merge queue Aug 11, 2026
Merged via the queue into ss14Starlight:starlight-dev with commit e073c35 Aug 11, 2026
19 checks passed
starlightgithub Bot added a commit that referenced this pull request Aug 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Changes: No C# Changes: Prototypes S: Approved Status: Reviewed and approved by at least one maintainer or dev; a PR may require another approval. S: Untriaged Status: Indicates an item has not been triaged and doesn't have appropriate labels. size/M

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants