Skip to main content

FB1SchoolEvaluationData

Overview

  • The full evaluation state of a single student. Kept as the value of FB2School::StudentEvaluationMap. Sections: 1) weekly accumulation - DailyRecords[5], reset Monday in OnWeekReset (exam prep accumulation moved to FB2CareerComponent as personal capability data, 2026-05); 2) weekly result history - WeeklyHistory[], kept up to DA->MaxWeeklyHistoryCount weeks, oldest removed first; 3) cumulative state - bHadCounseling, bHadExamThisCareer (never reset).

Metadata

FieldValue
Kindstruct
EnvironmentB1 - Presentation
Categorystructs

Properties (13)

NameTypeDescription
CurrentGradeEB1SchoolGradeCache updated in sync when WeeklyHistory updates. For frequent queries (UI/Script).
DailyRecordsFB1SchoolDailyRecord[]Index = (EB1DayOfWeek - Monday). Fixed at 5 cells (Mon-Fri). Guaranteed via SetNum(5) in OnPostInit/OnWeekReset.
LastExamScoreAfternoonintegerThis week's afternoon exam slot score (0~20); 0 if the slot was not taken.
LastExamScoreMorningintegerThis week's per-slot exam scores (each 0-20, full = ExamMaxScore/2). Computed per slot; ExamScore = Morning + Afternoon (0-40). RunExamSlot computes it at attendance time; unattended slots stay 0. Reset to 0 on week change (OnWeekReset). Note: exam prep accumulation (ExamPreparation) was moved to FB2CareerComponent as personal capability data (2026-05); RunExamSlot reads prep from the student's CareerComponent.
PreviousGradeEB1SchoolGradeThe grade from the prior week, cached for comparison/trend display.
PromPartnerVisitIdsFB1EntityId[]Unique PromPartner EntityIds that successfully attended prom with this student. Used by the VisitPromWithPartner script condition.
WeeklyHistoryFB1SchoolWeeklyResult[]Last N weeks' results (per-item scores + total + grade). For UI graphs/trends and debug. Limit is DA->MaxWeeklyHistoryCount (recommended 4); RemoveAt(0) of the oldest when exceeded. The first element is the oldest week, the last is the most recent. Each entry's WeekIndex is a continuous number since enrollment (1, 2, 3, ...) and is kept even when trimmed.
bAttendedAfternoonExambooleanWhether the afternoon exam slot was taken this week; reset to false on week reset.
bAttendedMorningExambooleanThis week's per-slot exam attendance. The slot is marked true when RunExamSlot runs. Unattended slots (false) keep LastExamScore*=0 (0 points when summed; no ExamFloorScore guarantee). Also used for idempotency - RunExamSlot is skipped if re-called on an already-attended slot. Reset to false in OnWeekReset.
bHadCounselingbooleanWhether counseling was ever received. Used as an early-graduation condition (false).
bHadExamThisCareerbooleanTrue after the first weekly evaluation is set (exam taken or a no-exam week closes) or after a transfer grade is applied. The flag for leaving the 'before evaluation' state. Set in RunExamSlot / FinalizeWeeklyEvaluation / ApplyTransferredGrade.
bHasEverAttendedbooleanWhether the student has any actual attendance history. Marked true in CollectHomework on the first attendance day. Used as a one-shot trigger for the 'treat as submitted' correction, since the first day has no prior-issued homework so the evaluation slot is empty.
bWeeklyFinalizedbooleanWhether this week's close completed. Ensures FinalizeWeeklyEvaluation idempotency. Reset to false in OnWeekReset, set true at the end of FinalizeWeeklyEvaluation. Also prevents duplicate closing during exam-day-holiday batch closing.