@rian8337/osu-droid-replay-analyzer 4.0.0-beta.68 → 4.0.0-beta.69
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +14 -19
- package/package.json +5 -5
package/dist/index.js
CHANGED
|
@@ -379,9 +379,6 @@ class RebalanceThreeFingerChecker {
|
|
|
379
379
|
}
|
|
380
380
|
this.getAccurateBreakPoints();
|
|
381
381
|
this.filterCursorInstances();
|
|
382
|
-
if (this.downCursorInstances.filter((v) => v.length > 0).length <= 3) {
|
|
383
|
-
return { is3Finger: false, penalty: 1 };
|
|
384
|
-
}
|
|
385
382
|
this.getBeatmapSections();
|
|
386
383
|
this.calculateNerfFactors();
|
|
387
384
|
const finalPenalty = this.calculateFinalPenalty();
|
|
@@ -536,7 +533,7 @@ class RebalanceThreeFingerChecker {
|
|
|
536
533
|
return -1;
|
|
537
534
|
}
|
|
538
535
|
const hitTime = object.startTime + objectData.accuracy;
|
|
539
|
-
const objectPosition = object.
|
|
536
|
+
const objectPosition = object.stackedPosition;
|
|
540
537
|
// We are maintaining the closest distance to the object.
|
|
541
538
|
// This is because the radius that is calculated is using an estimation.
|
|
542
539
|
// As such, it does not reflect the actual object radius in gameplay.
|
|
@@ -804,7 +801,7 @@ class SliderCheeseChecker {
|
|
|
804
801
|
Math.min(this.hitWindow50, object.duration)) {
|
|
805
802
|
continue;
|
|
806
803
|
}
|
|
807
|
-
const objectStartPosition = object.
|
|
804
|
+
const objectStartPosition = object.stackedPosition;
|
|
808
805
|
// These time boundaries should consider the delta time between the previous and next
|
|
809
806
|
// object as well as their hit accuracy. However, they are somewhat complicated to
|
|
810
807
|
// compute and the accuracy gain is small. As such, let's settle with 50 hit window.
|
|
@@ -905,7 +902,7 @@ class SliderCheeseChecker {
|
|
|
905
902
|
continue;
|
|
906
903
|
}
|
|
907
904
|
const nestedObject = object.nestedHitObjects[i];
|
|
908
|
-
const nestedPosition = nestedObject.
|
|
905
|
+
const nestedPosition = nestedObject.stackedPosition;
|
|
909
906
|
while (occurrenceLoopIndex < allOccurrences.length &&
|
|
910
907
|
allOccurrences[occurrenceLoopIndex].time <
|
|
911
908
|
nestedObject.startTime) {
|
|
@@ -1186,7 +1183,7 @@ class ThreeFingerChecker {
|
|
|
1186
1183
|
return -1;
|
|
1187
1184
|
}
|
|
1188
1185
|
const hitTime = object.startTime + objectData.accuracy;
|
|
1189
|
-
const objectPosition = object.
|
|
1186
|
+
const objectPosition = object.stackedPosition;
|
|
1190
1187
|
// We are maintaining the closest distance to the object.
|
|
1191
1188
|
// This is because the radius that is calculated is using an estimation.
|
|
1192
1189
|
// As such, it does not reflect the actual object radius in gameplay.
|
|
@@ -1585,11 +1582,11 @@ class TwoHandChecker {
|
|
|
1585
1582
|
prevObjectData.result === exports.HitResult.miss) {
|
|
1586
1583
|
return new IndexedHitObject(object, -1, -1, -1, null, false);
|
|
1587
1584
|
}
|
|
1588
|
-
const objectStartPosition = object.
|
|
1589
|
-
let prevObjectEndPosition = prevObject.
|
|
1585
|
+
const objectStartPosition = object.stackedPosition;
|
|
1586
|
+
let prevObjectEndPosition = prevObject.stackedEndPosition;
|
|
1590
1587
|
if (prevObject instanceof osuBase.Slider) {
|
|
1591
1588
|
if (prevObject.distance > 0) {
|
|
1592
|
-
const endPosition = prevObject.
|
|
1589
|
+
const endPosition = prevObject.stackedEndPosition;
|
|
1593
1590
|
const lazyEndMovement = objectStartPosition.subtract(endPosition);
|
|
1594
1591
|
const actualEndMovement = objectStartPosition.subtract(prevObjectEndPosition);
|
|
1595
1592
|
if (lazyEndMovement.length < actualEndMovement.length) {
|
|
@@ -1597,12 +1594,10 @@ class TwoHandChecker {
|
|
|
1597
1594
|
}
|
|
1598
1595
|
}
|
|
1599
1596
|
else {
|
|
1600
|
-
prevObjectEndPosition = prevObject.
|
|
1597
|
+
prevObjectEndPosition = prevObject.stackedPosition;
|
|
1601
1598
|
}
|
|
1602
1599
|
}
|
|
1603
|
-
const prevToCurrentMovement = object
|
|
1604
|
-
.getStackedPosition(osuBase.Modes.droid)
|
|
1605
|
-
.subtract(prevObjectEndPosition);
|
|
1600
|
+
const prevToCurrentMovement = object.stackedPosition.subtract(prevObjectEndPosition);
|
|
1606
1601
|
// Don't consider objects that are too close to each other.
|
|
1607
1602
|
if (prevToCurrentMovement.length <= object.radius) {
|
|
1608
1603
|
return new IndexedHitObject(object, -1, -1, -1, null, false);
|
|
@@ -1725,7 +1720,7 @@ class TwoHandChecker {
|
|
|
1725
1720
|
getCursorPositionForObjectStart(objectIndex) {
|
|
1726
1721
|
const object = this.beatmap.hitObjects.objects[objectIndex];
|
|
1727
1722
|
const data = this.data.hitObjectData[objectIndex];
|
|
1728
|
-
const objectPosition = object.
|
|
1723
|
+
const objectPosition = object.stackedPosition;
|
|
1729
1724
|
if (object instanceof osuBase.Spinner) {
|
|
1730
1725
|
return {
|
|
1731
1726
|
position: objectPosition,
|
|
@@ -1887,10 +1882,10 @@ class TwoHandChecker {
|
|
|
1887
1882
|
return this.getCursorPositionForObjectStart(objectIndex);
|
|
1888
1883
|
}
|
|
1889
1884
|
const nextObject = this.beatmap.hitObjects.objects[objectIndex - 1];
|
|
1890
|
-
let objectEndPosition = object.
|
|
1885
|
+
let objectEndPosition = object.stackedEndPosition;
|
|
1891
1886
|
if (object.distance > 0 && nextObject) {
|
|
1892
|
-
const endPosition = object.
|
|
1893
|
-
const nextStartPosition = nextObject.
|
|
1887
|
+
const endPosition = object.stackedEndPosition;
|
|
1888
|
+
const nextStartPosition = nextObject.stackedPosition;
|
|
1894
1889
|
const lazyEndMovement = nextStartPosition.subtract(endPosition);
|
|
1895
1890
|
const actualEndMovement = nextStartPosition.subtract(objectEndPosition);
|
|
1896
1891
|
if (lazyEndMovement.length < actualEndMovement.length) {
|
|
@@ -1898,7 +1893,7 @@ class TwoHandChecker {
|
|
|
1898
1893
|
}
|
|
1899
1894
|
}
|
|
1900
1895
|
else {
|
|
1901
|
-
objectEndPosition = object.
|
|
1896
|
+
objectEndPosition = object.stackedPosition;
|
|
1902
1897
|
}
|
|
1903
1898
|
let nearestPosition = new osuBase.Vector2(Number.POSITIVE_INFINITY);
|
|
1904
1899
|
let nearestCursorIndex = 0;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rian8337/osu-droid-replay-analyzer",
|
|
3
|
-
"version": "4.0.0-beta.
|
|
3
|
+
"version": "4.0.0-beta.69",
|
|
4
4
|
"description": "A replay analyzer for analyzing osu!droid replay files.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"osu",
|
|
@@ -34,9 +34,9 @@
|
|
|
34
34
|
"url": "https://github.com/Rian8337/osu-droid-module/issues"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@rian8337/osu-base": "^4.0.0-beta.
|
|
38
|
-
"@rian8337/osu-difficulty-calculator": "^4.0.0-beta.
|
|
39
|
-
"@rian8337/osu-rebalance-difficulty-calculator": "^4.0.0-beta.
|
|
37
|
+
"@rian8337/osu-base": "^4.0.0-beta.69",
|
|
38
|
+
"@rian8337/osu-difficulty-calculator": "^4.0.0-beta.69",
|
|
39
|
+
"@rian8337/osu-rebalance-difficulty-calculator": "^4.0.0-beta.69",
|
|
40
40
|
"java-deserialization": "^0.1.0",
|
|
41
41
|
"unzipper": "^0.10.11"
|
|
42
42
|
},
|
|
@@ -46,5 +46,5 @@
|
|
|
46
46
|
"publishConfig": {
|
|
47
47
|
"access": "public"
|
|
48
48
|
},
|
|
49
|
-
"gitHead": "
|
|
49
|
+
"gitHead": "aed764bcd1c55a0a937b8f7439146c00b0457bfb"
|
|
50
50
|
}
|