Merge branch 'phase/44-quarrel-fight'
Co-authored-by: Cursor <cursoragent@cursor.com> # Conflicts: # docs/phases/README.md # src/HSchool.Content/PeopleDefs.cs # src/HSchool.People/Roster.cs # src/HSchool.People/Seed.cs
This commit is contained in:
@@ -227,6 +227,20 @@ public sealed class TraitDef : Def
|
||||
/// higher (jealous). Ignored without affinity rules.
|
||||
/// </summary>
|
||||
public int AffinityBreakOffset { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// Multiplies quarrel and fight chance. Hot-tempered and bully above 1. Missing is 1.
|
||||
/// </summary>
|
||||
public float ConflictChance { get; init; } = 1f;
|
||||
|
||||
/// <summary>
|
||||
/// This person keeps one victim id until they leave or opinion hits the floor.
|
||||
/// A field, not a <c>defName == "Bully"</c> branch.
|
||||
/// </summary>
|
||||
public bool RemembersVictim { get; init; }
|
||||
|
||||
/// <summary>Multiplies the chance to start an apology. Bully below 1. Missing is 1.</summary>
|
||||
public float ApologyChance { get; init; } = 1f;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -528,6 +542,24 @@ public sealed class BehaviorDef : Def
|
||||
/// <summary>Per-decision chance a pupil in class tries to start a whisper, before initiative.</summary>
|
||||
public float WhisperStartChance { get; init; } = 0.12f;
|
||||
|
||||
/// <summary>Rivals always roll this before traits. 1 means every enemy pair can start a quarrel.</summary>
|
||||
public float QuarrelChance { get; init; } = 1f;
|
||||
|
||||
/// <summary>Base chance a yard or gym clash becomes a fight. Traits scale it; kept rare.</summary>
|
||||
public float FightChance { get; init; } = 0.1f;
|
||||
|
||||
/// <summary>Opinion shift per other participant when a quarrel ends. Stronger than rude talk (−3).</summary>
|
||||
public int QuarrelOpinionShift { get; init; } = -8;
|
||||
|
||||
/// <summary>Opinion shift when a fight ends. No health need is touched.</summary>
|
||||
public int FightOpinionShift { get; init; } = -16;
|
||||
|
||||
/// <summary>Fraction of lost opinion an apology returns. Never climbs past the pre-quarrel value.</summary>
|
||||
public float ApologyRestoreFraction { get; init; } = 0.5f;
|
||||
|
||||
/// <summary>Opinion of the victim at or above this — a third person may join the quarrel.</summary>
|
||||
public int DefendOpinionMin { get; init; } = 40;
|
||||
|
||||
public static IReadOnlyList<OpinionBand> DefaultOpinionBands { get; } =
|
||||
[
|
||||
new() { Min = 70, Id = "OpinionCloseFriend" },
|
||||
|
||||
Reference in New Issue
Block a user