Jump to content

1 Screenshot

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:
 

Spoiler

System Overview

How the System Activates

The system runs through two main entry points:

  • Primary: random_yearly_playable_pulseadultery_affairs_quarterly_pulse (main controller)
  • Fallback: adultery_affairs_yearly_pulse (bootstrap for active affairs)

What the Pulse Does

  1. Re-creates story cycles for any active affairs
  2. Initiates new affair attempts for eligible female rulers
  3. 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

  1. Dispatcher fires

    • Women: adultery_affairs.0001
    • Men: adultery_affairs.0011
  2. Player Choice Events (if initiator is player)

    • Women: adultery_affairs.0002
    • Men: adultery_affairs.0012
    • Ignoring the urge = 365-day cooldown
  3. AI Safety Checks

    • Cooldown active? → Skip
    • Already lovers? → Skip
  4. 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:

  1. Sets lover relation between both characters
  2. Marks both with active/partner flags
  3. Starts story cycle (ongoing tracking)
  4. Applies mutual opinion modifier (+30 for 30 months)
  5. 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:

  1. Caught in the Act → 0201 → Spouse response
  2. Rumors Spread → 0202 → Public exposure, prestige/opinion penalties
  3. Bastard Child Revealed → 0203 → Spouse response
  4. Nothing Happens → Stress only

Investigation & Discovery Chains

Suspicion Investigation

  1. Spouse becomes suspiciousadultery_affairs.0100
  2. Investigation beginsadultery_affairs.0101
  3. Outcomes:
    • Failed: adultery_affairs.0102 (false alarm)
    • Success: adultery_affairs.0103 → Selects discovery flavor (0105, 0106, 0107, or 0108)
  4. Confrontationadultery_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():

  1. Removes lover relation
  2. Clears all affair flags
  3. Resets duration counter
  4. 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.

 

Spoiler

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.

 


×
×
  • Create New...