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:
Leonid Pershin
2026-08-21 09:58:31 +03:00
23 changed files with 761 additions and 17 deletions
+15
View File
@@ -367,6 +367,12 @@ When a school was created with a pack that ships orientations, the card also car
pack those fields are null or empty — the client hides the sympathy column. The client does not
compute thresholds. There is no school-wide opinions endpoint.
`offenses` is the short recent-misconduct list on the person (quarrel / fight / reprimand). Same
order as in the world and in `people.json`. Each row has `kind`, `kindLabel` (mod locale),
`time` (UTC game clock), and optional `otherPersonId` / `otherFullName`. Empty is `[]`. Ceiling
and which kinds write live on `BehaviorDef` (`offenseMemoryMax`, `offenseMemoryKinds`), not in
the client. HTTP JSON is additive — no protocol version bump.
```json
{
"id": "f0.c0",
@@ -424,6 +430,15 @@ compute thresholds. There is no school-wide opinions endpoint.
"hasCustom": false,
"hasFullBody": false,
"customPortraitPrompt": null,
"offenses": [
{
"kind": "fight",
"kindLabel": "драка",
"time": "2012-04-03T11:20:00Z",
"otherPersonId": "f0.c1",
"otherFullName": "Иванов Кирилл Петрович"
}
],
"connections": {
"family": {
"parents": [