Commit Graph
84 Commits
Author SHA1 Message Date
Leonid Pershin 3288287da9 Add AI parent meetings after a class last lesson.
Class teachers rarely keep the homeroom; invited parents walk onto the map, opinions nudge, then parents leave OffCampus. No player schedule API.
2026-08-21 13:33:40 +03:00
Leonid Pershin ccb185566e Merge branch 'phase/74-attendance' 2026-08-21 13:15:05 +03:00
Leonid Pershin 9e429d0cd7 Show director summons as info toasts and presence queue labels.
Corridor waiters need a summon-phase byte on presence (v11); EventDef DirectorSummoned is info-only so clocks keep running.
2026-08-21 13:07:47 +03:00
Leonid PershinandCursor a2b35da4dd Add lesson attendance from presence (present/late/absent).
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-21 12:37:01 +03:00
Leonid PershinandCursor d3c2327e23 Merge branch 'phase/77-health-conditions'
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-21 12:22:23 +03:00
Leonid PershinandCursor 1ac71aa80d Merge branch 'phase/73-lesson-marks'
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-21 12:00:53 +03:00
Leonid Pershin e40f130248 Auto-summon pupils to the principal after fight breaks, with a corridor FIFO queue. 2026-08-21 11:49:06 +03:00
Leonid PershinandCursor b359bebb41 Add lesson marks 2-5 from lesson quality once per slot.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-21 11:45:14 +03:00
Leonid PershinandCursor 2d31a59a81 Add health condition list, tick, and save for phase 77.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-21 11:41:25 +03:00
Leonid Pershin bb0b799d41 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
2026-08-21 09:58:31 +03:00
Leonid PershinandCursor 4096d5306e Add class-teacher slots on SchoolClass with owner-only assign/clear.
EOF

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-21 09:37:37 +03:00
Leonid Pershin fdcaed0f74 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.
2026-08-21 09:37:12 +03:00
Leonid Pershin 023dbc85c3 Merge branch 'phase/66-scene-prompt' 2026-08-20 23:43:13 +03:00
Leonid PershinandCursor 3c682a2b74 Add scene fragments to portrait prompts after clothing.
Thing, room, yard and climate precipitation can contribute a short prompt when they are in frame, with a budget so chairs stay silent.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 23:35:17 +03:00
Leonid PershinandCursor f36af269bb Pause the school on warning notices until the owner dismisses them.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 22:33:38 +03:00
Leonid PershinandCursor a554738084 Add EventDef notices, morning and lesson bells, and info toasts.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 20:46:33 +03:00
Leonid PershinandCursor 9972b30257 Keep defender-victim opinions as allies after a quarrel.
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>
2026-08-20 18:15:55 +03:00
Leonid PershinandCursor a80c6f097a Refuse enemies joining an open talk circle.
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>
2026-08-20 17:25:36 +03:00
Leonid PershinandCursor 118d1815d8 Record slice 7 B-C recheck after later slices drifted climate and dress paths.
Adds a weather-drop walk test so a jacket is not teleported onto the body; PE change regressions already red on main stay open.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 16:17:45 +03:00
Leonid PershinandCursor 19554d4362 Review slice 9 C-D: persist clash opinions and the bully's victim.
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>
2026-08-20 14:27:49 +03:00
Leonid Pershin 63cde56cc3 Merge branch 'phase/46-speech-home'
Co-authored-by: Cursor <cursoragent@cursor.com>

# Conflicts:
#	docs/phases/09-social/README.md
#	src/HSchool.Server/Game/SchoolWorker.cs
#	tests/HSchool.Ai.Tests/TalkCirclesTests.cs
#	tests/HSchool.Simulation.Tests/MorningOpinionsTests.cs
#	tests/HSchool.Simulation.Tests/TalkCircleTests.cs
2026-08-20 14:06:29 +03:00
Leonid PershinandCursor 92c2143329 Add speech-topic policy from tomorrow and a morning family talk.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 13:53:12 +03:00
Leonid PershinandCursor cc9ea18480 Merge branch 'review/slice-9-ab'
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 13:40:20 +03:00
Leonid PershinandCursor b38d0bb628 Persist talk opinions and pick topics by weight.
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>
2026-08-20 13:34:34 +03:00
Leonid Pershin c526921779 Merge branch 'phase/44-quarrel-fight'
Co-authored-by: Cursor <cursoragent@cursor.com>

# Conflicts:
#	docs/phases/README.md
#	src/HSchool.Content/PeopleDefs.cs
#	src/HSchool.People/Roster.cs
#	src/HSchool.People/Seed.cs
2026-08-20 13:24:12 +03:00
Leonid PershinandCursor 395107c959 Add recess quarrels, rare yard and gym fights, and apologies.
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>
2026-08-20 11:31:06 +03:00
Leonid Pershin ee6930a39d Merge branch 'phase/45-presence-talk'
# Conflicts:
#	docs/phases/README.md
#	src/HSchool.Server/Api/PeopleModels.cs
#	src/HSchool.Server/Game/PersonCardReader.cs
2026-08-20 11:27:58 +03:00
Leonid Pershin ae2e3ddc14 Merge branch 'phase/47-romance-pack'
ci / server (push) Failing after 3m39s
ci / client (push) Successful in 19s
# Conflicts:
#	docs/phases/README.md
#	src/HSchool.Content/PeopleDefs.cs
#	src/HSchool.People/Seed.cs
2026-08-20 11:00:12 +03:00
Leonid PershinandCursor 2034946378 Show talk-circle partners and topic on the location panel and Now tab.
The frame and card share member ids; the client builds the sentence from the directory and locale.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 10:43:16 +03:00
Leonid Pershin d2911c3daf 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.
2026-08-20 10:42:42 +03:00
Leonid PershinandCursor f7d5e0c042 Add lesson whispers, teacher catch chance, and after-bell teacher talk.
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>
2026-08-20 10:35:31 +03:00
Leonid Pershin 51b4c22b69 Merge branch 'phase/39-school-owners'
ci / client (push) Successful in 18s
ci / server (push) Failing after 3m51s
2026-08-20 09:56:13 +03:00
Leonid PershinandCursor ce71a91a67 Add rain and snow minutes to the morning commute.
Day plans take a precomputed extra; Ai does not know precipitation.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 09:40:24 +03:00
Leonid PershinandCursor 1b3479f984 Halve lesson gain when the bag has no textbook for the subject.
Locker and home do not count. A pack without the field keeps vanilla 0.5.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 09:27:46 +03:00
Leonid PershinandCursor 384f9d7273 Merge branch 'phase/51-warmth-lesson'
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 09:09:55 +03:00
Leonid PershinandCursor 274814aecd Scale lesson gain by warmth the same way hunger already did.
The bar was live and drove dressing; a frozen pupil in class still learned as if it were May.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 09:06:50 +03:00
Leonid Pershin ac17abfd90 Merge branch 'phase/42-talk-circles'
Co-authored-by: Cursor <cursoragent@cursor.com>

# Conflicts:
#	docs/phases/README.md
#	src/HSchool.Simulation/PersonLog.cs
2026-08-20 09:03:38 +03:00
Leonid Pershin 47fc10da02 Add talk circles with TopicDef, staff/phone chat, and opinion outcomes. 2026-08-20 08:55:55 +03:00
Leonid PershinandCursor c2579d6767 Scale lesson skill gain by the teacher's subject skill.
Hiring a 78-math applicant already cost more than a 41; the class now actually learns faster when that teacher is in the room.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 08:54:13 +03:00
Leonid Pershin 4b236a7916 Merge main into phase/39-school-owners.
Keep school owners and phase 41 opinions/portraits together; ResetAsync wipes all saves so shared AppHost tests stay isolated.
2026-08-20 08:36:13 +03:00
Leonid PershinandCursor fbc32f2bfc Grow lesson skills only when the assigned teacher is standing in the room.
The timetable already named a teacher; learning ignored whether they were in the toilet, still walking, or not a person at all.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 08:33:28 +03:00
Leonid Pershin 26be7c87f8 WIP phase 39: school owners, my/others menu, guest restrictions. 2026-08-20 07:58:12 +03:00
Leonid Pershin 6264034e4b Merge branch 'phase/41-opinions'
# Conflicts:
#	docs/phases/README.md
2026-08-20 07:58:05 +03:00
Leonid Pershin b1b4f18b40 Add opinions storage, morning drift, and Connections card tab. 2026-08-20 07:34:57 +03:00
Leonid Pershin 660340c216 Enhance apparel definitions: Introduce 'UpperUnderwear' layer and related items (Bra, SportsBra, SoftBra) to support gender-specific clothing. Update inventory and dress generation logic to accommodate new layers and ensure proper coverage. Adjust localization for new apparel terms and refine tests for underwear functionality. 2026-08-20 07:20:40 +03:00
Leonid Pershin b9d91d387e Merge phase/40-clock-tempo. 2026-08-20 07:07:00 +03:00
Leonid Pershin 9199ea36d2 Phase 40: clock tempo at 1 min/s, x5/x10 heavy stride. 2026-08-20 07:02:24 +03:00
Leonid Pershin e461a9f3e4 Fix PE change-clothes interruption and post-PE mode detection.
Add appropriateness tests for staging PE kit, wearing form before gym, and returning to everyday clothes after the lesson.
2026-08-20 06:31:41 +03:00
Leonid Pershin 6a0d5a9886 Implement phase 35 dress appropriateness and school rules.
Adds outfit evaluation, morning home dressing, locker-room ChangeClothes with day-log events, PE/weather AI goals, dress-rules API, and tests.
2026-08-20 05:16:52 +03:00
Leonid Pershin ce772cd3c3 Phase 33: technician climate control and locker assignment. 2026-08-20 04:44:41 +03:00