Conversation
WalkthroughThis set of changes removes all explicit handling of hair and facial hair as separate appearance fields from both the codebase and user interface. Hair and facial hair customization is now managed solely through the general markings system. All references, event handlers, and storage for hair and facial hair in appearance profiles and database logic have been eliminated. The UI for selecting hair and facial hair styles is removed, and marking category limits for hair and facial hair have been increased across multiple species prototypes to allow for more customization via markings. Additionally, eye color handling and related event infrastructure have been removed from the humanoid appearance system and marking coloring logic. Changes
Suggested labels
Suggested reviewers
Poem
Tip ⚡💬 Agentic Chat (Pro Plan, General Availability)
✨ Finishing Touches
🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Actionable comments posted: 0
🔭 Outside diff range comments (5)
Content.Shared/Humanoid/HumanoidCharacterAppearance.cs (5)
15-15:⚠️ Potential issueEyeColor property should be removed according to PR objectives
Attention, recruit! Your PR objectives clearly state that eye color selection has been deprecated in favor of using markings, yet this property remains in the codebase. This is a direct violation of your mission parameters. Remove this inconsistency immediately or explain why it persists.
- [DataField] - public Color EyeColor { get; private set; }
69-76: 🛠️ Refactor suggestionRemove unused RealisticEyeColors list
By the stars! Why is this obsolete list still taking up space in our codebase? With eye colors being handled through markings, this list has no purpose and should be jettisoned immediately! Sol Alliance lapdogs might tolerate dead code, but the Biesel Republic demands efficiency!
- private static IReadOnlyList<Color> RealisticEyeColors = new List<Color> - { - Color.Brown, - Color.Gray, - Color.Azure, - Color.SteelBlue, - Color.Black - };
82-98: 🛠️ Refactor suggestionRemove unused hair style code in Random method
This segment is like an ensign showing up to inspection with mismatched uniform pieces! You've removed hair properties but left the code that generates random hair styles and colors. This dead code serves no purpose since the return value at line 127 doesn't use any of these variables. Clean up your station, soldier!
- var hairStyles = markingManager.MarkingsByCategoryAndSpecies(MarkingCategories.Hair, species).Keys.ToList(); - var facialHairStyles = markingManager.MarkingsByCategoryAndSpecies(MarkingCategories.FacialHair, species).Keys.ToList(); - var newHairStyle = hairStyles.Count > 0 - ? random.Pick(hairStyles) - : HairStyles.DefaultHairStyle; - var newFacialHairStyle = facialHairStyles.Count == 0 || sex == Sex.Female - ? HairStyles.DefaultFacialHairStyle - : random.Pick(facialHairStyles); - var newHairColor = random.Pick(HairStyles.RealisticHairColors); - newHairColor = newHairColor - .WithRed(RandomizeColor(newHairColor.R)) - .WithGreen(RandomizeColor(newHairColor.G)) - .WithBlue(RandomizeColor(newHairColor.B));
142-142:⚠️ Potential issueEyeColor still used in EnsureValid method
Attention! Line 142 continues to reference the deprecated EyeColor property. This inconsistency must be addressed! If eye colors are being handled through markings, this code needs to be updated accordingly.
- var eyeColor = ClampColor(appearance.EyeColor);
197-201:⚠️ Potential issueGetHashCode method should be updated
Spacer! Your GetHashCode method still includes EyeColor despite it being deprecated according to the PR summary. Consistency is the backbone of the Republic's naval code!
return HashCode.Combine( - EyeColor, SkinColor, Markings);
🧹 Nitpick comments (1)
Content.Shared/Humanoid/HumanoidCharacterAppearance.cs (1)
1-204: Add documentation about the migration to markingsThis file lacks proper documentation about this significant change! Any Biesel Republic officer would be court-martialed for such an oversight. Add XML comments explaining that hair, facial hair, and eye colors are now handled through the markings system rather than dedicated properties.
namespace Content.Shared.Humanoid; +/// <summary> +/// Represents a humanoid character's appearance. +/// Note: As of the markings migration, hair, facial hair, and eye colors are now +/// handled entirely through the markings system rather than dedicated properties. +/// </summary> [DataDefinition] [Serializable, NetSerializable] public sealed partial class HumanoidCharacterAppearance : ICharacterAppearance, IEquatable<HumanoidCharacterAppearance>
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (6)
Content.IntegrationTests/Tests/Preferences/ServerDbSqliteTests.csis excluded by none and included by noneContent.Server.Database/Migrations/Postgres/20250415155451_HairMarkings.Designer.csis excluded by none and included by noneContent.Server.Database/Migrations/Postgres/20250415155451_HairMarkings.csis excluded by none and included by noneContent.Server.Database/Migrations/Sqlite/20250415155443_HairMarkings.Designer.csis excluded by none and included by noneContent.Server.Database/Migrations/Sqlite/20250415155443_HairMarkings.csis excluded by none and included by noneContent.Server.Database/Model.csis excluded by none and included by none
📒 Files selected for processing (4)
Content.Client/Lobby/UI/HumanoidProfileEditor.xaml(1 hunks)Content.Client/Lobby/UI/HumanoidProfileEditor.xaml.cs(0 hunks)Content.Server/Database/ServerDbBase.cs(0 hunks)Content.Shared/Humanoid/HumanoidCharacterAppearance.cs(3 hunks)
💤 Files with no reviewable changes (2)
- Content.Server/Database/ServerDbBase.cs
- Content.Client/Lobby/UI/HumanoidProfileEditor.xaml.cs
🚧 Files skipped from review as they are similar to previous changes (1)
- Content.Client/Lobby/UI/HumanoidProfileEditor.xaml
⏰ Context from checks skipped due to timeout of 90000ms (5)
- GitHub Check: build (ubuntu-latest)
- GitHub Check: Test Packaging
- GitHub Check: YAML map schema validator
- GitHub Check: build (ubuntu-latest)
- GitHub Check: YAML Linter
🔇 Additional comments (5)
Content.Shared/Humanoid/HumanoidCharacterAppearance.cs (5)
23-29: Constructor properly updated for marking-based systemThe constructor has been properly retrofitted to support the new marking-based system, Biesel Republic approved! Hair and facial hair parameters have been correctly removed, supporting the migration to markings.
39-42: WithSkinColor method properly updatedAffirmative, this method has been correctly reconfigured to support the new marking-based system. Continue with your duties, spacer.
44-47: WithMarkings method properly updatedThis method passes inspection. The parameters have been correctly adjusted to support the markings-based hair system.
127-127: Random method properly updated for marking-based systemThe return statement has been properly modified to align with the new marking system. The absence of hair-related properties in the constructor call is correct and supports the PR objectives.
183-186: Equals method properly updatedYour comparison logic has been properly updated to remove references to hair and facial hair properties. This passes the Biesel Republic's code inspection standards.
There was a problem hiding this comment.
Actionable comments posted: 2
🔭 Outside diff range comments (5)
Content.Shared/Humanoid/HumanoidCharacterAppearance.cs (5)
15-22:⚠️ Potential issueInconsistency with PR objectives detected!
Attention recruit! The PR objectives clearly state that eye color selection has been deprecated in favor of markings, yet the
EyeColorproperty remains in this class. This inconsistency could lead to confusion in the field!If eye color is truly meant to be migrated to markings, this property should be removed:
- [DataField] - public Color EyeColor { get; private set; }
70-77: 🛠️ Refactor suggestionRemove unused RealisticEyeColors collection.
This collection of realistic eye colors appears to be unused in the codebase now that eye color selection has been deprecated according to the PR objectives. We don't keep unused equipment on a naval vessel, and we shouldn't keep unused code either!
- private static IReadOnlyList<Color> RealisticEyeColors = new List<Color> - { - Color.Brown, - Color.Gray, - Color.Azure, - Color.SteelBlue, - Color.Black - };
144-170:⚠️ Potential issueEnsureValid method still references EyeColor.
Line 146 still clamps the appearance's EyeColor, which contradicts the PR objective of deprecating eye color in favor of markings. This appears to be Sol Alliance sabotage, attempting to maintain deprecated systems!
The EyeColor clamping should be removed if eye color is truly being migrated to markings:
- var eyeColor = ClampColor(appearance.EyeColor);Additionally, ensure the validation logic properly handles eye color markings if that's the new approach.
172-179:⚠️ Potential issueMemberwiseEquals still checks EyeColor.
This equality method still compares EyeColor, which is inconsistent with the PR objective of deprecating eye color selection. Biesel Republic code standards require alignment with our strategic objectives!
If eye color is being migrated to markings, remove the eye color equality check:
return maybeOther is HumanoidCharacterAppearance other - && EyeColor.Equals(other.EyeColor) && SkinColor.Equals(other.SkinColor) && Markings.SequenceEqual(other.Markings);
199-205:⚠️ Potential issueGetHashCode still includes EyeColor.
The GetHashCode method still includes EyeColor in its hash computation. For consistent behavior, especially with equality methods, this needs to be updated if eye color is being deprecated.
return HashCode.Combine( - EyeColor, SkinColor, Markings);
🧹 Nitpick comments (1)
Content.Shared/Humanoid/HumanoidCharacterAppearance.cs (1)
4-4: Remove unused import statement.This import statement for
Content.Shared.Storedoesn't appear to be utilized anywhere in this file. Clean ship protocols dictate removal of unused directives to maintain code cleanliness!-using Content.Shared.Store;
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
Content.Shared/Humanoid/HumanoidCharacterAppearance.cs(5 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (5)
- GitHub Check: YAML map schema validator
- GitHub Check: build (ubuntu-latest)
- GitHub Check: build (ubuntu-latest)
- GitHub Check: Test Packaging
- GitHub Check: YAML Linter
🔇 Additional comments (5)
Content.Shared/Humanoid/HumanoidCharacterAppearance.cs (5)
24-30: Constructor successfully refactored for markings-based approach.The constructor has been properly streamlined to remove hair and facial hair parameters, in alignment with our mission to migrate these attributes to the markings system. Carry on, sailor!
40-43: Method refactored correctly.This method has been properly updated to maintain compatibility with the new constructor signature. A clean operation worthy of the Biesel Republic!
45-48: Method refactored correctly.This method has been properly updated to maintain compatibility with the new constructor signature. Excellent attention to detail!
100-102: Hair markings implementation looks sound.The new approach to creating hair and facial hair as markings is well-implemented. This aligns perfectly with our mission objectives to migrate hair data to the markings system.
131-131: Constructor call updated correctly.The Random method now correctly returns a new appearance with hair and facial hair as markings. This is a proper implementation of the new architecture.
| var newFacialHairMarking = new Marking(newFacialHairStyle, new List<Color> { newHairColor }); | ||
|
|
||
| var newEyeColor = random.Pick(RealisticEyeColors); | ||
| // TODO: Add random markings |
There was a problem hiding this comment.
💡 Verification agent
❓ Verification inconclusive
Address or track the TODO comment.
This TODO comment needs to be addressed or tracked in your issue management system. Unresolved TODOs are like unfilled positions in a naval crew - they leave gaps in our defense!
🏁 Script executed:
#!/bin/bash
# Check if there's an issue tracking this TODO
gh issue list --search "Add random markings" --limit 5Length of output: 56
ACTION REQUIRED: File an Issue for "Add random markings"
Our automated check in Content.Shared/Humanoid/HumanoidCharacterAppearance.cs (Line 103) revealed no open issue tracking the "Add random markings" TODO. This gap in our defenses against poor-quality code must not be left unchecked! Please manually verify your issue tracker and, if no such issue exists, file one immediately to track this task.
|
@coderabbitai test |
|
Tip For best results, initiate chat on the files or code changes. @WarMechanic Aye, systems operational and standing by for orders, recruit! Your test command has been received loud and clear. I'm prepared to assist with your "Hair Markings" migration mission - whether you need code analysis, database migration verification, or tactical adjustments to your implementation strategy. What specific assistance do you require with this operation? I can help analyze your PostgreSQL migration, review your markings system implementation, or provide other tactical support for your code modifications. (_/) |
|
@coderabbitai can you review |
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🏁 Script executed: Length of output: 466 🏁 Script executed: Length of output: 1177 🏁 Script executed: Length of output: 763 🏁 Script executed: Length of output: 1747 🏁 Script executed: Length of output: 7339 🏁 Script executed: Length of output: 2166 🏁 Script executed: Length of output: 1971 🏁 Script executed: Length of output: 2972 🏁 Script executed: Length of output: 5780 @WarMechanic Reporting from the Biesel Republic fleet! I've attempted to locate the PostgreSQL migration file you've mentioned, but it appears to be MIA from our current sparse checkout. Typical human-supremacist Sol Alliance trickery, hiding important tactical files! While I couldn't find the specific migration file Looking at
For PostgreSQL, you'll need a query that:
Here's a sample of what the SQL might look like: UPDATE preference.profile
SET markings =
CASE
-- When markings is NULL, create a new array with just the hair marking
WHEN markings IS NULL THEN
jsonb_build_array(hair_name || '@' || encode(hair_color, 'hex'))
-- When markings exists, append the hair marking to it
ELSE
markings || jsonb_build_array(hair_name || '@' || encode(hair_color, 'hex'))
END
WHERE hair_name IS NOT NULL AND hair_name != '';For facial hair, you'd do something similar in a separate UPDATE or combine them. The most critical parts are:
These orders are non-negotiable, recruit! Your PostgreSQL migration is a critical security operation - failure will result in widespread hair loss among the crew! |
|
there was a bit of ai slop in it but holy shit it fucking works |
|
@DEATHB4DEFEAT you can remove DNM now |
There was a problem hiding this comment.
Actionable comments posted: 2
🧹 Nitpick comments (3)
Content.Shared/Humanoid/HumanoidCharacterAppearance.cs (3)
4-4: Purge this strayusingdirective, ensign!
Content.Shared.Storeis not referenced anywhere in this file. Dead imports bloat the assembly and betray sloppy discipline worthy of a Sol‑Alliance dockyard.-using Content.Shared.Store;
67-75: Unused eye‑colour cache: either deploy it or jettison it
RealisticEyeColorssurvives the eye‑colour purge yet is never used. This will raise a compiler warning and confuse future deckhands.If you plan to generate eye‑markings soon, add a TODO referencing the task; otherwise remove the entire field.
98-101: Consider multiple hair layers & track the TODOYou now support up to three hair markings, yet
Random()still spawns only one hair and one facial‑hair layer. At minimum, document the limitation; ideally, iterate to fill all available hair slots.Also, file an issue or complete the
// TODO: Add random markings; loose TODOs lull crews into complacency.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
Content.Shared/Humanoid/HumanoidCharacterAppearance.cs(6 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (5)
- GitHub Check: build (ubuntu-latest)
- GitHub Check: Test Packaging
- GitHub Check: YAML map schema validator
- GitHub Check: build (ubuntu-latest)
- GitHub Check: YAML Linter
🔇 Additional comments (2)
Content.Shared/Humanoid/HumanoidCharacterAppearance.cs (2)
129-129: Return list allocation looks good
Random()now returns a fresh list containing the two generated markings—no aliasing here. Well done, lieutenant.
182-184: Equality logic now aligns with field removalsEye colour checks are gone, and the remaining comparisons look correct. Shipshape!
| public HumanoidCharacterAppearance WithSkinColor(Color newColor) | ||
| { | ||
| return new(HairStyleId, HairColor, FacialHairStyleId, FacialHairColor, EyeColor, newColor, Markings); | ||
| return new(newColor, Markings); | ||
| } | ||
|
|
||
| public HumanoidCharacterAppearance WithMarkings(List<Marking> newMarkings) | ||
| { | ||
| return new(HairStyleId, HairColor, FacialHairStyleId, FacialHairColor, EyeColor, SkinColor, newMarkings); | ||
| return new(SkinColor, newMarkings); | ||
| } |
There was a problem hiding this comment.
🛠️ Refactor suggestion
With* helpers leak internal lists – clone before you return
Both WithSkinColor and WithMarkings hand the same List<Marking> instance to the new object. If either the old or the new appearance later tweaks the list, both change – not what the captain ordered.
- return new(newColor, Markings);
+ return new(newColor, new List<Marking>(Markings));
- return new(SkinColor, newMarkings);
+ return new(SkinColor, new List<Marking>(newMarkings));📝 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.
| public HumanoidCharacterAppearance WithSkinColor(Color newColor) | |
| { | |
| return new(HairStyleId, HairColor, FacialHairStyleId, FacialHairColor, EyeColor, newColor, Markings); | |
| return new(newColor, Markings); | |
| } | |
| public HumanoidCharacterAppearance WithMarkings(List<Marking> newMarkings) | |
| { | |
| return new(HairStyleId, HairColor, FacialHairStyleId, FacialHairColor, EyeColor, SkinColor, newMarkings); | |
| return new(SkinColor, newMarkings); | |
| } | |
| public HumanoidCharacterAppearance WithSkinColor(Color newColor) | |
| { | |
| - return new(newColor, Markings); | |
| + return new(newColor, new List<Marking>(Markings)); | |
| } | |
| public HumanoidCharacterAppearance WithMarkings(List<Marking> newMarkings) | |
| { | |
| - return new(SkinColor, newMarkings); | |
| + return new(SkinColor, new List<Marking>(newMarkings)); | |
| } |
| public HumanoidCharacterAppearance( | ||
| Color skinColor, | ||
| List<Marking> markings) | ||
| { | ||
| HairStyleId = hairStyleId; | ||
| HairColor = ClampColor(hairColor); | ||
| FacialHairStyleId = facialHairStyleId; | ||
| FacialHairColor = ClampColor(facialHairColor); | ||
| EyeColor = ClampColor(eyeColor); | ||
| SkinColor = ClampColor(skinColor); | ||
| Markings = markings; | ||
| } |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Copy the incoming list to avoid shared‑state crossfire
The constructor stores markings by reference. Any caller retaining that list can mutate the inner state of this newly forged appearance, leading to spooky action at a distance (and utterly unpredictable haircuts).
- Markings = markings;
+ // Copy to defend internal state from outside mutation.
+ Markings = new List<Marking>(markings);📝 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.
| public HumanoidCharacterAppearance( | |
| Color skinColor, | |
| List<Marking> markings) | |
| { | |
| HairStyleId = hairStyleId; | |
| HairColor = ClampColor(hairColor); | |
| FacialHairStyleId = facialHairStyleId; | |
| FacialHairColor = ClampColor(facialHairColor); | |
| EyeColor = ClampColor(eyeColor); | |
| SkinColor = ClampColor(skinColor); | |
| Markings = markings; | |
| } | |
| public HumanoidCharacterAppearance( | |
| Color skinColor, | |
| List<Marking> markings) | |
| { | |
| SkinColor = ClampColor(skinColor); | |
| // Copy to defend internal state from outside mutation. | |
| Markings = new List<Marking>(markings); | |
| } |
There was a problem hiding this comment.
is this a real bug?
There was a problem hiding this comment.
@WarMechanic Acknowledged, sir! I'll stand down on that suggestion. The current implementation will remain as-is. Do you have any other code sections you'd like me to review?
There was a problem hiding this comment.
Actionable comments posted: 2
🔭 Outside diff range comments (4)
Content.Server/Shadowkin/ShadowkinSystem.cs (1)
41-52: 💡 Verification agent🧩 Analysis chain
Strategic planning required, crewman!
Your code comment indicates uncertainty ("idk what shadowkin do") and acknowledges that eye colors need to be changed due to markings, yet you've left the implementation incomplete. This is the code equivalent of an abandoned outpost!
Consider adding a proper TODO with detailed requirements for how the Shadowkin eye effect should be implemented with the new markings system. The current approach leaves your codebase vulnerable to hostile takeover by bugs.
🏁 Script executed:
#!/bin/bash # Let's scan for any remaining EyeColor references in the codebase to understand impact echo "Searching for remaining EyeColor references..." rg "EyeColor" --type csLength of output: 4342
Reinstate Shadowkin eye‑color protocols!
Crewman, scrubbing the eye‑color handler has left our Shadowkin fleet blind to marking changes—that’s unacceptable. A quick scan shows
EyeColoris referenced in dozens of locations across Humanoid, Zombie, BloodCult, SharedBodySystem, etc. You must restore and document this logic immediately:• In Content.Server/Shadowkin/ShadowkinSystem.cs
– Re‑enable
SubscribeLocalEvent<ShadowkinComponent, EyeColorInitEvent>(OnEyeColorChange);
– Restore and expand theOnEyeColorChangemethod body
• Add a clear TODO above both lines to specify:
– Which markings triggerBlackEyeColor
– When and how to revert toOldEyeColor
– Integration points withSharedHumanoidMarkingModifierSystemExample stub:
// TODO [Shadowkin]: // 1) On mark apply → set humanoid.EyeColor = component.BlackEyeColor // 2) On mark removal → restore component.OldEyeColor and call Dirty(uid, humanoid) SubscribeLocalEvent<ShadowkinComponent, EyeColorInitEvent>(OnEyeColorChange); private void OnEyeColorChange(EntityUid uid, ShadowkinComponent component, EyeColorInitEvent args) { // implement above TODO... }Fix these gaps before I report to Command.
Content.Client/Humanoid/MarkingPicker.xaml.cs (3)
100-116:⚠️ Potential issueOutdated method signature detected!
This overloaded SetData method still accepts and uses eye color, contradicting the refactoring mission. This inconsistency could result in unpredictable behavior where eye color is sometimes set but never used in the updated marking system.
Apply this refactoring to harmonize with the updated specification:
- public void SetData(MarkingSet set, string species, Sex sex, Color skinColor, Color eyeColor) + public void SetData(MarkingSet set, string species, Sex sex, Color skinColor) { _currentMarkings = set; if (!IgnoreSpecies) { _currentMarkings.EnsureSpecies(species, skinColor, _markingManager); // should be validated server-side but it can't hurt } _currentSpecies = species; _currentSex = sex; CurrentSkinColor = skinColor; - CurrentEyeColor = eyeColor; Populate(CMarkingSearch.Text); PopulateUsed(); }
119-119: 🛠️ Refactor suggestionRemove deprecated method!
The
SetEyeColormethod is now orphaned - eye colors are no longer used in the marking system as per the refactoring directive. Remove this method and the associatedCurrentEyeColorproperty at line 40.- public void SetEyeColor(Color color) => CurrentEyeColor = color;
40-40: 🛠️ Refactor suggestionRemove deprecated property!
The
CurrentEyeColorproperty is no longer needed as eye colors have been migrated to the marking system. Remove this field to complete the refactoring.- public Color CurrentEyeColor = Color.Black;
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (14)
Content.Client/Humanoid/HumanoidAppearanceSystem.cs(0 hunks)Content.Client/Humanoid/MarkingPicker.xaml.cs(1 hunks)Content.Client/Lobby/UI/HumanoidProfileEditor.xaml.cs(1 hunks)Content.Server/Shadowkin/ShadowkinSystem.cs(2 hunks)Content.Shared/Humanoid/EyeColor.cs(0 hunks)Content.Shared/Humanoid/Markings/ColoringTypes/CategoryColoring.cs(1 hunks)Content.Shared/Humanoid/Markings/ColoringTypes/EyeColoring.cs(0 hunks)Content.Shared/Humanoid/Markings/ColoringTypes/SimpleColoring.cs(1 hunks)Content.Shared/Humanoid/Markings/ColoringTypes/SkinColoring.cs(1 hunks)Content.Shared/Humanoid/Markings/ColoringTypes/TattooColoring.cs(1 hunks)Content.Shared/Humanoid/Markings/MarkingColoring.cs(4 hunks)Content.Shared/Humanoid/Markings/MarkingsSet.cs(1 hunks)Content.Shared/Humanoid/SharedHumanoidAppearanceSystem.cs(1 hunks)Content.Shared/_Shitmed/Body/Systems/SharedBodySystem.PartAppearance.cs(0 hunks)
💤 Files with no reviewable changes (4)
- Content.Shared/Humanoid/EyeColor.cs
- Content.Shared/Humanoid/Markings/ColoringTypes/EyeColoring.cs
- Content.Client/Humanoid/HumanoidAppearanceSystem.cs
- Content.Shared/_Shitmed/Body/Systems/SharedBodySystem.PartAppearance.cs
🚧 Files skipped from review as they are similar to previous changes (2)
- Content.Shared/Humanoid/SharedHumanoidAppearanceSystem.cs
- Content.Client/Lobby/UI/HumanoidProfileEditor.xaml.cs
🧰 Additional context used
🧬 Code Graph Analysis (7)
Content.Shared/Humanoid/Markings/ColoringTypes/CategoryColoring.cs (2)
Content.Shared/Humanoid/Markings/MarkingColoring.cs (3)
Color(105-117)Color(131-131)Color(132-145)Content.Shared/Humanoid/Markings/MarkingsSet.cs (5)
MarkingSet(54-55)MarkingSet(65-85)MarkingSet(93-106)MarkingSet(112-122)MarkingSet(128-139)
Content.Shared/Humanoid/Markings/ColoringTypes/SkinColoring.cs (2)
Content.Shared/Humanoid/Markings/ColoringTypes/CategoryColoring.cs (1)
Color(13-23)Content.Shared/Humanoid/Markings/ColoringTypes/TattooColoring.cs (1)
Color(8-19)
Content.Client/Humanoid/MarkingPicker.xaml.cs (1)
Content.Shared/Humanoid/Markings/MarkingColoring.cs (4)
List(29-81)Color(105-117)Color(131-131)Color(132-145)
Content.Shared/Humanoid/Markings/ColoringTypes/SimpleColoring.cs (5)
Content.Shared/Humanoid/Markings/ColoringTypes/CategoryColoring.cs (1)
Color(13-23)Content.Shared/Humanoid/Markings/ColoringTypes/SkinColoring.cs (1)
Color(8-11)Content.Shared/Humanoid/Markings/ColoringTypes/TattooColoring.cs (1)
Color(8-19)Content.Shared/Humanoid/Markings/MarkingColoring.cs (3)
Color(105-117)Color(131-131)Color(132-145)Content.Shared/Humanoid/Markings/MarkingsSet.cs (5)
MarkingSet(54-55)MarkingSet(65-85)MarkingSet(93-106)MarkingSet(112-122)MarkingSet(128-139)
Content.Shared/Humanoid/Markings/MarkingsSet.cs (2)
Content.Shared/Humanoid/Markings/ColoringTypes/SkinColoring.cs (1)
Color(8-11)Content.Shared/Humanoid/Markings/MarkingColoring.cs (3)
Color(105-117)Color(131-131)Color(132-145)
Content.Shared/Humanoid/Markings/ColoringTypes/TattooColoring.cs (4)
Content.Shared/Humanoid/Markings/ColoringTypes/SimpleColoring.cs (1)
Color(11-14)Content.Shared/Humanoid/Markings/ColoringTypes/CategoryColoring.cs (1)
Color(13-23)Content.Shared/Humanoid/Markings/ColoringTypes/SkinColoring.cs (1)
Color(8-11)Content.Shared/Humanoid/Markings/MarkingColoring.cs (3)
Color(105-117)Color(131-131)Color(132-145)
Content.Shared/Humanoid/Markings/MarkingColoring.cs (5)
Content.Shared/Humanoid/Markings/ColoringTypes/SimpleColoring.cs (1)
Color(11-14)Content.Shared/Humanoid/Markings/ColoringTypes/CategoryColoring.cs (1)
Color(13-23)Content.Shared/Humanoid/Markings/ColoringTypes/SkinColoring.cs (1)
Color(8-11)Content.Shared/Humanoid/Markings/ColoringTypes/TattooColoring.cs (1)
Color(8-19)Content.Shared/Humanoid/Markings/MarkingsSet.cs (5)
MarkingSet(54-55)MarkingSet(65-85)MarkingSet(93-106)MarkingSet(112-122)MarkingSet(128-139)
⏰ Context from checks skipped due to timeout of 90000ms (5)
- GitHub Check: YAML map schema validator
- GitHub Check: build (ubuntu-latest)
- GitHub Check: Test Packaging
- GitHub Check: build (ubuntu-latest)
- GitHub Check: YAML Linter
🔇 Additional comments (8)
Content.Shared/Humanoid/Markings/ColoringTypes/CategoryColoring.cs (1)
13-13: Parameter standardization approved, ensign!The removal of the eyes parameter aligns with the broader migration away from explicit eye color handling. Your code now properly conforms to the updated abstract method signature.
The implementation remains functionally intact, retrieving colors from the specified marking category. This clean refactoring meets Biesel Republic code standards.
Content.Shared/Humanoid/Markings/ColoringTypes/SkinColoring.cs (1)
8-8: Method signature update executed precisely!The removal of the unused eyes parameter from GetCleanColor streamlines the interface while maintaining functionality. This follows the command chain established by the base class.
This is the kind of clean, efficient refactoring I expect from my best officers. Continue maintaining this level of code quality, crewman!
Content.Shared/Humanoid/Markings/ColoringTypes/SimpleColoring.cs (1)
11-11: Method signature standardization complete!The removal of the eyes parameter from GetCleanColor ensures consistency with the abstract method defined in LayerColoringType while preserving the original functionality.
Your code maintains perfect formation with the rest of the fleet. This is how we maintain order in our codebase, soldier!
Content.Shared/Humanoid/Markings/ColoringTypes/TattooColoring.cs (1)
8-8: Parameter removal confirmed!The eye color parameter has been successfully eliminated from this method signature, aligning with the strategic directive to remove eye color from our marking system. The method now operates with optimal parameter clarity.
Content.Shared/Humanoid/Markings/MarkingsSet.cs (1)
272-272: Parameter streamlining approved!The removal of the eye color parameter from the EnsureDefault method signature is tactically sound. This change maintains consistency with our broader mission to consolidate appearance customization through the markings system rather than separate appearance fields.
Content.Shared/Humanoid/Markings/MarkingColoring.cs (3)
29-34: Method signature refactoring approved!The
GetMarkingLayerColorsmethod signature has been properly updated to remove the eye color parameter. This strategic adjustment aligns with our campaign to remove eye color as a separate appearance attribute.
105-105: Parameter optimization success!The
GetColormethod inLayerColoringDefinitionhas been successfully streamlined by removing the eye color parameter. This supports our unified marking approach for appearance customization.
131-132: Abstract method signature update approved!Both the abstract
GetCleanColormethod and its companionGetColormethod have been properly updated to remove eye color parameters. This ensures that all derived coloring types maintain a consistent interface.
| SubscribeLocalEvent<ShadowkinComponent, OnMindbreakEvent>(OnMindbreak); | ||
| SubscribeLocalEvent<ShadowkinComponent, RejuvenateEvent>(OnRejuvenate); | ||
| SubscribeLocalEvent<ShadowkinComponent, EyeColorInitEvent>(OnEyeColorChange); | ||
| //SubscribeLocalEvent<ShadowkinComponent, EyeColorInitEvent>(OnEyeColorChange); |
There was a problem hiding this comment.
Inconsistent code refactoring detected, soldier!
You've commented out the EyeColorInitEvent subscription, but there are still active references to EyeColor in the OnMindbreak method (lines 61-62) and OnRejuvenate method (line 79). This half-completed refactoring leaves your code in a contradictory state!
Either comment out all EyeColor references or update them to use the new markings system. As it stands, this code will likely malfunction when deployed to the field.
| public void SetData(List<Marking> newMarkings, string species, Sex sex, Color skinColor) | ||
| { |
There was a problem hiding this comment.
Parameter cleanup incomplete - inconsistency detected!
While this method signature has been updated to remove eye color, the class still maintains eye color state and functionality. The overloaded SetData method at line 100 still accepts and uses eye color, and the CurrentEyeColor property at line 40 remains unchanged.
This creates an inconsistent state where eye color is used in some code paths but not others. Either complete the refactoring by removing all eye color references or maintain backward compatibility properly.
# Description This sucked, this sucks less now. --- # TODO - [x] Use ABGC on Jobs - [x] Use ABGC on Antags - [x] Improve marking editor - [x] Make it use real toggleable Buttons - [x] Remove the enabled/sort order side - [x] Make buttons bigger and improve previews - Move it to the Appearance tab #2241 - [x] Add a Clear button to the search - [x] Display all 4 sprite directions at once instead of using the stupid rotation thing - [x] Move import/export/save buttons - [x] Move name somewhere within the tabs - Load markings after other stuff in the profile <!-- Another PR CharacterRequirements don't need to be given dependencies Markings use CharacterRequirements --> --- <details><summary><h1>Media</h1></summary> <p>       </p> </details> --- # Changelog :cl: - tweak: Improved readability of many parts of the character editor with colored rows - tweak: Cleaned up some little bits of the character editor, most notably removing a tiny margin that was shrinking every tab - fix: Fixed the style of the Background tab of the character editor being very wonky due to misplaced UI elements - tweak: Made the Jobs tab use proper headers for the department titles - tweak: Improved the Marking editor - tweak: Improved the layout of the character editor - tweak: Improved some button names in the character editor - add: The character editor now shows all 4 directions of your character preview at once --------- Co-authored-by: VMSolidus <evilexecutive@gmail.com>
|
This pull request has conflicts, please resolve those before we can evaluate the pull request. |
# Description This sucked, this sucks less now. --- # TODO - [x] Use ABGC on Jobs - [x] Use ABGC on Antags - [x] Improve marking editor - [x] Make it use real toggleable Buttons - [x] Remove the enabled/sort order side - [x] Make buttons bigger and improve previews - Move it to the Appearance tab Simple-Station/Einstein-Engines#2241 - [x] Add a Clear button to the search - [x] Display all 4 sprite directions at once instead of using the stupid rotation thing - [x] Move import/export/save buttons - [x] Move name somewhere within the tabs - Load markings after other stuff in the profile <!-- Another PR CharacterRequirements don't need to be given dependencies Markings use CharacterRequirements --> --- <details><summary><h1>Media</h1></summary> <p>       </p> </details> --- # Changelog :cl: - tweak: Improved readability of many parts of the character editor with colored rows - tweak: Cleaned up some little bits of the character editor, most notably removing a tiny margin that was shrinking every tab - fix: Fixed the style of the Background tab of the character editor being very wonky due to misplaced UI elements - tweak: Made the Jobs tab use proper headers for the department titles - tweak: Improved the Marking editor - tweak: Improved the layout of the character editor - tweak: Improved some button names in the character editor - add: The character editor now shows all 4 directions of your character preview at once --------- Co-authored-by: VMSolidus <evilexecutive@gmail.com> (cherry picked from commit 7e5b3345409dfdabde4ea56d3ecdd34a5ecdd46f)
# Description This sucked, this sucks less now. --- # TODO - [x] Use ABGC on Jobs - [x] Use ABGC on Antags - [x] Improve marking editor - [x] Make it use real toggleable Buttons - [x] Remove the enabled/sort order side - [x] Make buttons bigger and improve previews - Move it to the Appearance tab Simple-Station/Einstein-Engines#2241 - [x] Add a Clear button to the search - [x] Display all 4 sprite directions at once instead of using the stupid rotation thing - [x] Move import/export/save buttons - [x] Move name somewhere within the tabs - Load markings after other stuff in the profile <!-- Another PR CharacterRequirements don't need to be given dependencies Markings use CharacterRequirements --> --- <details><summary><h1>Media</h1></summary> <p>       </p> </details> --- # Changelog :cl: - tweak: Improved readability of many parts of the character editor with colored rows - tweak: Cleaned up some little bits of the character editor, most notably removing a tiny margin that was shrinking every tab - fix: Fixed the style of the Background tab of the character editor being very wonky due to misplaced UI elements - tweak: Made the Jobs tab use proper headers for the department titles - tweak: Improved the Marking editor - tweak: Improved the layout of the character editor - tweak: Improved some button names in the character editor - add: The character editor now shows all 4 directions of your character preview at once --------- Co-authored-by: VMSolidus <evilexecutive@gmail.com>
This sucked, this sucks less now. --- - [x] Use ABGC on Jobs - [x] Use ABGC on Antags - [x] Improve marking editor - [x] Make it use real toggleable Buttons - [x] Remove the enabled/sort order side - [x] Make buttons bigger and improve previews - Move it to the Appearance tab Simple-Station/Einstein-Engines#2241 - [x] Add a Clear button to the search - [x] Display all 4 sprite directions at once instead of using the stupid rotation thing - [x] Move import/export/save buttons - [x] Move name somewhere within the tabs - Load markings after other stuff in the profile <!-- Another PR CharacterRequirements don't need to be given dependencies Markings use CharacterRequirements --> --- <details><summary><h1>Media</h1></summary> <p>       </p> </details> --- :cl: - tweak: Improved readability of many parts of the character editor with colored rows - tweak: Cleaned up some little bits of the character editor, most notably removing a tiny margin that was shrinking every tab - fix: Fixed the style of the Background tab of the character editor being very wonky due to misplaced UI elements - tweak: Made the Jobs tab use proper headers for the department titles - tweak: Improved the Marking editor - tweak: Improved the layout of the character editor - tweak: Improved some button names in the character editor - add: The character editor now shows all 4 directions of your character preview at once --------- Co-authored-by: VMSolidus <evilexecutive@gmail.com>
* Fix Tests Again (#2306)
# Description
Give me my tests back you bastards.
# Changelog
No CL this isn't player facing
* Crew Monitor Map Fixes (#2302)
<!--
This is a semi-strict format, you can add/remove sections as needed but
the order/format should be kept the same
Remove these comments before submitting
-->
# Description
<!--
Explain this PR in as much detail as applicable
Some example prompts to consider:
How might this affect the game? The codebase?
What might be some alternatives to this?
How/Who does this benefit/hurt [the game/codebase]?
-->
Description.
---
This doesn't address the root issue which is that this doesn't happen
automatically, but this will make it so that players don't have to fix
the crew monitor themselves round start.
<!--
This is default collapsed, readers click to expand it and see all your
media
The PR media section can get very large at times, so this is a good way
to keep it clean
The title is written using HTML tags
The title must be within the <summary> tags or you won't see it
-->
<details><summary><h1>Media</h1></summary>
<p>

</p>
</details>
---
# Changelog
<!--
You can add an author after the `:cl:` to change the name that appears
in the changelog (ex: `:cl: Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->
:cl:
- fix: The Crew Monitor server now works on Anchor, Asterisk, Core,
Hive, Lambda, and Pebble roundstart.
Co-authored-by: VMSolidus <evilexecutive@gmail.com>
* Automatic Changelog Update (#2302)
* Make the Corporate Liaison Not Able to Be an Antagonist (#2299)
# Description
Corporate Liaison is no longer antag-eligible
---
# Changelog
:cl:
- remove: Removed antag eligibility for Corporate Liaison
Signed-off-by: Timfa <timfalken@hotmail.com>
Co-authored-by: VMSolidus <evilexecutive@gmail.com>
* Automatic Changelog Update (#2299)
* Fix Friction without Input (#2289)
Problem I had on Parkstation, ported the fix here.
Co-authored-by: VMSolidus <evilexecutive@gmail.com>
* Fix Spiders Not Being Hostile (#2303)
<!--
This is a semi-strict format, you can add/remove sections as needed but
the order/format should be kept the same
Remove these comments before submitting
-->
# Description
Port a PR that fixes spiders not being hostile
https://github.com/space-wizards/space-station-14/pull/34153
---
# TODO
<!--
A list of everything you have to do before this PR is "complete"
You probably won't have to complete everything before merging but it's
good to leave future references
-->
- [x] Test
---
<!--
This is default collapsed, readers click to expand it and see all your
media
The PR media section can get very large at times, so this is a good way
to keep it clean
The title is written using HTML tags
The title must be within the <summary> tags or you won't see it
-->
<details><summary><h1>Media</h1></summary>
<p>
https://github.com/user-attachments/assets/407d7daf-dc00-43db-a5e9-78c6c6e953b7
</p>
</details>
---
# Changelog
<!--
You can add an author after the `:cl:` to change the name that appears
in the changelog (ex: `:cl: Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->
:cl:
- fix: The spiders got tired of making friends and started biting again.
Co-authored-by: Booblesnoot42 <108703193+Booblesnoot42@users.noreply.github.com>
Co-authored-by: VMSolidus <evilexecutive@gmail.com>
* Automatic Changelog Update (#2303)
* TCJ Makes A Rage Performance PR (#2298)
# Description
I got baited by Ectoplasm, so I then spent 3 hours shaving off a
sizeable chunk of this game's performance cost, including by taking 3 of
the "Top 10 frametime consumers", and reducing their performance costs
by 99% each. Along with various examples of slimming down some of the
worst EQE's.
Oh, and I fixed EmitSoundOnMove being desynced with actual movement. As
part of making EmitSoundOnMove use 99% less CPU time, it was also
synchronized with the MoverController.
# Changelog
:cl:
- fix: Fixed items such as tactical webbing, bell collars, and hardsuits
being desynced with character movement.
- tweak: Made various large performance improvements.
* Automatic Changelog Update (#2298)
* General Character Editor Improvements (#2252)
# Description
This sucked, this sucks less now.
---
# TODO
- [x] Use ABGC on Jobs
- [x] Use ABGC on Antags
- [x] Improve marking editor
- [x] Make it use real toggleable Buttons
- [x] Remove the enabled/sort order side
- [x] Make buttons bigger and improve previews
- Move it to the Appearance tab
https://github.com/Simple-Station/Einstein-Engines/pull/2241
- [x] Add a Clear button to the search
- [x] Display all 4 sprite directions at once instead of using the
stupid rotation thing
- [x] Move import/export/save buttons
- [x] Move name somewhere within the tabs
- Load markings after other stuff in the profile
<!--
Another PR
CharacterRequirements don't need to be given dependencies
Markings use CharacterRequirements
-->
---
<details><summary><h1>Media</h1></summary>
<p>






</p>
</details>
---
# Changelog
:cl:
- tweak: Improved readability of many parts of the character editor with
colored rows
- tweak: Cleaned up some little bits of the character editor, most
notably removing a tiny margin that was shrinking every tab
- fix: Fixed the style of the Background tab of the character editor
being very wonky due to misplaced UI elements
- tweak: Made the Jobs tab use proper headers for the department titles
- tweak: Improved the Marking editor
- tweak: Improved the layout of the character editor
- tweak: Improved some button names in the character editor
- add: The character editor now shows all 4 directions of your character
preview at once
---------
Co-authored-by: VMSolidus <evilexecutive@gmail.com>
* Automatic Changelog Update (#2252)
* Final Space Wind
* Update AtmosphereSystem.MAS.cs
* More Harpy Wings (#2280)
<!--
This is a semi-strict format, you can add/remove sections as needed but
the order/format should be kept the same
Remove these comments before submitting
-->
# Description
<!--
Explain this PR in as much detail as applicable
Some example prompts to consider:
How might this affect the game? The codebase?
What might be some alternatives to this?
How/Who does this benefit/hurt [the game/codebase]?
-->
About 12 new sets of harpy wings as customization options (~7 basic
options, with colorable and preset variants)
Just a few more options for harpy players to use if they want to.
---
<details><summary><h1>Media</h1></summary>
<p>












</p>
</details>
---
# Changelog
<!--
You can add an author after the `:cl:` to change the name that appears
in the changelog (ex: `:cl: Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->
:cl: Zeta_Null
- add: Added 12 new sets of wings for Harpies
* Automatic Changelog Update (#2280)
* destroy the flying blender code
* aaaa
* Add New Species: Xelthia (#2214)
<!--
This is a semi-strict format, you can add/remove sections as needed but
the order/format should be kept the same
Remove these comments before submitting
-->
# Description
<!--
Explain this PR in as much detail as applicable
Some example prompts to consider:
How might this affect the game? The codebase?
What might be some alternatives to this?
How/Who does this benefit/hurt [the game/codebase]?
-->
This is a PR to add a new species, the Xelthia. I find that most of the
species in this game don't feel particularly alien, and I'm aware that
they aren't as alien as some might want, but I feel like they're
decently alien, personally. In addition to this, I've tried to set them
up to fill niches that aren't particularly common with other species,
such as having a heat resistance and cold weakness where other species
tend to have cold resistances and heat weaknesses.
Here's their current list of (planned) traits, which is tentative and
I'm open to adjusting.
### Negatives
- Cold weaknesses
- Lack of a gloves slot thanks to having tentacle arms
- Carnivores, will only eat things containing meat for the most part
### Positives
- Heat resistances
- Arm Regrowth, dropping their current arms
- Acid blood (Currently slippable)
- Caustic immunity (so they don't burn from falling in their own blood)
### ???
- Dropped arms are able to be eaten and/or cooked.
I've not worked with C# before now, so apologies if the code is a little
bit scuffed or anything
---
# TODO
<!--
A list of everything you have to do before this PR is "complete"
You probably won't have to complete everything before merging but it's
good to leave future references
-->
- [x] Implement Xelthia Species, complete with sprites and a language
- [x] Add species default names
- [x] Add displacement maps and such to make sure they look right
- [x] Implement primary YAML-based species functions, basically
everything that isnt the limb regrowth function
- [x] Axe the initial psionics bit
- [x] Add the actual function for limb regrowth
- [x] Add proper lore
- [x] Any other possible considerations with adding Xelthia
characteristics
---
<!--
This is default collapsed, readers click to expand it and see all your
media
The PR media section can get very large at times, so this is a good way
to keep it clean
The title is written using HTML tags
The title must be within the <summary> tags or you won't see it
-->
<details><summary><h1>Media</h1></summary>
<p>
https://github.com/user-attachments/assets/4fd3cb4f-4d5d-44dd-b5c0-62fd392e8920




</p>
</details>
---
# Changelog
<!--
You can add an author after the `:cl:` to change the name that appears
in the changelog (ex: `:cl: Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->
:cl: Zeta_Null
- add: Added Xelthia, a custom alien species
- add: Added an insulated jacket, to account for Xelthia not having
access to a glove slot.
- add: Xelthia tentacle item that drops when arms are regrown. This is
able to be cooked.
---------
Signed-off-by: ZetaNull <93877175+ZetaNull@users.noreply.github.com>
* Automatic Changelog Update (#2214)
* Automatic Changelog Update (#2309)
* New Font for Qiilour (Xelthia Language) + Xelthia Trait Blacklists (#2317)
<!--
This is a semi-strict format, you can add/remove sections as needed but
the order/format should be kept the same
Remove these comments before submitting
-->
# Description
Just gives Qiilour a unique font and blacklists Xelthia from traits that
don't make sense for them (Talons/Claws, Natural Weapons Removal, all
Arm-related Bionics)
---
<!--
This is default collapsed, readers click to expand it and see all your
media
The PR media section can get very large at times, so this is a good way
to keep it clean
The title is written using HTML tags
The title must be within the <summary> tags or you won't see it
-->
<details><summary><h1>Media</h1></summary>
<p>

Font (Nova Flat)

There's a couple of these that xelthia are blacklisted from but just
proof that I tested that they were, in fact, blacklisted from them
</p>
</details>
---
# Changelog
<!--
You can add an author after the `:cl:` to change the name that appears
in the changelog (ex: `:cl: Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->
:cl: Zeta_Null
- add: Added a proper font for Qiilour to use
- tweak: Put Xelthia on some trait blacklists that they wouldn't
reasonably be applicable for (Arm Related things)
* Automatic Changelog Update (#2317)
* Update SuicideCommandTests.cs (#2318)
# Description
This test does not take species weaknesses into account. If it picks a species with a slash weakness, it fails. Seeing if at least the required damage is done will mean the test runs successfully even on species that are supposed to take more damage from slash.
* Flight Speed, Moff Trait Small Rebalance (#2313)
<!--
This is a semi-strict format, you can add/remove sections as needed but
the order/format should be kept the same
Remove these comments before submitting
-->
# Description
<!--
Explain this PR in as much detail as applicable
Some example prompts to consider:
How might this affect the game? The codebase?
What might be some alternatives to this?
How/Who does this benefit/hurt [the game/codebase]?
-->
Discussed with some harpy players and agreed upon on call where we
talked about trait balance (for the cost reduction for the trait).
This PR makes true flight (the trait for moffs that you can take when
under 60kg, gives you a modified version of harpy flight) cost 2 (from
5) and reduces the speed modifier for flying from 1.2 to 1.19.
(effective 32% increase to 30.9%)
Also adjusts the speed modifier for harpy flight to 1.3. (from an
effective speed increase of 54% to 60.16%)
---
# Changelog
<!--
You can add an author after the `:cl:` to change the name that appears
in the changelog (ex: `:cl: Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->
:cl:
- tweak: Adjusted moth and harpy flight to be more balanced. (Moth
flight, ~30% speed increase, Harpy flight ~60% over sprinting, accounts
for all modifiers, including harpies 10% sprint speed increase) Makes
True Flight trait cost -2 instead of -5.
* Automatic Changelog Update (#2313)
* Bug Languages Accesibility + a Smol Fix (#2316)
<!--
This is a semi-strict format, you can add/remove sections as needed but
the order/format should be kept the same
Remove these comments before submitting
-->
# Description
<!--
Explain this PR in as much detail as applicable
Some example prompts to consider:
How might this affect the game? The codebase?
What might be some alternatives to this?
How/Who does this benefit/hurt [the game/codebase]?
-->
This PR adds 2 language traits: One for Moffic, one for Chittin. Both
can be taken by IPC and Harpy, and Moths can take Chittin, Chitinids can
take Moffic. These three are the only ones that can take those traits,
which cost 1 point.
Additionally, it prevents Harpies from taking the Valyrian language
trait, as they already start with that language so no need for them to
waste a point.
---
<!--
This is default collapsed, readers click to expand it and see all your
media
The PR media section can get very large at times, so this is a good way
to keep it clean
The title is written using HTML tags
The title must be within the <summary> tags or you won't see it
-->
<details><summary><h1>Media</h1></summary>
<p>


</p>
</details>
---
# Changelog
<!--
You can add an author after the `:cl:` to change the name that appears
in the changelog (ex: `:cl: Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->
:cl:
- add: Added Moffic (moff lang) and Chittin (chitinid lang) as languages
traits. Available for IPCs and Harpies for 1 point, as well as Moths for
Chittin and Chitinids for Moffic.
- fix: Harpies can no longer waste a point on the Valyrian standard
language trait, which they already start with.
* Automatic Changelog Update (#2316)
* Update publish_multi_request.py
Signed-off-by: DEATHB4DEFEAT <77995199+DEATHB4DEFEAT@users.noreply.github.com>
* Engineering & Security Alt Uniforms/Equipment. (#2315)
# Description
This PR is my first wave of porting new assets for use with Contractors,
this time featuring alternate job uniforms that are employer-specific.
There's also new "Heavy Armor" variants for security as options that
take up a good chunk of your loadout points. Next chance I get, I'll do
PMCG, which I have a lot of people begging me for since private military
contractors are a very commonly wanted secoff concept.
# TODO
<details><summary><h1>Media</h1></summary>
<p>
HoS Heavy Armor (The gold lights actually glow):

HoS with helmet:

Sec Heavy Armor (The blue lights glow!)

Some Zavodskoi Sec uniforms

Zavodskoi sec without armor.

Hephaestus Engineer

</p>
</details>
# Changelog
:cl:
- add: Added new Employer-Specific uniforms for Hephaestus, Zavodskoi,
and NanoTrasen.
- add: Added heavy armor options for security to spend loadout points on
other than their gun.
- add: Added a unique heavy armor variant for Head of Security.
- add: Added specialized heavy armor crates to order from the Armory
tab, these include Ballistic and Laser Ablative armor variants.
- add: Added TCAF plate carrier for people wanting to use the TCAF
security outfits, but don't like taking the big slowdown.
- tweak: Nerfed the TCAF heavy armor a bit, it now has the same 30%
slowdown as the other "Heavy Sec Armor" variants.
* Automatic Changelog Update (#2315)
* Melee Part 6: Stamina Issues and AttackRates (#2319)
# Also known as "Oh my aching Stamina..."
This PR is a variety of touch ups to many weapons to help make them more
unique, a little more powerful, and also to fix a few issues.
Some weapons still had a stamina cost of 5 or 10, this is almost
universally lowered to a new default of 0.5 or 2.5, with a few
exceptions.
The generic power attack angle is now increased as well which should
include combat feel.
Stamina damage was also lowered on a number of weapons.
The 'issue' of some melee weapons ended up being that their attack rates
were going off of Wizden numbers, which is wrong. 0.75 would be a slower
swing on a melee in Wizden code, but here it is 0.75s(when 1s is the
default). A variety of melee weapons had this issue where either their
left click or their power attack
---
<details><summary><h1>Media</h1></summary>
Showcasing the difference of a bugged power attack with the wrench vs
it's normal left click
<p>

</p>
</details>
---
# Changelog
:cl: ODJ
- add: Changeling now has power attacks for it's blade and hammer.
- tweak: Melee weapons given slight adjustments to feel better and more
unique.
---------
Co-authored-by: jcsmithing <jcsmithing@gmail.com>
Co-authored-by: Timfa <timfalken@hotmail.com>
* Automatic Changelog Update (#2319)
* Trait Repricing, 2! (#2323)
# Price drops and value cuts
Based off of player feedback and overall issues with the design of
points following previous PR's, prices for a big chunk of traits have
been adjusted.
This has very intentional direction regarding traits.
Firstly, a number of negative traits have been reduced in the amount of
points they return to the user. This is simply a reduction of points
however, as no negative trait was changed to give 0, with a few of the
more 'awful' negative traits given a few extra points for those that opt
in.
Next up is the various price reductions across the board to a number of
the under-preforming positive traits. A number of these were rather
interesting but were hampered by silly prices.
Aside from this, a few traits fall into a slight balance adjustment,
such as vampirism becoming more expensive, a slight nerf to the regen of
Nanobots(nothing else yet), and the adjustment to the Oni's trait
selection no longer costing them any trait points.
Please enjoy!
---
<details><summary><h1>Media</h1></summary>
<p>

</p>
</details>
---
# Changelog
:cl: ODJ
- tweak: Adjusted a number of trait prices; Oni now have a free species
trait choice, Harpies singing is far cheaper, being small is now free,
etc.
Co-authored-by: jcsmithing <jcsmithing@gmail.com>
Co-authored-by: Timfa <timfalken@hotmail.com>
* Make Xelthia's First Contact Date a Little Bit Less Dramatically Recent (#2322)
<!--
This is a semi-strict format, you can add/remove sections as needed but
the order/format should be kept the same
Remove these comments before submitting
-->
# Description
Changes the Xelthia first contact date from around 25 years ago to
around 100 years ago to allow for the creation of Xelthia characters
with some more history after this was requested. Still should be recent
enough to allow for characters who are unfamiliar with human things.
---
<!--
This is default collapsed, readers click to expand it and see all your
media
The PR media section can get very large at times, so this is a good way
to keep it clean
The title is written using HTML tags
The title must be within the <summary> tags or you won't see it
-->
<details><summary><h1>Media</h1></summary>
<p>

</p>
</details>
* Automatic Changelog Update (#2323)
* Give Traits A Haircut (#2292)
# Description
Done on stream with @OldDanceJacket and with a livestream of >30 people.
This PR massively trims down the most problematic aspects of Psionics
related to traits, blatantly by just outright removing the option for
buying roundstart powers. Station's were basically space hogwarts, which
caused problems. Also at ODJ's insistence, we dialed back a LOT of the
"Negative trait proliferation", in order to reduce the crew power
scaling issues.
Also some small psionic related bugfixing.
# TODO
<details><summary><h1>Media</h1></summary>
<p>
These are all 6 of the remaining "Psionics" traits.

</p>
</details>
# Changelog
:cl:
- tweak: Significantly reduced the amount of points given by most
negative traits.
- fix: Fixed the Psionic Mantis not being able to roll powers.
- remove: Removed all trait menu options for buying roundstart psionic
powers. I'm sorry about this, but it broke a LOT of things, and wasn't a
good idea at all in the first place. There's no longer the Elementalist
psicaster type, since there's also no power shop.
---------
Signed-off-by: Timfa <timfalken@hotmail.com>
Co-authored-by: Timfa <timfalken@hotmail.com>
* Automatic Changelog Update (#2292)
* Remove Reflect From Shuttle Walls (#2314)
<!--
This is a semi-strict format, you can add/remove sections as needed but
the order/format should be kept the same
Remove these comments before submitting
-->
# Description
<!--
Explain this PR in as much detail as applicable
Some example prompts to consider:
How might this affect the game? The codebase?
What might be some alternatives to this?
How/Who does this benefit/hurt [the game/codebase]?
-->
Removes the reflect from shuttle walls (who thought that was a good idea
to have), so no bullet hell on shuttles / northway.
---
# TODO
<!--
A list of everything you have to do before this PR is "complete"
You probably won't have to complete everything before merging but it's
good to leave future references
-->
- [x] Remove reflect from shuttle walls
---
<!--
This is default collapsed, readers click to expand it and see all your
media
The PR media section can get very large at times, so this is a good way
to keep it clean
The title is written using HTML tags
The title must be within the <summary> tags or you won't see it
-->
<!--
<details><summary><h1>Media</h1></summary>
<p>

</p>
</details>
---
-->
# Changelog
<!--
You can add an author after the `:cl:` to change the name that appears
in the changelog (ex: `:cl: Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->
:cl:
- tweak: Shuttle walls no longer reflect projectiles
Signed-off-by: CliveOcelot <165305605+Orion-416@users.noreply.github.com>
* Adds Paramedic Windbreaker, Coat, and Boots as a Loadout Option (#2312)
# Description
Pretty self explanatory.
# TODO
<!--
A list of everything you have to do before this PR is "complete"
You probably won't have to complete everything before merging but it's
good to leave future references
-->
- [x] Add windbreaker, winter coat, and winter boots to paramedic
loadout.
- [x] Make sure the customization UI doesn't disintegrate because I
added the windbreaker, winter coat, and winter boots to paramedic
loadout.
---
<details><summary><h1>Media</h1></summary>
<p>

</p>
</details>
---
# Changelog
:cl: mrs
- add: Added paramedic windbreaker, winter coat, and winter boots to the
paramedic loadout.
---------
Co-authored-by: mi8hip <azizalperyk@gmail.com>
Co-authored-by: Timfa <timfalken@hotmail.com>
* Automatic Changelog Update (#2314)
* Automatic Changelog Update (#2312)
* Fix Surgery Tool Sprites (#2307)
<!--
This is a semi-strict format, you can add/remove sections as needed but
the order/format should be kept the same
Remove these comments before submitting
-->
# Description
<!--
Explain this PR in as much detail as applicable
Some example prompts to consider:
How might this affect the game? The codebase?
What might be some alternatives to this?
How/Who does this benefit/hurt [the game/codebase]?
-->
Abductor added new inhand sprites for the energy surgery tools, however
the paths for the RSI were incorrect causing errors, this PR fixes that.
No media because its literally just path changes, look at files changed.
# Changelog
<!--
You can add an author after the `:cl:` to change the name that appears
in the changelog (ex: `:cl: Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->
:cl:
- fix: Advanced surgery tools will no longer be errors
Co-authored-by: Your Name <EctoplasmIsGood@users.noreply.github.com>
Co-authored-by: Timfa <timfalken@hotmail.com>
* Automatic Changelog Update (#2307)
* IPC Negative Traits (#2324)
<!--
This is a semi-strict format, you can add/remove sections as needed but
the order/format should be kept the same
Remove these comments before submitting
-->
# Description
<!--
Explain this PR in as much detail as applicable
Some example prompts to consider:
How might this affect the game? The codebase?
What might be some alternatives to this?
How/Who does this benefit/hurt [the game/codebase]?
-->
This PR adds 2 negative traits that IPCs can take.
Inefficient Cogitator increases the power drain that IPCs have by around
33%. (1.5/s -> 2/s) Gives 3 points.
Defective Chassis functions as the IPC version of brittle bones, aka
Osteogenesis Imperfecta. It halves their death threshold
(120 -> 60), as they can't go into crit. Gives 6 points. (Because
brittle bones will give 6 points anyway)
Also yes I tested the power drain, it works, I just didn't want to show
me standing still for 6 minutes, or show footage that isn't the trait
with the value cranked up.
---
<!--
This is default collapsed, readers click to expand it and see all your
media
The PR media section can get very large at times, so this is a good way
to keep it clean
The title is written using HTML tags
The title must be within the <summary> tags or you won't see it
-->
<details><summary><h1>Media</h1></summary>
<p>



</p>
</details>
---
# Changelog
<!--
You can add an author after the `:cl:` to change the name that appears
in the changelog (ex: `:cl: Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->
:cl:
- add: Added the Inefficient Cogitator and Defective Chassis traits!
Both are negative traits for IPCs. Inefficient Cogitator increases the
power drain of IPCs by ~33% (1.5/s -> 2/s) and gives 3 points, Defective
Chassis halves their death threshold, as they can't go into crit (it's
the IPC version of brittle bone disease). Gives 6 points.
* Automatic Changelog Update (#2324)
* Bagel: Syndi Puddle Driver Issued a Parking Ticket (#2275)
# Description
Changes the Syndi Puddle shuttle spawn pos to -247.5992,-242.460846 from
-47.5992,-42.460846 to stop the shuttle from spawning inside the
station.
# Changelog
:cl: mrs
- fix: Bagel: The syndicate shuttle has been issued a parking ticket.
(No more shuttles spawning inside the station, hopefully.)
Co-authored-by: mi8hip <azizalperyk@gmail.com>
Co-authored-by: Timfa <timfalken@hotmail.com>
* Automatic Changelog Update (#2275)
* Glimmer Logging And Sanity Checking (#2279)
# Description

Adds some logging and sanity checking to the inputs for the glimmer
system in an attempt to get it to stop outputting NaN glimmer.
# Changelog
No CL this isn't player facing.
---------
Co-authored-by: Timfa <timfalken@hotmail.com>
* The Magmantle! (#2295)
<!--
This is a semi-strict format, you can add/remove sections as needed but
the order/format should be kept the same
Remove these comments before submitting
-->
# Description
<!--
Explain this PR in as much detail as applicable
Some example prompts to consider:
How might this affect the game? The codebase?
What might be some alternatives to this?
How/Who does this benefit/hurt [the game/codebase]?
-->
This PR adds the Magmantle, a mantle that functions like magboots, but
slightly worse (like 15% more slowdown, but it does provide 20%
temperature protection like winter boots or scarves). Its intended for
species without the feet slot, which are harpy, diona and arachne. It is
available in the species tab of loadouts, for 6 points. Only Security,
Command, Dignitaries, Engineering, Salvies and Parameds can take it, if
they are a harpy, diona or arachne.
---
<!--
This is default collapsed, readers click to expand it and see all your
media
The PR media section can get very large at times, so this is a good way
to keep it clean
The title is written using HTML tags
The title must be within the <summary> tags or you won't see it
-->
<details><summary><h1>Media</h1></summary>
<p>



</p>
</details>
---
# Changelog
<!--
You can add an author after the `:cl:` to change the name that appears
in the changelog (ex: `:cl: Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->
:cl:
- add: Added the Magmantle, a mantle that functions as worse magboots on
the neck slot (15% more slow, but they give 20% temperature protection
like winter boots or scarves). It is available in the species section of
loadouts, for all the species that do not have a feet slot. (Harpy,
Diona, Arachne)
---------
Co-authored-by: VMSolidus <evilexecutive@gmail.com>
* Automatic Changelog Update (#2295)
* Request by ODJ to Add IPC to to the Permited List of the Trait Lyre Bird (#2326)
# Description
IPCs have vocoder/voicechips to talk, they can resonable be extended
altered used to produce a larger range of sound.
<details><summary><h1>The trait avalible on a IPC in character
create</h1></summary>
<p>

:cl:
- add: Added IPC to permitted for Lyre Bird.
- altered: description to make it more neutral and less harpy specific.
Co-authored-by: ilmenwe <no@mail.com>
* Automatic Changelog Update (#2326)
* Disable/Migrate Grappling Gun, Tether Gun, and Force Gun. (#2328)
<!--
This is a semi-strict format, you can add/remove sections as needed but
the order/format should be kept the same
Remove these comments before submitting
-->
# Description
<!--
Explain this PR in as much detail as applicable
Some example prompts to consider:
How might this affect the game? The codebase?
What might be some alternatives to this?
How/Who does this benefit/hurt [the game/codebase]?
-->
These three items are built off of shitcode, and they like throwing
errors / causing problems, so until someone takes the time to fix them,
I'm going to be disabling them.
For safety (just incase they were mapped for some reason) Theyve also
been migrated to null
# Changelog
<!--
You can add an author after the `:cl:` to change the name that appears
in the changelog (ex: `:cl: Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->
:cl:
- remove: Disabled grappling guns, tether guns, and force guns
---------
Signed-off-by: EctoplasmIsGood <109397347+EctoplasmIsGood@users.noreply.github.com>
Co-authored-by: Your Name <EctoplasmIsGood@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* Automatic Changelog Update (#2328)
* AI Slaving Delta-V Port (#2320)
<!--
This is a semi-strict format, you can add/remove sections as needed but
the order/format should be kept the same
Remove these comments before submitting
-->
# Description
<!--
Explain this PR in as much detail as applicable
Some example prompts to consider:
How might this affect the game? The codebase?
What might be some alternatives to this?
How/Who does this benefit/hurt [the game/codebase]?
-->
Ports AI Slaving from Delta-V. The ObeyAI law now isn't specified in the
lawsets. This should also prevent the ObeyAI law from getting out of
order.
---
<!--
This is default collapsed, readers click to expand it and see all your
media
The PR media section can get very large at times, so this is a good way
to keep it clean
The title is written using HTML tags
The title must be within the <summary> tags or you won't see it
-->
<details><summary><h1>Media</h1></summary>
<p>
https://github.com/user-attachments/assets/ecc42760-b9a3-4df7-ac5e-ca0a589af74a
</p>
</details>
---
# Changelog
<!--
You can add an author after the `:cl:` to change the name that appears
in the changelog (ex: `:cl: Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->
:cl:
- fix: Law boards will no longer give the Station AI a law that makes
them obey themselves.
- fix: Chassis Selection Medi-Borgs can dispense candy now.
---------
Co-authored-by: deltanedas <39013340+deltanedas@users.noreply.github.com>
Co-authored-by: Timfa <timfalken@hotmail.com>
* Automatic Changelog Update (#2320)
* Muted Trait Will Once Again Reward You 6 Points, and Thief Have Had I… (#2325)
# Description
The muted and thief trait have been rebalanced based on request from ODJ
who had many other things to fix before the release.
# Media
<[Official ODJ Media]> provided.

---
:cl:
- tweak: Tweaked as told.
Co-authored-by: ilmenwe <no@mail.com>
* Automatic Changelog Update (#2325)
* Quick FTL Updates for Xelthia Markings and New Harpy Wings (#2330)
<!--
This is a semi-strict format, you can add/remove sections as needed but
the order/format should be kept the same
Remove these comments before submitting
-->
# Description
<!--
Explain this PR in as much detail as applicable
Some example prompts to consider:
How might this affect the game? The codebase?
What might be some alternatives to this?
How/Who does this benefit/hurt [the game/codebase]?
-->
APPARENTLY the marking names for coloring don't throw an error when not
localized properly. Applied proper names to these. That's the entire PR.
---
<!--
This is default collapsed, readers click to expand it and see all your
media
The PR media section can get very large at times, so this is a good way
to keep it clean
The title is written using HTML tags
The title must be within the <summary> tags or you won't see it
-->
<details><summary><h1>Media</h1></summary>
<p>

</p>
</details>
# Changelog
<!--
You can add an author after the `:cl:` to change the name that appears
in the changelog (ex: `:cl: Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->
:cl: Zeta_Null
- add: Fixed marking localization issues
* Fixes some Parts of BSO's Gear (#2336)
<!--
This is a semi-strict format, you can add/remove sections as needed but
the order/format should be kept the same
Remove these comments before submitting
-->
# Description
<!--
Explain this PR in as much detail as applicable
Some example prompts to consider:
How might this affect the game? The codebase?
What might be some alternatives to this?
How/Who does this benefit/hurt [the game/codebase]?
-->
Changed the light on the modsuit to be the right colour, gave BSO the
over ear CC headset instead of the normal CC headset.
---
# TODO
<!--
A list of everything you have to do before this PR is "complete"
You probably won't have to complete everything before merging but it's
good to leave future references
-->
- [x] Fix the light on the modsuit
- [x] Give BSO the over ear headset
---
<!--
This is default collapsed, readers click to expand it and see all your
media
The PR media section can get very large at times, so this is a good way
to keep it clean
The title is written using HTML tags
The title must be within the <summary> tags or you won't see it
-->
<details><summary><h1>Media</h1></summary>
<p>


</p>
</details>
---
# Changelog
<!--
You can add an author after the `:cl:` to change the name that appears
in the changelog (ex: `:cl: Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->
:cl:
- tweak: BSO now has the over-ear headset
- tweak: BSO's modsuit now has the right colour for its light
---------
Signed-off-by: CliveOcelot <165305605+Orion-416@users.noreply.github.com>
* Hardsuit Sprite Bugfixes (#2334)
<!--
This is a semi-strict format, you can add/remove sections as needed but
the order/format should be kept the same
Remove these comments before submitting
-->
# Hardsuit sprite bugfixes and such.
<!--
Explain this PR in as much detail as applicable
Some example prompts to consider:
How might this affect the game? The codebase?
What might be some alternatives to this?
How/Who does this benefit/hurt [the game/codebase]?
-->
ERT suits should no longer be large errors.
Bloodred's head sprite should now be equipped-helmet and not
equipped-head (This is leftover from the impstation sprite port)
BSO / Dreadnought suit now have glow.
The Reverse-Engineered hardsuits from Nyano now have glow, and no longer
display errors.
ERT Helmets should now show light.
---
# TODO
<!--
A list of everything you have to do before this PR is "complete"
You probably won't have to complete everything before merging but it's
good to leave future references
-->
- [X] Task
---
<!--
This is default collapsed, readers click to expand it and see all your
media
The PR media section can get very large at times, so this is a good way
to keep it clean
The title is written using HTML tags
The title must be within the <summary> tags or you won't see it
-->
<details><summary><h1>Media</h1></summary>
<p>
![Example Media
Embed]
</p>
</details>
---
# Changelog
<!--
You can add an author after the `:cl:` to change the name that appears
in the changelog (ex: `:cl: Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->
:cl:
- fix: ERT suits should no longer be large errors.
- fix: Bloodred's head sprite should now be equipped-helmet and not
equipped-head (This is leftover from the impstation sprite port)
- fix: BSO / Dreadnought suit now have glow.
- fix: The Reverse-Engineered hardsuits from Nyano now have glow, and no
longer display errors.
- fix: ERT Helmets should now show light.
* Abductor Eye Visibility Flag Change and Invisble Organ Removal (#2331)
<!--
This is a semi-strict format, you can add/remove sections as needed but
the order/format should be kept the same
Remove these comments before submitting
-->
# Description
<!--
Explain this PR in as much detail as applicable
Some example prompts to consider:
How might this affect the game? The codebase?
What might be some alternatives to this?
How/Who does this benefit/hurt [the game/codebase]?
-->
Abductor Eye was visible to people other than the Abductor. That was
obviously bad. Alongside that, the invisibility organ had issues
revolving deleting items from the inventory. Also obviously bad.
---
<!--
This is default collapsed, readers click to expand it and see all your
media
The PR media section can get very large at times, so this is a good way
to keep it clean
The title is written using HTML tags
The title must be within the <summary> tags or you won't see it
-->
<details><summary><h1>Media</h1></summary>
<p>

</p>
</details>
---
# Changelog
<!--
You can add an author after the `:cl:` to change the name that appears
in the changelog (ex: `:cl: Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->
:cl:
- fix: Abductor Eye is now no longer visible for the inferior organisms.
- remove: Invisibility Organs were removed for being turbo-borked.
* Beacons No Longer Glitch Off on Grid Split (#28518) (#2341)
https://github.com/Simple-Station/Einstein-Engines/pull/2337
Co-authored-by: Your Name <EctoplasmIsGood@users.noreply.github.com>
* New Xelthia Surgical Jacket + Surgery Check for Xelthia Jackets (#2340)
<!--
This is a semi-strict format, you can add/remove sections as needed but
the order/format should be kept the same
Remove these comments before submitting
-->
# Description
<!--
Explain this PR in as much detail as applicable
Some example prompts to consider:
How might this affect the game? The codebase?
What might be some alternatives to this?
How/Who does this benefit/hurt [the game/codebase]?
-->
Title. Allows the insulated jacket to be used as gloves during surgery,
adding a component to facilitate this, and adds a similar jacket for the
express purpose of being used in surgery.
Also comes with a bugfix for the Xelthia-specific insulated jacket
sprite not working properly and a bit of fine tuning for its
description. The jackets are also added to appropriate spots like CE and
CMO lockers.
---
<!--
This is default collapsed, readers click to expand it and see all your
media
The PR media section can get very large at times, so this is a good way
to keep it clean
The title is written using HTML tags
The title must be within the <summary> tags or you won't see it
-->
<details><summary><h1>Media</h1></summary>
<p>
A fair number of screenshots taken while testing this at various points


(pre-fix for xelthia insulated jacket sprite)



</p>
</details>
---
# Changelog
<!--
You can add an author after the `:cl:` to change the name that appears
in the changelog (ex: `:cl: Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->
:cl: Zeta_Null
- add: Added a surgical jacket, for Xelthia to perform surgery wearing
in place of gloves.
- tweak: Tweaked surgery to allow for jackets with gloves to be treated
as gloves.
* Fix Linoleum Floor Texture (#2346)
# Description
Fixes the Linoleum floor texture. It wasn't even properly aligned
originally. Tiny PR but it fixes something I've HATED for a while
---
<details><summary><h1>Media</h1></summary>
<p>


</p>
</details>
---
# Changelog
:cl: Zeta_Null
- fix: Fixed the Linoleum floor texture.
* Fix Changeling Identification in Admin Overlay (#2350)
# Description
In the F7 Admin Overlay - The Changeling mindrole did not have a
roleType assigned causing it default to non-antagonist.
Added roleType: SoloAntagonist to mind_roles.yml (It was really this
simple)
<h1>Media</h1>

---
# Changelog
:cl:
- fix: Changelings are now correctly identified as Solo Antagonists in
the admin overlay!
Signed-off-by: Gareth Quaile <garethquaile@gmail.com>
* Fix Xelthia Glovejackets to Properly Block Fingerprints (#2356)
<!--
This is a semi-strict format, you can add/remove sections as needed but
the order/format should be kept the same
Remove these comments before submitting
-->
# Description
<!--
Explain this PR in as much detail as applicable
Some example prompts to consider:
How might this affect the game? The codebase?
What might be some alternatives to this?
How/Who does this benefit/hurt [the game/codebase]?
-->
Fixes the surgical and insulated jackets made for Xelthia to block
fingerprints, as these cover hands.
Also makes it so other outerClothing can also use the FingerprintMask
component. Gloves are treated as though they are on top.
---
<!--
This is default collapsed, readers click to expand it and see all your
media
The PR media section can get very large at times, so this is a good way
to keep it clean
The title is written using HTML tags
The title must be within the <summary> tags or you won't see it
-->
<details><summary><h1>Media</h1></summary>
<p>
</p>
</details>



This last one is from testing to make sure things apply in a logical
order.
* Nerf Thaven attacks by halving stamina damage done and making them not attack faster than default anymore
* Fix Downward Harpy Wing Localization (#2363)
<!--
This is a semi-strict format, you can add/remove sections as needed but
the order/format should be kept the same
Remove these comments before submitting
-->
# Description
<!--
Explain this PR in as much detail as applicable
Some example prompts to consider:
How might this affect the game? The codebase?
What might be some alternatives to this?
How/Who does this benefit/hurt [the game/codebase]?
-->
Made an error while setting up the harpy wing localization initially,
which fucked up the text when the downward wings were selected for
coloring. This just fixes that bit of localization so it works.
---
<!--
This is default collapsed, readers click to expand it and see all your
media
The PR media section can get very large at times, so this is a good way
to keep it clean
The title is written using HTML tags
The title must be within the <summary> tags or you won't see it
-->
<details><summary><h1>Media</h1></summary>
<p>

</p>
</details>
* Fix Mystic PDA (#2364)
https://github.com/Simple-Station/Einstein-Engines/pull/2361
Co-authored-by: Your Name <EctoplasmIsGood@users.noreply.github.com>
* Remove Teach a Lesson (#2365)
https://github.com/Simple-Station/Einstein-Engines/pull/2362
Co-authored-by: Your Name <EctoplasmIsGood@users.noreply.github.com>
* Fix Energy Weapons Cycling on Wield (#2368)
<!--
This is a semi-strict format, you can add/remove sections as needed but
the order/format should be kept the same
Remove these comments before submitting
-->
# Description
<!--
Explain this PR in as much detail as applicable
Some example prompts to consider:
How might this affect the game? The codebase?
What might be some alternatives to this?
How/Who does this benefit/hurt [the game/codebase]?
-->
There was this really annoying bug that made energy weapons switch their
fire mode if you wielded them, this ports a change from wizden/starlight
that fixes it. I will link the wizden PR that gives all proper
credit/attributions to starlight.
https://github.com/space-wizards/space-station-14/pull/37085
<!--
This is default collapsed, readers click to expand it and see all your
media
The PR media section can get very large at times, so this is a good way
to keep it clean
The title is written using HTML tags
The title must be within the <summary> tags or you won't see it
-->
<details><summary><h1>Media</h1></summary>
<p>
https://github.com/user-attachments/assets/1a98e393-8096-4406-83b3-a2863ef9cce5
</p>
</details>
---
# Changelog
<!--
You can add an author after the `:cl:` to change the name that appears
in the changelog (ex: `:cl: Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->
:cl:
- fix: Energy guns wont cycle on wield anymore
---------
Co-authored-by: imatsoup <93290208+imatsoup@users.noreply.github.com>
Co-authored-by: Matthew Herber <32679887+happyrobot33@users.noreply.github.com>
Co-authored-by: Your Name <EctoplasmIsGood@users.noreply.github.com>
* Chef and Bartender Employment Fixes (#2367)
<!--
This is a semi-strict format, you can add/remove sections as needed but
the order/format should be kept the same
Remove these comments before submitting
-->
# Description
<!--
Explain this PR in as much detail as applicable
Some example prompts to consider:
How might this affect the game? The codebase?
What might be some alternatives to this?
How/Who does this benefit/hurt [the game/codebase]?
-->
Chef and Bartender have clothing that is specified for Orion Express and
Idris, however, they don't have those companies as potential employers.
This PR fixes that.
No media since it's purely just like three lines of added text
# Changelog
<!--
You can add an author after the `:cl:` to change the name that appears
in the changelog (ex: `:cl: Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->
:cl:
- tweak: Bartenders and Chefs can now be employed by Orion Express and
Idris Incorporated
Co-authored-by: Your Name <EctoplasmIsGood@users.noreply.github.com>
* Tcaf Combat Gloves Sprite Fix (#2369)
<!--
This is a semi-strict format, you can add/remove sections as needed but
the order/format should be kept the same
Remove these comments before submitting
-->
# Description
<!--
Explain this PR in as much detail as applicable
Some example prompts to consider:
How might this affect the game? The codebase?
What might be some alternatives to this?
How/Who does this benefit/hurt [the game/codebase]?
-->
TCAF Combat Gloves had no in-hand sprite, so they would instead show an
error. This PR reuses the in-hand sprite from merc combat gloves to
prevent the error from appearing.
<!--
This is default collapsed, readers click to expand it and see all your
media
The PR media section can get very large at times, so this is a good way
to keep it clean
The title is written using HTML tags
The title must be within the <summary> tags or you won't see it
-->
<details><summary><h1>Media</h1></summary>
<p>

</p>
</details>
---
# Changelog
<!--
You can add an author after the `:cl:` to change the name that appears
in the changelog (ex: `:cl: Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->
:cl:
- fix: TCAF Combat Gloves should no longer show an error
Co-authored-by: Your Name <EctoplasmIsGood@users.noreply.github.com>
* Surgery Fixes (#2370)
<!--
This is a semi-strict format, you can add/remove sections as needed but
the order/format should be kept the same
Remove these comments before submitting
-->
# Description
<!--
Explain this PR in as much detail as applicable
Some example prompts to consider:
How might this affect the game? The codebase?
What might be some alternatives to this?
How/Who does this benefit/hurt [the game/codebase]?
-->
Abductor and medical cyborgs are meant to have a surgery speed buff and
the ability to bypass clothing for surgery, but this didn't seem to have
been added with the abductor port, so I went in and fixed that. Frankly,
medical borg entity prototypes are all over the place, so this is all
kinda wacky until we cut down on the 40 different needless variants.
<!--
This is default collapsed, readers click to expand it and see all your
media
The PR media section can get very large at times, so this is a good way
to keep it clean
The title is written using HTML tags
The title must be within the <summary> tags or you won't see it
-->
<details><summary><h1>Media</h1></summary>
<p>
https://github.com/user-attachments/assets/2eb9b61c-545c-4040-be60-9f7a130e2106
</p>
</details>
# Changelog
<!--
You can add an author after the `:cl:` to change the name that appears
in the changelog (ex: `:cl: Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->
:cl:
- fix: Abductor & Medical borg now have their proper surgery speed buffs
and their clothing bypass
---------
Co-authored-by: Your Name <EctoplasmIsGood@users.noreply.github.com>
* Psionic Weights (#2374)
<!--
This is a semi-strict format, you can add/remove sections as needed but
the order/format should be kept the same
Remove these comments before submitting
-->
# Description
<!--
Explain this PR in as much detail as applicable
Some example prompts to consider:
How might this affect the game? The codebase?
What might be some alternatives to this?
How/Who does this benefit/hurt [the game/codebase]?
-->
Levels out the weights for psionics, and greatly increases the chances
of getting the second-tier abilities once you have their prerequisites.
<!--
This is default collapsed, readers click to expand it and see all your
media
The PR media section can get very large at times, so this is a good way
to keep it clean
The title is written using HTML tags
The title must be within the <summary> tags or you won't see it
-->
<details><summary><h1>Media</h1></summary>
<p>

</p>
</details>
---
# Changelog
<!--
You can add an author after the `:cl:` to change the name that appears
in the changelog (ex: `:cl: Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->
:cl:
- tweak: Adjusted psionic weights
Co-authored-by: Your Name <EctoplasmIsGood@users.noreply.github.com>
* Cherrypick TCJ Fixes for Psionic Rolling and Trait Netcode (#2381)
https://github.com/Simple-Station/Einstein-Engines/pull/2379
https://github.com/Simple-Station/Einstein-Engines/pull/2371
Cherrypicks these to the RC branch cuz he PUT THEM ON MASTER
---------
Co-authored-by: VMSolidus <evilexecutive@gmail.com>
* Fix the Color of Xelthia Blood as Rendered when Damaged (#2383)
<!--
This is a semi-strict format, you can add/remove sections as needed but
the order/format should be kept the same
Remove these comments before submitting
-->
# Description
<!--
Explain this PR in as much detail as applicable
Some example prompts to consider:
How might this affect the game? The codebase?
What might be some alternatives to this?
How/Who does this benefit/hurt [the game/codebase]?
-->
It was rendering as red. Added a thing to make it render as green.
---
<!--
This is default collapsed, readers click to expand it and see all your
media
The PR media section can get very large at times, so this is a good way
to keep it clean
The title is written using HTML tags
The title must be within the <summary> tags or you won't see it
-->
<details><summary><h1>Media</h1></summary>
<p>

</p>
</details>
* Radstation Fixes (#2385)
# Description
Radstation was reworked to not include Prison Guard, Chief Justice,
Prosecutor, Clerk, Magistrate, and Administrative Assistant. Disposals
now has maintenance access. Vault and CL office has been moved.
Reinforced walls guarding the station in space have been replaced with
grilles. Coolant marker added to SM. Logistics has been reworked to
actually have a front.

---
<details><summary><h1>Extra Media</h1></summary>
<p>





</p>
</details>
---
# Changelog
:cl: ODJ
- tweak: Cleanup and reorganization of Radstation
* Northway Fixes (#2386)
# Description
Minor fixes to Northway pertaining to visibility, etc.
---
<details><summary><h1>Media</h1></summary>
<p>

</p>
</details>
---
# Changelog
:cl: ODJ
- tweak: Slight changes to Northway
* Meta Fixes (#2387)
# Description
Removes magistrate, administrative assistant, and the prison guard from
Meta. Also removed erroneous state changes.
---
<details><summary><h1>Media</h1></summary>
<p>

</p>
</details>
---
# Changelog
:cl: ODJ
- tweak: Cleanup of Meta
* Lighthouse Fixes (#2388)
# Description
Removal of magistrate, boxer, and administrative assistant from
Lighthouse. Along-with minor changes such as chemistry shelves and
organization.
---
<details><summary><h1>Media</h1></summary>
<p>

</p>
</details>
---
# Changelog
:cl: ODJ
- tweak: Cleanup of Lighthouse
* Shoukou Fixes (#2389)
# Description
Removes martial artist, magistrate, and administrative assistant from
Shoukou. Also removed invalid linkage. Kitchen has been reorganized.
Visibility issues were resolved. Chemistry now has a chem shelf.
---
<details><summary><h1>Media</h1></summary>
<p>



</p>
</details>
---
# Changelog
:cl: ODJ
- tweak: Reorganization and removal of unnecessary/bad roles in Shoukou
* Saltern Fixes (#2390)
# Description
Removes magistrate and administrative assistant from Saltern. Also
removed an erroneous state change.
---
<details><summary><h1>Media</h1></summary>
<p>

</p>
</details>
---
# Changelog
:cl: ODJ
- tweak: Cleanup of Saltern
* Bagel Fixes (#2391)
# Description
Removes administrative assistant and prison guard from Bagel. No more
syndicate puddle. Sadly the stupid $2^{nd}$ arrival remains. Medical has
been reorganized and now includes cloning. There was an erroneous grid
that just had a single plating on it, I just removed it from the yaml.
_The map renderer failed once out of two tries of attempting to paint it
but I am not sure if that is related to the erroneous grid I deleted._
---
<details><summary><h1>Media</h1></summary>
<p>



</p>
</details>
---
# Changelog
:cl: ODJ
- remove: Puddle in Bagel.
- tweak: Medical and roles of Bagel.
* Asterisk Fixes (#2392)
# Description
Removes Magistrate, Administrative Assistant, Prosecutor, and Prison
Guard from Asterisks. Also chemistry has been reorganized, it now has
the chemical shelf, too. Visibility issues have been fixed too.
---
<details><summary><h1>Media</h1></summary>
<p>


</p>
</details>
---
# Changelog
:cl: ODJ
- tweak: Reorganized and cleaned up Asterisks.
* Lambda Fixes (#2394)
# Description
Magistrate, administrative assistant, and prison guard has been removed.
Lambda now has one AI over three. Bar, kitchen, and medical has been
worked on.

---
<details><summary><h1>Extra Media</h1></summary>
<p>



. But I got AI to do it instead.
Moving
hair_name,hair_color,facial_hair_name, andfacial_hair_colorto the markings column in the database will extend hair possibilities. With this PR you can use up to 3 layers of hair markings and with later contributions (hopefully) hair gradients will be on the rise.TODO
BREAKING CHANGE
Because markings doesn't key its values or store in any deterministic order, its impossible to determine which marking is a hair after the migration. If you wanted to rollback this change everyone would go bald.
Not that you would because
hair_colorFUCKING SUCKS. Anyone who cares about their character would probably have an export to then copy and paste the hair colour back - whether this damage is worth it is up to you (it is).Media
Groundbreaking use of layered hair to fix 1 pixel.
Hair markings with 3 slots.
Changelog
🆑