diff --git a/src/Impostor.Api.Innersloth.Generator/SourceGenerator.cs b/src/Impostor.Api.Innersloth.Generator/SourceGenerator.cs index bf7f0052c..945aea2f5 100644 --- a/src/Impostor.Api.Innersloth.Generator/SourceGenerator.cs +++ b/src/Impostor.Api.Innersloth.Generator/SourceGenerator.cs @@ -75,6 +75,7 @@ public void Initialize(IncrementalGeneratorInitializationContext context) enumGenerator.Generate("ColorType", "Impostor.Api.Innersloth.Customization"); enumGenerator.Generate("DisconnectReason", sourceName: "DisconnectReasons"); + enumGenerator.Generate("SanctionReasons"); enumGenerator.Generate("GameKeywords", flags: true, underlyingType: CSharpEnumUnderlyingType.UnsignedInt); enumGenerator.Generate("GameOverReason", underlyingType: CSharpEnumUnderlyingType.Byte); enumGenerator.Generate("Platforms"); diff --git a/src/Impostor.Api/Innersloth/Data/enums/SanctionReasons.json b/src/Impostor.Api/Innersloth/Data/enums/SanctionReasons.json new file mode 100644 index 000000000..6dcd0586a --- /dev/null +++ b/src/Impostor.Api/Innersloth/Data/enums/SanctionReasons.json @@ -0,0 +1,23 @@ +{ + "None": 0, + "ImpersonationCeleb": 1, + "Spamming": 2, + "InappropriateNameUnsportsmanlike": 3, + "UnsportsmanlikeConduct": 4, + "ImpersonationDevelopers": 5, + "InappropriateChatPersonalInfo": 6, + "InappropriateNameDerogatory": 7, + "InappropriateNameNsfw": 8, + "Bullying": 9, + "CheatingHacking": 10, + "InappropriateChatDating": 11, + "WeaponizingRules": 12, + "RepeatOffender3": 13, + "SexualMisconduct": 14, + "Doxing": 15, + "IllegalActivity": 16, + "Harassment": 17, + "SelfHarmPromotion": 18, + "RepeatOffender10": 19, + "InvalidUser": 20 +} \ No newline at end of file diff --git a/src/Impostor.Api/Innersloth/Data/info.json b/src/Impostor.Api/Innersloth/Data/info.json index f6f520b40..a49bb82f7 100644 --- a/src/Impostor.Api/Innersloth/Data/info.json +++ b/src/Impostor.Api/Innersloth/Data/info.json @@ -1,5 +1,5 @@ { - "dumpostorVersion": "1.0.0", + "dumpostorVersion": "1.0.0-dev", "gameVersion": "2024.3.5", - "platformType": "StandaloneItch" -} + "platformType": "StandaloneSteamPC" +} \ No newline at end of file diff --git a/src/Impostor.Server/Http/GamesController.cs b/src/Impostor.Server/Http/GamesController.cs index e64a498ae..aafbd1b4d 100644 --- a/src/Impostor.Server/Http/GamesController.cs +++ b/src/Impostor.Server/Http/GamesController.cs @@ -147,8 +147,25 @@ public MatchmakerError(DisconnectReason reason) Reason = reason; } + [SetsRequiredMembers] + public MatchmakerError(SanctionReasons sanctionReason, DateTimeOffset endsAt) + { + Reason = DisconnectReason.Sanctions; + SanctionReason = sanctionReason; + EndsAt = endsAt; + } + [JsonPropertyName("Reason")] public required DisconnectReason Reason { get; init; } + + [JsonPropertyName("SanctionReason")] + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)] + public SanctionReasons SanctionReason { get; init; } + + /// A value equal to means the sanction is permanent. + [JsonPropertyName("EndsAt")] + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)] + public DateTimeOffset EndsAt { get; init; } } private class GameListing