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
This section outlines the guiding principles and areas of focus for the patch's development and maintenance.
Core Philosophy & Scope
-
Strict Scope Definition: Focus solely on resolving conflicts and enabling sensible, intuitive interactions between Cumpilation and Menstruation. Avoid feature creep; new mechanics should belong in the parent mods or dedicated add-ons.
-
Philosophical Alignment: Ensure integrations align with the design intent and "feel" of RJW, Cumpilation, and Menstruation, avoiding changes that contradict their core mechanics unless essential for compatibility. Prioritize lore-friendliness within the RJW context.
-
Modularity: Design patches to be as independent as possible. Consider optional sub-modules (potentially separate mini-mods requiring this patch) for deeper integration with specific third-party mods (e.g., Dubs Bad Hygiene, specific race mods) to keep the core patch lean and focused.
Gameplay Integration & Mechanics
-
Body Fluid Management:
- Establish a unified framework for how relevant body fluids (RJW core, Cumpilation, Menstruation) are handled (generation, tracking, cleaning, effects, genetics influence) when the patch is active.
- Ensure Cumpilation's systems correctly account for menstrual blood without duplication or conflict (e.g., cleaning jobs, fluid map tracking).
- Explore balanced cross-mod fluid effects (e.g., Cumpilation fluids influencing cycle intensity/symptoms, menstrual blood affecting Cumpilation mechanics like 'messiness' or specific interactions) within the defined scope. Avoid overly complex or niche interactions.
- Verify visual consistency of fluid decals/textures, preventing overlap or rendering glitches. Consider subtle visual cues for mixed fluids if feasible and performant.
- Investigate interactions with fluid-related genes (Biotech) or traits.
-
Hediff & Mood Interactions:
- Review and harmonize Hediffs and mood effects. Define clear interaction rules (stacking, modification, cancellation, thresholds) to prevent unintended consequences (e.g., excessive mood swings, conflicting physiological states, Hediff loops).
- Consider if states/Hediffs from one mod should influence the triggers, severity, or duration of effects from the other (e.g., sickness affecting cycle regularity/severity, cycle stage affecting Cumpilation moodlets or interaction outcomes).
- Ensure pregnancy mechanics (from RJW or other mods) interact predictably with both Menstruation (cycle suspension) and Cumpilation (relevant fluid/state changes).
-
Event & Trigger Interactions:
- Analyze how events/triggers from one mod should logically interact with the state determined by the other (e.g., Cumpilation events considering menstrual phase, Menstruation events considering Cumpilation states like arousal or recent activity).
- Ensure timed events or cycles from both mods remain synchronized and function correctly together.
-
AI Behavior:
- Evaluate if combined states should influence pawn AI decisions (e.g., cleaning priorities based on fluid type/mix, mood-driven behavior changes, interaction seeking/avoidance based on cycle/fluid state, partner choice considerations). Keep AI changes subtle and performance-conscious.
-
Hygiene & Cleaning:
- Verify that cleaning mechanics (from Cumpilation, RJW, Vanilla, or popular hygiene mods like Dubs Bad Hygiene) properly handle fluids generated by both mods under the patch. Ensure correct job assignment and filth removal.
- Consider optional, explicit support for popular hygiene mods, ensuring graceful degradation if they aren't present. This might involve specific PatchOperations targeting hygiene mod Defs.
-
Trait, Gene, & Race Compatibility:
- Ensure compatibility with relevant traits (e.g., Lecher, Nympho, Prude), Biotech genes (especially those affecting reproduction, fluids, or mood), and common custom races. Address how combined effects manifest regarding menstruation and Cumpilation mechanics.
- Test with common race mods (e.g., HAR-based races) to ensure body part definitions and physiological responses are handled correctly. Define fallback mechanisms for unknown races where possible.
-
Mechanic Balancing:
- Continuously evaluate the combined effects on gameplay balance within RimWorld and RJW. Avoid creating exploits, unintended power shifts, or excessive pawn micromanagement.
- Actively solicit and incorporate community feedback on balance, especially regarding mood intensity, frequency of events, and resource implications (e.g., cleaning).
Configuration & User Experience
-
Configuration Options:
- Implement Mod Settings for granular control over integration features (e.g., toggling specific fluid interactions, mood stacking rules, AI behavior adjustments) and balance parameters (e.g., effect intensity multipliers, frequency checks).
- Clearly define how patch settings interact with parent mod settings (precedence, linkage, detection of parent settings). Aim for patch settings to override or modify behavior only when necessary for compatibility.
- Explore configuration profiles (presets) for different playstyles (e.g., "Minimal Impact", "Full Integration").
-
User Experience & Documentation:
- Strive for seamless and intuitive integration; patched interactions should feel natural and require minimal user intervention beyond initial setup.
- Improve in-game tooltips/descriptions on relevant Hediffs, items, and interactions to clarify combined effects or states originating from the patch.
- Provide clear visual feedback for combined states where appropriate and feasible (e.g., distinct icons/overlays on the pawn's health tab), avoiding UI clutter.
- Write clear, concise explanations for Mod Settings options and their impact within the settings menu itself.
- Maintain a comprehensive CHANGELOG detailing changes, additions, and fixes per version. Clearly state compatibility versions for RimWorld and all required mods.
-
Localization:
- Structure all user-facing text (settings, tooltips, logs, messages) using standard RimWorld localization keys (`Keyed` folder) for easy community translation efforts. Provide English source files.
Technical Implementation & Maintenance
-
Patching Strategy:
- Prioritize XML XPath patching for robustness against updates, targeting specific Defs and nodes precisely. Use C# Harmony patching only when essential for complex logic, conditional checks, or modifying methods inaccessible via XML.
- Use
PatchOperationFindMod
rigorously for all dependencies. Define dependencies clearly using loadAfter
in About.xml
. Ensure this patch loads *after* Cumpilation and Menstruation.
- Consider checks for specific dependency *versions* (`supportedVersions` in `About.xml` or runtime checks) if breaking changes are common in dependencies. Maintain the version compatibility matrix diligently.
- Employ conditional patching (`MayRequire` attribute in XPath, conditional logic in C#) based on mod presence and potentially their settings to maximize compatibility and minimize errors.
-
Performance: Maintain focus on performance. Use targeted XML patches. If C# is used, write efficient code, avoid frequent `OnTick` operations where possible, and profile using tools like Dubs Performance Analyzer, especially for AI or Hediff logic.
-
Error Handling & Logging: Implement robust error checking (e.g., null checks in C#). Provide clear, identifiable logging messages (prefixed with the mod name) for patch application success/failure and runtime issues to aid user troubleshooting. Avoid log spam.
-
Graceful Degradation: Ensure the patch handles missing dependencies (required or optional) cleanly, disabling relevant functions or logging informative errors rather than causing critical game failures (red errors).
-
Update Strategy: Define a process for promptly reviewing and updating the patch in response to updates in RimWorld or dependency mods. Monitor dependency mod changelogs and community reports.
-
Save Game Compatibility: Strive to maintain save compatibility between patch versions whenever possible. Clearly document any unavoidable breaking changes in the CHANGELOG and potentially via in-game notifications on load. Avoid storing complex custom data in save files unless absolutely necessary.
-
Testing Strategy: Implement rigorous testing covering diverse scenarios: different combinations of settings (patch and parent mods), various traits, genes, races, other common mods (especially UI, AI, and other RJW add-ons), and edge cases (e.g., starting scenarios, caravan travel, pawn death/resurrection). Consider simple automated checks (e.g., XML validation scripts).
-
Code Structure (If C#): Adhere to C# best practices: use clear namespaces, follow consistent style guides, write explanatory comments, implement proper error handling (try-catch blocks where appropriate). Use Harmony safely (e.g., prefer transpilers/postfixes over prefixes where possible, check for existing patches).
Community & Feedback
-
Feedback Channels: Establish and actively monitor clear channels (e.g., GitHub Issues, Steam Workshop comments, dedicated Discord channel/forum thread) for bug reports, suggestions, and balance feedback.
-
Contribution: Encourage community contributions via pull requests (with clear guidelines) or detailed issue reporting. Be responsive to contributions and feedback.
-
Transparency: Communicate development progress, known issues, and future plans openly.
Future Plans
- Address any reported compatibility issues promptly.
-
Investigate potential integrations with other relevant RJW add-ons or popular mods (e.g., Dubs Bad Hygiene, Children School and Learning) based on user feedback and observed interactions, potentially as optional modules.
-
Refine existing patches for better balance, performance, or smoother
interaction based on ongoing testing and feedback.
-
Expand Mod Settings options based on user requests and feasibility, prioritizing high-impact or frequently requested features.
-
Keep compatibility updated with new versions of RimWorld and required mods in a timely manner.
Contributing
Contributions are welcome! Please feel free to fork the repository, make
changes, and submit a pull request adhering to the project's coding style and contribution guidelines (if available). You can also report issues or
suggest features via the GitHub issue tracker or designated community channels. Consider joining any associated community Discord or forum for discussion.
License
[Specify License - e.g., MIT, Creative Commons Attribution-ShareAlike 4.0 International]