Remember recent quarrels, fights and reprimands on the person.

Short offense list for the pupil card and save, capped by BehaviorDef — not a discipline score.
This commit is contained in:
Leonid Pershin
2026-08-21 09:37:12 +03:00
parent 910ba4da2d
commit fdcaed0f74
22 changed files with 760 additions and 16 deletions
@@ -997,6 +997,7 @@ internal static class TalkCircleSystem
? Conflict.FightOpinionDelta(rules)
: Conflict.QuarrelOpinionDelta(rules);
ApplyClash(school, circle, people, action, delta);
RecordConflictOffenses(school, circle, people, rules, reprimanded);
if (reprimanded)
{
foreach (var person in people)
@@ -1020,6 +1021,31 @@ internal static class TalkCircleSystem
school.RosterTalkDirty = true;
}
private static void RecordConflictOffenses(
School school,
ActiveTalkCircle circle,
IReadOnlyList<Person> people,
BehaviorDef? rules,
bool reprimanded)
{
if (rules is null)
{
return;
}
var kind = TalkActions.IsFight(circle.ActionId) ? OffenseKinds.Fight : OffenseKinds.Quarrel;
var time = school.Clock.Time;
foreach (var person in people)
{
var other = OffenseMemory.OtherParticipant(person.Id, circle.VictimId, circle.Members);
OffenseMemory.Record(person, kind, time, other, rules);
if (reprimanded)
{
OffenseMemory.Record(person, OffenseKinds.Reprimand, time, other, rules);
}
}
}
private static void ApplyClash(
School school,
ActiveTalkCircle circle,