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:
Leonid Pershin
2026-08-20 10:35:31 +03:00
co-authored by Cursor
parent cb869e4977
commit f7d5e0c042
22 changed files with 1061 additions and 36 deletions
@@ -54,6 +54,24 @@
"roles": ["student"],
"weight": 2,
},
{
"defName": "Whisper",
"room": "Classroom",
"minutes": 6,
"need": "Social",
"needGain": 0.15,
"roles": ["student"],
"weight": 2,
},
{
"defName": "TeacherTalk",
"room": "Classroom",
"minutes": 8,
"need": "Social",
"needGain": 0.3,
"roles": ["staff"],
"weight": 0,
},
{
"defName": "WalkCorridor",
"room": "Corridor",
@@ -74,8 +74,18 @@
"talkNoLanguageOpinionMultiplier": 0.15,
"talkPhoneOpinionMultiplier": 0.5,
"talkCommunicationOpinionScale": 0.5,
"talkCircleMin": 2,
"talkCircleMax": 4,
"talkFriendThreshold": 40,
"talkEnemyThreshold": -40,
"talkCircleMin": 2,
"talkCircleMax": 4,
"talkFriendThreshold": 40,
"talkEnemyThreshold": -40,
// Whisper on lesson (slice 9 phase 43). Catch chance is not 1 even with loud traits.
"lessonWhisperSkillFactor": 0.4,
"whisperCatchChance": 0.4,
"whisperCatchMax": 0.85,
"whisperStartChance": 0.12,
"talkPedagogyOpinionScale": 0.4,
"teacherAfterLessonWeight": 4,
"teacherQuestionWeight": 2,
"teacherPraiseWeight": 2,
"teacherReprimandWeight": 1,
}
@@ -3,6 +3,7 @@
"defName": "TopicStudy",
"tags": ["study"],
"roles": ["student", "staff"],
"whisperOnLesson": true,
"opinionShift": 2,
},
{
@@ -10,12 +11,14 @@
"tags": ["games"],
"roles": ["student"],
"age": { "min": 7, "max": 18 },
"whisperOnLesson": true,
"opinionShift": 3,
},
{
"defName": "TopicFood",
"tags": ["food"],
"roles": ["student", "staff"],
"whisperOnLesson": true,
"opinionShift": 2,
},
{
@@ -28,12 +31,14 @@
"defName": "TopicSport",
"tags": ["sport"],
"roles": ["student", "staff"],
"whisperOnLesson": true,
"opinionShift": 3,
},
{
"defName": "TopicGossip",
"tags": ["gossip"],
"roles": ["student", "staff"],
"whisperOnLesson": true,
"opinionShift": 1,
},
{
@@ -47,6 +52,25 @@
"tags": ["appearance"],
"roles": ["student"],
"age": { "min": 11, "max": 18 },
"whisperOnLesson": true,
"opinionShift": 1,
},
{
"defName": "TopicQuestion",
"tags": ["study"],
"roles": ["student", "staff"],
"opinionShift": 2,
},
{
"defName": "TopicPraise",
"tags": ["study"],
"roles": ["student", "staff"],
"opinionShift": 4,
},
{
"defName": "TopicDiscipline",
"tags": ["study"],
"roles": ["student", "staff"],
"opinionShift": -6,
},
]
@@ -35,6 +35,7 @@
"incompatible": ["Leader", "Bully"],
"wageAsk": -8,
"talkInitiative": 0.45,
"whisperCatchMultiplier": 0.55,
},
{
"defName": "Leader",
@@ -42,6 +43,7 @@
"incompatible": ["Quiet"],
"wageAsk": 10,
"talkInitiative": 1.6,
"whisperCatchMultiplier": 1.25,
"skillModifiers": [
{ "skill": "History", "offset": 4 },
],
@@ -107,5 +109,6 @@
"incompatible": ["Quiet"],
"talkInitiative": 1.4,
"talkCircleBonus": 1,
"whisperCatchMultiplier": 1.4,
},
]