@rian8337/osu-droid-replay-analyzer 4.0.0-beta.13 → 4.0.0-beta.15
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 +39 -9
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
- package/typings/index.d.ts +34 -6
package/dist/index.js
CHANGED
|
@@ -337,8 +337,12 @@ class ReplayData {
|
|
|
337
337
|
convertedMods;
|
|
338
338
|
cursorMovement;
|
|
339
339
|
hitObjectData;
|
|
340
|
-
|
|
341
|
-
|
|
340
|
+
speedMultiplier;
|
|
341
|
+
forceCS;
|
|
342
|
+
forceAR;
|
|
343
|
+
forceOD;
|
|
344
|
+
forceHP;
|
|
345
|
+
flashlightFollowDelay;
|
|
342
346
|
constructor(values) {
|
|
343
347
|
this.replayVersion = values.replayVersion;
|
|
344
348
|
this.folderName = values.folderName;
|
|
@@ -357,8 +361,12 @@ class ReplayData {
|
|
|
357
361
|
this.convertedMods = values.convertedMods || [];
|
|
358
362
|
this.cursorMovement = values.cursorMovement;
|
|
359
363
|
this.hitObjectData = values.hitObjectData;
|
|
360
|
-
this.
|
|
361
|
-
this.
|
|
364
|
+
this.speedMultiplier = values.speedMultiplier || 1;
|
|
365
|
+
this.forceCS = values.forceCS;
|
|
366
|
+
this.forceAR = values.forceAR;
|
|
367
|
+
this.forceOD = values.forceOD;
|
|
368
|
+
this.forceHP = values.forceHP;
|
|
369
|
+
this.flashlightFollowDelay = values.flashlightFollowDelay;
|
|
362
370
|
}
|
|
363
371
|
}
|
|
364
372
|
|
|
@@ -2103,11 +2111,33 @@ class ReplayAnalyzer {
|
|
|
2103
2111
|
determineRank();
|
|
2104
2112
|
}
|
|
2105
2113
|
if (resultObject.replayVersion >= 4) {
|
|
2106
|
-
const
|
|
2107
|
-
|
|
2108
|
-
|
|
2109
|
-
|
|
2110
|
-
|
|
2114
|
+
const str = rawObject[7].split("|");
|
|
2115
|
+
for (const s of str) {
|
|
2116
|
+
switch (true) {
|
|
2117
|
+
// Forced stats
|
|
2118
|
+
case s.startsWith("CS"):
|
|
2119
|
+
resultObject.forceCS = parseFloat(s.replace("CS", ""));
|
|
2120
|
+
break;
|
|
2121
|
+
case s.startsWith("AR"):
|
|
2122
|
+
resultObject.forceAR = parseFloat(s.replace("AR", ""));
|
|
2123
|
+
break;
|
|
2124
|
+
case s.startsWith("OD"):
|
|
2125
|
+
resultObject.forceOD = parseFloat(s.replace("OD", ""));
|
|
2126
|
+
break;
|
|
2127
|
+
case s.startsWith("HP"):
|
|
2128
|
+
resultObject.forceHP = parseFloat(s.replace("HP", ""));
|
|
2129
|
+
break;
|
|
2130
|
+
// FL follow delay
|
|
2131
|
+
case s.startsWith("FLD"):
|
|
2132
|
+
resultObject.flashlightFollowDelay =
|
|
2133
|
+
parseFloat(s.replace("FLD", "")) || 0.12;
|
|
2134
|
+
break;
|
|
2135
|
+
// Speed multiplier
|
|
2136
|
+
case s.startsWith("x"):
|
|
2137
|
+
resultObject.speedMultiplier =
|
|
2138
|
+
parseFloat(s.replace("x", "")) || 1;
|
|
2139
|
+
break;
|
|
2140
|
+
}
|
|
2111
2141
|
}
|
|
2112
2142
|
}
|
|
2113
2143
|
let bufferIndex;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/constants/MovementType.ts","../src/data/CursorOccurrence.ts","../src/data/CursorOccurrenceGroup.ts","../src/data/CursorData.ts","../src/constants/HitResult.ts","../src/data/ReplayData.ts","../src/analysis/ThreeFingerChecker.ts","../src/analysis/objects/IndexedHitObject.ts","../src/analysis/TwoHandChecker.ts","../src/analysis/SliderCheeseChecker.ts","../src/ReplayAnalyzer.ts","../src/data/ReplayObjectData.ts"],"sourcesContent":["/**\n * Movement types of a cursor in an osu!droid replay.\n *\n * The cursor movement is represented as a player's action on the screen.\n */\nexport var MovementType;\n(function (MovementType) {\n /**\n * The player places their finger on the screen.\n */\n MovementType[MovementType[\"down\"] = 0] = \"down\";\n /**\n * The player drags their finger on the screen.\n */\n MovementType[MovementType[\"move\"] = 1] = \"move\";\n /**\n * The player releases their finger from the screen.\n */\n MovementType[MovementType[\"up\"] = 2] = \"up\";\n})(MovementType || (MovementType = {}));\n//# sourceMappingURL=MovementType.js.map","import { Vector2 } from \"@rian8337/osu-base\";\n/**\n * Represents a cursor's occurrence.\n */\nexport class CursorOccurrence {\n /**\n * The time of this occurrence.\n */\n time;\n /**\n * The position of the occurrence.\n */\n position;\n /**\n * The movement ID of the occurrence.\n */\n id;\n constructor(time, x, y, id) {\n this.time = time;\n this.position = new Vector2(x, y);\n this.id = id;\n }\n}\n//# sourceMappingURL=CursorOccurrence.js.map","import { MovementType } from \"../constants/MovementType\";\n/**\n * Represents a group of cursor occurrences representing a cursor instance's\n * movement when a player places their finger on the screen.\n */\nexport class CursorOccurrenceGroup {\n /**\n * The cursor occurrence of movement type `movementType.DOWN`.\n */\n get down() {\n return this._down;\n }\n /**\n * The cursor occurrence of movement type `movementType.DOWN`.\n */\n set down(value) {\n if (value.id !== MovementType.down) {\n throw new TypeError(\"Attempting to set the down cursor occurrence to one with different movement type.\");\n }\n this._down = value;\n }\n /**\n * The cursor occurrences of movement type `movementType.MOVE`.\n */\n get moves() {\n return this._moves;\n }\n /**\n * The cursor occurrence of movement type `movementType.UP`.\n *\n * May not exist, such as when the player holds their cursor until the end of a beatmap.\n */\n get up() {\n return this._up;\n }\n /**\n * The cursor occurrence of movement type `movementType.UP`.\n *\n * May not exist, such as when the player holds their cursor until the end of a beatmap.\n */\n set up(value) {\n if (value && value.id !== MovementType.up) {\n throw new TypeError(\"Attempting to set the up cursor occurrence to one with different movement type.\");\n }\n this._up = value;\n }\n /**\n * The time at which this cursor occurrence group starts.\n */\n get startTime() {\n return this._down.time;\n }\n /**\n * The time at which this cursor occurrence group ends.\n */\n get endTime() {\n return this._up?.time ?? this._moves.at(-1)?.time ?? this._down.time;\n }\n /**\n * The duration this cursor occurrence group is active for.\n */\n get duration() {\n return this.endTime - this.startTime;\n }\n /**\n * All cursor occurrences in this group.\n *\n * This iterates all occurrences and as such should be used sparingly or stored locally.\n */\n get allOccurrences() {\n const cursors = [this._down, ...this._moves];\n if (this._up) {\n cursors.push(this._up);\n }\n return cursors;\n }\n /**\n * The cursor occurrence of movement type `movementType.DOWN`.\n */\n _down;\n /**\n * The cursor occurrences of movement type `movementType.MOVE`.\n */\n _moves;\n /**\n * The cursor occurrence of movement type `movementType.UP`.\n *\n * May not exist, such as when the player holds their cursor until the end of a beatmap.\n */\n _up;\n constructor(down, moves, up) {\n this._down = down;\n this._moves = moves;\n // Re-set down cursor occurrence for checking.\n this.down = down;\n this.up = up;\n }\n /**\n * Determines whether this cursor occurrence group is active at the specified time.\n *\n * @param time The time.\n * @returns Whether this cursor occurrence group is active at the specified time.\n */\n isActiveAt(time) {\n return time >= this.startTime && time <= this.endTime;\n }\n /**\n * Finds the cursor occurrence that is active at a given time.\n *\n * @param time The time.\n * @returns The cursor occurrence at the given time, `null` if not found.\n */\n cursorAt(time) {\n if (!this.isActiveAt(time)) {\n return null;\n }\n if (this._down.time === time) {\n return this._down;\n }\n if (this._up?.time === time) {\n return this._up;\n }\n let l = 0;\n let r = this._moves.length - 2;\n while (l <= r) {\n const pivot = l + ((r - l) >> 1);\n if (this._moves[pivot].time < time) {\n l = pivot + 1;\n }\n else if (this._moves[pivot].time > time) {\n r = pivot - 1;\n }\n else {\n return this._moves[pivot];\n }\n }\n // l will be the first cursor occurrence with time > this._moves[l].time, but we want the one before it\n return this._moves[l - 1];\n }\n}\n//# sourceMappingURL=CursorOccurrenceGroup.js.map","import { MovementType } from \"../constants/MovementType\";\nimport { CursorOccurrence } from \"./CursorOccurrence\";\nimport { CursorOccurrenceGroup } from \"./CursorOccurrenceGroup\";\n/**\n * Represents a cursor instance in an osu!droid replay.\n *\n * Stores cursor movement data in the form of `CursorOccurrenceGroup`s.\n *\n * This is used when analyzing replays using replay analyzer.\n */\nexport class CursorData {\n /**\n * The occurrence groups of this cursor instance.\n */\n occurrenceGroups = [];\n /**\n * The time at which the first occurrence of this cursor instance occurs.\n *\n * Will return `null` if there are no occurrences.\n */\n get earliestOccurrenceTime() {\n return this.occurrenceGroups.at(0)?.startTime ?? null;\n }\n /**\n * The time at which the latest occurrence of this cursor instance occurs.\n *\n * Will return `null` if there are no occurrences.\n */\n get latestOccurrenceTime() {\n return this.occurrenceGroups.at(-1)?.endTime ?? null;\n }\n /**\n * The amount of cursor occurrences of this cursor instance.\n */\n get totalOccurrences() {\n return this.occurrenceGroups.reduce((a, v) => {\n // Down cursor.\n ++a;\n // Move cursors.\n a += v.moves.length;\n if (v.up) {\n // Up cursor.\n ++a;\n }\n return a;\n }, 0);\n }\n /**\n * All cursor occurrences of this cursor instnace.\n *\n * This iterates all occurrence groups and as such should be used sparingly or stored locally.\n */\n get allOccurrences() {\n return this.occurrenceGroups.flatMap((v) => v.allOccurrences);\n }\n constructor(values) {\n let downOccurrence = null;\n let moveOccurrences = [];\n for (let i = 0; i < values.size; ++i) {\n const occurrence = new CursorOccurrence(values.time[i], values.x[i], values.y[i], values.id[i]);\n switch (occurrence.id) {\n case MovementType.down:\n downOccurrence = occurrence;\n break;\n case MovementType.move:\n moveOccurrences.push(occurrence);\n break;\n case MovementType.up:\n if (downOccurrence) {\n this.occurrenceGroups.push(new CursorOccurrenceGroup(downOccurrence, moveOccurrences, occurrence));\n downOccurrence = null;\n }\n moveOccurrences = [];\n }\n }\n // Add the final cursor occurrence group as the loop may not catch it for special cases.\n if (downOccurrence && moveOccurrences.length > 0) {\n this.occurrenceGroups.push(new CursorOccurrenceGroup(downOccurrence, moveOccurrences));\n }\n }\n}\n//# sourceMappingURL=CursorData.js.map","/**\n * The result of a hit in an osu!droid replay.\n */\nexport var HitResult;\n(function (HitResult) {\n /**\n * Miss (0).\n */\n HitResult[HitResult[\"miss\"] = 1] = \"miss\";\n /**\n * Meh (50).\n */\n HitResult[HitResult[\"meh\"] = 2] = \"meh\";\n /**\n * Good (100).\n */\n HitResult[HitResult[\"good\"] = 3] = \"good\";\n /**\n * Great (300).\n */\n HitResult[HitResult[\"great\"] = 4] = \"great\";\n})(HitResult || (HitResult = {}));\n//# sourceMappingURL=HitResult.js.map","import { Accuracy } from \"@rian8337/osu-base\";\n/**\n * Represents a replay data in an osu!droid replay.\n *\n * Stores generic information about an osu!droid replay such as player name, MD5 hash, time set, etc.\n *\n * This is used when analyzing replays using replay analyzer.\n */\nexport class ReplayData {\n replayVersion;\n folderName;\n fileName;\n hash;\n time;\n hit300k;\n hit100k;\n score;\n maxCombo;\n accuracy;\n isFullCombo;\n playerName;\n rawMods;\n rank;\n convertedMods;\n cursorMovement;\n hitObjectData;\n speedModification;\n forcedAR;\n constructor(values) {\n this.replayVersion = values.replayVersion;\n this.folderName = values.folderName;\n this.fileName = values.fileName;\n this.hash = values.hash;\n this.time = new Date(values.time || 0);\n this.hit300k = values.hit300k || 0;\n this.hit100k = values.hit100k || 0;\n this.score = values.score || 0;\n this.maxCombo = values.maxCombo || 0;\n this.accuracy = values.accuracy || new Accuracy({});\n this.isFullCombo = values.isFullCombo || false;\n this.playerName = values.playerName || \"\";\n this.rawMods = values.rawMods || \"\";\n this.rank = values.rank || \"\";\n this.convertedMods = values.convertedMods || [];\n this.cursorMovement = values.cursorMovement;\n this.hitObjectData = values.hitObjectData;\n this.speedModification = values.speedModification || 1;\n this.forcedAR = values.forcedAR;\n }\n}\n//# sourceMappingURL=ReplayData.js.map","import { Vector2, DroidHitWindow, MapStats, ModUtil, ModPrecise, MathUtils, Circle, Spinner, Interpolation, Modes, Slider, BreakPoint, Utils, } from \"@rian8337/osu-base\";\nimport { HitResult } from \"../constants/HitResult\";\nimport { MovementType } from \"../constants/MovementType\";\n/**\n * Utility to check whether or not a beatmap is three-fingered.\n */\nexport class ThreeFingerChecker {\n /**\n * The beatmap that is being analyzed.\n */\n beatmap;\n /**\n * The data of the replay.\n */\n data;\n /**\n * The difficulty attributes of the beatmap.\n */\n difficultyAttributes;\n /**\n * The true scale of objects.\n */\n trueScale;\n /**\n * The distance threshold between cursors to assume that two cursors are\n * actually pressed with 1 finger in osu!pixels.\n *\n * This is used to prevent cases where a player would lift their finger\n * too fast to the point where the 4th cursor instance or beyond is recorded\n * as 1st, 2nd, or 3rd cursor instance.\n */\n cursorDistancingDistanceThreshold = 60;\n /**\n * The threshold for the amount of cursors that are assumed to be pressed\n * by a single finger.\n */\n cursorDistancingCountThreshold = 10;\n /**\n * The threshold for the time difference of cursors that are assumed to be pressed\n * by a single finger, in milliseconds.\n */\n cursorDistancingTimeThreshold = 1000;\n /**\n * The amount of notes that has a tap strain exceeding `strainThreshold`.\n */\n strainNoteCount;\n /**\n * The ratio threshold between non-3 finger cursors and 3-finger cursors.\n *\n * Increasing this number will increase detection accuracy, however\n * it also increases the chance of falsely flagged plays.\n */\n threeFingerRatioThreshold = 0.01;\n /**\n * Extended sections of the beatmap for drag detection.\n */\n beatmapSections = [];\n /**\n * This threshold is used to filter out accidental taps.\n *\n * Increasing this number makes the filtration more sensitive, however it\n * will also increase the chance of 3-fingered plays getting out from\n * being flagged.\n */\n accidentalTapThreshold = 400;\n /**\n * The hit window of this beatmap. Keep in mind that speed-changing mods do not change hit window length in game logic.\n */\n hitWindow;\n /**\n * A reprocessed break points to match right on object time.\n *\n * This is used to increase detection accuracy since break points do not start right at the\n * start of the hitobject before it and do not end right at the first hitobject after it.\n */\n breakPointAccurateTimes = [];\n /**\n * A cursor occurrence nested array that only contains `movementType.DOWN` movement ID occurrences.\n *\n * Each index represents the cursor index.\n */\n downCursorInstances = [];\n /**\n * Nerf factors from all sections that were three-fingered.\n */\n nerfFactors = [];\n /**\n * Whether this score uses the Precise mod.\n */\n isPrecise;\n /**\n * @param beatmap The beatmap to analyze.\n * @param data The data of the replay.\n * @param difficultyAttributes The difficulty attributes of the beatmap.\n */\n constructor(beatmap, data, difficultyAttributes) {\n this.beatmap = beatmap;\n this.data = data;\n this.difficultyAttributes = difficultyAttributes;\n const stats = new MapStats({\n od: this.beatmap.difficulty.od,\n mods: this.difficultyAttributes.mods.filter((m) => m.isApplicableToDroid() &&\n !ModUtil.speedChangingMods.some((v) => v.acronym === m.acronym)),\n }).calculate({ mode: Modes.droid, convertDroidOD: false });\n this.isPrecise = this.difficultyAttributes.mods.some((m) => m instanceof ModPrecise);\n this.hitWindow = new DroidHitWindow(stats.od);\n this.strainNoteCount =\n this.difficultyAttributes.possibleThreeFingeredSections.reduce((a, v) => a + v.lastObjectIndex - v.firstObjectIndex + 1, 0);\n const circleSize = new MapStats({\n cs: this.beatmap.difficulty.cs,\n mods: this.difficultyAttributes.mods,\n }).calculate({ mode: Modes.droid }).cs;\n this.trueScale = (1 - (0.7 * (circleSize - 5)) / 5) / 2;\n }\n /**\n * Checks whether a beatmap is eligible to be detected for 3-finger.\n *\n * @param difficultyAttributes The difficulty attributes of the beatmap.\n */\n static isEligibleToDetect(difficultyAttributes) {\n return difficultyAttributes.possibleThreeFingeredSections.length > 0;\n }\n /**\n * Checks if the given beatmap is 3-fingered and also returns the final penalty.\n *\n * The beatmap will be separated into sections and each section will be determined\n * whether or not it is dragged.\n *\n * After that, each section will be assigned a nerf factor based on whether or not\n * the section is 3-fingered. These nerf factors will be summed up into a final\n * nerf factor, taking beatmap difficulty into account.\n */\n check() {\n if (this.strainNoteCount === 0) {\n return { is3Finger: false, penalty: 1 };\n }\n this.getAccurateBreakPoints();\n this.filterCursorInstances();\n if (this.downCursorInstances.filter((v) => v.length > 0).length <= 3) {\n return { is3Finger: false, penalty: 1 };\n }\n this.getBeatmapSections();\n this.detectDragPlay();\n this.preventAccidentalTaps();\n if (this.downCursorInstances.filter((v) => v.length > 0).length <= 3) {\n return { is3Finger: false, penalty: 1 };\n }\n this.calculateNerfFactors();\n const finalPenalty = this.calculateFinalPenalty();\n return { is3Finger: finalPenalty > 1, penalty: finalPenalty };\n }\n /**\n * Generates a new set of \"accurate break points\".\n *\n * This is done to increase detection accuracy since break points do not start right at the\n * start of the hitobject before it and do not end right at the first hitobject after it.\n */\n getAccurateBreakPoints() {\n const { objects } = this.beatmap.hitObjects;\n const objectData = this.data.hitObjectData;\n for (const breakPoint of this.beatmap.events.breaks) {\n const beforeIndex = MathUtils.clamp(objects.findIndex((o) => o.endTime >= breakPoint.startTime) - 1, 0, objects.length - 2);\n let timeBefore = objects[beforeIndex].endTime;\n // For sliders and spinners, automatically set hit window length to be as lenient as possible.\n let beforeIndexHitWindowLength = this.hitWindow.hitWindowFor50(this.isPrecise);\n switch (objectData[beforeIndex].result) {\n case HitResult.great:\n beforeIndexHitWindowLength = this.hitWindow.hitWindowFor300(this.isPrecise);\n break;\n case HitResult.good:\n beforeIndexHitWindowLength = this.hitWindow.hitWindowFor100(this.isPrecise);\n break;\n default:\n beforeIndexHitWindowLength = this.hitWindow.hitWindowFor50(this.isPrecise);\n }\n timeBefore += beforeIndexHitWindowLength;\n const afterIndex = beforeIndex + 1;\n let timeAfter = objects[afterIndex].startTime;\n // For sliders and spinners, automatically set hit window length to be as lenient as possible.\n let afterIndexHitWindowLength = this.hitWindow.hitWindowFor50(this.isPrecise);\n switch (objectData[afterIndex].result) {\n case HitResult.great:\n afterIndexHitWindowLength = this.hitWindow.hitWindowFor300(this.isPrecise);\n break;\n case HitResult.good:\n afterIndexHitWindowLength = this.hitWindow.hitWindowFor100(this.isPrecise);\n break;\n default:\n afterIndexHitWindowLength = this.hitWindow.hitWindowFor50(this.isPrecise);\n }\n timeAfter += afterIndexHitWindowLength;\n this.breakPointAccurateTimes.push(new BreakPoint({\n startTime: timeBefore,\n endTime: timeAfter,\n }));\n }\n }\n /**\n * Filters the original cursor instances, returning only those with `movementType.DOWN` movement ID.\n *\n * This also filters cursors that are in break period or happen before start/after end of the beatmap.\n */\n filterCursorInstances() {\n const { objects } = this.beatmap.hitObjects;\n const objectData = this.data.hitObjectData;\n const firstObjectResult = objectData[0].result;\n const lastObjectResult = objectData.at(-1).result;\n // For sliders, automatically set hit window length to be as lenient as possible.\n let firstObjectHitWindow = this.hitWindow.hitWindowFor50(this.isPrecise);\n if (objects[0] instanceof Circle) {\n switch (firstObjectResult) {\n case HitResult.great:\n firstObjectHitWindow = this.hitWindow.hitWindowFor300(this.isPrecise);\n break;\n case HitResult.good:\n firstObjectHitWindow = this.hitWindow.hitWindowFor100(this.isPrecise);\n break;\n default:\n firstObjectHitWindow = this.hitWindow.hitWindowFor50(this.isPrecise);\n }\n }\n // For sliders, automatically set hit window length to be as lenient as possible.\n let lastObjectHitWindow = this.hitWindow.hitWindowFor50(this.isPrecise);\n if (objects.at(-1) instanceof Circle) {\n switch (lastObjectResult) {\n case HitResult.great:\n lastObjectHitWindow = this.hitWindow.hitWindowFor300(this.isPrecise);\n break;\n case HitResult.good:\n lastObjectHitWindow = this.hitWindow.hitWindowFor100(this.isPrecise);\n break;\n default:\n lastObjectHitWindow = this.hitWindow.hitWindowFor50(this.isPrecise);\n }\n }\n // These hit time uses hit window length as threshold.\n // This is because cursors aren't recorded exactly at hit time,\n // probably due to the game's behavior.\n const firstObjectHitTime = objects[0].startTime - firstObjectHitWindow;\n const lastObjectHitTime = objects.at(-1).startTime + lastObjectHitWindow;\n for (let i = 0; i < this.data.cursorMovement.length; ++i) {\n const cursorInstance = this.data.cursorMovement[i];\n const validOccurrences = [];\n for (let j = 0; j < cursorInstance.occurrenceGroups.length; ++j) {\n const group = cursorInstance.occurrenceGroups[j];\n if (group.startTime < firstObjectHitTime) {\n continue;\n }\n if (group.startTime > lastObjectHitTime) {\n break;\n }\n if (this.breakPointAccurateTimes.some((v) => group.startTime >= v.startTime &&\n group.endTime <= v.endTime)) {\n continue;\n }\n validOccurrences.push(group.down);\n }\n this.downCursorInstances.push(validOccurrences);\n }\n }\n /**\n * Divides the beatmap into sections, which will be used to\n * detect dragged sections and improve detection speed.\n */\n getBeatmapSections() {\n for (const section of this.difficultyAttributes\n .possibleThreeFingeredSections) {\n this.beatmapSections.push({\n ...section,\n isDragged: false,\n dragFingerIndex: -1,\n });\n }\n }\n /**\n * Checks whether or not each beatmap sections is dragged.\n */\n detectDragPlay() {\n for (let i = 0; i < this.beatmapSections.length; ++i) {\n const dragIndex = this.checkDrag(this.beatmapSections[i]);\n this.beatmapSections[i].dragFingerIndex = dragIndex;\n this.beatmapSections[i].isDragged = dragIndex !== -1;\n }\n }\n /**\n * Checks if a section is dragged and returns the index of the drag finger.\n *\n * If the section is not dragged, -1 will be returned.\n *\n * @param section The section to check.\n */\n checkDrag(section) {\n const { objects } = this.beatmap.hitObjects;\n const objectData = this.data.hitObjectData;\n const firstObject = objects[section.firstObjectIndex];\n const lastObject = objects[section.lastObjectIndex];\n let firstObjectMinHitTime = firstObject.startTime;\n if (firstObject instanceof Circle) {\n switch (objectData[section.firstObjectIndex].result) {\n case HitResult.great:\n firstObjectMinHitTime -= this.hitWindow.hitWindowFor300(this.isPrecise);\n break;\n case HitResult.good:\n firstObjectMinHitTime -= this.hitWindow.hitWindowFor100(this.isPrecise);\n break;\n default:\n firstObjectMinHitTime -= this.hitWindow.hitWindowFor50(this.isPrecise);\n }\n }\n else {\n firstObjectMinHitTime -= this.hitWindow.hitWindowFor50(this.isPrecise);\n }\n let lastObjectMaxHitTime = lastObject.startTime;\n if (lastObject instanceof Circle) {\n switch (objectData[section.lastObjectIndex].result) {\n case HitResult.great:\n lastObjectMaxHitTime += this.hitWindow.hitWindowFor300(this.isPrecise);\n break;\n case HitResult.good:\n lastObjectMaxHitTime += this.hitWindow.hitWindowFor100(this.isPrecise);\n break;\n default:\n lastObjectMaxHitTime += this.hitWindow.hitWindowFor50(this.isPrecise);\n }\n }\n else {\n lastObjectMaxHitTime += this.hitWindow.hitWindowFor50(this.isPrecise);\n }\n // Since there may be more than 1 cursor instance index,\n // we check which cursor instance follows hitobjects all over.\n const cursorIndexes = [];\n for (let i = 0; i < this.data.cursorMovement.length; ++i) {\n const c = this.data.cursorMovement[i];\n if (c.occurrenceGroups.length === 0) {\n continue;\n }\n // Do not include cursors that don't have an occurence in this section\n // this speeds up checking process.\n if (c.occurrenceGroups.filter((v) => v.startTime >= firstObjectMinHitTime &&\n v.endTime <= lastObjectMaxHitTime).length === 0) {\n continue;\n }\n // If this cursor instance doesn't move, it's not the cursor instance we want.\n if (c.occurrenceGroups.filter((v) => v.moves.length > 0).length ===\n 0) {\n continue;\n }\n cursorIndexes.push(i);\n }\n return this.findDragIndex(objects.slice(section.firstObjectIndex, section.lastObjectIndex + 1), objectData.slice(section.firstObjectIndex, section.lastObjectIndex + 1), cursorIndexes);\n }\n /**\n * Finds the drag index of the section.\n *\n * @param sectionObjects The objects in the section.\n * @param sectionReplayObjectData The hitobject data of all objects in the section.\n * @param cursorIndexes The indexes of the cursor instance that has at least an occurrence in the section.\n */\n findDragIndex(sectionObjects, sectionReplayObjectData, cursorIndexes) {\n const hitWindow50 = this.hitWindow.hitWindowFor50(this.isPrecise);\n for (let i = 0; i < sectionObjects.length && cursorIndexes.every((v) => v !== -1); ++i) {\n let object = sectionObjects[i];\n const objectData = sectionReplayObjectData[i];\n if (object instanceof Spinner ||\n objectData.result === HitResult.miss) {\n continue;\n }\n // Exclude sliderbreaks.\n if (object instanceof Slider &&\n objectData.accuracy === Math.floor(hitWindow50) + 13) {\n continue;\n }\n if (object.droidScale !== this.trueScale) {\n // Deep copy the instance so that we can assign scale.\n object = Utils.deepCopy(object);\n object.droidScale = this.trueScale;\n }\n const objectPosition = object.getStackedPosition(Modes.droid);\n const hitTime = object.startTime + objectData.accuracy;\n // Observe the cursor position at the object's hit time.\n for (let j = 0; j < cursorIndexes.length; ++j) {\n if (cursorIndexes[j] === -1) {\n continue;\n }\n const cursorData = this.data.cursorMovement[cursorIndexes[j]];\n const cursorGroup = cursorData.occurrenceGroups.find((v) => v.isActiveAt(hitTime));\n if (!cursorGroup) {\n continue;\n }\n const cursors = cursorGroup.allOccurrences;\n for (let k = 1; k < cursors.length; ++k) {\n const cursor = cursors[k];\n const prevCursor = cursors[k - 1];\n if (prevCursor.time < object.startTime - hitWindow50) {\n continue;\n }\n if (prevCursor.time > object.startTime + hitWindow50) {\n break;\n }\n let isInObject = false;\n switch (cursor.id) {\n case MovementType.up:\n isInObject =\n prevCursor.position.getDistance(objectPosition) <= object.getRadius(Modes.droid);\n break;\n case MovementType.move:\n // Interpolate movement.\n for (let mSecPassed = prevCursor.time; !isInObject &&\n mSecPassed <=\n Math.min(cursor.time, object.startTime + hitWindow50); ++mSecPassed) {\n const t = (mSecPassed - prevCursor.time) /\n (cursor.time - prevCursor.time);\n const cursorPosition = new Vector2(Interpolation.lerp(prevCursor.position.x, cursor.position.x, t), Interpolation.lerp(prevCursor.position.y, cursor.position.y, t));\n isInObject =\n objectPosition.getDistance(cursorPosition) <= object.getRadius(Modes.droid);\n }\n }\n if (!isInObject) {\n cursorIndexes[j] = -1;\n }\n }\n }\n }\n return cursorIndexes.find((v) => v !== -1) ?? -1;\n }\n /**\n * Attempts to prevent accidental taps from being flagged.\n *\n * This detection will filter cursors that don't hit\n * any object in beatmap sections, thus eliminating any\n * unnecessary taps.\n */\n preventAccidentalTaps() {\n let filledCursorAmount = this.downCursorInstances.filter((v) => v.length > 0).length;\n if (filledCursorAmount <= 3) {\n return;\n }\n const { objects } = this.beatmap.hitObjects;\n const totalCursorAmount = this.downCursorInstances.reduce((acc, value) => acc + value.length, 0);\n for (let i = 0; i < this.downCursorInstances.length; ++i) {\n if (filledCursorAmount <= 3) {\n break;\n }\n const cursorInstances = this.downCursorInstances[i];\n // Use an estimation for accidental tap threshold.\n if (cursorInstances.length <=\n Math.ceil(objects.length / this.accidentalTapThreshold) &&\n cursorInstances.length / totalCursorAmount <\n this.threeFingerRatioThreshold * 2) {\n --filledCursorAmount;\n cursorInstances.length = 0;\n }\n this.downCursorInstances[i] = cursorInstances;\n }\n }\n /**\n * Creates nerf factors by scanning through objects.\n *\n * This check will ignore all objects with speed strain below `strainThreshold`.\n */\n calculateNerfFactors() {\n const { objects } = this.beatmap.hitObjects;\n const objectData = this.data.hitObjectData;\n // We only filter cursor instances that are above the strain threshold.\n // This minimalizes the amount of cursor instances to analyze.\n for (const beatmapSection of this.beatmapSections) {\n const dragIndex = beatmapSection.dragFingerIndex;\n const startTime = objects[beatmapSection.firstObjectIndex].startTime +\n (objectData[beatmapSection.firstObjectIndex].result !==\n HitResult.miss\n ? objectData[beatmapSection.firstObjectIndex].accuracy\n : -this.hitWindow.hitWindowFor50(this.isPrecise));\n const endTime = objects[beatmapSection.lastObjectIndex].endTime +\n (objectData[beatmapSection.lastObjectIndex].result !==\n HitResult.miss\n ? objectData[beatmapSection.lastObjectIndex].accuracy\n : this.hitWindow.hitWindowFor50(this.isPrecise));\n const cursorAmounts = [];\n const cursorVectorTimes = [];\n for (let i = 0; i < this.downCursorInstances.length; ++i) {\n // Do not include drag cursor instance.\n if (i === dragIndex) {\n continue;\n }\n const cursors = this.downCursorInstances[i];\n let amount = 0;\n for (let j = 0; j < cursors.length; ++j) {\n if (cursors[j].time >= startTime &&\n cursors[j].time <= endTime) {\n ++amount;\n cursorVectorTimes.push({\n vector: new Vector2(cursors[j].position.x, cursors[j].position.y),\n time: cursors[j].time,\n });\n }\n }\n cursorAmounts.push(amount);\n }\n // This index will be used to detect if a section is 3-fingered.\n // If the section is dragged, the dragged instance will be ignored,\n // hence why the index is 1 less than nondragged section.\n const fingerSplitIndex = dragIndex !== -1 ? 2 : 3;\n // Divide >=4th (3rd for drag) cursor instances with 1st + 2nd (+ 3rd for nondrag)\n // to check if the section is 3-fingered.\n const threeFingerRatio = cursorAmounts\n .slice(fingerSplitIndex)\n .reduce((acc, value) => acc + value, 0) /\n cursorAmounts\n .slice(0, fingerSplitIndex)\n .reduce((acc, value) => acc + value, 0);\n const similarPresses = [];\n cursorVectorTimes.sort((a, b) => a.time - b.time);\n for (const cursorVectorTime of cursorVectorTimes) {\n const pressIndex = similarPresses.findIndex((v) => v.vector.getDistance(cursorVectorTime.vector) <=\n this.cursorDistancingDistanceThreshold);\n if (pressIndex !== -1) {\n if (cursorVectorTime.time -\n similarPresses[pressIndex].lastTime >=\n this.cursorDistancingTimeThreshold) {\n similarPresses.splice(pressIndex, 1);\n similarPresses.push({\n vector: cursorVectorTime.vector,\n count: 1,\n lastTime: cursorVectorTime.time,\n });\n continue;\n }\n similarPresses[pressIndex].vector = cursorVectorTime.vector;\n similarPresses[pressIndex].lastTime = cursorVectorTime.time;\n ++similarPresses[pressIndex].count;\n }\n else {\n similarPresses.push({\n vector: cursorVectorTime.vector,\n count: 1,\n lastTime: cursorVectorTime.time,\n });\n }\n }\n // Sort by highest count; assume the order is 3rd, 4th, 5th, ... finger\n const validPresses = similarPresses\n .filter((v) => v.count >= this.cursorDistancingCountThreshold)\n .sort((a, b) => b.count - a.count)\n .slice(2);\n // Ignore cursor presses that are only 1 for now since they are very likely to be accidental\n if ((threeFingerRatio > this.threeFingerRatioThreshold &&\n cursorAmounts.filter((v) => v > 1).length >\n fingerSplitIndex) ||\n validPresses.length > 0) {\n // Strain factor\n const objectCount = beatmapSection.lastObjectIndex -\n beatmapSection.firstObjectIndex +\n 1;\n // We can ignore the first 3 (2 for drag) filled cursor instances\n // since they are guaranteed not 3 finger.\n const threeFingerCursorAmounts = cursorAmounts\n .slice(fingerSplitIndex)\n .filter((amount) => amount > 0);\n // Finger factor applies more penalty if more fingers were used.\n const fingerFactor = threeFingerRatio > this.threeFingerRatioThreshold\n ? threeFingerCursorAmounts.reduce((acc, value, index) => acc +\n Math.pow(((index + 1) * value * objectCount) /\n this.strainNoteCount, 0.9), 1)\n : Math.pow(validPresses.reduce((acc, value, index) => acc +\n Math.pow(((index + 1) *\n (value.count /\n (this\n .cursorDistancingCountThreshold *\n 2)) *\n objectCount) /\n this.strainNoteCount, 0.2), 1), 0.2);\n // Length factor applies more penalty if there are more 3-fingered object.\n const lengthFactor = 1 + Math.pow(objectCount / this.strainNoteCount, 1.2);\n this.nerfFactors.push({\n strainFactor: Math.max(1, beatmapSection.sumStrain),\n fingerFactor,\n lengthFactor,\n });\n }\n }\n }\n /**\n * Calculates the final penalty.\n */\n calculateFinalPenalty() {\n return (1 +\n this.nerfFactors.reduce((a, n) => a +\n 0.015 *\n Math.pow(n.strainFactor * n.fingerFactor * n.lengthFactor, 1.05), 0));\n }\n}\n//# sourceMappingURL=ThreeFingerChecker.js.map","import { Modes } from \"@rian8337/osu-base\";\n/**\n * Contains information about which cursor index hits a hitobject.\n */\nexport class IndexedHitObject {\n /**\n * The cursor index that hits the hitobject.\n *\n * If -1, the detection was unable to find any cursor that attempted to hit\n * the hitobject or it did not meet the criteria for detection.\n */\n cursorIndex;\n /**\n * The group index of the cursor within the cursor index that hits the hitobject.\n *\n * If -1, the detection was unable to find any cursor that attempted to hit\n * the hitobject or it did not meet the criteria for detection.\n */\n groupIndex;\n /**\n * The occurrence index within the group of the cursor within the cursor index that hits the hitobject.\n *\n * If -1, the detection was unable to find any cursor that attempted to hit\n * the hitobject or it did not meet the criteria for detection.\n */\n occurrenceIndex;\n /**\n * The angle of the movement of the cursor towards the next hitobject.\n */\n angle;\n /**\n * If this is a slider, whether the slider was cheesed.\n */\n sliderCheesed = false;\n /**\n * The underlying difficulty hitobject.\n */\n object;\n /**\n * The position of the cursor at the end of this hitobject.\n *\n * Will be altered during detection.\n */\n endCursorPosition;\n /**\n * Whether the hitobject is likely two-handed.\n */\n is2Handed;\n /**\n * @param object The underlying difficulty hitobject.\n * @param cursorIndex The cursor index that moves towards the hitobject.\n * @param groupIndex The group index of the cursor within the cursor index that hits the hitobject.\n * @param occurrenceIndex The occurrence index within the group of the cursor within the cursor index that hits the hitobject.\n * @param angle The angle of the movement of the cursor that moves towards the hitobject.\n */\n constructor(object, cursorIndex, groupIndex, occurrenceIndex, angle, is2Handed) {\n this.object = object;\n this.cursorIndex = cursorIndex;\n this.groupIndex = groupIndex;\n this.occurrenceIndex = occurrenceIndex;\n this.angle = angle;\n this.is2Handed = is2Handed;\n this.endCursorPosition = this.object.object.getStackedEndPosition(Modes.droid);\n }\n}\n//# sourceMappingURL=IndexedHitObject.js.map","// import { writeFileSync } from \"fs\";\nimport { \n// Beatmap,\nCircle, DroidHitWindow, Interpolation, MapStats, MathUtils, Modes, ModPrecise, ModUtil, Slider, Spinner, \n// Utils,\nVector2, } from \"@rian8337/osu-base\";\nimport { HitResult } from \"../constants/HitResult\";\nimport { MovementType } from \"../constants/MovementType\";\nimport { IndexedHitObject } from \"./objects/IndexedHitObject\";\n/**\n * Utility to check whether or not a beatmap is two-handed.\n */\nexport class TwoHandChecker {\n /**\n * The difficulty calculator that is being analyzed.\n */\n calculator;\n /**\n * The data of the replay.\n */\n data;\n /**\n * The hitobjects of the beatmap that have been assigned with their respective cursor index.\n */\n indexedHitObjects = [];\n /**\n * The osu!droid hitwindow of the analyzed beatmap.\n */\n hitWindow;\n /**\n * The 50 osu!droid hit window of the analyzed beatmap.\n */\n hitWindow50;\n // private csvString: string;\n /**\n * @param calculator The difficulty calculator to analyze.\n * @param data The data of the replay.\n */\n constructor(calculator, data) {\n this.calculator = calculator;\n this.data = data;\n const stats = new MapStats({\n od: this.calculator.beatmap.difficulty.od,\n mods: this.calculator.mods.filter((m) => m.isApplicableToDroid() &&\n !ModUtil.speedChangingMods.some((v) => v.acronym === m.acronym)),\n }).calculate({ mode: Modes.droid, convertDroidOD: false });\n this.hitWindow = new DroidHitWindow(stats.od);\n this.hitWindow50 = this.hitWindow.hitWindowFor50(calculator.mods.some((m) => m instanceof ModPrecise));\n // this.csvString = `Mods,${\n // data.convertedMods.reduce((a, m) => a + m.acronym, \"\") || \"NM\"\n // }\\nCombo,${data.maxCombo}\\nAccuracy,\"${(\n // data.accuracy.value() * 100\n // ).toFixed(2)}% [${data.accuracy.n300}/${data.accuracy.n100}/${\n // data.accuracy.n50\n // }/${\n // data.accuracy.nmiss\n // }]\"\\n\\nIndex,Type,StartTime,EndTime,DeltaTime,CursorIndex,GroupIndex,CursorDuration\\n`;\n }\n /**\n * Checks if a beatmap is two-handed.\n */\n check() {\n if (this.data.cursorMovement.filter((v) => v.occurrenceGroups.length > 0).length <= 1) {\n return { is2Hand: false, twoHandedNoteCount: 0 };\n }\n this.indexHitObjects();\n // this.applyPenalty();\n // for (let i = 0; i < this.calculator.objects.length; ++i) {\n // const object: PlaceableHitObject =\n // this.calculator.objects[i].object;\n // if (object instanceof Spinner) {\n // continue;\n // }\n // let deltaTime: number = 0;\n // if (i > 0) {\n // const prevObject: PlaceableHitObject =\n // this.calculator.objects[i - 1].object;\n // deltaTime = Math.max(\n // object.startTime - prevObject.startTime,\n // 25\n // );\n // if (prevObject instanceof Slider) {\n // deltaTime = Math.max(\n // deltaTime - prevObject.lazyTravelTime,\n // 25\n // );\n // }\n // }\n // const objectInfo = this.getCursorPositionForObjectStart(i);\n // this.csvString += `${i},${object.typeStr()},${object.startTime},${\n // object instanceof Slider\n // ? object.startTime + object.lazyTravelTime\n // : object.endTime\n // },${deltaTime},${objectInfo.cursorIndex},${objectInfo.groupIndex},${\n // this.data.cursorMovement[objectInfo.cursorIndex]\n // ?.occurrenceGroups[objectInfo.groupIndex]?.duration ??\n // Number.POSITIVE_INFINITY\n // }\\n`;\n // }\n // writeFileSync(\n // join(\n // process.cwd(),\n // \"files\",\n // `${this.data.playerName} - ${this.calculator.beatmap.metadata.fullTitle}.csv`\n // ),\n // this.csvString\n // );\n let twoHandedNoteCount = 0;\n const maxStrain = Math.max(...this.calculator.objects.map((v) => v.aimStrainWithSliders));\n if (maxStrain) {\n twoHandedNoteCount = this.indexedHitObjects.reduce((total, object) => {\n if (!object.is2Handed) {\n return total;\n }\n return (total +\n 1 /\n (1 +\n Math.exp(-((object.object.aimStrainWithSliders /\n maxStrain) *\n 12 -\n 6))));\n }, 0);\n }\n return {\n is2Hand: twoHandedNoteCount >\n this.calculator.attributes.aimNoteCount * 0.15,\n twoHandedNoteCount: twoHandedNoteCount,\n };\n }\n /**\n * Converts hitobjects into indexed hit objects.\n */\n indexHitObjects() {\n const indexes = [];\n for (let i = 0; i <\n Math.min(this.data.hitObjectData.length, this.calculator.objects.length); ++i) {\n const indexedHitObject = this.getIndexedHitObject(i);\n indexedHitObject.sliderCheesed = this.checkSliderCheesing(indexedHitObject, this.data.hitObjectData[i]);\n indexes.push(indexedHitObject.cursorIndex);\n this.indexedHitObjects.push(indexedHitObject);\n }\n // console.log(\"Aim note count:\", this.calculator.attributes.aimNoteCount);\n // console.log(\n // this.indexedHitObjects.filter((v) => v.cursorIndex !== -1).length +\n // 1,\n // \"indexes found,\",\n // this.indexedHitObjects.filter((v) => v.cursorIndex === -1).length -\n // 1,\n // \"not found,\",\n // this.indexedHitObjects.filter((v) => v.is2Handed).length,\n // \"2 handed,\",\n // this.indexedHitObjects.filter((v) => !v.is2Handed).length,\n // \"not 2 handed\"\n // );\n // for (let i = 0; i < this.data.cursorMovement.length; ++i) {\n // console.log(\n // \"Index\",\n // i,\n // \"count:\",\n // this.indexedHitObjects.filter((v) => v.cursorIndex === i).length\n // );\n // }\n // TODO: solve -1 cursor indexes\n // console.table(\n // this.indexedHitObjects\n // .filter(\n // (v) =>\n // // v.cursorIndex === -1 &&\n // // v.object.aimStrainWithSliders > 200 &&\n // v.object.deltaTime > 75 && v.is2Handed\n // )\n // .map((v) => {\n // return {\n // startTime: v.object.object.startTime,\n // type: v.object.object.typeStr(),\n // strain: v.object.aimStrainWithSliders,\n // hitAngle:\n // v.angle !== null\n // ? MathUtils.radiansToDegrees(v.angle)\n // : null,\n // objectAngle:\n // v.object.angle !== null\n // ? MathUtils.radiansToDegrees(v.object.angle)\n // : null,\n // cursorIndex: v.cursorIndex,\n // };\n // })\n // );\n }\n /**\n * Gets the cursor index that hits the given object.\n *\n * @param objectIndex The index of the object to check.\n * @returns The cursor index that hits the given object, -1 if the index is not found, the object is a spinner, or the object was missed.\n */\n getIndexedHitObject(objectIndex) {\n const diffObject = this.calculator.objects[objectIndex];\n const { object } = diffObject;\n // We don't care about the first object and spinners.\n if (objectIndex === 0 || object instanceof Spinner) {\n return new IndexedHitObject(diffObject, -1, -1, -1, null, false);\n }\n // We don't care if the aim strain is too low.\n // if (diffObject.aimStrainWithSliders < 200) {\n // return new IndexedHitObject(diffObject, -1, -1, -1, null, false);\n // }\n const prevObject = this.calculator.beatmap.hitObjects.objects[objectIndex - 1];\n const prevObjectData = this.data.hitObjectData[objectIndex - 1];\n if (prevObject instanceof Spinner ||\n prevObjectData.result === HitResult.miss) {\n return new IndexedHitObject(diffObject, -1, -1, -1, null, false);\n }\n const objectStartPosition = object.getStackedPosition(Modes.droid);\n let prevObjectEndPosition = prevObject.getStackedEndPosition(Modes.droid);\n if (prevObject instanceof Slider) {\n if (prevObject.lazyTravelDistance > 0) {\n const lazyEndMovement = objectStartPosition.subtract(prevObject.lazyEndPosition);\n const actualEndMovement = objectStartPosition.subtract(prevObjectEndPosition);\n if (lazyEndMovement.length < actualEndMovement.length) {\n prevObjectEndPosition = prevObject.lazyEndPosition;\n }\n }\n else {\n prevObjectEndPosition = prevObject.getStackedPosition(Modes.droid);\n }\n }\n const prevToCurrentMovement = object\n .getStackedPosition(Modes.droid)\n .subtract(prevObjectEndPosition);\n const radius = object.getRadius(Modes.droid);\n // Don't consider objects that are too close to each other.\n if (prevToCurrentMovement.length <= radius) {\n return new IndexedHitObject(diffObject, -1, -1, -1, null, false);\n }\n // The case for a one-handed object is that there will be a slight movement in the cursor towards\n // the next object in fast patterns. We should not be worried about slow patterns as they will only\n // make a minimal difference and aim strain threshold should filter them out.\n // In order to verify if the player does that, we check if the movement towards the current\n // object is sufficient enough to be two-handed. This is done by first gathering info about two cursor positions:\n // 1. The cursor position at the end of the previous object\n // 2. The cursor position that presses the current object\n // and then get the movement vector between both positions, then see if the cursor movement after the previous object\n // was pressed produces an angle that is acute enough with respect to the aforementioned movement vector.\n // If the angle isn't fulfilled, check for the \"initial velocity\", which is the movement velocity from the\n // previous object's end time to the current object's start time and the \"air velocity\", which is the\n // velocity from the previous object's cursor release time to the next object's cursor press time. If the velocity\n // during the held tap is significantly less than the estimated velocity, it's considered two hand.\n const objectInformation = this.getCursorPositionForObjectStart(objectIndex);\n const prevObjectInformation = this.getCursorPositionForObjectEnd(objectIndex - 1);\n this.indexedHitObjects[objectIndex - 1].endCursorPosition =\n prevObjectInformation.position;\n if (prevObjectInformation.position.x === Number.POSITIVE_INFINITY) {\n return new IndexedHitObject(diffObject, -1, -1, -1, null, false);\n }\n if (prevObjectInformation.cursorIndex ===\n objectInformation.cursorIndex &&\n prevObjectInformation.groupIndex === objectInformation.groupIndex) {\n return new IndexedHitObject(diffObject, objectInformation.cursorIndex, objectInformation.groupIndex, prevObjectInformation.occurrenceIndex, 0, false);\n }\n const cursorData = this.data.cursorMovement[prevObjectInformation.cursorIndex];\n // There can be multiple angles to which the cursor moves towards the next object.\n // For this, we take the smallest angle.\n let finalAngle = Number.POSITIVE_INFINITY;\n const cursorGroup = cursorData.occurrenceGroups[prevObjectInformation.groupIndex];\n const cursors = cursorGroup.allOccurrences;\n const prevToCurrentCursorMovement = objectInformation.position.subtract(prevObjectInformation.position);\n for (let i = prevObjectInformation.occurrenceIndex + 1; i < cursors.length; ++i) {\n const cursor = cursors[i];\n const prevCursor = cursors[i - 1];\n if (cursor.position.equals(prevCursor.position)) {\n continue;\n }\n if (cursor.id === MovementType.up) {\n break;\n }\n const currentMovement = cursor.position.subtract(prevCursor.position);\n const dot = prevToCurrentCursorMovement.dot(currentMovement);\n const det = prevToCurrentCursorMovement.x * currentMovement.y -\n prevToCurrentCursorMovement.y * currentMovement.x;\n const movementAngle = Math.abs(Math.atan2(det, dot));\n finalAngle = Math.min(finalAngle, movementAngle);\n }\n const is2Handed = finalAngle >= Math.PI / 6;\n // if (is2Handed) {\n // // If angle isn't fulfilled, check for cursor velocity.\n // let deltaTime: number = Math.max(\n // object.startTime - prevObject.startTime,\n // 25\n // );\n // if (prevObject instanceof Slider) {\n // deltaTime = Math.max(deltaTime - prevObject.lazyTravelTime, 25);\n // }\n // // \"Initial velocity\" is the movement velocity from the previous object's end time to the current object's start time.\n // const initialVelocity: number =\n // objectStartPosition.getDistance(prevObjectEndPosition) /\n // deltaTime;\n // // const finalCursor: CursorOccurrence =\n // // cursorGroup.moves.at(-1) ?? cursorGroup.down;\n // const currentCursorGroup: CursorOccurrenceGroup =\n // this.data.cursorMovement[objectInformation.cursorIndex]\n // .occurrenceGroups[objectInformation.groupIndex];\n // // const cursorDistance: number = currentCursorGroup.down.position.getDistance(\n // // finalCursor.position\n // // );\n // const cursorDuration: number = Math.max(\n // 0,\n // currentCursorGroup.startTime - cursorGroup.endTime\n // );\n // // \"Air velocity\" is the cursor velocity from the moment the previous cursor release action to the next cursor press action.\n // // const airVelocity: number = cursorDistance / cursorDuration;\n // is2Handed =\n // // airVelocity / initialVelocity < 0.8 &&\n // cursorDuration / deltaTime > 0.2;\n // for (\n // let i = prevObjectInformation.occurrenceIndex + 1;\n // i < cursors.length && is2Handed;\n // ++i\n // ) {\n // const cursor: CursorOccurrence = cursors[i];\n // const prevCursor: CursorOccurrence = cursors[i - 1];\n // if (\n // cursor.position.equals(prevCursor.position) ||\n // cursor.time === prevCursor.time\n // ) {\n // continue;\n // }\n // if (cursor.id === MovementType.up) {\n // break;\n // }\n // // \"Cursor velocity\" is the velocity from the previous object's cursor release time to the current object's press time.\n // const cursorVelocity: number =\n // cursor.position.getDistance(prevCursor.position) /\n // (cursor.time - prevCursor.time);\n // is2Handed = cursorVelocity / initialVelocity < 0.8;\n // }\n // }\n if (!Number.isFinite(finalAngle)) {\n return new IndexedHitObject(diffObject, -1, -1, -1, null, false);\n }\n return new IndexedHitObject(diffObject, prevObjectInformation.cursorIndex, prevObjectInformation.groupIndex, prevObjectInformation.occurrenceIndex, finalAngle, is2Handed);\n }\n /**\n * Gets the position of the cursor that presses an object.\n *\n * @param objectIndex THe index of the object.\n * @returns The position of the cursor that presses the object.\n */\n getCursorPositionForObjectStart(objectIndex) {\n const object = this.calculator.beatmap.hitObjects.objects[objectIndex];\n const data = this.data.hitObjectData[objectIndex];\n const objectPosition = object.getStackedPosition(Modes.droid);\n if (object instanceof Spinner) {\n return {\n position: objectPosition,\n cursorIndex: 0,\n groupIndex: Number.POSITIVE_INFINITY,\n occurrenceIndex: Number.POSITIVE_INFINITY,\n cursorTime: object.startTime,\n };\n }\n const radius = object.getRadius(Modes.droid);\n let hitWindow = this.hitWindow50;\n const isPrecise = this.data.convertedMods.some((m) => m instanceof ModPrecise);\n // For sliders, set the hit window to as lenient as possible.\n if (object instanceof Circle) {\n switch (data.result) {\n case HitResult.great:\n hitWindow = this.hitWindow.hitWindowFor300(isPrecise);\n break;\n case HitResult.good:\n hitWindow = this.hitWindow.hitWindowFor100(isPrecise);\n break;\n }\n }\n // TODO: what to do for head sliderbreaks?\n let nearestPosition = new Vector2(Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY);\n let nearestCursorIndex = 0;\n let nearestGroupIndex = 0;\n let nearestCursorGroupIndex = 0;\n let nearestCursorTime = 0;\n const minimumActiveTime = object.startTime - hitWindow;\n const maximumActiveTime = object.startTime + hitWindow;\n for (let i = 0; i < this.data.cursorMovement.length; ++i) {\n if (nearestPosition.getDistance(objectPosition) <= radius) {\n break;\n }\n const cursorData = this.data.cursorMovement[i];\n for (let j = 0; j < cursorData.occurrenceGroups.length; ++j) {\n if (nearestPosition.getDistance(objectPosition) <= radius) {\n break;\n }\n const cursorGroup = cursorData.occurrenceGroups[j];\n if (cursorGroup.endTime < minimumActiveTime) {\n continue;\n }\n if (cursorGroup.startTime > maximumActiveTime) {\n break;\n }\n // Validate the down press first.\n const { down } = cursorGroup;\n if (down.position.getDistance(objectPosition) <= radius &&\n Math.abs(down.time - object.startTime) <= hitWindow) {\n if (objectIndex > 0) {\n const prevObject = this.calculator.beatmap.hitObjects.objects[objectIndex - 1];\n if (down.time > prevObject.endTime) {\n return {\n position: down.position,\n cursorIndex: i,\n groupIndex: j,\n occurrenceIndex: 0,\n cursorTime: down.time,\n };\n }\n }\n else {\n return {\n position: down.position,\n cursorIndex: i,\n groupIndex: j,\n occurrenceIndex: 0,\n cursorTime: down.time,\n };\n }\n }\n const cursors = cursorGroup.allOccurrences;\n for (let k = 1; k < cursors.length; ++k) {\n const cursor = cursors[k];\n const prevCursor = cursors[k - 1];\n if (cursor.time < minimumActiveTime) {\n continue;\n }\n if (prevCursor.time > maximumActiveTime) {\n break;\n }\n let cursorPosition;\n if (cursor.id === MovementType.up) {\n cursorPosition = prevCursor.position;\n const distance = cursorPosition.getDistance(objectPosition);\n if (distance <\n nearestPosition.getDistance(objectPosition)) {\n nearestPosition = cursorPosition;\n nearestCursorIndex = i;\n nearestGroupIndex = j;\n nearestCursorGroupIndex = k;\n nearestCursorTime = prevCursor.time;\n }\n }\n else {\n // Check for cursor presses inbetween occurrences.\n for (let k = 0; k < this.data.cursorMovement.length; ++k) {\n // Skip the current cursor index.\n if (k === i) {\n continue;\n }\n const cursorGroup = this.data.cursorMovement[k].occurrenceGroups.find((v) => v.down.time >= prevCursor.time &&\n v.down.time <= cursor.time);\n if (!cursorGroup) {\n continue;\n }\n const t = (cursorGroup.down.time - prevCursor.time) /\n (cursor.time - prevCursor.time);\n cursorPosition = new Vector2(Interpolation.lerp(prevCursor.position.x, cursor.position.x, t), Interpolation.lerp(prevCursor.position.y, cursor.position.y, t));\n const distance = cursorPosition.getDistance(objectPosition);\n if (distance <\n nearestPosition.getDistance(objectPosition)) {\n nearestPosition = cursorPosition;\n nearestCursorIndex = i;\n nearestGroupIndex = j;\n nearestCursorGroupIndex = k;\n nearestCursorTime = cursorGroup.down.time;\n }\n if (distance <= radius) {\n break;\n }\n }\n }\n if (nearestPosition.getDistance(objectPosition) <= radius) {\n break;\n }\n }\n }\n }\n if (nearestPosition.getDistance(objectPosition) ===\n Number.POSITIVE_INFINITY) {\n return {\n position: nearestPosition,\n cursorIndex: Number.POSITIVE_INFINITY,\n groupIndex: Number.POSITIVE_INFINITY,\n occurrenceIndex: Number.POSITIVE_INFINITY,\n cursorTime: object.startTime,\n };\n }\n return {\n position: nearestPosition,\n cursorIndex: nearestCursorIndex,\n groupIndex: nearestGroupIndex,\n occurrenceIndex: nearestCursorGroupIndex,\n cursorTime: nearestCursorTime,\n };\n }\n /**\n * Gets the position of the cursor that at an object's end position.\n *\n * @param objectIndex THe index of the object.\n * @returns The position of the cursor at the object's end position.\n */\n getCursorPositionForObjectEnd(objectIndex) {\n const object = this.calculator.beatmap.hitObjects.objects[objectIndex];\n if (!(object instanceof Slider)) {\n return this.getCursorPositionForObjectStart(objectIndex);\n }\n const nextObject = this.calculator.beatmap.hitObjects.objects[objectIndex - 1];\n let objectEndPosition = object.getStackedEndPosition(Modes.droid);\n if (object.lazyTravelDistance > 0 && nextObject) {\n const nextStartPosition = nextObject.getStackedPosition(Modes.droid);\n const lazyEndMovement = nextStartPosition.subtract(object.lazyEndPosition);\n const actualEndMovement = nextStartPosition.subtract(objectEndPosition);\n if (lazyEndMovement.length < actualEndMovement.length) {\n objectEndPosition = object.lazyEndPosition;\n }\n }\n else {\n objectEndPosition = object.getStackedPosition(Modes.droid);\n }\n let nearestPosition = new Vector2(Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY);\n let nearestCursorIndex = 0;\n let nearestGroupIndex = 0;\n let nearestCursorGroupIndex = 0;\n let nearestCursorTime = 0;\n for (let i = 0; i < this.data.cursorMovement.length; ++i) {\n const cursorData = this.data.cursorMovement[i];\n for (let j = 0; j < cursorData.occurrenceGroups.length; ++j) {\n const cursorGroup = cursorData.occurrenceGroups[j];\n if (cursorGroup.endTime < object.startTime) {\n continue;\n }\n if (cursorGroup.startTime > object.endTime) {\n break;\n }\n const cursors = cursorGroup.allOccurrences;\n for (let k = 0; k < cursors.length; ++k) {\n const cursor = cursors[k];\n let cursorPosition;\n switch (cursor.id) {\n case MovementType.down:\n cursorPosition = cursor.position;\n break;\n case MovementType.up: {\n const prevCursor = cursors[k - 1];\n cursorPosition = prevCursor.position;\n break;\n }\n case MovementType.move: {\n const prevCursor = cursors[k - 1];\n const t = MathUtils.clamp((object.endTime - prevCursor.time) /\n (cursor.time - prevCursor.time), 0, 1);\n cursorPosition = new Vector2(Interpolation.lerp(prevCursor.position.x, cursor.position.x, t), Interpolation.lerp(prevCursor.position.y, cursor.position.y, t));\n break;\n }\n }\n if (cursorPosition.getDistance(objectEndPosition) <\n nearestPosition.getDistance(objectEndPosition)) {\n nearestPosition = cursorPosition;\n nearestCursorIndex = i;\n nearestGroupIndex = j;\n switch (cursor.id) {\n case MovementType.down:\n nearestCursorGroupIndex = k;\n nearestCursorTime = cursor.time;\n break;\n case MovementType.up:\n nearestCursorGroupIndex = k - 1;\n nearestCursorTime = cursors[k - 1].time;\n break;\n case MovementType.move:\n nearestCursorGroupIndex = k;\n nearestCursorTime = object.endTime;\n break;\n }\n }\n }\n }\n }\n if (nearestPosition.getDistance(objectEndPosition) ===\n Number.POSITIVE_INFINITY) {\n return {\n position: nearestPosition,\n cursorIndex: Number.POSITIVE_INFINITY,\n groupIndex: Number.POSITIVE_INFINITY,\n occurrenceIndex: Number.POSITIVE_INFINITY,\n cursorTime: object.endTime,\n };\n }\n return {\n position: nearestPosition,\n cursorIndex: nearestCursorIndex,\n groupIndex: nearestGroupIndex,\n occurrenceIndex: nearestCursorGroupIndex,\n cursorTime: nearestCursorTime,\n };\n }\n /**\n * Checks whether a slider was cheesed.\n *\n * This is done by checking if a cursor follows a slider all the way to its end position.\n *\n * @param indexedHitObject The indexed slider.\n * @param hitData The hit data of the slider.\n * @returns Whether the slider was cheesed.\n */\n checkSliderCheesing(indexedHitObject, hitData) {\n if (!(indexedHitObject.object.object instanceof Slider) ||\n hitData.result === HitResult.miss ||\n indexedHitObject.cursorIndex === -1) {\n return false;\n }\n return false;\n }\n}\n//# sourceMappingURL=TwoHandChecker.js.map","import { CircleSizeCalculator, DroidHitWindow, Interpolation, MapStats, Modes, ModPrecise, ModUtil, SliderTail, Utils, Vector2, } from \"@rian8337/osu-base\";\nimport { HitResult } from \"../constants/HitResult\";\nimport { MovementType } from \"../constants/MovementType\";\n/**\n * Utility to check whether relevant sliders in a beatmap are cheesed.\n */\nexport class SliderCheeseChecker {\n /**\n * The beatmap that is being analyzed.\n */\n beatmap;\n /**\n * The data of the replay.\n */\n data;\n /**\n * The difficulty attributes of the beatmap.\n */\n difficultyAttributes;\n /**\n * The 50 osu!droid hit window of the analyzed beatmap.\n */\n hitWindow50;\n /**\n * @param beatmap The beatmap to analyze.\n * @param data The data of the replay.\n * @param difficultyAttributes The difficulty attributes of the beatmap.\n */\n constructor(beatmap, data, difficultyAttributes) {\n this.beatmap = beatmap;\n this.data = data;\n this.difficultyAttributes = difficultyAttributes;\n const stats = new MapStats({\n od: this.beatmap.difficulty.od,\n mods: this.difficultyAttributes.mods.filter((m) => m.isApplicableToDroid() &&\n !ModUtil.speedChangingMods.some((v) => v.acronym === m.acronym)),\n }).calculate({ mode: Modes.droid, convertDroidOD: false });\n this.hitWindow50 = new DroidHitWindow(stats.od).hitWindowFor50(this.difficultyAttributes.mods.some((m) => m instanceof ModPrecise));\n }\n /**\n * Checks if relevant sliders in the given beatmap was cheesed.\n */\n check() {\n if (this.difficultyAttributes.difficultSliders.length === 0 ||\n (this.difficultyAttributes.sliderFactor === 1 &&\n this.difficultyAttributes.flashlightSliderFactor === 1 &&\n this.difficultyAttributes.visualSliderFactor === 1)) {\n return {\n aimPenalty: 1,\n flashlightPenalty: 1,\n visualPenalty: 1,\n };\n }\n const cheesedDifficultyRatings = this.checkSliderCheesing();\n return this.calculateSliderCheesePenalty(cheesedDifficultyRatings);\n }\n /**\n * Checks for sliders that were cheesed.\n */\n checkSliderCheesing() {\n const { objects } = this.beatmap.hitObjects;\n const cheesedDifficultyRatings = [];\n // Current loop indices are stored for efficiency.\n const cursorLoopIndices = Utils.initializeArray(10, 0);\n const circleSize = new MapStats({\n cs: this.beatmap.difficulty.cs,\n mods: this.difficultyAttributes.mods,\n }).calculate({ mode: Modes.droid }).cs;\n const scale = CircleSizeCalculator.standardCSToStandardScale(circleSize);\n const acceptableRadius = 64 * scale * 2.4;\n // Sort difficult sliders by index so that cursor loop indices work properly.\n for (const difficultSlider of this.difficultyAttributes.difficultSliders\n .slice()\n .sort((a, b) => a.index - b.index)) {\n if (difficultSlider.index >= this.data.hitObjectData.length) {\n continue;\n }\n const objectData = this.data.hitObjectData[difficultSlider.index];\n // If a miss or slider break occurs, we disregard the check for that slider.\n if (objectData.result === HitResult.miss ||\n objectData.accuracy === Math.floor(this.hitWindow50) + 13) {\n continue;\n }\n let object = objects[difficultSlider.index];\n if (object.droidScale !== scale) {\n // Deep clone the object so that we can assign scale properly.\n object = Utils.deepCopy(object);\n object.droidScale = scale;\n }\n const objectStartPosition = object.getStackedPosition(Modes.droid);\n // These time boundaries should consider the delta time between the previous and next\n // object as well as their hit accuracy. However, they are somewhat complicated to\n // compute and the accuracy gain is small. As such, let's settle with 50 hit window.\n const minTimeLimit = object.startTime - this.hitWindow50;\n const maxTimeLimit = object.startTime + this.hitWindow50;\n // Get the closest tap distance across all cursors.\n const closestDistances = [];\n const closestGroupIndices = [];\n for (let i = 0; i < this.data.cursorMovement.length; ++i) {\n const cursorGroups = this.data.cursorMovement[i].occurrenceGroups;\n let closestDistance = Number.POSITIVE_INFINITY;\n let closestIndex = cursorGroups.length;\n for (let j = cursorLoopIndices[i]; j < cursorGroups.length; j = ++cursorLoopIndices[i]) {\n const group = cursorGroups[j];\n if (group.endTime < minTimeLimit) {\n continue;\n }\n if (group.startTime > maxTimeLimit) {\n break;\n }\n if (group.startTime >= minTimeLimit) {\n const distance = group.down.position.getDistance(objectStartPosition);\n if (closestDistance > distance) {\n closestDistance = distance;\n closestIndex = j;\n }\n if (closestDistance <= acceptableRadius / 2) {\n break;\n }\n }\n // Normally, we check if there are cursor presses within the group's active time.\n // However, some funky workarounds are used throughout the game for replays, so\n // for the time being we only check for cursor distances across the group.\n const { allOccurrences } = group;\n for (let k = 1; k < allOccurrences.length; ++k) {\n const occurrence = allOccurrences[k];\n const prevOccurrence = allOccurrences[k - 1];\n let distance = Number.POSITIVE_INFINITY;\n switch (occurrence.id) {\n case MovementType.up:\n distance =\n prevOccurrence.position.getDistance(objectStartPosition);\n break;\n case MovementType.move:\n for (let mSecPassed = Math.max(prevOccurrence.time, minTimeLimit); mSecPassed <=\n Math.min(occurrence.time, maxTimeLimit); ++mSecPassed) {\n const t = (mSecPassed - prevOccurrence.time) /\n (occurrence.time - prevOccurrence.time);\n const cursorPosition = new Vector2(Interpolation.lerp(prevOccurrence.position.x, occurrence.position.x, t), Interpolation.lerp(prevOccurrence.position.y, occurrence.position.y, t));\n distance =\n cursorPosition.getDistance(objectStartPosition);\n if (closestDistance > distance) {\n closestDistance = distance;\n closestIndex = j;\n }\n if (closestDistance <=\n acceptableRadius / 2) {\n break;\n }\n }\n }\n if (closestDistance > distance) {\n closestDistance = distance;\n closestIndex = j;\n }\n if (closestDistance <= acceptableRadius / 2) {\n break;\n }\n }\n }\n closestDistances.push(closestDistance);\n closestGroupIndices.push(closestIndex);\n if (cursorLoopIndices[i] > 0) {\n // Decrement the index. The previous group may also have a role on the next slider.\n --cursorLoopIndices[i];\n }\n }\n const cursorIndex = closestDistances.indexOf(Math.min(...closestDistances));\n const closestDistance = closestDistances[cursorIndex];\n if (closestDistance > acceptableRadius / 2) {\n cheesedDifficultyRatings.push(difficultSlider.difficultyRating);\n continue;\n }\n const group = this.data.cursorMovement[cursorIndex].occurrenceGroups[closestGroupIndices[cursorIndex]];\n let isCheesed = false;\n // Track cursor movement to see if it lands on every tick.\n let occurrenceLoopIndex = 1;\n const { allOccurrences } = group;\n for (let i = 1; i < object.nestedHitObjects.length; ++i) {\n if (isCheesed) {\n break;\n }\n const tickWasHit = objectData.tickset[i - 1];\n if (!tickWasHit) {\n continue;\n }\n const nestedObject = object.nestedHitObjects[i];\n nestedObject.droidScale = scale;\n // Special treatment for slider tail where its treated as a \"legacy tail\" in osu!standard.\n // In that case, its time is assumed to be 36ms behind the slider's end time. However, that\n // is not the case for osu!droid.\n if (nestedObject instanceof SliderTail) {\n nestedObject.startTime = object.endTime;\n nestedObject.endTime = object.endTime;\n }\n const nestedPosition = nestedObject.getStackedPosition(Modes.droid);\n while (occurrenceLoopIndex < allOccurrences.length &&\n allOccurrences[occurrenceLoopIndex].time <\n nestedObject.startTime) {\n ++occurrenceLoopIndex;\n }\n if (occurrenceLoopIndex === allOccurrences.length) {\n continue;\n }\n const occurrence = allOccurrences[occurrenceLoopIndex];\n const prevOccurrence = allOccurrences[occurrenceLoopIndex - 1];\n switch (occurrence.id) {\n case MovementType.move: {\n // Interpolate cursor position during nested object time.\n const t = (nestedObject.startTime - prevOccurrence.time) /\n (occurrence.time - prevOccurrence.time);\n const cursorPosition = new Vector2(Interpolation.lerp(prevOccurrence.position.x, occurrence.position.x, t), Interpolation.lerp(prevOccurrence.position.y, occurrence.position.y, t));\n const distance = cursorPosition.getDistance(nestedPosition);\n isCheesed = distance > acceptableRadius;\n break;\n }\n case MovementType.up:\n isCheesed =\n prevOccurrence.position.getDistance(nestedPosition) > acceptableRadius;\n }\n }\n if (isCheesed) {\n cheesedDifficultyRatings.push(difficultSlider.difficultyRating);\n }\n }\n return cheesedDifficultyRatings;\n }\n /**\n * Calculates the slider cheese penalty.\n */\n calculateSliderCheesePenalty(cheesedDifficultyRatings) {\n const summedDifficultyRating = Math.min(1, cheesedDifficultyRatings.reduce((a, v) => a + v, 0));\n return {\n aimPenalty: Math.max(this.difficultyAttributes.sliderFactor, Math.pow(1 -\n summedDifficultyRating *\n this.difficultyAttributes.sliderFactor, 2)),\n flashlightPenalty: Math.max(this.difficultyAttributes.flashlightSliderFactor, Math.pow(1 -\n summedDifficultyRating *\n this.difficultyAttributes.flashlightSliderFactor, 2)),\n visualPenalty: Math.max(this.difficultyAttributes.visualSliderFactor, Math.pow(1 -\n summedDifficultyRating *\n this.difficultyAttributes.visualSliderFactor, 2)),\n };\n }\n}\n//# sourceMappingURL=SliderCheeseChecker.js.map","import { Accuracy, Beatmap, DroidAPIRequestBuilder, DroidHitWindow, MapStats, MathUtils, ModFlashlight, ModHidden, ModPrecise, ModUtil, Slider, Spinner, } from \"@rian8337/osu-base\";\nimport { DroidDifficultyCalculator, } from \"@rian8337/osu-difficulty-calculator\";\nimport { DroidDifficultyCalculator as RebalanceDroidDifficultyCalculator, } from \"@rian8337/osu-rebalance-difficulty-calculator\";\nimport { Parse } from \"unzipper\";\nimport * as javaDeserialization from \"java-deserialization\";\nimport { Readable } from \"stream\";\nimport { ReplayData } from \"./data/ReplayData\";\nimport { CursorData } from \"./data/CursorData\";\nimport { ThreeFingerChecker } from \"./analysis/ThreeFingerChecker\";\nimport { TwoHandChecker } from \"./analysis/TwoHandChecker\";\nimport { MovementType } from \"./constants/MovementType\";\nimport { HitResult } from \"./constants/HitResult\";\nimport { SliderCheeseChecker } from \"./analysis/SliderCheeseChecker\";\n/**\n * A replay analyzer that analyzes a replay from osu!droid.\n *\n * Created by reverse engineering the replay parser from the game itself, which can be found {@link https://github.com/osudroid/osu-droid/blob/master/src/ru/nsu/ccfit/zuev/osu/scoring/Replay.java here}.\n *\n * Once analyzed, the result can be accessed via the `data` property.\n */\nexport class ReplayAnalyzer {\n /**\n * The score ID of the replay.\n */\n scoreID;\n /**\n * The original odr file of the replay.\n */\n originalODR = null;\n /**\n * The fixed odr file of the replay.\n */\n fixedODR = null;\n /**\n * Whether or not the play is considered using >=3 finger abuse.\n */\n is3Finger;\n /**\n * Whether or not the play is considered 2-handed.\n */\n is2Hand;\n /**\n * The beatmap that is being analyzed. `DroidDifficultyCalculator` or `RebalanceDroidDifficultyCalculator` is required for three finger or two hand analyzing.\n */\n beatmap;\n /**\n * The difficulty attributes of the beatmap.\n */\n difficultyAttributes;\n /**\n * The results of the analyzer. `null` when initialized.\n */\n data = null;\n /**\n * Penalty value used to penalize dpp for 2-hand.\n */\n aimPenalty = 1;\n /**\n * Penalty value used to penalize dpp for 3 finger abuse.\n */\n tapPenalty = 1;\n /**\n * Penalty values used to penalize dpp for slider cheesing.\n */\n sliderCheesePenalty = {\n aimPenalty: 1,\n flashlightPenalty: 1,\n visualPenalty: 1,\n };\n /**\n * Whether this replay has been checked against 3 finger usage.\n */\n hasBeenCheckedFor3Finger = false;\n /**\n * Whether this replay has been checked against 2 hand usage.\n */\n hasBeenCheckedFor2Hand = false;\n /**\n * Whether this repla has been checked against slider cheesing.\n */\n hasBeenCheckedForSliderCheesing = false;\n /**\n * The amount of two-handed objects.\n */\n twoHandedNoteCount = 0;\n // Sizes of primitive data types in Java (in bytes)\n BYTE_LENGTH = 1;\n SHORT_LENGTH = 2;\n INT_LENGTH = 4;\n FLOAT_LENGTH = 4;\n LONG_LENGTH = 8;\n constructor(values) {\n this.scoreID = values.scoreID;\n this.beatmap = values.map;\n this.difficultyAttributes = values.difficultyAttributes;\n if (this.beatmap && !(this.beatmap instanceof Beatmap)) {\n this.difficultyAttributes = this.beatmap.attributes;\n }\n }\n /**\n * Analyzes a replay.\n */\n async analyze() {\n if (!this.originalODR && !this.fixedODR) {\n this.originalODR = await this.downloadReplay();\n }\n if (!this.originalODR) {\n return this;\n }\n if (!this.fixedODR) {\n this.fixedODR = await this.decompress().catch(() => null);\n }\n if (!this.fixedODR) {\n return this;\n }\n this.parseReplay();\n return this;\n }\n /**\n * Downloads the given score ID's replay.\n */\n async downloadReplay() {\n const apiRequestBuilder = new DroidAPIRequestBuilder()\n .setRequireAPIkey(false)\n .setEndpoint(\"upload\")\n .addParameter(\"\", `${this.scoreID}.odr`);\n const result = await apiRequestBuilder.sendRequest();\n if (result.statusCode !== 200) {\n return null;\n }\n return result.data;\n }\n /**\n * Decompresses a replay.\n *\n * The decompressed replay is in a form of Java object. This will be converted to a buffer and deserialized to read data from the replay.\n */\n decompress() {\n return new Promise((resolve, reject) => {\n const stream = new Readable();\n stream.push(this.originalODR);\n stream.push(null);\n stream\n .pipe(Parse())\n .on(\"entry\", async (entry) => {\n const fileName = entry.path;\n if (fileName === \"data\") {\n return resolve(await entry.buffer());\n }\n else {\n entry.autodrain();\n }\n })\n .on(\"error\", (e) => {\n setTimeout(() => reject(e), 2000);\n });\n });\n }\n /**\n * Parses a replay after being downloaded and converted to a buffer.\n */\n parseReplay() {\n if (!this.fixedODR) {\n return;\n }\n // javaDeserialization can only somewhat parse some string field\n // the rest will be a buffer that we need to manually parse\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let rawObject;\n try {\n rawObject = javaDeserialization.parse(this.fixedODR);\n }\n catch {\n return;\n }\n const resultObject = {\n replayVersion: rawObject[0].version,\n folderName: rawObject[1],\n fileName: rawObject[2],\n hash: rawObject[3],\n cursorMovement: [],\n hitObjectData: [],\n accuracy: new Accuracy({ n300: 0 }),\n rank: \"\",\n };\n const determineRank = () => {\n const totalHits = resultObject.accuracy.n300 +\n resultObject.accuracy.n100 +\n resultObject.accuracy.n50 +\n resultObject.accuracy.nmiss;\n const isHidden = resultObject.convertedMods?.some((m) => m instanceof ModHidden || m instanceof ModFlashlight) ?? false;\n const hit300Ratio = resultObject.accuracy.n300 / totalHits;\n switch (true) {\n case resultObject.accuracy.value() === 1:\n if (isHidden) {\n resultObject.rank = \"XH\";\n }\n else {\n resultObject.rank = \"X\";\n }\n break;\n case hit300Ratio > 0.9 &&\n resultObject.accuracy.n50 / totalHits < 0.01 &&\n !resultObject.accuracy.nmiss:\n if (isHidden) {\n resultObject.rank = \"SH\";\n }\n else {\n resultObject.rank = \"S\";\n }\n break;\n case (hit300Ratio > 0.8 && !resultObject.accuracy.nmiss) ||\n hit300Ratio > 0.9:\n resultObject.rank = \"A\";\n break;\n case (hit300Ratio > 0.7 && !resultObject.accuracy.nmiss) ||\n hit300Ratio > 0.8:\n resultObject.rank = \"B\";\n break;\n case hit300Ratio > 0.6:\n resultObject.rank = \"C\";\n break;\n default:\n resultObject.rank = \"D\";\n }\n };\n if (resultObject.replayVersion >= 3) {\n resultObject.time = new Date(Number(rawObject[4].readBigUInt64BE(0)));\n resultObject.hit300k = rawObject[4].readInt32BE(8);\n resultObject.hit100k = rawObject[4].readInt32BE(16);\n resultObject.score = rawObject[4].readInt32BE(32);\n resultObject.maxCombo = rawObject[4].readInt32BE(36);\n resultObject.accuracy = new Accuracy({\n n300: rawObject[4].readInt32BE(12),\n n100: rawObject[4].readInt32BE(20),\n n50: rawObject[4].readInt32BE(24),\n nmiss: rawObject[4].readInt32BE(28),\n });\n resultObject.isFullCombo = !!rawObject[4][44];\n resultObject.playerName = rawObject[5];\n resultObject.rawMods = rawObject[6].elements;\n resultObject.convertedMods = ModUtil.droidStringToMods(this.convertDroidMods(rawObject[6].elements));\n determineRank();\n }\n if (resultObject.replayVersion >= 4) {\n const s = rawObject[7].split(\"|\");\n resultObject.speedModification =\n parseFloat(s[0].replace(\"x\", \"\")) || 1;\n if (s.length > 1) {\n resultObject.forcedAR = parseFloat(s[1].replace(\"AR\", \"\"));\n }\n }\n let bufferIndex;\n switch (true) {\n // replay v4 and above\n case resultObject.replayVersion >= 4:\n bufferIndex = 8;\n break;\n // replay v3\n case resultObject.replayVersion === 3:\n bufferIndex = 7;\n break;\n // replay v1 and v2\n default:\n bufferIndex = 4;\n }\n const replayDataBufferArray = [];\n while (bufferIndex < rawObject.length) {\n replayDataBufferArray.push(rawObject[bufferIndex++]);\n }\n // Merge all cursor movement and hit object data section into one for better control when parsing\n const replayDataBuffer = Buffer.concat(replayDataBufferArray);\n let bufferCounter = 0;\n const size = replayDataBuffer.readInt32BE(bufferCounter);\n bufferCounter += this.INT_LENGTH;\n // Parse movement data\n for (let x = 0; x < size; x++) {\n const moveSize = replayDataBuffer.readInt32BE(bufferCounter);\n bufferCounter += this.INT_LENGTH;\n const time = [];\n const x = [];\n const y = [];\n const id = [];\n for (let i = 0; i < moveSize; i++) {\n time[i] = replayDataBuffer.readInt32BE(bufferCounter);\n bufferCounter += this.INT_LENGTH;\n id[i] = time[i] & 3;\n time[i] >>= 2;\n if (id[i] !== MovementType.up) {\n if (resultObject.replayVersion >= 5) {\n x[i] = replayDataBuffer.readFloatBE(bufferCounter);\n bufferCounter += this.FLOAT_LENGTH;\n y[i] = replayDataBuffer.readFloatBE(bufferCounter);\n bufferCounter += this.FLOAT_LENGTH;\n }\n else {\n x[i] = replayDataBuffer.readInt16BE(bufferCounter);\n bufferCounter += this.SHORT_LENGTH;\n y[i] = replayDataBuffer.readInt16BE(bufferCounter);\n bufferCounter += this.SHORT_LENGTH;\n }\n }\n else {\n x[i] = -1;\n y[i] = -1;\n }\n }\n resultObject.cursorMovement.push(new CursorData({\n size: moveSize,\n time: time,\n x: x,\n y: y,\n id: id,\n }));\n }\n const replayObjectLength = replayDataBuffer.readInt32BE(bufferCounter);\n bufferCounter += this.INT_LENGTH;\n // Parse result data\n for (let i = 0; i < replayObjectLength; i++) {\n const replayObjectData = {\n accuracy: 0,\n tickset: [],\n result: HitResult.miss,\n };\n replayObjectData.accuracy =\n replayDataBuffer.readInt16BE(bufferCounter);\n bufferCounter += this.SHORT_LENGTH;\n const len = replayDataBuffer.readInt8(bufferCounter);\n bufferCounter += this.BYTE_LENGTH;\n if (len > 0) {\n const bytes = [];\n for (let j = 0; j < len; j++) {\n bytes.push(replayDataBuffer.readInt8(bufferCounter));\n bufferCounter += this.BYTE_LENGTH;\n }\n // Int/int division in Java; numbers must be truncated to get actual number\n for (let j = 0; j < len * 8; j++) {\n replayObjectData.tickset.push((bytes[len - Math.trunc(j / 8) - 1] &\n (1 << Math.trunc(j % 8))) !==\n 0);\n }\n }\n if (resultObject.replayVersion >= 1) {\n replayObjectData.result =\n replayDataBuffer.readInt8(bufferCounter);\n bufferCounter += this.BYTE_LENGTH;\n }\n resultObject.hitObjectData.push(replayObjectData);\n }\n // Parse max combo, hit results, and accuracy in old replay version\n if (resultObject.replayVersion < 3) {\n const objects = (this.beatmap instanceof DroidDifficultyCalculator ||\n this.beatmap instanceof RebalanceDroidDifficultyCalculator\n ? this.beatmap.beatmap\n : this.beatmap)?.hitObjects.objects;\n let grantsGekiOrKatu = true;\n for (let i = 0; i < resultObject.hitObjectData.length; ++i) {\n // Hit result\n const hitObjectData = resultObject.hitObjectData[i];\n const isNextNewCombo = objects\n ? i + 1 !== objects.length\n ? objects[i + 1].isNewCombo\n : true\n : false;\n switch (hitObjectData.result) {\n case HitResult.miss:\n ++resultObject.accuracy.nmiss;\n grantsGekiOrKatu = false;\n break;\n case HitResult.meh:\n ++resultObject.accuracy.n50;\n grantsGekiOrKatu = false;\n break;\n case HitResult.good:\n ++resultObject.accuracy.n100;\n if (grantsGekiOrKatu && isNextNewCombo) {\n resultObject.hit100k ??= 0;\n ++resultObject.hit100k;\n }\n break;\n case HitResult.great:\n ++resultObject.accuracy.n300;\n if (grantsGekiOrKatu && isNextNewCombo) {\n resultObject.hit300k ??= 0;\n ++resultObject.hit300k;\n }\n break;\n }\n if (isNextNewCombo) {\n grantsGekiOrKatu = true;\n }\n }\n determineRank();\n }\n this.data = new ReplayData(resultObject);\n }\n /**\n * Gets hit error information of the replay.\n *\n * `analyze()` must be called before calling this.\n */\n calculateHitError() {\n if (!this.data || !this.beatmap) {\n return null;\n }\n const hitObjectData = this.data.hitObjectData;\n let positiveCount = 0;\n let negativeCount = 0;\n let positiveTotal = 0;\n let negativeTotal = 0;\n const beatmap = this.beatmap instanceof DroidDifficultyCalculator ||\n this.beatmap instanceof RebalanceDroidDifficultyCalculator\n ? this.beatmap.beatmap\n : this.beatmap;\n const objects = beatmap.hitObjects.objects;\n const stats = new MapStats({\n od: beatmap.difficulty.od,\n mods: this.data.convertedMods.filter((m) => !ModUtil.speedChangingMods.some((v) => v.acronym === m.acronym)),\n }).calculate();\n const hitWindow50 = new DroidHitWindow(stats.od).hitWindowFor50(this.data.convertedMods.some((m) => m instanceof ModPrecise));\n // The accuracy of sliders is set to (50 hit window)ms + 13ms if their head was not hit:\n // https://github.com/osudroid/osu-droid/blob/6306c68e3ffaf671eac794bf45cc95c0f3313a82/src/ru/nsu/ccfit/zuev/osu/game/Slider.java#L821\n //\n // In such cases, the slider is skipped.\n const sliderbreakHitOffset = Math.floor(hitWindow50) + 13;\n const accuracies = [];\n for (let i = 0; i < hitObjectData.length; ++i) {\n const v = hitObjectData[i];\n const o = objects[i];\n if (o instanceof Spinner || v.result === HitResult.miss) {\n accuracies.push(0);\n continue;\n }\n const accuracy = v.accuracy;\n if (o instanceof Slider && v.accuracy === sliderbreakHitOffset) {\n accuracies.push(0);\n continue;\n }\n accuracies.push(accuracy);\n if (accuracy >= 0) {\n positiveTotal += accuracy;\n ++positiveCount;\n }\n else {\n negativeTotal += accuracy;\n ++negativeCount;\n }\n }\n return {\n positiveAvg: positiveTotal / positiveCount || 0,\n negativeAvg: negativeTotal / negativeCount || 0,\n unstableRate: MathUtils.calculateStandardDeviation(accuracies) * 10,\n };\n }\n /**\n * Converts replay mods to droid mod string.\n */\n convertDroidMods(replayMods) {\n const replayModsConstants = {\n MOD_NOFAIL: \"n\",\n MOD_EASY: \"e\",\n MOD_HIDDEN: \"h\",\n MOD_HARDROCK: \"r\",\n MOD_DOUBLETIME: \"d\",\n MOD_HALFTIME: \"t\",\n MOD_NIGHTCORE: \"c\",\n MOD_PRECISE: \"s\",\n MOD_SMALLCIRCLE: \"m\",\n MOD_SPEEDUP: \"b\",\n MOD_REALLYEASY: \"l\",\n MOD_PERFECT: \"f\",\n MOD_SUDDENDEATH: \"u\",\n MOD_SCOREV2: \"v\",\n MOD_FLASHLIGHT: \"i\",\n };\n let modString = \"\";\n for (const mod of replayMods) {\n for (const property in replayModsConstants) {\n if (!mod.includes(property)) {\n continue;\n }\n modString +=\n replayModsConstants[property];\n break;\n }\n }\n return modString;\n }\n /**\n * Checks if a play is using 3 fingers.\n *\n * Requires `analyze()` to be called first and `map` and `difficultyAttributes` to be defined.\n */\n checkFor3Finger() {\n if (!this.beatmap || !this.data || !this.difficultyAttributes) {\n return;\n }\n const threeFingerChecker = new ThreeFingerChecker(this.beatmap instanceof Beatmap\n ? this.beatmap\n : this.beatmap.beatmap, this.data, this.difficultyAttributes);\n const result = threeFingerChecker.check();\n this.is3Finger = result.is3Finger;\n this.tapPenalty = result.penalty;\n this.hasBeenCheckedFor3Finger = true;\n }\n /**\n * Checks if a play is using 2 hands.\n *\n * Requires `analyze()` to be called first and `map` to be defined as `DroidDifficultyCalculator`.\n */\n checkFor2Hand() {\n if (!(this.beatmap instanceof DroidDifficultyCalculator ||\n this.beatmap instanceof RebalanceDroidDifficultyCalculator) ||\n !this.data) {\n return;\n }\n const twoHandChecker = new TwoHandChecker(this.beatmap, this.data);\n const result = twoHandChecker.check();\n this.is2Hand = result.is2Hand;\n this.twoHandedNoteCount = result.twoHandedNoteCount;\n this.hasBeenCheckedFor2Hand = true;\n }\n /**\n * Checks if a play has cheesed sliders.\n *\n * Requires `analyze()` to be called first and `map` and `difficultyAttributes` to be defined.\n */\n checkForSliderCheesing() {\n if (!this.beatmap || !this.data || !this.difficultyAttributes) {\n return;\n }\n const sliderCheeseChecker = new SliderCheeseChecker(this.beatmap instanceof Beatmap\n ? this.beatmap\n : this.beatmap.beatmap, this.data, this.difficultyAttributes);\n this.sliderCheesePenalty = sliderCheeseChecker.check();\n this.hasBeenCheckedForSliderCheesing = true;\n }\n}\n//# sourceMappingURL=ReplayAnalyzer.js.map","/**\n * Represents a hitobject in an osu!droid replay.\n *\n * Stores information about hitobjects in an osu!droid replay such as hit offset, tickset, and hit result.\n *\n * This is used when analyzing replays using replay analyzer.\n */\nexport class ReplayObjectData {\n /**\n * For circles, this is the offset at which the circle was hit. If the hit accuracy is 10000, it means the circle was tapped too late ([game source code](https://github.com/osudroid/osu-droid/blob/6306c68e3ffaf671eac794bf45cc95c0f3313a82/src/ru/nsu/ccfit/zuev/osu/game/HitCircle.java#L298-L306)).\n *\n * For sliders, this is the offset at which the slider head was hit. For\n * sliderbreaks, the accuracy would be `Math.floor(<hit window 50>ms) + 13ms` ([game source code](https://github.com/osudroid/osu-droid/blob/6306c68e3ffaf671eac794bf45cc95c0f3313a82/src/ru/nsu/ccfit/zuev/osu/game/Slider.java#L821)).\n *\n * For spinners, this is the total amount at which the spinner was spinned:\n * ```js\n * const rotations = Math.floor(data.accuracy / 4);\n * ```\n * The remainder of the division denotes the hit result of the spinner:\n * - `HitResult.great`: 3\n * - `HitResult.good`: 2\n * - `HitResult.meh`: 1\n * - `HitResult.miss`: 0\n */\n accuracy;\n /**\n * The tickset of the hitobject.\n *\n * This is used to determine whether or not a slider event (tick, repeat, and end) is hit based on the order they appear.\n */\n tickset;\n /**\n * The bitwise hit result of the hitobject.\n */\n result;\n constructor(values) {\n this.accuracy = values.accuracy;\n this.tickset = values.tickset;\n this.result = values.result;\n }\n}\n//# sourceMappingURL=ReplayObjectData.js.map"],"names":["MovementType","Vector2","HitResult","Accuracy","MapStats","ModUtil","Modes","ModPrecise","DroidHitWindow","MathUtils","BreakPoint","Circle","Spinner","Slider","Utils","Interpolation","CircleSizeCalculator","SliderTail","Beatmap","DroidAPIRequestBuilder","Readable","Parse","javaDeserialization","ModHidden","ModFlashlight","DroidDifficultyCalculator","RebalanceDroidDifficultyCalculator"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/constants/MovementType.ts","../src/data/CursorOccurrence.ts","../src/data/CursorOccurrenceGroup.ts","../src/data/CursorData.ts","../src/constants/HitResult.ts","../src/data/ReplayData.ts","../src/analysis/ThreeFingerChecker.ts","../src/analysis/objects/IndexedHitObject.ts","../src/analysis/TwoHandChecker.ts","../src/analysis/SliderCheeseChecker.ts","../src/ReplayAnalyzer.ts","../src/data/ReplayObjectData.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null],"names":["MovementType","Vector2","HitResult","Accuracy","MapStats","ModUtil","Modes","ModPrecise","DroidHitWindow","MathUtils","BreakPoint","Circle","Spinner","Slider","Utils","Interpolation","CircleSizeCalculator","SliderTail","Beatmap","DroidAPIRequestBuilder","Readable","Parse","javaDeserialization","ModHidden","ModFlashlight","DroidDifficultyCalculator","RebalanceDroidDifficultyCalculator"],"mappings":"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"}
|
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.15",
|
|
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.15",
|
|
38
|
+
"@rian8337/osu-difficulty-calculator": "^4.0.0-beta.15",
|
|
39
|
+
"@rian8337/osu-rebalance-difficulty-calculator": "^4.0.0-beta.15",
|
|
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": "5f129478c70d3af938cde6c311863ee07e0fab16"
|
|
50
50
|
}
|
package/typings/index.d.ts
CHANGED
|
@@ -422,17 +422,41 @@ interface ReplayInformation {
|
|
|
422
422
|
*/
|
|
423
423
|
convertedMods?: (Mod & IModApplicableToDroid)[];
|
|
424
424
|
/**
|
|
425
|
-
* The speed
|
|
425
|
+
* The speed multiplier of the replay.
|
|
426
426
|
*
|
|
427
427
|
* Only available in replay v4 or later. By default this is 1.
|
|
428
428
|
*/
|
|
429
|
-
|
|
429
|
+
speedMultiplier?: number;
|
|
430
430
|
/**
|
|
431
|
-
* The
|
|
431
|
+
* The force CS of the replay.
|
|
432
|
+
*
|
|
433
|
+
* Only available in replay v5 or later.
|
|
434
|
+
*/
|
|
435
|
+
forceCS?: number;
|
|
436
|
+
/**
|
|
437
|
+
* The force AR of the replay.
|
|
432
438
|
*
|
|
433
439
|
* Only available in replay v4 or later.
|
|
434
440
|
*/
|
|
435
|
-
|
|
441
|
+
forceAR?: number;
|
|
442
|
+
/**
|
|
443
|
+
* The force OD of the replay.
|
|
444
|
+
*
|
|
445
|
+
* Only available in replay v5 or later.
|
|
446
|
+
*/
|
|
447
|
+
forceOD?: number;
|
|
448
|
+
/**
|
|
449
|
+
* The force HP of the replay.
|
|
450
|
+
*
|
|
451
|
+
* Only available in replay v5 or later.
|
|
452
|
+
*/
|
|
453
|
+
forceHP?: number;
|
|
454
|
+
/**
|
|
455
|
+
* The follow delay set for the FL mod, in seconds.
|
|
456
|
+
*
|
|
457
|
+
* Only available in replay v5 orlater. By default this is 0.12.
|
|
458
|
+
*/
|
|
459
|
+
flashlightFollowDelay?: number;
|
|
436
460
|
/**
|
|
437
461
|
* The cursor movement data of the replay.
|
|
438
462
|
*/
|
|
@@ -467,8 +491,12 @@ declare class ReplayData implements ReplayInformation {
|
|
|
467
491
|
readonly convertedMods: (Mod & IModApplicableToDroid)[];
|
|
468
492
|
readonly cursorMovement: CursorData[];
|
|
469
493
|
readonly hitObjectData: ReplayObjectData[];
|
|
470
|
-
readonly
|
|
471
|
-
readonly
|
|
494
|
+
readonly speedMultiplier: number;
|
|
495
|
+
readonly forceCS?: number;
|
|
496
|
+
readonly forceAR?: number;
|
|
497
|
+
readonly forceOD?: number;
|
|
498
|
+
readonly forceHP?: number;
|
|
499
|
+
readonly flashlightFollowDelay?: number;
|
|
472
500
|
constructor(values: ReplayInformation);
|
|
473
501
|
}
|
|
474
502
|
|