The clash penalty applied to every pair except defender looking at the victim, so the person being helped disliked the defender like a second enemy.
Co-authored-by: Cursor <cursoragent@cursor.com>
RankInvitees already skipped enemies when a circle formed; a later Chat in the same node still joined without checking opinions.
Co-authored-by: Cursor <cursoragent@cursor.com>
FinishConflict never set RosterTalkDirty, so people.json skipped quarrel shifts until some other save — the same seam as the A-B talk-circle fix. First BullyVictimId write stayed in RAM only.
Co-authored-by: Cursor <cursoragent@cursor.com>
A finished circle never set Tick's peopleChanged bit, so people.json kept pre-talk numbers until morning drift. PickTopic compared a 0..total roll to a 0..1 cursor, so gossip almost never changed the subject.
Co-authored-by: Cursor <cursoragent@cursor.com>
Bullies remember a victim by a trait field, a defender can join, staff break up a fight with a reprimand, and skip empty time clears leftover clashes so they cannot last forever.
Co-authored-by: Cursor <cursoragent@cursor.com>
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>