Merge branch 'phase/69-offense-memory'
Co-authored-by: Cursor <cursoragent@cursor.com> # Conflicts: # src/HSchool.Server/Api/PeopleModels.cs # src/HSchool.Server/Game/PersonCardReader.cs
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user