Commit Graph
48 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 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 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 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 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 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 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 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 9199ea36d2 Phase 40: clock tempo at 1 min/s, x5/x10 heavy stride. 2026-08-20 07:02:24 +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
Leonid Pershin ee23fb4994 Merge branch 'phase/36-person-card-tabs'
ci / server (push) Failing after 4m1s
ci / client (push) Failing after 17s
2026-08-20 04:35:35 +03:00
Leonid Pershin 5a431bba99 Merge branch 'main' into phase/32-weather-warmth
Co-authored-by: Cursor <cursoragent@cursor.com>

# Conflicts:
#	src/HSchool.Simulation/School.cs
2026-08-20 04:03:42 +03:00
Leonid PershinandCursor 6be4fa75ab Split the person card into overview, clothes, carry and now tabs.
Today's history is a paged HTTP log on the worker, not on the card or in people.json.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 04:00:38 +03:00
Leonid PershinandCursor 8e7ab46e79 Sample outdoor weather from the climate preset so people can freeze and the clock can show it.
Protocol v8 adds tenths of a °C and precipitation to the clock frame; warmth drains from insulation versus place temperature.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 03:49:40 +03:00
Leonid PershinandCursor 1ba739dd9b Wear worn clothes on campus and replace rags at the work morning.
Condition drops from catalog hours only while the person is at school; skip through the night issues the same fresh set as a lived night so the school does not walk in in rags.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 03:49:11 +03:00
Leonid PershinandCursor d8f4958167 Merge phase 29 country.
ci / server (push) Failing after 3m53s
ci / client (push) Successful in 19s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 02:59:46 +03:00
Leonid PershinandCursor 1b66c89cd7 Replace selectable name sets with a country that owns names and climate presets.
Create picks a country; climate is rolled from the school seed and stored. Old Slavic saves lift as Russia.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 02:55:13 +03:00
Leonid Pershin cbe739a4e6 Update reviewed phase details, enhance presence tests for hiring and assigning teachers during lessons, and fix timetable handling in the School class. Added new tests for presence management and ensured proper campus staffing behavior during lesson transitions.
ci / server (push) Failing after 4m0s
ci / client (push) Successful in 17s
2026-08-20 02:47:24 +03:00
Leonid Pershin 5a00ad7746 Enhance school creation and staffing management with native language support
ci / server (push) Failing after 3m44s
ci / client (push) Successful in 14s
- Updated protocol documentation to include `nativeLanguages` in `nameSets` and added `nativeLanguage` to school creation options.
- Enhanced the UI for school creation to allow selection of native languages, improving user experience.
- Revised API interfaces to accommodate new native language features, ensuring proper data handling.
- Improved localization strings to support new native language functionalities in both English and Russian.
- Updated tests to validate the new native language features and ensure robust functionality in staffing scenarios.
2026-08-19 22:22:31 +03:00
Leonid Pershin 5cd5a6d258 Update decision-making phase and enhance localization for presence tracking
ci / server (push) Failing after 3m40s
ci / client (push) Successful in 14s
- Marked tasks as complete in the decision-making phase documentation, indicating readiness for implementation.
- Updated the README to reflect the completion status of the decision-making phase.
- Enhanced localization strings to include new presence tracking features, improving user experience.
- Revised the game screen logic to display real-time presence status, including walking states for individuals.
- Added tests to validate the new localization strings and presence functionalities, ensuring robust performance.
2026-08-19 21:00:12 +03:00
Leonid Pershin b135a9caad Enhance protocol and simulation features with activity tracking and behavior definitions
- Updated protocol documentation to include new `activity` and `activityLabel` fields in the person card response, reflecting real-time activity status.
- Introduced `BehaviorDef` to define behavior rules, including need thresholds and lesson skill gains, enhancing AI decision-making.
- Revised the `DefCatalog` to incorporate behavior definitions and updated validation logic to ensure proper behavior handling.
- Enhanced the simulation to manage presence and activity states, allowing for more dynamic interactions within the school environment.
- Updated tests to validate the new activity tracking and behavior functionalities, ensuring robust performance and reliability.
- Improved localization strings to support new activity and behavior features, enhancing user experience.
2026-08-19 19:49:44 +03:00
Leonid Pershin 3c54f981b7 Update wire protocol to version 7 and enhance presence management features
ci / server (push) Failing after 3m44s
ci / client (push) Successful in 15s
- Bumped the wire protocol version to 7, reflecting significant changes in the communication structure.
- Introduced a new presence message type for real-time occupancy updates, including node activity and individual presence states.
- Updated the API to include a directory endpoint for fetching short id→name mappings, improving client-side name resolution.
- Revised the map snapshot structure to be static, with people and current lessons now handled through the presence stream.
- Enhanced client-side handling of presence updates, including UI adjustments to display live occupancy and activity.
- Updated documentation to reflect the new protocol features and changes in presence management.
- Added tests to validate the new presence functionalities and ensure robust handling of real-time data.
2026-08-19 17:00:53 +03:00
Leonid Pershin 4137400621 Enhance AI and simulation components with presence management and routing capabilities
ci / server (push) Failing after 3m39s
ci / client (push) Successful in 14s
- Introduced the `HSchool.Ai` project, responsible for routing, day plans, and presence management.
- Updated the `HSchool.Simulation` project to integrate with the new AI functionalities, improving decision-making and presence tracking.
- Added `travelMinutes` to room and territory definitions, ensuring accurate movement calculations within the simulation.
- Enhanced the `School` class to manage presence and implement empty-time skipping functionality.
- Updated documentation to reflect the new AI features and their impact on school simulation.
- Added tests for presence management and routing to ensure robust functionality and reliability.
2026-08-19 16:33:52 +03:00
Leonid Pershin cad3068bac Update wire protocol to version 6 and enhance timetable functionality
ci / client (push) Successful in 15s
ci / server (push) Failing after 3m53s
- Bumped the wire protocol version to 6, reflecting changes in the communication structure.
- Expanded the timetable API with new endpoints for fetching and managing lesson schedules, including `GET /api/schools/{id}/timetable` and `POST /api/schools/{id}/timetable/pin`.
- Updated the protocol documentation to include detailed descriptions of the new timetable features and message structures.
- Enhanced the client-side implementation to support the new timetable functionalities, including lesson pinning and unpinning.
- Revised server-side logic to handle timetable operations and ensure proper integration with existing school management features.
- Added tests to validate the new timetable functionalities and ensure robustness in handling lesson data.
2026-08-19 10:05:05 +03:00
Leonid Pershin 94842ab192 Enhance staffing management in school simulation by introducing API endpoints for hiring staff and assigning subjects. Implement payroll cap validation to ensure hiring and subject assignments do not exceed the allocated budget. Update the simulation options to include a monthly payroll cap and revise related classes to support new staffing functionalities. Enhance documentation to reflect these changes and update tests to validate the new features. 2026-08-19 00:19:09 +03:00
Leonid Pershin c189578680 Implement applicant pool functionality in school simulation, allowing for the management of job seekers who are not yet part of the school roster. Update the catalog to include staffing definitions and enhance the API to support applicant data retrieval. Revise the school architecture to handle applicant refresh logic and ensure proper integration with existing roster management. Update tests to validate the new applicant functionalities and ensure robustness in handling staffing scenarios. 2026-08-19 00:01:56 +03:00
Leonid Pershin 7f6852548d Implement yearly intake functionality in school simulation, allowing for the graduation of students and the addition of new first-year pupils. Update the roster management to reflect these changes, ensuring proper entity handling in the simulation. Enhance the API to support name sets during roster installation and revise related tests to validate the new intake process and roster updates.
ci / server (push) Failing after 3m40s
ci / client (push) Failing after 20s
2026-08-18 19:57:59 +03:00
Leonid Pershin 52c5082418 Enhance school simulation and management by integrating roster functionality, allowing for the installation and persistence of student and staff data. Update the school architecture to include a roster alongside existing components, ensuring proper validation against map layouts. Revise room definitions to support homeroom designations and update related tests to validate new functionalities and ensure robustness in roster handling.
ci / server (push) Failing after 3m43s
ci / client (push) Failing after 10s
2026-08-18 19:21:40 +03:00
Leonid Pershin 1bc75244e8 Add HSchool.Content project for JSONC definitions, catalog, and map validation. Update solution structure to include new content and tests projects. Enhance school management to support mod packs and map instances, ensuring proper loading and validation. Revise documentation to reflect these changes and update tests for new functionality.
ci / server (push) Failing after 3m36s
ci / client (push) Successful in 13s
2026-08-18 14:35:09 +03:00
Leonid Pershin 37c39a3beb Implement per-school save functionality by introducing a dedicated save directory and updating the school management system to support loading and saving school states. Revise documentation to reflect these changes, including updates to the architecture and design documents, and enhance the API for reloading schools from disk. Update tests to ensure proper functionality of the new save and reload features.
ci / server (push) Failing after 3m40s
ci / client (push) Successful in 18s
2026-08-18 14:07:23 +03:00
Leonid Pershin b9ddc018d3 Refactor project structure and update documentation. Replace PixiJS with plain DOM for UI rendering, enhance README with game features, and revise protocol documentation for HTTP API. Remove unused files and streamline client code for better maintainability.
ci / server (push) Failing after 3m31s
ci / client (push) Successful in 17s
2026-08-18 12:27:30 +03:00