Files
h-school/src/HSchool.Content/TalkActions.cs
T
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

69 lines
2.8 KiB
C#

namespace HSchool.Content;
/// <summary>Leisure actions that form talk circles. Names match ActionDef ids in core.</summary>
public static class TalkActions
{
public const string Chat = "Chat";
public const string StaffChat = "StaffChat";
public const string PhoneChat = "PhoneChat";
public const string Whisper = "Whisper";
public const string TeacherTalk = "TeacherTalk";
public const string Quarrel = "Quarrel";
public const string QuarrelYard = "QuarrelYard";
public const string Fight = "Fight";
public const string FightGym = "FightGym";
public const string Apologize = "Apologize";
public static bool IsTalk(string? actionId) =>
actionId is not null
&& (actionId.Equals(Chat, StringComparison.Ordinal)
|| actionId.Equals(StaffChat, StringComparison.Ordinal)
|| actionId.Equals(PhoneChat, StringComparison.Ordinal)
|| actionId.Equals(Whisper, StringComparison.Ordinal)
|| actionId.Equals(TeacherTalk, StringComparison.Ordinal)
|| IsConflict(actionId));
public static bool IsQuarrel(string? actionId) =>
actionId is not null
&& (actionId.Equals(Quarrel, StringComparison.Ordinal)
|| actionId.Equals(QuarrelYard, StringComparison.Ordinal));
public static bool IsFight(string? actionId) =>
actionId is not null
&& (actionId.Equals(Fight, StringComparison.Ordinal)
|| actionId.Equals(FightGym, StringComparison.Ordinal));
public static bool IsApologize(string? actionId) =>
actionId is not null && actionId.Equals(Apologize, StringComparison.Ordinal);
public static bool IsConflict(string? actionId) =>
IsQuarrel(actionId) || IsFight(actionId) || IsApologize(actionId);
public static bool IsWhisper(string? actionId) =>
actionId is not null && actionId.Equals(Whisper, StringComparison.Ordinal);
public static bool IsTeacherTalk(string? actionId) =>
actionId is not null && actionId.Equals(TeacherTalk, StringComparison.Ordinal);
}
/// <summary>Vanilla topic tags from the social slice design doc.</summary>
public static class TopicTags
{
public const string Study = "study";
public const string Games = "games";
public const string Food = "food";
public const string Family = "family";
public const string Sport = "sport";
public const string Gossip = "gossip";
public const string Rude = "rude";
public const string Appearance = "appearance";
}
/// <summary>Teacher-after-lesson and reprimand topics in core. Names match TopicDef ids.</summary>
public static class TeacherTopics
{
public const string Question = "TopicQuestion";
public const string Praise = "TopicPraise";
public const string Discipline = "TopicDiscipline";
}