From b9c29b53d9d17c49cfd2559d2ce051619d191f53 Mon Sep 17 00:00:00 2001 From: gamer147 Date: Mon, 8 Jun 2026 21:34:49 -0400 Subject: [PATCH] feat(pack): add free-pack metadata fields to PackChildGachaDto --- .../Models/Dtos/PackChildGachaDto.cs | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/SVSim.EmulatedEntrypoint/Models/Dtos/PackChildGachaDto.cs b/SVSim.EmulatedEntrypoint/Models/Dtos/PackChildGachaDto.cs index 509e55a..4d2e446 100644 --- a/SVSim.EmulatedEntrypoint/Models/Dtos/PackChildGachaDto.cs +++ b/SVSim.EmulatedEntrypoint/Models/Dtos/PackChildGachaDto.cs @@ -40,4 +40,28 @@ public class PackChildGachaDto [JsonPropertyName("override_increase_gacha_point")] [Key("override_increase_gacha_point")] public string OverrideIncreaseGachaPoint { get; set; } = "0"; + + /// Set on type_detail=10 free children only. Emitted as string on the wire. + [JsonPropertyName("campaign_name")] + [Key("campaign_name")] + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public string? CampaignName { get; set; } + + /// Lifetime claim cap for this campaign. Stringified on the wire ("1") when present. + [JsonPropertyName("purchase_limit_count")] + [Key("purchase_limit_count")] + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public string? PurchaseLimitCount { get; set; } + + /// Per-UTC-day claim cap for this campaign. Stringified on the wire ("1") when present. + [JsonPropertyName("daily_free_gacha_count")] + [Key("daily_free_gacha_count")] + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public string? DailyFreeGachaCount { get; set; } + + /// Campaign id used to scope claim quotas server-side. + [JsonPropertyName("free_gacha_campaign_id")] + [Key("free_gacha_campaign_id")] + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public int? FreeGachaCampaignId { get; set; } }