Complete phase 47 romance pack on generic orientation and affinity hooks.

Vanilla catalogs stay without crushes; a content pack ships the overlay so later mods can reuse it.
This commit is contained in:
Leonid Pershin
2026-08-20 10:42:42 +03:00
parent cb869e4977
commit d2911c3daf
43 changed files with 1840 additions and 29 deletions
+12 -2
View File
@@ -119,7 +119,9 @@ still a pack: the id stands in for the name, `version` is empty, `requires` is e
```
The repo also ships `example` next to `core` — a sample pack, not required. It appears in this
list with `required: false` and `requires: ["core"]`. Vanilla create omits it.
list with `required: false` and `requires: ["core"]`. Vanilla create omits it. `romance` is a
content pack on the same list; a school created without it has no orientations and no romantic
topics.
### `GET /api/catalog?lang=ru|en&mods=addon1,addon2`
@@ -159,6 +161,11 @@ academic year; a range whose start is after its end wraps across 1 January.
The assignment form in a later phase reads subjects; the timetable grid reads the day frame.
The create editor does not.
`topics` is the list of placeable conversation subjects (`defName`, label, `tags`). Vanilla
ships study/games/food/family/sport/gossip/rude/appearance. A content pack may add more — the
`romance` pack adds crush/couple/tease topics and a `romance` tag; they are absent from a
catalog requested without that pack. HTTP JSON is additive — no protocol version bump.
`lang` is the same value Hello carries — not `Accept-Language`. Anything other than `en` is
Russian.
@@ -328,7 +335,10 @@ not happen on this request.
`connections` is the **Связи** tab: family links with `opinion` / `opinionLabel` from catalog bands,
plus `friends`, `enemies` and `others` (every non-family non-zero pair for this person only).
The client does not compute thresholds. There is no school-wide opinions endpoint.
When a school was created with a pack that ships orientations, the card also carries
`orientation` (`defName` + label) and `connections.crushes` / `admirers` / `pair`. Without that
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.
```json
{