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>
69 lines
2.8 KiB
C#
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";
|
|
}
|