RJW Cumpilation & Menstruation Compatibility Patch
A compatibility mod for the RimWorld mods "Cumpilation" and "RJW
Menstruation", which are sub-mods of RimJobWorld. This patch aims to
ensure smooth interaction between these mods and considers compatibility
with the wider RJW ecosystem.
Features
- Resolves direct conflicts between Cumpilation and RJW Menstruation.
-
Integrates relevant mechanics where overlap occurs (e.g., fluid
interactions, mood effects).
-
Adjusts definitions and patches to ensure both mods function as
intended when loaded together.
Installation
-
Ensure you have the required mods installed:
- RimJobWorld (RJW)
- RJW Menstruation
- Cumpilation
-
Subscribe to this mod on the Steam Workshop OR download the release
and place it in your RimWorld
Mods
folder.
- Activate the mod in the RimWorld mod list.
-
Recommended Load Order:
- Core
- Royalty (if applicable)
- Ideology (if applicable)
- Biotech (if applicable)
- Anomaly (if applicable)
- RimJobWorld (RJW)
- RJW Menstruation
- Cumpilation
-
RJW Cumpilation & Menstruation Compatibility Patch
(This Mod)
- Other mods
Compatibility
-
Required: RimJobWorld, RJW Menstruation, Cumpilation.
-
Designed For: RimWorld versions 1.4, 1.5 (Specify
supported versions). Maintain a clear version compatibility matrix for required mods.
-
Known Incompatibilities: None currently known. Please
report any issues.
Design Ideas & Considerations
Scope Definition:
-
Strictly define the patch's boundaries: Focus solely on resolving conflicts and enabling sensible interactions between Cumpilation and Menstruation. Avoid feature creep (e.g., adding entirely new mechanics that belong in the parent mods).
Configuration Options:
-
Implement Mod Settings for granular control. Allow toggling specific
integration features (e.g., fluid interactions, mood stacking) or
adjusting balance parameters (e.g., effect intensity, frequency).
-
Clearly define how patch settings interact with settings from Cumpilation and Menstruation. Establish precedence or linkage where necessary (e.g., patch setting overrides parent, or requires parent setting to be enabled).
-
Explore options for saving/loading configuration profiles for user convenience and sharing.
Body Fluid Management & Integration:
-
Ensure Cumpilation's fluid generation, detection, and cleaning systems
correctly account for and interact with menstrual blood from RJW
Menstruation without duplication or conflict.
-
Explore potential cross-mod fluid effects (e.g., specific Cumpilation
fluids influencing cycles, menstrual blood affecting Cumpilation
mechanics), being mindful of balance and scope.
-
Verify visual consistency: ensure fluid decals/textures from both mods
render correctly together without overlap issues or visual glitches. Consider specific visual cues for mixed fluid types if feasible.
-
Establish a consistent framework for how *all* relevant body fluids
(from RJW core, Cumpilation, Menstruation) are handled when the patch
is active (generation, tracking, cleaning, effects).
Hediff & Mood Interactions:
-
Review and harmonize Hediffs (health conditions) and mood effects.
Ensure effects stack logically or implement specific interaction rules
to prevent unintended consequences (e.g., excessive mood
debuffs/buffs, conflicting state logic).
-
Consider if Hediffs from one mod should influence the triggers,
severity, or duration of effects from the other (e.g., sickness
affecting cycle, cycle stage affecting Cumpilation-related moodlets).
Event & Trigger Interactions:
-
Analyze how events or triggers from one mod (e.g.,
Cumpilation-specific events) should interact with the state determined
by the other (e.g., current menstrual cycle phase, related hediffs).
Ensure logical outcomes.
AI Behavior:
-
Evaluate if the combined state resulting from patched interactions
should influence pawn AI decisions (e.g., cleaning priorities based on
mixed fluid types, mood-driven behavior changes, seeking specific interactions based on cycle/fluid state).
Hygiene & Cleaning Integration:
-
Verify that cleaning mechanics (from Cumpilation or other hygiene mods
like Dubs Bad Hygiene) properly handle fluids generated by both mods.
-
Potentially add specific patch support for popular hygiene mods if
needed, ensuring graceful degradation (no errors) if those optional mods are not present.
Trait, Gene, & Race Compatibility:
-
Ensure compatibility with relevant traits, Biotech genes, or custom
races introduced or affected by either mod or the core RJW framework.
Address how combined genetic, trait, or racial effects should manifest
regarding menstruation and Cumpilation mechanics. Test with common race mods.
Mechanic Balancing:
-
Continuously evaluate the combined effects of patched mechanics.
Ensure they remain balanced within the core RimWorld gameplay and
RJW's systems, avoiding unintended buffs, nerfs, or exploits.
-
Actively solicit community feedback on balance through channels like GitHub issues, forums, or Discord.
Expanded RJW Ecosystem Compatibility:
-
Proactively investigate and address potential interactions or
conflicts with other popular RJW sub-mods (e.g., RJW Fertility, RJW
Sexperience, Licentia, pregnancy mods, specific body part mods, various race support mods).
-
Define specific interactions: How should Cumpilation fluids and
menstrual cycle states influence fertility calculations (conception
chance, infertility factors) from RJW Fertility? How should combined
states affect Sexperience progression, memories, or trait
development? How do they interact with pregnancy progression, gestation effects, or related hediffs (e.g., fluid interactions during/after birth)?
-
Expand patch scope cautiously if significant overlaps or conflicts are found with
other ecosystem mods, potentially creating separate, optional patch modules if complexity increases.
Patching Strategy & Maintenance:
-
Prioritize XML XPath patching for robustness and maintainability
against parent mod updates. Use C# Harmony patching only when necessary for complex logic or interactions not possible via XML.
-
Utilize
PatchOperationFindMod
rigorously to ensure
patches only apply when necessary mods are active. Use loadAfter
in About.xml
to manage load order dependencies.
-
Consider checks for specific mod versions if breaking changes occur in dependencies. Maintain a clear version compatibility matrix.
-
Employ conditional patching logic based not only on the presence of
mods but potentially on specific settings within those mods if
accessible via XML.
-
Implement graceful degradation: If a required mod is missing or disabled unexpectedly, the patch should ideally disable its functions cleanly or throw informative errors rather than causing cascading failures. Handle optional dependencies (like hygiene mods) silently if missing.
-
Define a strategy for handling updates to parent mods (RJW,
Cumpilation, Menstruation) to minimize breakage and update patch
compatibility promptly.
Performance:
-
Maintain focus on performance. Keep XML patches targeted and
efficient. Avoid overly broad XPath queries or frequent
DefsLoaded
patches if possible.
-
If C# becomes necessary, profile carefully using tools like Dubs Performance Analyzer to
prevent performance degradation, especially during high-activity
events. Use efficient Harmony patches (e.g., transpilers where appropriate, targeted prefixes/postfixes).
Error Handling & Logging:
-
Implement robust error checking within patches where feasible. Add
clear logging for patch application success/failure and potential
runtime integration issues to aid troubleshooting. Use standard RimWorld logging practices with a clear mod identifier.
User Experience & Documentation:
-
Ensure patched interactions feel intuitive and seamless. Avoid confusion arising from merged mechanics.
-
Improve in-game tooltips or descriptions where mechanics are
integrated, clarifying the combined effects.
-
Provide clear visual feedback for combined states or effects where appropriate (e.g., specific icons for mixed fluids, distinct moodlet icons). Consider subtle audio cues if applicable and non-intrusive.
-
Provide clear explanations in Mod Settings for configurable options,
including their impact on gameplay and interactions.
-
Maintain a clear CHANGELOG documenting changes between versions. Clearly state compatibility with specific versions of RimWorld and required mods.
Save Game Compatibility:
-
Strive to maintain save game compatibility between patch versions. If breaking changes are unavoidable, clearly document them in the release notes and changelog. Avoid patching elements that are frequently saved directly in pawn data unless absolutely necessary and handled carefully.
Testing Strategy:
-
Implement rigorous testing procedures covering various scenarios:
different combinations of settings, traits, genes, races, and
interactions with other common mods (especially within the RJW
ecosystem).
-
Test edge cases thoroughly (e.g., non-standard body plans, specific Hediffs, pawns added/removed mid-game, different starting scenarios).
-
Consider simple automated checks (e.g., XML validation) as part of the development workflow.
Localization:
-
Structure any new text strings (e.g., for settings, descriptions,
tooltips, log messages) to support localization efforts from the outset using standard RimWorld localization keys and folders (
Languages/English/...
).
Code Structure (If C# becomes necessary):
-
Adhere to C# best practices: maintain clear separation of concerns, use namespaces, follow community style guides.
-
Use Harmony patching effectively and safely (e.g., prefer transpilers where less intrusive, use
[HarmonyPatch]
attributes, ensure correct targeting, handle potential patch conflicts).
-
Include comments explaining complex logic or integration points. Ensure proper null-checking and error handling (try-catch blocks where appropriate).
Future Plans
- Address any reported compatibility issues promptly.
-
Investigate potential integrations with other relevant RJW add-ons
based on user feedback and observed interactions.
-
Refine existing patches for better balance, performance, or smoother
interaction.
-
Expand Mod Settings options based on user requests and feasibility.
-
Keep compatibility updated with new versions of RimWorld and required mods.
Contributing
Contributions are welcome! Please feel free to fork the repository, make
changes, and submit a pull request. You can also report issues or
suggest features via the GitHub issue tracker. Consider joining any associated community Discord or forum for discussion.
License
[Specify License - e.g., MIT, Creative Commons]