Skip to content

Commit 1e98496

Browse files
diffcalc should ignore mines
1 parent 35dea88 commit 1e98496

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

Quaver.API/Maps/Processors/Difficulty/Rulesets/Keys/DifficultyProcessorKeys.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ public DifficultyProcessorKeys(Qua map, StrainConstants constants, ModIdentifier
137137
StrainConstants = (StrainConstantsKeys)constants;
138138

139139
// Don't bother calculating map difficulty if there's less than 2 hit objects
140-
if (map.HitObjects.Count < 2)
140+
if (map.DifficultyContributingHitObjects < 2)
141141
return;
142142

143143
// Solve for difficulty
@@ -203,6 +203,8 @@ private void ComputeBaseStrainStates(float rate, Hand assumeHand)
203203
{
204204
if (Map.HasScratchKey && Map.HitObjects[i].Lane == Map.GetKeyCount())
205205
continue;
206+
if (Map.HitObjects[i].Type == HitObjectType.Mine)
207+
continue;
206208

207209
var curHitOb = new StrainSolverHitObject(Map.HitObjects[i]);
208210
var curStrainData = new StrainSolverData(curHitOb, rate);
@@ -675,7 +677,7 @@ private float CalculateOverallDifficulty()
675677
private void ComputeNoteDensityData(float rate)
676678
{
677679
//MapLength = Qua.Length;
678-
AverageNoteDensity = SECONDS_TO_MILLISECONDS * Map.HitObjects.Count / (Map.Length * (-.5f * rate + 1.5f));
680+
AverageNoteDensity = SECONDS_TO_MILLISECONDS * Map.DifficultyContributingHitObjects / (Map.Length * (-.5f * rate + 1.5f));
679681
}
680682

681683
/// <summary>

Quaver.API/Maps/Qua.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,19 @@ public List<ScrollSpeedFactorInfo> ScrollSpeedFactors
185185
/// </summary>
186186
public List<HitObjectInfo> HitObjects { get; private set; } = new List<HitObjectInfo>();
187187

188+
/// <summary>
189+
/// Number of mines in the map
190+
/// </summary>
191+
[YamlIgnore]
192+
public int MineCount => HitObjects.Count(x => x.Type is HitObjectType.Mine);
193+
194+
/// <summary>
195+
/// Number of notes counted for diffcalc.
196+
/// Currently, it's every note except mines
197+
/// </summary>
198+
[YamlIgnore]
199+
public int DifficultyContributingHitObjects => HitObjects.Count - MineCount;
200+
188201
public Dictionary<string, TimingGroup> TimingGroups { get; private set; } =
189202
new Dictionary<string, TimingGroup>();
190203

0 commit comments

Comments
 (0)