Remove redundant Rolemaster parser states
This commit is contained in:
@@ -43,11 +43,11 @@ public sealed class DiceRulesTests
|
||||
Assert.False(unknownRulesetExpression.Succeeded);
|
||||
|
||||
Assert.Equal("d10", rolemasterImplicitSingle.Value!.Canonical);
|
||||
Assert.Equal(DiceExpressionKind.RolemasterStandard, rolemasterImplicitSingle.Value.Kind);
|
||||
Assert.Equal(DiceExpressionKind.Standard, rolemasterImplicitSingle.Value.Kind);
|
||||
Assert.Equal("15d10-15", rolemasterManyDice.Value!.Canonical);
|
||||
Assert.Equal(DiceExpressionKind.RolemasterStandard, rolemasterManyDice.Value.Kind);
|
||||
Assert.Equal(DiceExpressionKind.Standard, rolemasterManyDice.Value.Kind);
|
||||
Assert.Equal("d100+4", rolemasterPercentile.Value!.Canonical);
|
||||
Assert.Equal(DiceExpressionKind.RolemasterStandard, rolemasterPercentile.Value.Kind);
|
||||
Assert.Equal(DiceExpressionKind.Standard, rolemasterPercentile.Value.Kind);
|
||||
Assert.Equal("d100!+85", rolemasterOpenEnded.Value!.Canonical);
|
||||
Assert.Equal(DiceExpressionKind.RolemasterOpenEndedPercentile, rolemasterOpenEnded.Value.Kind);
|
||||
|
||||
|
||||
@@ -57,12 +57,6 @@ public partial class RollDiceStrip
|
||||
case RollDieKinds.RolemasterStandard:
|
||||
classes.Add("rolemaster-standard");
|
||||
break;
|
||||
case RollDieKinds.RolemasterInitiative:
|
||||
classes.Add("rolemaster-initiative");
|
||||
break;
|
||||
case RollDieKinds.RolemasterPercentile:
|
||||
classes.Add("rolemaster-percentile");
|
||||
break;
|
||||
case RollDieKinds.RolemasterOpenEndedInitial:
|
||||
classes.Add("rolemaster-open-ended-initial");
|
||||
break;
|
||||
@@ -103,12 +97,6 @@ public partial class RollDiceStrip
|
||||
case RollDieKinds.RolemasterStandard:
|
||||
labels.Add("Rolemaster roll");
|
||||
break;
|
||||
case RollDieKinds.RolemasterInitiative:
|
||||
labels.Add("Rolemaster initiative");
|
||||
break;
|
||||
case RollDieKinds.RolemasterPercentile:
|
||||
labels.Add("Rolemaster percentile");
|
||||
break;
|
||||
case RollDieKinds.RolemasterOpenEndedInitial:
|
||||
labels.Add(die.SignedContribution.HasValue ? "Rolemaster open-ended initial" : "Rolemaster low-end trigger (ignored in total)");
|
||||
break;
|
||||
|
||||
@@ -53,8 +53,6 @@ public sealed record RollSkillRequest(string Visibility);
|
||||
public static class RollDieKinds
|
||||
{
|
||||
public const string RolemasterStandard = "rolemaster-standard";
|
||||
public const string RolemasterInitiative = "rolemaster-initiative";
|
||||
public const string RolemasterPercentile = "rolemaster-percentile";
|
||||
public const string RolemasterOpenEndedInitial = "rolemaster-open-ended-initial";
|
||||
public const string RolemasterOpenEndedHigh = "rolemaster-open-ended-high";
|
||||
public const string RolemasterOpenEndedLowSubtract = "rolemaster-open-ended-low-subtract";
|
||||
|
||||
@@ -93,7 +93,6 @@ public sealed class RollLogEntry
|
||||
public enum DiceExpressionKind
|
||||
{
|
||||
Standard,
|
||||
RolemasterStandard,
|
||||
RolemasterOpenEndedPercentile
|
||||
}
|
||||
|
||||
|
||||
@@ -100,7 +100,7 @@ public static partial class DiceRules
|
||||
|
||||
var countPrefix = diceCount == 1 ? string.Empty : diceCount.ToString();
|
||||
var canonical = $"{countPrefix}d{sides}{(isOpenEnded ? "!" : string.Empty)}{FormatModifier(modifier)}";
|
||||
var kind = isOpenEnded ? DiceExpressionKind.RolemasterOpenEndedPercentile : DiceExpressionKind.RolemasterStandard;
|
||||
var kind = isOpenEnded ? DiceExpressionKind.RolemasterOpenEndedPercentile : DiceExpressionKind.Standard;
|
||||
return ServiceResult<DiceExpression>.Success(new(diceCount, sides, modifier, canonical, kind));
|
||||
}
|
||||
|
||||
|
||||
@@ -949,9 +949,8 @@ public sealed class GameService : IGameService
|
||||
{
|
||||
return expression.Kind switch
|
||||
{
|
||||
DiceExpressionKind.RolemasterStandard => ComputeRolemasterStandardRoll(expression),
|
||||
DiceExpressionKind.RolemasterOpenEndedPercentile => ComputeRolemasterOpenEndedRoll(expression, skill.FumbleRange.GetValueOrDefault()),
|
||||
_ => ComputeStandardRoll(expression)
|
||||
_ => ComputeRolemasterStandardRoll(expression)
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1423,20 +1422,12 @@ public sealed class GameService : IGameService
|
||||
return $"{preview} | rolemaster";
|
||||
}
|
||||
|
||||
if (dice.Any(die => string.Equals(die.Kind, RollDieKinds.RolemasterInitiative, StringComparison.Ordinal)))
|
||||
return $"{string.Join(" + ", dice.Select(die => die.Roll.ToString()))} | initiative";
|
||||
|
||||
if (dice.Any(die => string.Equals(die.Kind, RollDieKinds.RolemasterPercentile, StringComparison.Ordinal)))
|
||||
return $"{dice[0].Roll} | percentile";
|
||||
|
||||
return string.Join(", ", dice.Take(3).Select(die => die.Roll.ToString()));
|
||||
}
|
||||
|
||||
private static bool IsRolemasterDieKind(string? kind)
|
||||
{
|
||||
return kind is RollDieKinds.RolemasterStandard or
|
||||
RollDieKinds.RolemasterInitiative or
|
||||
RollDieKinds.RolemasterPercentile or
|
||||
RollDieKinds.RolemasterOpenEndedInitial or
|
||||
RollDieKinds.RolemasterOpenEndedHigh or
|
||||
RollDieKinds.RolemasterOpenEndedLowSubtract;
|
||||
|
||||
2
TASKS.md
2
TASKS.md
@@ -107,7 +107,7 @@ Affected areas:
|
||||
Current validation is split between generic expression parsing and D6 option validation. Rolemaster needs its own validation layer.
|
||||
|
||||
Validation rules to add:
|
||||
- `RolemasterStandard`
|
||||
- standard Rolemaster expressions
|
||||
- supports generic `NdS` syntax with any supported side count
|
||||
- assumes a dice count of `1` when the count is omitted before `d`
|
||||
- integer modifier required
|
||||
|
||||
Reference in New Issue
Block a user