User clarified: the 0..7 win reward tiers came from Shadowverse Worlds Beyond (sequel), not the original game we're emulating. Original SV's Take Two caps at 5 total battles played and has no loss limit (verified on prod: queueing continues with 2+ losses). - arena-two-pick-rewards.json: drop 6w + 7w tiers (12 rows remain). - ArenaTwoPickConfig: remove MaxLosses property. - ArenaTwoPickService: termination is now battlesPlayed >= maxBattles (5 from MAX(reward.WinCount)). RecordBattleResult no longer flips IsSelectCompleted on the 2nd loss. - ResolveMaxBattleCountAsync empty-catalog default 7 → 5. - Tests updated for the new counts (16 → 12 rows, max 7 → 5). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
38 lines
1.4 KiB
C#
38 lines
1.4 KiB
C#
namespace SVSim.Database.Models.Config;
|
|
|
|
/// <summary>
|
|
/// Take Two run mechanics: rarity weights, class/neutral mix, per-battle XP, season ids,
|
|
/// allowed-class allow-list. The pool's set scoping lives on <see cref="ChallengeConfig"/>;
|
|
/// this section is purely mechanics + the reward-schedule/challenge ids stamped on each run.
|
|
/// </summary>
|
|
[ConfigSection("ArenaTwoPick")]
|
|
public class ArenaTwoPickConfig
|
|
{
|
|
public int RewardScheduleId { get; set; } = 1;
|
|
public int ChallengeId { get; set; } = 1;
|
|
public int ClassXpPerBattle { get; set; } = 100;
|
|
public int SpotPointsPerBattle { get; set; } = 10;
|
|
|
|
public double LegendaryRate { get; set; } = 0.06;
|
|
public double GoldRate { get; set; } = 0.17;
|
|
public double SilverRate { get; set; } = 0.33;
|
|
public double BronzeRate { get; set; } = 0.44;
|
|
|
|
public double NeutralMixRate { get; set; } = 0.25;
|
|
|
|
/// <summary>TK2 entry ticket — item id 1 (challenge ticket). Distinct from the run-end
|
|
/// REWARD ticket id (80001, throwback pack ticket).</summary>
|
|
public int TicketItemId { get; set; } = 1;
|
|
|
|
public int TicketCost { get; set; } = 1;
|
|
public int CrystalCost { get; set; } = 150;
|
|
public int RupyCost { get; set; } = 150;
|
|
|
|
public List<int> AllowedClassIds { get; set; } = new();
|
|
|
|
public static ArenaTwoPickConfig ShippedDefaults() => new()
|
|
{
|
|
AllowedClassIds = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8 },
|
|
};
|
|
}
|