Add lesson whispers, teacher catch chance, and after-bell teacher talk.
Whispering cuts lesson skill gain from BehaviorDef; a teacher in the room may interrupt into a discipline circle, and pedagogy scales the pupil's opinion of the teacher. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -210,6 +210,11 @@ public sealed class TraitDef : Def
|
||||
|
||||
/// <summary>Pull toward topics carrying these tags when this person picks the subject.</summary>
|
||||
public IReadOnlyList<TopicTagWeight> TalkTagWeights { get; init; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Multiplies the chance a whisper is caught. Quiet below 1, outgoing above. Missing is 1.
|
||||
/// </summary>
|
||||
public float WhisperCatchMultiplier { get; init; } = 1f;
|
||||
}
|
||||
|
||||
/// <summary>Conversation subject. Tags gate appropriateness; language is optional skill help.</summary>
|
||||
@@ -415,6 +420,37 @@ public sealed class BehaviorDef : Def
|
||||
/// <summary>Opinion at or below — enemy; never invited, lunch nodes avoided.</summary>
|
||||
public int TalkEnemyThreshold { get; init; } = -40;
|
||||
|
||||
/// <summary>
|
||||
/// Lesson skill multiplier while the pupil is in a whisper circle. Missing keeps a cut, not
|
||||
/// a skipped lesson — whispering is costly, not a free skip.
|
||||
/// </summary>
|
||||
public float LessonWhisperSkillFactor { get; init; } = 0.4f;
|
||||
|
||||
/// <summary>Base chance the teacher notices one whisper circle. Traits scale it; never 1.</summary>
|
||||
public float WhisperCatchChance { get; init; } = 0.4f;
|
||||
|
||||
/// <summary>Ceiling after traits. A pack cannot make every whisper a sure catch.</summary>
|
||||
public float WhisperCatchMax { get; init; } = 0.85f;
|
||||
|
||||
/// <summary>
|
||||
/// How far pedagogy 0…100 bends a pupil's opinion of the teacher. 50 is identity; above it
|
||||
/// praise grows and reprimand softens, below it the reverse.
|
||||
/// </summary>
|
||||
public float TalkPedagogyOpinionScale { get; init; } = 0.4f;
|
||||
|
||||
/// <summary>Leisure weight for a teacher taking pupils after the bell. Below lesson, above chat.</summary>
|
||||
public float TeacherAfterLessonWeight { get; init; } = 4f;
|
||||
|
||||
/// <summary>Relative weights when the teacher picks question / praise / reprimand.</summary>
|
||||
public float TeacherQuestionWeight { get; init; } = 2f;
|
||||
|
||||
public float TeacherPraiseWeight { get; init; } = 2f;
|
||||
|
||||
public float TeacherReprimandWeight { get; init; } = 1f;
|
||||
|
||||
/// <summary>Per-decision chance a pupil in class tries to start a whisper, before initiative.</summary>
|
||||
public float WhisperStartChance { get; init; } = 0.12f;
|
||||
|
||||
public static IReadOnlyList<OpinionBand> DefaultOpinionBands { get; } =
|
||||
[
|
||||
new() { Min = 70, Id = "OpinionCloseFriend" },
|
||||
|
||||
Reference in New Issue
Block a user