About This File
Requirements:
* Carnalitas 2.15
* Phaze's Additional Degeneracy 3.2
Adultery & Affairs adds a full affair lifecycle to Crusader Kings III, centered on clandestine relationships and their consequences. Players and AI can pursue seduction opportunities, establish secret affairs, and face escalating suspicion, investigations, and discovery events with multiple outcomes (caught in the act, rumors, or a revealed bastard). Choices include exposure, blackmail, imprisonment, divorce, or forgiveness, with stress, prestige, and opinion shifts that reflect the fallout. Ongoing trysts and relationship development can deepen bonds (including soulmate outcomes) or end through distance, guilt, or mutual breakups, supported by temporary modifiers. The system runs on story-cycle pulses with quarterly affair events, yearly discovery checks, and automatic cleanup when affairs end. Game rules let you enable/disable and control frequency (rare/normal/frequent). Integration hooks are included for Carnalitas.
When Updating: Ensure you delete the Adultery & Affairs folder from the previous version before installing the new version as files may get removed/deleted throughout development. Do NOT just overwrite files when updating to future versions.
How it works:
System Overview
How the System Activates
The system runs through two main entry points:
-
Primary:
random_yearly_playable_pulse→adultery_affairs_quarterly_pulse(main controller) -
Fallback:
adultery_affairs_yearly_pulse(bootstrap for active affairs)
What the Pulse Does
- Re-creates story cycles for any active affairs
- Initiates new affair attempts for eligible female rulers
- Initiates new affair attempts for eligible male rulers and unlanded wives
Eligibility Requirements
Female Characters (is_eligible_for_affairs)
Must meet all of these:
- Adult, female, married, not imprisoned
- Mod not disabled
-
Has at least one of these traits:
- lustful, deceitful, sadistic, adulterer, fornicator, rakish, disloyal, degen_slut
Male Characters (is_eligible_for_affairs_male)
Must meet all of these:
- Adult, male, married, not imprisoned
- Mod not disabled
-
Has at least one of these traits:
- lustful, deceitful, sadistic, adulterer, fornicator, rakish, disloyal
Partner Selection
Valid Target Requirements
- Same top liege as initiator
- Not the initiator's current spouse
- Not imprisoned
- Adult
- Desirability score ≥ 0 (calculated from traits)
Positive Traits:
| Trait | Weight |
|---|---|
| degen_prized_stud | +4 |
| conqueror, athletic, strong | +3 each |
| lustful | +2 |
| brave, ambitious, profligate, gregarious | +1 each |
| beauty_good (1/2/3) | +1/+2/+3 |
| dick_big_good (1/2/3/4) | +1/+2/+3/+4 |
Negative Traits:
| Trait | Weight |
|---|---|
| scaly, dwarf, hunchbacked | -3 each |
| beauty_bad (3/2/1) | -3/-2/-1 |
| chaste | -2 |
| dick_small_bad (1/2/3) | -1/-2/-3 |
| craven, dull, impotent, disfigured | -1 each |
Affair Probability (Will They Try?)
Base Calculation (for both genders)
Starting Point: 0%
Trait Bonuses
| Trait | Bonus |
|---|---|
| degen_slut | +15% |
| lustful, deceitful, sadistic, adulterer, fornicator, rakish, disloyal | +5% each |
Spouse Quality Gap
- Compare spouse's desirable vs undesirable traits
- Gap × 5 added (if spouse is worse) or subtracted (if spouse is better)
- Minimum of 0% (can't go negative)
Situational Modifiers
| Condition | Modifier |
|---|---|
| Spouse at war | +10% |
| Spouse on pilgrimage | +10% |
| Stress level ≥ 2 | +5% |
| Opinion of spouse < 0 | +15% |
| Opinion of spouse < 20 | +5% |
| Opinion of spouse > 50 | -15% |
Game Rule Multipliers
| Setting | Multiplier |
|---|---|
| Reduced | ×0.5 |
| Rare | ×0.3 (+ extra 25% gate) |
| Normal | ×1.0 |
| Frequent | ×2.0 |
Seduction Attempt
Event Flow
-
Dispatcher fires
-
Women:
adultery_affairs.0001 -
Men:
adultery_affairs.0011
-
Women:
-
Player Choice Events (if initiator is player)
-
Women:
adultery_affairs.0002 -
Men:
adultery_affairs.0012 - Ignoring the urge = 365-day cooldown
-
Women:
-
AI Safety Checks
- Cooldown active? → Skip
- Already lovers? → Skip
-
Success Roll
Success Chance Calculation
Base: 20%
Initiator Bonuses
| Factor | Bonus |
|---|---|
| Seducer trait | +20% |
| Beauty_good (1/2/3) | +10%/+20%/+30% |
| Female: Big breasts/ass (tiers) | Variable |
| Male: Big dick (tiers), strong, athletic | Variable |
Initiator Penalties
- Bad beauty traits
- Small physical traits
- Genetic negatives (scaly, dwarf, giant, hunchbacked)
- Disfigured, impotent, shy
- Male: craven
Target Willingness
Increases chance:
- Lustful, rakish
- High opinion of initiator
Decreases chance:
- Chaste, content, honest, humble, trusting, compassionate, forgiving, just
- Low opinion, hostile faith, low cultural acceptance
Outcomes
| Result | Woman Event | Man Event |
|---|---|---|
| Success | 0003 | 0013 |
| Failure | 0005 | 0015 |
| Target Response (if player) | 0006 | 0016 |
Affair Establishment
When an affair begins, the system:
- Sets lover relation between both characters
- Marks both with active/partner flags
- Starts story cycle (ongoing tracking)
- Applies mutual opinion modifier (+30 for 30 months)
- Fires celebration event (0004 or 0014)
Active Affair Management
Once established, affairs are tracked by story_cycle_adultery_affairs:
Monthly Checks
- Partner dead? → End affair
- Lover relation broken? → End affair
- Flags missing? → End affair
Quarterly Events (Every 3 Months)
1. Secret Trysts (adultery_affairs.0300)
- Base chance: 25%
- Modified by: lustful/chaste traits, game rules
-
Effects:
- Increments suspicion counter
- Stress/opinion changes
- May branch to sub-events (guilt, emotional bonding, lover's perspective)
- Carnalitas integration (if active)
2. Suspicion Checks
Trigger Chance:
- Base: 10%
- +5% per affair event this year
- +10% if cheater's intrigue < 8
- -10% if cheater's intrigue > 15
- +15% if spouse's intrigue > 12
If triggered: Spouse gains suspicion → Investigation chain begins
3. Natural Ending Checks
Affair ends if any of these occur:
- Age gap ≥ 20 years
- Not in diplomatic range
- Partner opinion < 0
- Duration ≥ 5 years
Yearly Events
Discovery Roll
- Base chance: 20%
- Doubled if spouse has suspicion flag
Possible outcomes:
- Caught in the Act → 0201 → Spouse response
- Rumors Spread → 0202 → Public exposure, prestige/opinion penalties
- Bastard Child Revealed → 0203 → Spouse response
- Nothing Happens → Stress only
Investigation & Discovery Chains
Suspicion Investigation
-
Spouse becomes suspicious →
adultery_affairs.0100 -
Investigation begins →
adultery_affairs.0101 -
Outcomes:
-
Failed:
adultery_affairs.0102(false alarm) -
Success:
adultery_affairs.0103→ Selects discovery flavor (0105, 0106, 0107, or 0108)
-
Failed:
-
Confrontation →
adultery_affairs.0104- Spouse choice: Expose secret OR keep it for leverage
Spouse Response (Discovery Events)
After discovery, spouse chooses from events 0205-0208:
- Punish the cheater
- Divorce the cheater
- Forgive (grudgingly or fully)
Natural Affair Endings
When conditions trigger a natural end, end_affair_naturally():
- Removes lover relation
- Clears all affair flags
- Resets duration counter
- Fires one of these ending events:
| Event | Scenario |
|---|---|
| 0400 | Mutual breakup |
| 0401 | Drifted apart |
| 0402 | Too dangerous / feelings grew |
| 0403 | Partner moved on |
| 0404 | Distance ended it |
Note: While I have done personal mods for my game, this is the first mod I am ever publishing so please be patient with feature additions and bugfixes. I have played this mod for a few hours and have not had any issues with my particular modlist but this is subjective and you may have issues with your particular modlist.
Plans for the future:
- More events?
- More branching outcomes?
- Other stuff I come up with that are interesting
I've made this mod on a whim so there is no particular direction I am taking with it. I am open to any suggestions and ideas.
Credits:
Cheri Song for the amazing carnalitas framework.
Phaze Star for the multitude of mods that are now an integral part of my playlist.
What's New in Version 1.2.0
Released
Added
- Cuckolding progression system with new modifiers (adultery_affairs_cuckold_helpless, adultery_affairs_cuckold_servant, adultery_affairs_cuckoldress_dominant).
- New opinion modifiers for cuckolding outcomes (adultery_affairs_cuckolded, adultery_affairs_submissive, adultery_affairs_dominant_wife).
- Cuckolding state helpers (aa_start_cuckold_arc, aa_increment_cuckold_stage, aa_clear_cuckold_state).
- Cuckolding scripted triggers (aa_is_cuckold_active, aa_is_cuckold_ignore, aa_is_cuckold_accept, aa_is_cuckold_confront).
- Expanded husband response options (ignore/confront/accept) added to discovery events adultery_affairs.0205–adultery_affairs.0208, with AI weights and modifier/opinion effects.
- New confrontation and progression event chains: confrontation skill contest adultery_affairs.0210 plus cuckolding progression scenes adultery_affairs.0310–adultery_affairs.0313.
- Ambitious wife regency/usurpation arc events adultery_affairs.0330–adultery_affairs.0340, integrated into the quarterly story cycle pulse in story_cycle_adultery_affairs.
- Localization for new options, events, modifiers, and opinions.
Changed:
- Story cycle cleanup and partner scoping tightened to use scope:story.var:partner checks and to avoid invalid removal when the story owner is dead in story_cycle_adultery_affairs.
- Affair suspicion now adds husband intrigue bonus only when a spouse exists and has sufficient intrigue, simplifying the conditional in trigger_affair_suspicion.
Fixed:
- Affair endings now clear all cuckolding state flags/variables via aa_clear_cuckold_state inside end_affair_naturally, preventing state leakage after a relationship ends.
1.1.0:
- Added support for male characters to initiate affairs.
- Added is_eligible_for_affairs_male trigger to check male eligibility.
- Added is_preferred_affair_partner_female trigger for male initiators to find targets.
- Added can_attempt_seduction_male trigger for male-led seduction.
- Added calculate_affair_probability_male effect for male initiators.
- Added attempt_seduction_male effect for male-led seduction attempts.
- Added establish_affair_male effect for male-led affairs.
- Added new event chain for male initiators (Events adultery_affairs.0011 to adultery_affairs.0016).
- Updated adultery_affairs_on_action.txt to trigger male affair checks quarterly.
- Refactored is_preferred_affair_partner to use a weighted desirability score.
- Added negative weights for undesirable traits (Chaste, Craven, Scaly, Dwarf, etc.) in partner selection.
- Added positive weights for desirable traits (Lustful, Brave, Beauty, Strength, etc.) in partner selection.
- Refactored calculate_affair_probability to use a desirability gap between husband and initiator.
- Reduced base affair probability from 5 to 0.
- Reduced base seduction success chance from 30 to 20.
- Added physical trait bonuses/penalties (Tits, Ass, Beauty, Dick size) to seduction success chances.
- Added granular spouse opinion checks (Opinion > 50 reduces chance; Opinion < 20 increases chance).
- Added comprehensive English localization for all new male-initiator events and strings.
1.0.2:
- Replaced the invalid realm validation trigger with a top-liege equality check so same-realm matching is valid.
- Updated affair acceptance to apply significant rejection for hostile faiths and added cultural acceptance-based rejection when acceptance is low.
1.0.1:
- Expanded male rejection modifiers in the seduction success calculation using trait AI attributes as a guide. Added penalties for content (-15), honest (-20), humble (-15), trusting (-10), compassionate (-25), forgiving (-20), and strengthened just to -25.
- Updated the affair partner selection to apply a negative debuff when a male has small-dick traits by raising the desirability threshold for those characters.
- Updated the preferred affair partner trigger to require the target be in the same realm as the female character, narrowing selections accordingly.