restructured workspace into single crate
This commit is contained in:
@@ -1,2 +1,3 @@
|
||||
/target
|
||||
Cargo.lock
|
||||
/maps
|
||||
+8
-8
@@ -1,8 +1,8 @@
|
||||
[workspace]
|
||||
members = [
|
||||
"fruits",
|
||||
"mania",
|
||||
"osu",
|
||||
"parse",
|
||||
"taiko",
|
||||
]
|
||||
[package]
|
||||
name = "rosu-pp"
|
||||
version = "0.1.0"
|
||||
authors = ["MaxOhn <ohn.m@hotmail.de>"]
|
||||
edition = "2018"
|
||||
|
||||
[dependencies.lazy_static]
|
||||
version = "1.4"
|
||||
@@ -1,2 +0,0 @@
|
||||
/target
|
||||
Cargo.lock
|
||||
@@ -1,10 +0,0 @@
|
||||
[package]
|
||||
name = "fruits"
|
||||
version = "0.1.0"
|
||||
authors = ["MaxOhn <ohn.m@hotmail.de>"]
|
||||
edition = "2018"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies.parse]
|
||||
path = "../parse"
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@@ -1,411 +0,0 @@
|
||||
osu file format v14
|
||||
|
||||
[General]
|
||||
AudioFilename: audio.mp3
|
||||
AudioLeadIn: 0
|
||||
PreviewTime: 34971
|
||||
Countdown: 0
|
||||
SampleSet: Soft
|
||||
StackLeniency: 0.7
|
||||
Mode: 2
|
||||
LetterboxInBreaks: 0
|
||||
WidescreenStoryboard: 0
|
||||
|
||||
[Editor]
|
||||
DistanceSpacing: 1.4
|
||||
BeatDivisor: 4
|
||||
GridSize: 8
|
||||
TimelineZoom: 2.2
|
||||
|
||||
[Metadata]
|
||||
Title:fffff
|
||||
TitleUnicode:ƒƒƒƒƒ
|
||||
Artist:Five Hammer
|
||||
ArtistUnicode:Five Hammer
|
||||
Creator:Ascendance
|
||||
Version:MBomb's Normal
|
||||
Source:pop'n music 13 カーニバル
|
||||
Tags:Seiya Murai 村井聖夜 beatmania IIDX 15 DJ TROOPERS 19 Lincle HELLO! REFLEC BEAT groovin'!! plus ポップンリズミン rhythmin sanyi sanyi4life mbomb -_magic_bomb_- jbhyperion jbh rocma no492_shaymin _asriel examination yumeno_himiko -plus- chara osu_gangster ster sinnoh
|
||||
BeatmapID:1974968
|
||||
BeatmapSetID:841569
|
||||
|
||||
[Difficulty]
|
||||
HPDrainRate:4
|
||||
CircleSize:3
|
||||
OverallDifficulty:7
|
||||
ApproachRate:7
|
||||
SliderMultiplier:1.65
|
||||
SliderTickRate:1
|
||||
|
||||
[Events]
|
||||
//Background and Video events
|
||||
0,0,"cropped-1920-1080-415259.jpg",0,0
|
||||
//Break Periods
|
||||
//Storyboard Layer 0 (Background)
|
||||
//Storyboard Layer 1 (Fail)
|
||||
//Storyboard Layer 2 (Pass)
|
||||
//Storyboard Layer 3 (Foreground)
|
||||
//Storyboard Sound Samples
|
||||
|
||||
[TimingPoints]
|
||||
1167,434.782608695652,4,2,1,45,1,0
|
||||
4427,-100,4,2,1,45,0,0
|
||||
4645,-100,4,2,1,55,0,0
|
||||
8123,-100,4,2,1,60,0,0
|
||||
35080,-100,4,2,2,60,0,0
|
||||
35949,-100,4,2,1,65,0,1
|
||||
36166,-100,4,2,1,65,0,1
|
||||
38884,-100,4,2,1,65,0,1
|
||||
39210,-100,4,2,1,65,0,1
|
||||
45840,-100,4,2,1,65,0,1
|
||||
46166,-100,4,2,1,65,0,1
|
||||
49862,-100,4,2,1,60,0,0
|
||||
51058,-100,4,2,1,60,0,0
|
||||
51601,-100,4,2,3,60,0,0
|
||||
54536,-100,4,2,1,60,0,0
|
||||
54862,-100,4,2,1,60,0,0
|
||||
55080,-100,4,2,3,60,0,0
|
||||
60297,-100,4,2,1,60,0,0
|
||||
63340,-100,4,2,1,60,0,0
|
||||
63775,-100,4,2,1,70,0,1
|
||||
75949,-100,4,2,3,70,0,1
|
||||
76384,-100,4,2,3,70,0,1
|
||||
77688,-100,4,2,3,65,0,0
|
||||
77797,-100,4,2,1,65,0,0
|
||||
89862,-100,4,2,3,65,0,0
|
||||
91601,-100,4,2,3,60,0,0
|
||||
91710,-100,4,2,1,60,0,0
|
||||
96819,-100,4,2,1,80,0,1
|
||||
98558,-100,4,2,1,80,0,0
|
||||
99210,-100,4,2,1,80,0,1
|
||||
99862,-100,4,2,1,80,0,0
|
||||
|
||||
|
||||
[Colours]
|
||||
Combo1 : 255,81,255
|
||||
Combo2 : 255,64,64
|
||||
Combo3 : 255,139,83
|
||||
Combo4 : 255,255,100
|
||||
Combo5 : 0,202,0
|
||||
Combo6 : 0,221,221
|
||||
Combo7 : 0,128,255
|
||||
|
||||
[HitObjects]
|
||||
112,192,1167,6,0,L|296:192,1,165,0|0,0:0|0:0,0:0:0:0:
|
||||
128,192,2036,2,0,L|312:192,1,165,0|0,0:0|0:0,0:0:0:0:
|
||||
496,192,2906,6,0,L|304:192,1,165,0|0,0:0|0:0,0:0:0:0:
|
||||
176,192,3775,2,0,L|368:192,1,165,0|0,0:0|0:0,0:0:0:0:
|
||||
248,192,4427,1,8,0:0:0:0:
|
||||
144,192,4645,6,0,L|40:192,1,82.5,2|8,0:0|0:0,0:0:0:0:
|
||||
176,192,5080,2,0,L|272:192,1,82.5,2|8,0:0|0:0,0:0:0:0:
|
||||
160,192,5514,2,0,L|256:192,1,82.5,2|8,0:0|0:0,0:0:0:0:
|
||||
352,192,5949,2,0,L|256:192,1,82.5,2|8,0:0|0:0,0:0:0:0:
|
||||
144,192,6384,6,0,P|88:176|80:152,1,82.5,2|8,0:0|0:0,0:0:0:0:
|
||||
184,192,6819,2,0,L|88:192,1,82.5,2|8,0:0|0:0,0:0:0:0:
|
||||
232,192,7253,2,0,L|328:192,1,82.5,2|8,0:0|0:0,0:0:0:0:
|
||||
184,192,7688,2,0,L|80:192,1,82.5,2|8,0:0|0:0,0:0:0:0:
|
||||
314,192,8123,6,0,L|418:192,1,82.5,6|8,0:0|0:0,0:0:0:0:
|
||||
280,192,8558,1,2,0:0:0:0:
|
||||
336,192,8666,1,0,0:0:0:0:
|
||||
392,192,8775,1,8,0:0:0:0:
|
||||
280,192,8993,6,0,L|208:192,2,41.25,0|2|8,0:0|0:0|0:0,0:0:0:0:
|
||||
408,192,9427,1,2,0:0:0:0:
|
||||
352,192,9535,1,0,0:0:0:0:
|
||||
296,192,9644,1,8,0:0:0:0:
|
||||
168,192,9862,6,0,L|88:192,2,41.25,2|0|8,0:0|0:0|0:0,0:0:0:0:
|
||||
296,192,10297,1,2,0:0:0:0:
|
||||
352,192,10406,1,0,0:0:0:0:
|
||||
408,192,10514,1,8,0:0:0:0:
|
||||
296,192,10732,6,0,L|200:192,1,82.5,0|8,0:0|0:0,0:0:0:0:
|
||||
312,192,11166,2,0,L|224:192,1,82.5,2|8,0:0|0:0,0:0:0:0:
|
||||
352,192,11601,6,0,L|416:192,2,41.25,2|0|8,0:0|0:0|0:0,0:0:0:0:
|
||||
240,192,12036,2,0,L|328:192,1,82.5,2|8,0:0|0:0,0:0:0:0:
|
||||
424,192,12471,6,0,L|328:192,1,82.5,0|8,0:0|0:0,0:0:0:0:
|
||||
248,192,12906,2,0,L|136:192,1,82.5,2|8,0:0|0:0,0:0:0:0:
|
||||
280,192,13340,5,2,0:0:0:0:
|
||||
224,192,13449,1,0,0:0:0:0:
|
||||
168,192,13558,1,8,0:0:0:0:
|
||||
280,192,13775,1,2,0:0:0:0:
|
||||
336,192,13884,1,0,0:0:0:0:
|
||||
392,192,13993,1,8,0:0:0:0:
|
||||
296,192,14210,6,0,L|192:192,1,82.5,2|8,0:0|0:0,0:0:0:0:
|
||||
304,192,14645,2,0,L|408:192,1,82.5,2|8,0:0|0:0,0:0:0:0:
|
||||
168,192,15080,6,0,L|80:192,1,82.5,2|8,0:0|0:0,0:0:0:0:
|
||||
200,192,15514,2,0,L|256:192,2,41.25,2|0|8,0:0|0:0|0:0,0:0:0:0:
|
||||
85,192,15949,5,0,0:0:0:0:
|
||||
136,192,16058,1,2,0:0:0:0:
|
||||
192,192,16166,1,8,0:0:0:0:
|
||||
320,192,16384,1,2,0:0:0:0:
|
||||
264,192,16493,1,0,0:0:0:0:
|
||||
208,192,16601,1,8,0:0:0:0:
|
||||
336,192,16819,5,2,0:0:0:0:
|
||||
280,192,16928,1,0,0:0:0:0:
|
||||
224,192,17036,1,8,0:0:0:0:
|
||||
352,192,17253,2,0,L|416:192,2,41.25,2|0|8,0:0|0:0|0:0,0:0:0:0:
|
||||
240,192,17688,6,0,L|152:192,1,82.5,0|8,0:0|0:0,0:0:0:0:
|
||||
264,192,18123,2,0,L|360:192,1,82.5,2|8,0:0|0:0,0:0:0:0:
|
||||
232,192,18558,5,2,0:0:0:0:
|
||||
288,192,18666,1,0,0:0:0:0:
|
||||
344,184,18775,1,8,0:0:0:0:
|
||||
448,192,18993,2,0,L|360:192,1,82.5,2|8,0:0|0:0,0:0:0:0:
|
||||
264,192,19427,6,0,L|352:192,1,82.5,0|8,0:0|0:0,0:0:0:0:
|
||||
432,192,19862,2,0,L|344:192,1,82.5,2|8,0:0|0:0,0:0:0:0:
|
||||
240,192,20297,6,0,L|152:192,3,82.5,2|8|2|8,0:0|0:0|0:0|0:0,0:0:0:0:
|
||||
272,192,21166,6,0,L|360:192,1,82.5,2|8,0:0|0:0,0:0:0:0:
|
||||
248,192,21601,2,0,L|336:192,1,82.5,2|8,0:0|0:0,0:0:0:0:
|
||||
128,192,22036,6,0,L|24:192,1,82.5,6|8,0:0|0:0,0:0:0:0:
|
||||
168,192,22471,1,6,3:0:0:0:
|
||||
112,192,22580,1,0,0:0:0:0:
|
||||
56,192,22688,1,8,0:0:0:0:
|
||||
168,192,22906,5,0,0:0:0:0:
|
||||
224,192,23014,1,2,0:0:0:0:
|
||||
280,192,23123,1,8,0:0:0:0:
|
||||
152,192,23340,2,0,L|96:192,2,41.25,6|0|8,0:3|0:0|0:0,0:0:0:0:
|
||||
280,192,23775,5,2,0:0:0:0:
|
||||
336,192,23883,1,0,0:0:0:0:
|
||||
392,192,23992,1,8,0:0:0:0:
|
||||
272,192,24210,1,6,3:0:0:0:
|
||||
328,192,24318,1,0,0:0:0:0:
|
||||
384,192,24427,1,8,0:0:0:0:
|
||||
272,192,24645,6,0,L|176:192,1,82.5,0|8,0:0|0:0,0:0:0:0:
|
||||
288,192,25080,2,0,L|200:192,1,82.5,6|8,0:3|0:0,0:0:0:0:
|
||||
88,192,25514,6,0,L|24:192,2,41.25,2|0|8,0:0|0:0|0:0,0:0:0:0:
|
||||
192,192,25949,2,0,L|104:192,1,82.5,6|8,3:0|0:0,0:0:0:0:
|
||||
224,192,26384,6,0,L|320:192,1,82.5,0|8,0:0|0:0,0:0:0:0:
|
||||
208,192,26819,2,0,L|120:192,1,82.5,6|8,0:3|0:0,0:0:0:0:
|
||||
232,192,27253,6,0,L|280:192,2,41.25,2|0|8,0:0|0:0|0:0,0:0:0:0:
|
||||
328,192,27688,2,0,L|384:192,2,41.25,6|0|8,3:0|0:0|0:0,0:0:0:0:
|
||||
224,192,28123,6,0,L|320:192,1,82.5,2|8,0:0|0:0,0:0:0:0:
|
||||
216,192,28558,2,0,L|120:192,1,82.5,6|8,0:3|0:0,0:0:0:0:
|
||||
360,192,28993,6,0,L|248:192,1,82.5,2|8,0:0|0:0,0:0:0:0:
|
||||
168,192,29427,1,6,3:0:0:0:
|
||||
224,192,29536,1,0,0:0:0:0:
|
||||
277,192,29645,1,8,0:0:0:0:
|
||||
392,192,29862,6,0,L|448:192,2,41.25,0|2|8,0:0|0:0|0:0,0:0:0:0:
|
||||
264,184,30297,1,6,0:3:0:0:
|
||||
320,192,30406,1,0,0:0:0:0:
|
||||
376,192,30514,1,8,0:0:0:0:
|
||||
256,192,30732,6,0,L|200:192,2,41.25,2|0|8,0:0|0:0|0:0,0:0:0:0:
|
||||
384,192,31166,2,0,L|432:192,2,41.25,6|0|8,3:0|0:0|0:0,0:0:0:0:
|
||||
280,192,31601,6,0,L|376:192,1,82.5,0|8,0:0|0:0,0:0:0:0:
|
||||
456,192,32036,2,0,L|352:192,1,82.5,6|8,0:3|0:0,0:0:0:0:
|
||||
248,192,32471,5,2,0:0:0:0:
|
||||
192,192,32580,1,0,0:0:0:0:
|
||||
136,192,32688,1,8,0:0:0:0:
|
||||
24,192,32906,2,0,L|128:192,1,82.5,6|8,3:0|0:0,0:0:0:0:
|
||||
208,192,33340,6,0,L|328:192,1,82.5,0|8,0:0|0:0,0:0:0:0:
|
||||
192,192,33775,2,0,L|296:192,1,82.5,6|8,0:3|0:0,0:0:0:0:
|
||||
392,192,34210,6,0,L|488:192,3,82.5,2|8|6|8,0:0|0:0|3:0|0:0,0:0:0:0:
|
||||
256,192,35080,1,4,0:0:0:0:
|
||||
424,192,35406,1,4,0:0:0:0:
|
||||
256,192,35732,1,4,0:0:0:0:
|
||||
32,192,35949,5,6,0:0:0:0:
|
||||
48,192,36058,1,0,0:0:0:0:
|
||||
80,192,36166,1,8,0:0:0:0:
|
||||
128,192,36275,1,0,0:0:0:0:
|
||||
192,192,36384,1,2,0:0:0:0:
|
||||
376,192,36819,1,2,0:0:0:0:
|
||||
224,192,37145,2,0,L|360:192,1,123.75,2|8,0:0|0:0,0:0:0:0:
|
||||
120,192,37688,6,0,L|120:96,1,82.5,2|8,0:0|0:0,0:0:0:0:
|
||||
232,192,38123,2,0,L|232:104,1,82.5,2|8,0:0|0:0,0:0:0:0:
|
||||
120,192,38558,2,0,L|56:192,2,41.25,2|0|10,0:0|0:0|0:0,0:0:0:0:
|
||||
192,192,38884,2,0,L|328:192,1,123.75,2|8,0:0|0:0,0:0:0:0:
|
||||
192,192,39427,5,2,0:0:0:0:
|
||||
312,192,39645,2,0,L|408:192,1,82.5,8|2,0:0|0:0,0:0:0:0:
|
||||
280,192,40080,1,8,0:0:0:0:
|
||||
496,192,40297,2,0,L|368:192,2,123.75,2|2|8,0:0|0:0|0:0,0:0:0:0:
|
||||
272,192,41166,6,0,L|152:192,1,82.5,2|8,0:0|0:0,0:0:0:0:
|
||||
304,192,41601,2,0,L|424:192,1,82.5,2|8,0:0|0:0,0:0:0:0:
|
||||
272,192,42036,2,0,L|424:192,2,123.75,2|2|8,0:0|0:0|0:0,0:0:0:0:
|
||||
496,192,42906,5,6,0:0:0:0:
|
||||
384,192,43123,2,0,L|288:192,2,82.5,8|2|8,0:0|0:0|0:0,0:0:0:0:
|
||||
272,192,43775,1,2,0:0:0:0:
|
||||
104,192,44101,2,0,L|240:192,1,123.75,2|8,0:0|0:0,0:0:0:0:
|
||||
456,192,44645,6,0,L|456:104,1,82.5,2|8,0:0|0:0,0:0:0:0:
|
||||
336,192,45080,2,0,L|336:104,1,82.5,2|8,0:0|0:0,0:0:0:0:
|
||||
456,192,45514,1,2,0:0:0:0:
|
||||
288,192,45840,2,0,L|144:192,1,123.75,2|8,0:0|0:0,0:0:0:0:
|
||||
288,192,46384,5,2,0:0:0:0:
|
||||
184,192,46601,2,0,L|280:192,1,82.5,8|2,0:0|0:0,0:0:0:0:
|
||||
384,192,47036,1,8,0:0:0:0:
|
||||
160,192,47253,2,0,L|32:192,2,123.75,2|2|8,0:0|0:0|0:0,0:0:0:0:
|
||||
384,192,48123,6,0,L|272:192,1,82.5,2|8,0:0|0:0,0:0:0:0:
|
||||
424,192,48558,1,2,0:0:0:0:
|
||||
301,192,48775,1,8,0:0:0:0:
|
||||
176,192,48993,2,0,L|128:192,2,41.25,2|0|10,0:0|0:0|0:0,0:0:0:0:
|
||||
336,192,49536,1,2,0:0:0:0:
|
||||
56,192,49862,5,2,0:0:0:0:
|
||||
152,192,50080,1,8,0:0:0:0:
|
||||
248,192,50297,1,2,0:0:0:0:
|
||||
344,192,50514,1,8,0:0:0:0:
|
||||
232,192,50732,6,0,L|184:192,1,41.25,2|0,0:0|0:0,0:0:0:0:
|
||||
304,192,51058,1,2,0:0:0:0:
|
||||
424,192,51275,2,0,L|360:192,1,41.25,2|8,0:0|0:0,0:0:0:0:
|
||||
272,192,51601,5,2,0:0:0:0:
|
||||
384,192,51819,1,12,0:0:0:0:
|
||||
328,192,51927,1,2,0:0:0:0:
|
||||
272,192,52036,1,2,0:0:0:0:
|
||||
160,192,52253,1,12,1:0:0:0:
|
||||
272,192,52471,5,2,0:0:0:0:
|
||||
160,192,52689,1,12,0:0:0:0:
|
||||
216,192,52797,1,2,0:0:0:0:
|
||||
272,192,52906,1,2,0:0:0:0:
|
||||
384,192,53123,1,12,1:0:0:0:
|
||||
160,192,53340,5,2,0:0:0:0:
|
||||
256,192,53558,1,8,0:0:0:0:
|
||||
160,192,53775,1,2,0:0:0:0:
|
||||
256,192,53993,1,8,0:0:0:0:
|
||||
144,192,54210,6,0,L|16:192,2,123.75,2|2|8,0:0|0:0|0:0,0:0:0:0:
|
||||
264,192,55080,5,2,0:0:0:0:
|
||||
144,192,55297,1,12,0:0:0:0:
|
||||
88,192,55406,1,2,0:0:0:0:
|
||||
32,192,55514,1,2,0:0:0:0:
|
||||
152,192,55732,1,12,1:0:0:0:
|
||||
256,192,55949,5,2,0:0:0:0:
|
||||
376,192,56166,1,12,0:0:0:0:
|
||||
432,192,56275,1,2,0:0:0:0:
|
||||
488,192,56383,1,2,0:0:0:0:
|
||||
368,192,56601,1,12,1:0:0:0:
|
||||
144,192,56819,5,2,0:0:0:0:
|
||||
48,192,57036,1,8,0:0:0:0:
|
||||
160,192,57253,1,2,0:0:0:0:
|
||||
48,192,57471,1,8,0:0:0:0:
|
||||
168,192,57688,6,0,L|320:192,2,123.75,2|2|8,0:0|0:0|0:0,0:0:0:0:
|
||||
40,192,58558,5,2,0:0:0:0:
|
||||
168,192,58775,1,12,0:0:0:0:
|
||||
112,192,58884,1,2,0:0:0:0:
|
||||
56,192,58993,1,2,0:0:0:0:
|
||||
184,192,59210,1,12,1:0:0:0:
|
||||
296,192,59427,5,2,0:0:0:0:
|
||||
168,192,59644,1,12,0:0:0:0:
|
||||
224,192,59753,1,2,0:0:0:0:
|
||||
280,192,59862,1,2,0:0:0:0:
|
||||
152,192,60079,1,12,1:0:0:0:
|
||||
376,192,60297,5,2,0:0:0:0:
|
||||
272,192,60514,1,8,0:0:0:0:
|
||||
152,192,60732,1,2,0:0:0:0:
|
||||
272,192,60949,1,8,0:0:0:0:
|
||||
144,192,61166,6,0,L|296:192,2,123.75,2|2|8,0:0|0:0|0:0,0:0:0:0:
|
||||
272,192,62036,5,2,0:0:0:0:
|
||||
144,192,62253,1,8,0:0:0:0:
|
||||
200,192,62362,1,2,0:0:0:0:
|
||||
256,192,62471,1,2,0:0:0:0:
|
||||
128,192,62688,1,8,0:0:0:0:
|
||||
16,192,62906,5,2,0:0:0:0:
|
||||
144,192,63123,1,8,0:0:0:0:
|
||||
200,192,63232,1,2,0:0:0:0:
|
||||
256,192,63341,1,2,0:0:0:0:
|
||||
192,192,63449,1,2,0:0:0:0:
|
||||
128,192,63558,1,8,0:0:0:0:
|
||||
352,192,63775,5,6,0:0:0:0:
|
||||
472,192,63993,2,0,L|376:192,2,82.5,8|2|8,0:0|0:0|0:0,0:0:0:0:
|
||||
360,192,64645,2,0,L|304:192,1,41.25,2|0,0:0|0:0,0:0:0:0:
|
||||
432,192,64971,2,0,L|288:192,1,123.75,2|8,0:0|0:0,0:0:0:0:
|
||||
208,192,65514,5,2,0:0:0:0:
|
||||
320,192,65732,1,8,0:0:0:0:
|
||||
208,192,65949,2,0,L|144:192,1,41.25,2|2,0:0|0:0,0:0:0:0:
|
||||
280,192,66275,1,0,0:0:0:0:
|
||||
400,192,66493,2,0,L|504:192,1,82.5,0|2,0:0|0:0,0:0:0:0:
|
||||
360,192,66982,1,2,0:0:0:0:
|
||||
208,192,67253,5,2,0:0:0:0:
|
||||
96,192,67471,1,8,0:0:0:0:
|
||||
40,192,67580,1,0,0:0:0:0:
|
||||
40,192,67688,1,2,0:0:0:0:
|
||||
96,192,67797,1,2,0:0:0:0:
|
||||
208,192,68014,2,0,L|104:192,2,82.5,0|0|2,0:0|0:0|0:0,0:0:0:0:
|
||||
328,192,68666,2,0,L|384:192,1,41.25,2|8,0:0|0:0,0:0:0:0:
|
||||
240,192,68993,6,0,L|184:192,2,41.25,2|0|8,0:0|0:0|0:0,0:0:0:0:
|
||||
296,192,69319,2,0,L|392:192,1,82.5,0|2,0:0|0:0,0:0:0:0:
|
||||
312,192,69645,1,8,0:0:0:0:
|
||||
264,192,69753,1,0,0:0:0:0:
|
||||
432,192,70080,1,10,0:0:0:0:
|
||||
264,192,70514,1,8,0:0:0:0:
|
||||
50,191,70732,6,0,L|146:191,1,82.5,2|8,0:0|0:0,0:0:0:0:
|
||||
240,192,71166,2,0,L|152:192,1,82.5,2|8,0:0|0:0,0:0:0:0:
|
||||
272,192,71601,2,0,L|176:192,1,82.5,2|10,0:0|0:0,0:0:0:0:
|
||||
312,192,72036,2,0,L|416:192,1,82.5,0|8,0:0|0:0,0:0:0:0:
|
||||
168,192,72471,6,0,L|80:192,1,82.5,2|8,0:0|0:0,0:0:0:0:
|
||||
200,192,72906,2,0,L|304:192,1,82.5,2|8,0:0|0:0,0:0:0:0:
|
||||
176,192,73340,2,0,L|272:192,1,82.5,2|10,0:0|0:0,0:0:0:0:
|
||||
152,192,73775,2,0,L|64:192,1,82.5,0|8,0:0|0:0,0:0:0:0:
|
||||
296,192,74210,6,0,L|392:192,1,82.5,2|8,0:0|0:0,0:0:0:0:
|
||||
272,192,74645,2,0,L|360:192,1,82.5,2|8,0:0|0:0,0:0:0:0:
|
||||
461,192,75080,2,0,L|365:192,1,82.5,2|10,0:0|0:0,0:0:0:0:
|
||||
160,192,75514,1,0,0:0:0:0:
|
||||
160,192,75732,1,8,0:0:0:0:
|
||||
384,184,75949,5,6,0:0:0:0:
|
||||
192,192,76384,1,6,1:0:0:0:
|
||||
16,192,76819,2,0,L|160:112,1,165,6|6,0:0|1:0,0:0:0:0:
|
||||
496,192,77688,5,6,0:0:0:0:
|
||||
344,192,78014,1,0,0:0:0:0:
|
||||
496,192,78340,1,8,0:0:0:0:
|
||||
344,192,78666,1,2,0:0:0:0:
|
||||
192,192,78993,2,0,L|312:192,1,82.5,2|8,0:0|0:0,0:0:0:0:
|
||||
48,192,79427,5,2,0:0:0:0:
|
||||
200,192,79753,1,0,0:0:0:0:
|
||||
48,192,80079,1,8,0:0:0:0:
|
||||
200,192,80405,1,2,0:0:0:0:
|
||||
352,192,80732,2,0,L|232:192,1,82.5,2|8,0:0|0:0,0:0:0:0:
|
||||
48,192,81166,6,0,L|16:144,2,55,2|0|0,0:0|0:0|0:0,0:0:0:0:
|
||||
128,192,81601,1,2,0:0:0:0:
|
||||
200,192,81746,1,0,0:0:0:0:
|
||||
256,192,81891,1,0,0:0:0:0:
|
||||
192,192,82036,6,0,L|128:192,2,55,2|0|0,0:0|0:0|0:0,0:0:0:0:
|
||||
264,192,82471,1,2,0:0:0:0:
|
||||
344,192,82616,1,0,0:0:0:0:
|
||||
224,192,82906,5,2,0:0:0:0:
|
||||
360,192,83232,1,0,0:0:0:0:
|
||||
232,192,83485,1,0,0:0:0:0:
|
||||
160,192,83630,1,0,0:0:0:0:
|
||||
240,192,83775,6,0,L|304:192,1,55,2|0,0:0|0:0,0:0:0:0:
|
||||
224,192,84065,2,0,P|112:160|96:144,1,137.5,0|8,0:0|0:0,0:0:0:0:
|
||||
224,192,84645,6,0,L|80:192,1,123.75,2|0,0:0|0:0,0:0:0:0:
|
||||
248,192,85297,2,0,L|312:192,1,41.25,8|2,0:0|0:0,0:0:0:0:
|
||||
224,192,85514,1,2,0:0:0:0:
|
||||
112,192,85732,1,8,0:0:0:0:
|
||||
224,192,85949,2,0,L|296:192,2,55,2|0|0,0:0|0:0|0:0,0:0:0:0:
|
||||
144,192,86384,5,2,0:0:0:0:
|
||||
72,192,86529,1,0,0:0:0:0:
|
||||
16,192,86674,1,0,0:0:0:0:
|
||||
88,192,86819,1,2,0:0:0:0:
|
||||
160,192,86964,1,0,0:0:0:0:
|
||||
88,192,87109,1,0,0:0:0:0:
|
||||
16,192,87253,1,2,0:0:0:0:
|
||||
136,192,87471,2,0,L|304:192,1,165,8|8,0:0|0:0,0:0:0:0:
|
||||
192,192,88123,6,0,L|64:192,1,123.75,2|0,0:0|0:0,0:0:0:0:
|
||||
128,192,88558,1,2,0:0:0:0:
|
||||
168,192,88630,1,0,0:0:0:0:
|
||||
168,192,88703,1,0,0:0:0:0:
|
||||
128,192,88775,1,8,0:0:0:0:
|
||||
272,192,89101,1,2,0:0:0:0:
|
||||
112,192,89427,1,2,0:0:0:0:
|
||||
232,192,89645,1,8,0:0:0:0:
|
||||
456,192,89862,6,0,L|456:96,1,82.5,6|8,0:0|0:0,0:0:0:0:
|
||||
328,192,90297,2,0,L|424:192,1,82.5,6|8,1:0|0:0,0:0:0:0:
|
||||
184,192,90732,2,0,L|88:192,1,82.5,6|8,0:0|0:0,0:0:0:0:
|
||||
216,192,91166,2,0,L|312:192,1,82.5,6|8,1:0|0:0,0:0:0:0:
|
||||
72,192,91601,6,0,L|24:120,1,82.5,6|8,0:0|0:0,0:0:0:0:
|
||||
144,192,92036,2,0,L|240:192,1,82.5,6|8,3:0|0:0,0:0:0:0:
|
||||
328,192,92471,2,0,L|432:192,1,82.5,2|8,0:0|0:0,0:0:0:0:
|
||||
296,192,92906,2,0,L|392:192,1,82.5,6|8,3:0|0:0,0:0:0:0:
|
||||
264,192,93340,6,0,L|176:192,1,82.5,2|8,0:0|0:0,0:0:0:0:
|
||||
296,192,93775,2,0,L|208:192,1,82.5,6|8,3:0|0:0,0:0:0:0:
|
||||
99,192,94210,2,0,L|187:192,1,82.5,2|8,0:0|0:0,0:0:0:0:
|
||||
67,192,94645,2,0,L|155:192,1,82.5,6|8,3:0|0:0,0:0:0:0:
|
||||
376,192,95080,6,0,L|424:192,1,41.25,2|2,0:0|0:0,0:0:0:0:
|
||||
312,192,95406,1,0,0:0:0:0:
|
||||
240,192,95514,2,0,L|136:192,1,82.5,6|8,3:0|0:0,0:0:0:0:
|
||||
280,192,95949,6,0,L|392:192,1,82.5,2|8,0:0|0:0,0:0:0:0:
|
||||
488,192,96384,2,0,L|392:192,1,82.5,6|8,3:0|0:0,0:0:0:0:
|
||||
184,192,96819,5,2,0:0:0:0:
|
||||
128,192,96927,1,2,0:0:0:0:
|
||||
72,192,97036,1,8,0:0:0:0:
|
||||
192,192,97253,1,6,3:0:0:0:
|
||||
248,192,97361,1,2,0:0:0:0:
|
||||
304,192,97470,1,8,0:0:0:0:
|
||||
80,192,97688,6,0,L|24:192,2,41.25,2|2|8,0:0|0:0|0:0,0:0:0:0:
|
||||
208,192,98123,1,6,3:0:0:0:
|
||||
152,192,98232,1,2,0:0:0:0:
|
||||
96,192,98340,1,8,0:0:0:0:
|
||||
38,192,98449,1,0,0:0:0:0:
|
||||
496,192,99210,6,0,L|216:192,1,247.5,4|0,0:0|0:0,0:0:0:0:
|
||||
@@ -1,307 +0,0 @@
|
||||
osu file format v14
|
||||
|
||||
[General]
|
||||
AudioFilename: audio.mp3
|
||||
AudioLeadIn: 0
|
||||
PreviewTime: 65920
|
||||
Countdown: 0
|
||||
SampleSet: Soft
|
||||
StackLeniency: 0.7
|
||||
Mode: 2
|
||||
LetterboxInBreaks: 0
|
||||
WidescreenStoryboard: 0
|
||||
|
||||
[Editor]
|
||||
DistanceSpacing: 1.5
|
||||
BeatDivisor: 4
|
||||
GridSize: 8
|
||||
TimelineZoom: 1.6
|
||||
|
||||
[Metadata]
|
||||
Title:Cold Skin
|
||||
TitleUnicode:Cold Skin
|
||||
Artist:Seven Lions & Echos
|
||||
ArtistUnicode:Seven Lions & Echos
|
||||
Creator:-Ken
|
||||
Version:Platter
|
||||
Source:
|
||||
Tags:mbomb magic bomb monstercat chill electronic edm melodic dubstep Fursum
|
||||
BeatmapID:1977380
|
||||
BeatmapSetID:946446
|
||||
|
||||
[Difficulty]
|
||||
HPDrainRate:5
|
||||
CircleSize:3.2
|
||||
OverallDifficulty:8
|
||||
ApproachRate:8
|
||||
SliderMultiplier:1.7
|
||||
SliderTickRate:1
|
||||
|
||||
[Events]
|
||||
//Background and Video events
|
||||
0,0,"owo.jpg",0,0
|
||||
//Break Periods
|
||||
//Storyboard Layer 0 (Background)
|
||||
//Storyboard Layer 1 (Fail)
|
||||
//Storyboard Layer 2 (Pass)
|
||||
//Storyboard Layer 3 (Foreground)
|
||||
//Storyboard Layer 4 (Overlay)
|
||||
//Storyboard Sound Samples
|
||||
|
||||
[TimingPoints]
|
||||
87,416.666666666667,4,2,0,40,1,0
|
||||
13003,-100,4,2,0,25,0,0
|
||||
13420,-200,4,2,0,30,0,0
|
||||
19982,-200,4,2,0,5,0,0
|
||||
20087,-200,4,2,0,30,0,0
|
||||
25295,-100,4,2,0,30,0,0
|
||||
26753,-133.333333333333,4,2,2,50,0,0
|
||||
40087,-100,4,2,0,55,0,0
|
||||
51753,-100,4,2,2,55,0,0
|
||||
53420,-100,4,2,0,60,0,0
|
||||
60087,-142.857142857143,4,2,0,40,0,0
|
||||
63420,-142.857142857143,4,2,0,35,0,0
|
||||
63628,-142.857142857143,4,2,0,17,0,0
|
||||
63837,-142.857142857143,4,2,0,25,0,0
|
||||
64045,-142.857142857143,4,2,0,32,0,0
|
||||
64253,-142.857142857143,4,2,0,40,0,0
|
||||
64462,-142.857142857143,4,2,0,50,0,0
|
||||
64670,-142.857142857143,4,2,0,60,0,0
|
||||
64878,-142.857142857143,4,2,0,72,0,0
|
||||
65087,-285.714285714284,4,2,0,40,0,0
|
||||
65816,-285.714285714284,4,2,0,5,0,0
|
||||
65920,-125,4,2,0,40,0,0
|
||||
66753,-62.5,4,2,2,60,0,1
|
||||
78003,-100,4,2,2,60,0,1
|
||||
79253,-66.6666666666667,4,2,2,60,0,1
|
||||
79670,-66.6666666666667,4,2,2,60,0,0
|
||||
80087,-66.6666666666667,4,2,2,70,0,1
|
||||
81337,-83.3333333333333,4,2,2,70,0,1
|
||||
82587,-66.6666666666667,4,2,2,40,0,0
|
||||
83420,-66.6666666666667,4,2,2,70,0,1
|
||||
84253,-83.3333333333333,4,2,2,70,0,1
|
||||
84878,-66.6666666666667,4,2,2,70,0,1
|
||||
85920,-83.3333333333333,4,2,2,70,0,1
|
||||
86545,-66.6666666666667,4,2,2,70,0,1
|
||||
87587,-83.3333333333333,4,2,2,70,0,1
|
||||
88212,-66.6666666666667,4,2,2,70,0,1
|
||||
89253,-133.333333333333,4,2,2,55,0,1
|
||||
91753,-83.3333333333333,4,2,2,55,0,1
|
||||
93420,-83.3333333333333,4,2,2,55,0,0
|
||||
95503,-83.3333333333333,4,2,2,25,0,0
|
||||
|
||||
|
||||
[Colours]
|
||||
Combo1 : 128,128,255
|
||||
Combo2 : 255,194,166
|
||||
Combo3 : 255,128,128
|
||||
|
||||
[HitObjects]
|
||||
256,192,10087,12,0,13003,0:0:0:0:
|
||||
410,158,13420,6,0,L|150:158,1,255,0|0,3:0|0:0,0:0:0:0:
|
||||
453,162,15087,2,0,P|461:218|296:290,1,269.166666666667,0|0,3:0|0:0,0:0:0:0:
|
||||
265,275,16545,2,0,P|171:217|297:144,1,297.5,0|0,0:0|0:0,0:0:0:0:
|
||||
40,272,18420,5,0,3:0:0:0:
|
||||
123,272,18628,1,0,0:0:0:0:
|
||||
184,272,18837,1,0,0:0:0:0:
|
||||
232,272,19045,1,0,0:0:0:0:
|
||||
184,272,19253,1,0,0:0:0:0:
|
||||
123,272,19462,1,0,0:0:0:0:
|
||||
40,272,19670,1,0,0:0:0:0:
|
||||
384,264,20087,6,0,P|456:264|448:120,1,255,0|0,3:0|0:0,0:0:0:0:
|
||||
161,286,21753,2,0,P|91:173|170:144,1,255,0|0,3:0|0:0,0:0:0:0:
|
||||
457,273,23420,2,0,L|457:9,1,255,0|0,3:0|0:0,0:0:0:0:
|
||||
144,235,25087,5,0,3:0:0:0:
|
||||
265,197,25295,2,0,L|84:198,1,170,0|0,0:0|0:0,0:0:0:0:
|
||||
190,157,25920,1,0,0:0:0:0:
|
||||
357,155,26232,1,0,0:0:0:0:
|
||||
190,157,26545,1,0,0:0:0:0:
|
||||
468,120,26753,5,0,1:0:0:0:
|
||||
294,116,27170,1,2,0:3:0:0:
|
||||
152,264,28003,1,2,0:3:0:0:
|
||||
256,264,28212,5,0,0:0:0:0:
|
||||
360,272,28420,2,0,P|392:216|352:144,1,127.500004863739,0|2,1:0|0:3,0:0:0:0:
|
||||
272,144,29045,1,0,0:0:0:0:
|
||||
64,144,29462,1,0,0:0:0:0:
|
||||
176,144,29670,1,2,0:3:0:0:
|
||||
64,144,29878,1,0,0:0:0:0:
|
||||
281,139,30087,6,0,P|321:171|289:243,1,127.500004863739,0|2,1:0|0:3,0:0:0:0:
|
||||
21,297,31337,1,2,0:3:0:0:
|
||||
111,297,31545,1,0,0:0:0:0:
|
||||
301,296,31753,6,0,L|157:296,2,127.500004863739,0|2|0,1:0|0:3|0:0,0:0:0:0:
|
||||
402,286,32795,1,0,0:0:0:0:
|
||||
458,286,33003,1,2,0:3:0:0:
|
||||
402,286,33212,1,0,0:0:0:0:
|
||||
190,201,33420,86,0,P|162:246|179:333,1,127.500004863739,0|2,1:0|0:3,0:0:0:0:
|
||||
371,240,34253,1,0,0:0:0:0:
|
||||
371,240,34462,1,0,0:0:0:0:
|
||||
371,240,34670,1,2,0:3:0:0:
|
||||
371,240,34878,1,0,0:0:0:0:
|
||||
240,224,35087,86,0,P|204:176|249:130,1,127.500004863739,0|2,1:0|0:3,0:0:0:0:
|
||||
440,152,35920,1,0,0:0:0:0:
|
||||
440,152,36128,1,0,0:0:0:0:
|
||||
440,152,36337,1,2,0:3:0:0:
|
||||
440,152,36545,1,0,0:0:0:0:
|
||||
230,265,36753,6,0,L|374:265,1,127.500004863739,0|2,1:0|0:3,0:0:0:0:
|
||||
179,299,37587,1,0,0:0:0:0:
|
||||
251,299,37795,1,0,0:0:0:0:
|
||||
179,299,38003,1,2,0:3:0:0:
|
||||
251,299,38212,1,0,0:0:0:0:
|
||||
456,198,38420,6,0,L|320:198,2,127.500004863739,0|2|0,1:0|0:3|0:0,0:0:0:0:
|
||||
260,206,39462,1,0,1:0:0:0:
|
||||
177,190,39670,1,2,0:3:0:0:
|
||||
158,125,39878,1,0,0:0:0:0:
|
||||
459,200,40087,6,0,L|459:16,1,170,0|8,1:0|0:0,0:0:0:0:
|
||||
357,145,40712,2,0,L|173:145,1,170,0|0,1:0|0:0,0:0:0:0:
|
||||
289,112,41337,1,8,0:0:0:0:
|
||||
24,104,41753,6,0,L|24:304,1,170,0|8,1:0|0:0,0:0:0:0:
|
||||
127,280,42378,1,0,1:0:0:0:
|
||||
230,279,42587,2,0,L|137:126,1,170,0|8,0:0|0:0,0:0:0:0:
|
||||
467,127,43420,86,0,L|467:319,1,170,0|8,1:0|0:0,0:0:0:0:
|
||||
360,286,44045,2,0,L|360:101,1,170,0|0,1:0|0:0,0:0:0:0:
|
||||
474,113,44670,1,8,0:0:0:0:
|
||||
360,116,44878,1,0,0:0:0:0:
|
||||
153,183,45087,6,0,L|334:184,1,170,0|8,1:0|0:0,0:0:0:0:
|
||||
238,181,45712,1,0,1:0:0:0:
|
||||
153,183,45920,2,0,L|358:182,1,170,0|8,0:0|0:0,0:0:0:0:
|
||||
43,78,46753,86,0,L|235:78,1,170,0|8,1:0|0:0,0:0:0:0:
|
||||
315,104,47378,2,0,L|132:106,1,170,0|0,1:0|0:0,0:0:0:0:
|
||||
315,104,48003,1,8,0:0:0:0:
|
||||
485,251,48420,6,0,L|285:250,1,170,0|8,1:0|0:0,0:0:0:0:
|
||||
213,250,49045,1,0,1:0:0:0:
|
||||
402,250,49253,2,0,P|426:196|355:129,1,170,0|8,0:0|0:0,0:0:0:0:
|
||||
249,153,49878,1,0,0:0:0:0:
|
||||
21,163,50087,86,0,L|212:163,1,170,0|8,1:0|0:0,0:0:0:0:
|
||||
293,170,50712,2,0,P|335:188|305:293,1,170,0|0,1:0|0:0,0:0:0:0:
|
||||
212,296,51337,1,8,0:0:0:0:
|
||||
24,299,51753,6,0,L|23:186,1,85,0|0,1:0|0:0,0:0:0:0:
|
||||
92,211,52066,1,2,0:3:0:0:
|
||||
160,209,52170,1,8,0:0:0:0:
|
||||
350,208,52378,2,0,P|370:170|284:110,1,170,0|0,1:0|0:0,0:0:0:0:
|
||||
143,177,53003,2,0,L|35:177,1,85,8|0,0:0|0:0,0:0:0:0:
|
||||
393,336,53420,86,0,L|393:154,1,170,0|8,1:0|0:0,0:0:0:0:
|
||||
201,295,54045,2,0,L|406:295,1,170,0|0,1:0|0:0,0:0:0:0:
|
||||
482,235,54670,2,0,L|383:235,1,85,8|0,0:0|0:0,0:0:0:0:
|
||||
205,232,55087,6,0,L|219:321,1,85,0|0,1:0|0:0,0:0:0:0:
|
||||
342,250,55503,2,0,L|340:339,1,85,8|0,0:0|1:0,0:0:0:0:
|
||||
218,231,55920,2,0,L|414:176,1,170,0|8,0:0|0:0,0:0:0:0:
|
||||
245,135,56545,1,0,0:0:0:0:
|
||||
32,148,56753,86,0,L|32:348,1,170,0|8,1:0|0:0,0:0:0:0:
|
||||
223,180,57378,2,0,L|223:364,1,170,0|0,1:0|0:0,0:0:0:0:
|
||||
104,244,58003,2,0,L|85:346,1,85,8|0,0:0|0:0,0:0:0:0:
|
||||
266,224,58420,6,0,L|207:121,1,85,0|0,1:0|0:0,0:0:0:0:
|
||||
104,139,58837,2,0,L|100:25,1,85,8|0,0:0|1:0,0:0:0:0:
|
||||
306,119,59253,2,0,P|375:124|443:193,1,170,0|8,0:0|0:0,0:0:0:0:
|
||||
358,218,59878,1,0,0:0:0:0:
|
||||
59,249,60087,22,0,L|196:250,2,118.999996368408,0|0|8,1:0|0:0|0:0,0:0:0:0:
|
||||
157,248,61128,1,0,0:0:0:0:
|
||||
59,249,61337,2,0,L|203:236,2,118.999996368408,0|0|0,0:0|0:0|0:0,0:0:0:0:
|
||||
132,249,62378,1,0,1:0:0:0:
|
||||
331,218,62587,2,0,L|468:218,1,118.999996368408,8|0,0:0|0:0,0:0:0:0:
|
||||
159,325,63420,5,0,1:0:0:0:
|
||||
64,270,63628,1,8,0:0:0:0:
|
||||
64,270,63837,1,8,0:0:0:0:
|
||||
159,325,64045,1,8,0:0:0:0:
|
||||
371,327,64253,5,8,0:0:0:0:
|
||||
466,272,64462,1,8,0:0:0:0:
|
||||
496,167,64670,1,8,0:0:0:0:
|
||||
445,73,64878,1,8,0:0:0:0:
|
||||
173,316,65087,6,0,B|64:316,1,104.124996822357
|
||||
34,309,65920,2,0,P|17:258|68:186,1,136,0|0,0:0|1:0,0:0:0:0:
|
||||
168,183,66545,1,8,0:0:0:0:
|
||||
444,174,66753,5,6,1:2:0:0:
|
||||
289,245,67066,2,0,L|299:173,3,68,2|2|2|0,0:3|0:0|0:0|0:0,0:0:0:0:
|
||||
26,169,67587,5,8,0:0:0:0:
|
||||
187,168,67899,1,2,0:3:0:0:
|
||||
121,173,68003,1,2,1:2:0:0:
|
||||
77,125,68107,1,2,0:0:0:0:
|
||||
88,60,68212,1,2,0:0:0:0:
|
||||
278,56,68420,2,0,L|485:56,1,204,2|2,0:0|0:3,0:0:0:0:
|
||||
474,95,68837,2,0,L|490:169,2,68,0|2|2,1:0|0:0|0:0,0:0:0:0:
|
||||
203,126,69253,5,8,0:0:0:0:
|
||||
333,184,69566,1,2,0:3:0:0:
|
||||
399,189,69670,1,2,0:0:0:0:
|
||||
443,141,69774,1,2,0:0:0:0:
|
||||
432,76,69878,1,0,0:0:0:0:
|
||||
242,72,70087,2,0,L|35:72,1,204,2|0,1:2|0:0,0:0:0:0:
|
||||
49,111,70503,2,0,L|37:191,2,68,2|2|0,0:0|0:0|0:0,0:0:0:0:
|
||||
336,143,70920,5,8,0:0:0:0:
|
||||
195,186,71232,1,2,0:3:0:0:
|
||||
181,123,71337,1,2,1:2:0:0:
|
||||
240,83,71441,1,2,0:0:0:0:
|
||||
308,106,71545,1,2,0:0:0:0:
|
||||
496,114,71753,2,0,L|496:288,1,136,2|0,0:0|1:0,0:0:0:0:
|
||||
419,251,72066,1,2,0:3:0:0:
|
||||
342,255,72170,1,0,1:0:0:0:
|
||||
410,181,72378,1,2,0:0:0:0:
|
||||
103,194,72587,5,8,0:0:0:0:
|
||||
37,169,72795,1,0,0:0:0:0:
|
||||
9,106,72899,1,0,0:0:0:0:
|
||||
29,44,73003,1,8,3:0:0:0:
|
||||
86,12,73107,1,8,3:0:0:0:
|
||||
151,26,73211,1,8,0:0:0:0:
|
||||
426,72,73420,6,0,P|350:229|297:235,1,204,4|2,1:0|0:3,0:0:0:0:
|
||||
281,240,73837,1,2,0:0:0:0:
|
||||
222,240,73941,1,2,0:0:0:0:
|
||||
164,240,74045,1,0,0:0:0:0:
|
||||
449,90,74253,5,8,0:0:0:0:
|
||||
449,90,74566,1,2,0:3:0:0:
|
||||
473,151,74670,1,2,1:2:0:0:
|
||||
442,209,74774,1,2,0:0:0:0:
|
||||
378,223,74878,1,2,0:0:0:0:
|
||||
188,226,75087,6,0,P|130:179|240:103,1,204,2|2,0:0|0:3,0:0:0:0:
|
||||
250,90,75503,1,2,1:3:0:0:
|
||||
316,85,75607,1,2,0:3:0:0:
|
||||
337,25,75712,1,2,0:3:0:0:
|
||||
60,91,75920,5,8,0:0:0:0:
|
||||
60,91,76128,1,0,0:0:0:0:
|
||||
44,161,76232,1,2,0:3:0:0:
|
||||
66,230,76336,1,2,0:0:0:0:
|
||||
120,279,76440,1,0,0:0:0:0:
|
||||
192,293,76544,1,0,0:0:0:0:
|
||||
393,259,76753,6,0,P|492:196|413:114,1,204,0|2,1:0|0:3,0:0:0:0:
|
||||
413,87,77170,1,2,0:0:0:0:
|
||||
355,59,77274,1,2,0:3:0:0:
|
||||
295,56,77378,1,2,0:3:0:0:
|
||||
20,173,77587,1,8,0:0:0:0:
|
||||
30,229,77795,6,0,L|92:174,1,68,0|2,0:0|0:3,0:0:0:0:
|
||||
178,162,78003,2,0,L|173:275,1,85,2|2,1:2|0:0,0:0:0:0:
|
||||
379,209,78420,2,0,L|174:208,2,170,2|0|8,0:0|1:0|0:0,0:0:0:0:
|
||||
92,208,79670,1,8,3:0:0:0:
|
||||
112,129,79878,1,8,0:0:0:0:
|
||||
411,300,80087,6,0,P|431:286|321:172,1,255.000009727478,4|2,1:0|0:3,0:0:0:0:
|
||||
228,294,80712,2,0,P|155:267|259:166,1,255.000009727478,0|2,1:0|0:3,0:0:0:0:
|
||||
340,138,81337,2,0,L|106:139,2,203.999993774414,0|0|2,1:0|0:0|0:3,0:0:0:0:
|
||||
137,239,82378,2,0,L|100:174,2,50.9999984436036,0|0|8,1:0|0:0|0:0,0:0:0:0:
|
||||
137,239,83420,5,6,1:2:0:0:
|
||||
197,237,83524,1,2,0:0:0:0:
|
||||
257,240,83628,1,2,0:0:0:0:
|
||||
389,243,83837,2,0,L|414:181,2,63.7500024318696,2|2|2,0:0|0:0|0:0,0:0:0:0:
|
||||
101,237,84253,2,0,L|-13:237,1,101.999996887207,8|0,0:0|0:0,0:0:0:0:
|
||||
110,164,84670,2,0,L|5:88,1,101.999996887207,2|2,1:2|0:0,0:0:0:0:
|
||||
225,256,85087,5,0,0:0:0:0:
|
||||
278,229,85191,1,0,0:0:0:0:
|
||||
225,210,85295,1,0,1:0:0:0:
|
||||
95,217,85503,2,0,L|71:158,2,63.7500024318696,0|2|2,1:0|0:0|0:0,0:0:0:0:
|
||||
399,158,85920,2,0,L|518:158,1,101.999996887207,8|0,0:0|0:0,0:0:0:0:
|
||||
390,95,86337,2,0,L|483:55,1,101.999996887207,2|8,0:0|0:3,0:0:0:0:
|
||||
201,289,86753,6,0,L|201:207,2,63.7500024318696,0|0|0,1:0|0:0|0:0,0:0:0:0:
|
||||
350,228,87170,2,0,L|368:158,2,63.7500024318696,2|2|2,0:3|0:3|0:3,0:0:0:0:
|
||||
65,323,87587,2,0,L|63:198,1,101.999996887207,8|0,0:0|0:0,0:0:0:0:
|
||||
237,214,88003,2,0,L|238:335,1,101.999996887207,0|2,1:0|0:3,0:0:0:0:
|
||||
104,303,88420,5,2,0:3:0:0:
|
||||
173,291,88524,1,8,0:0:0:0:
|
||||
263,228,88732,1,2,0:3:0:0:
|
||||
185,248,88836,1,0,1:0:0:0:
|
||||
114,215,88940,1,2,0:3:0:0:
|
||||
80,145,89044,1,2,0:3:0:0:
|
||||
375,171,89253,2,0,P|445:228|367:274,1,191.250007295609,8|0,0:0|0:0,0:0:0:0:
|
||||
76,318,90087,5,0,1:0:0:0:
|
||||
172,312,90295,2,0,L|172:263,1,31.8750012159348,0|2,0:0|0:0,0:0:0:0:
|
||||
90,196,90607,2,0,L|90:141,1,31.8750012159348,2|0,0:0|1:0,0:0:0:0:
|
||||
386,160,90920,2,0,L|386:264,1,63.7500024318696,8|0,0:0|0:0,0:0:0:0:
|
||||
196,237,91337,6,0,L|196:145,1,63.7500024318696,0|0,1:0|0:0,0:0:0:0:
|
||||
339,108,91753,2,0,L|120:105,2,203.999993774414,0|0|10,0:0|1:0|0:0,0:0:0:0:
|
||||
64,281,93003,2,0,L|23:179,1,101.999996887207,8|8,0:3|0:0,0:0:0:0:
|
||||
302,173,93420,5,0,1:0:0:0:
|
||||
256,192,93628,12,0,95503,0:0:0:0:
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,878 +0,0 @@
|
||||
osu file format v14
|
||||
|
||||
[General]
|
||||
AudioFilename: audio.mp3
|
||||
AudioLeadIn: 0
|
||||
PreviewTime: 79621
|
||||
Countdown: 0
|
||||
SampleSet: Soft
|
||||
StackLeniency: 0.7
|
||||
Mode: 2
|
||||
LetterboxInBreaks: 0
|
||||
WidescreenStoryboard: 0
|
||||
|
||||
[Editor]
|
||||
DistanceSpacing: 0.9
|
||||
BeatDivisor: 3
|
||||
GridSize: 32
|
||||
TimelineZoom: 3.699999
|
||||
|
||||
[Metadata]
|
||||
Title:DVP
|
||||
TitleUnicode:DVP
|
||||
Artist:PUP
|
||||
ArtistUnicode:PUP
|
||||
Creator:Jemzuu
|
||||
Version:YUH
|
||||
Source:osu!
|
||||
Tags:ajamez jbhyperion jbh hyperion nelly ataraxia featured artist fa the dream is over english indie punk rock
|
||||
BeatmapID:2420076
|
||||
BeatmapSetID:1159828
|
||||
|
||||
[Difficulty]
|
||||
HPDrainRate:7
|
||||
CircleSize:3
|
||||
OverallDifficulty:9.8
|
||||
ApproachRate:9.8
|
||||
SliderMultiplier:1.6
|
||||
SliderTickRate:1
|
||||
|
||||
[Events]
|
||||
//Background and Video events
|
||||
0,0,"yuh.jpg",0,0
|
||||
//Break Periods
|
||||
//Storyboard Layer 0 (Background)
|
||||
//Storyboard Layer 1 (Fail)
|
||||
//Storyboard Layer 2 (Pass)
|
||||
//Storyboard Layer 3 (Foreground)
|
||||
//Storyboard Layer 4 (Overlay)
|
||||
//Storyboard Sound Samples
|
||||
|
||||
[TimingPoints]
|
||||
62,202.702702702703,4,2,10,80,1,0
|
||||
1039,-100,4,2,10,80,0,0
|
||||
13034,201.342281879195,4,2,10,80,1,0
|
||||
13175,-100,4,2,1,40,0,0
|
||||
13586,-100,4,2,1,50,0,0
|
||||
13787,-100,4,2,10,60,0,0
|
||||
13991,-100,4,2,1,80,0,0
|
||||
14192,-100,4,2,2,70,0,0
|
||||
14595,-100,4,2,10,80,0,0
|
||||
14810,-100,4,2,1,80,0,0
|
||||
15400,-100,4,2,10,80,0,0
|
||||
15450,206.896551724138,4,2,1,80,1,0
|
||||
16277,202.702702702703,4,2,10,80,1,0
|
||||
26006,-83.3333333333333,4,2,10,80,0,0
|
||||
26172,-83.3333333333333,4,2,10,80,0,0
|
||||
26375,-83.3333333333333,4,2,10,80,0,0
|
||||
26578,-83.3333333333333,4,2,10,80,0,0
|
||||
26780,-83.3333333333333,4,2,10,80,0,0
|
||||
26980,-83.3333333333333,4,2,10,80,0,0
|
||||
27180,-83.3333333333333,4,2,10,80,0,0
|
||||
27580,-83.3333333333333,4,2,10,80,0,0
|
||||
27628,-100,4,2,10,80,0,0
|
||||
29202,-100,4,2,11,60,0,0
|
||||
32290,-100,4,2,11,80,0,0
|
||||
37920,-100,4,2,11,60,0,0
|
||||
38126,-100,4,2,11,80,0,0
|
||||
40601,200.66889632107,4,2,10,80,1,0
|
||||
41354,-100,4,2,10,60,0,0
|
||||
41559,-100,4,2,10,80,0,0
|
||||
42206,202.702702702703,4,2,10,80,1,0
|
||||
42206,-83.3333333333333,4,2,10,80,0,0
|
||||
42372,-83.3333333333333,4,2,10,80,0,0
|
||||
42777,-83.3333333333333,4,2,10,80,0,0
|
||||
43182,-83.3333333333333,4,2,10,80,0,0
|
||||
43588,-83.3333333333333,4,2,10,80,0,0
|
||||
43993,-83.3333333333333,4,2,10,80,0,0
|
||||
44638,-100,4,2,10,80,0,0
|
||||
44809,-100,4,2,2,80,0,0
|
||||
45415,-100,4,2,10,80,0,0
|
||||
49690,-100,4,2,1,80,0,0
|
||||
50298,-100,4,2,10,80,0,0
|
||||
51119,-100,4,2,2,80,0,0
|
||||
51124,260.869565217391,4,2,10,80,1,0
|
||||
51325,-100,4,2,10,80,0,0
|
||||
51384,193.548387096774,4,2,10,80,1,0
|
||||
51917,-100,4,2,10,80,0,0
|
||||
51964,202.702702702703,4,2,10,80,1,0
|
||||
56788,-100,4,2,2,80,0,0
|
||||
57599,-100,4,2,1,80,0,0
|
||||
57798,-100,4,2,10,80,0,0
|
||||
58005,-100,4,2,1,80,0,0
|
||||
58203,-100,4,2,10,80,0,0
|
||||
61651,-100,4,1,10,80,0,0
|
||||
61693,-83.3333333333333,4,1,10,80,0,0
|
||||
61853,-83.3333333333333,4,2,10,80,0,0
|
||||
62056,-83.3333333333333,4,2,10,80,0,0
|
||||
62259,-83.3333333333333,4,2,10,80,0,0
|
||||
62461,-83.3333333333333,4,2,10,80,0,0
|
||||
62662,-83.3333333333333,4,2,10,60,0,0
|
||||
62863,-83.3333333333333,4,2,10,80,0,0
|
||||
63065,-83.3333333333333,4,2,10,80,0,0
|
||||
63266,-83.3333333333333,4,2,10,80,0,0
|
||||
63315,-100,4,2,10,80,0,0
|
||||
64126,200,4,2,10,80,1,0
|
||||
64895,-100,4,2,10,60,0,0
|
||||
64926,202.702702702703,4,2,10,80,1,0
|
||||
65088,-100,4,2,12,60,0,0
|
||||
65705,-100,4,2,10,80,0,0
|
||||
73609,-100,4,2,10,60,0,0
|
||||
74216,-100,4,2,10,80,0,0
|
||||
77898,-83.3333333333333,4,2,10,80,0,0
|
||||
78101,-83.3333333333333,4,2,10,80,0,0
|
||||
78507,-83.3333333333333,4,2,10,80,0,0
|
||||
78912,-83.3333333333333,4,2,10,80,0,0
|
||||
79317,-83.3333333333333,4,2,10,80,0,0
|
||||
79723,-83.3333333333333,4,2,10,80,0,0
|
||||
80331,-100,4,2,12,80,0,0
|
||||
80597,-100,4,2,2,80,0,0
|
||||
80806,-100,4,2,10,80,0,0
|
||||
81125,202.702702702703,4,2,10,80,1,1
|
||||
81125,-100,4,2,1,80,0,1
|
||||
81175,-100,4,2,1,80,0,0
|
||||
83557,206.896551724138,4,2,1,80,1,0
|
||||
84384,202.702702702703,4,2,10,80,1,0
|
||||
86005,200.66889632107,4,2,10,80,1,0
|
||||
87610,202.702702702703,4,2,10,80,1,1
|
||||
87612,-100,4,2,1,80,0,1
|
||||
87660,-100,4,2,1,80,0,0
|
||||
93285,-83.3333333333333,4,2,1,80,0,0
|
||||
93691,-83.3333333333333,4,2,2,80,0,0
|
||||
93896,-83.3333333333333,4,2,3,80,0,0
|
||||
94096,-83.3333333333333,4,2,5,80,0,0
|
||||
94299,-33.3333333333333,4,2,5,80,0,1
|
||||
95718,-33.3333333333333,4,2,5,80,0,0
|
||||
95884,-100,4,2,5,90,0,0
|
||||
95895,-100,4,2,5,80,0,0
|
||||
97542,-33.3333333333333,4,2,5,80,0,1
|
||||
98961,-33.3333333333333,4,2,5,80,0,0
|
||||
99128,-100,4,2,5,80,0,0
|
||||
100582,206.896551724138,4,2,5,80,1,0
|
||||
100749,-100,4,2,10,80,0,0
|
||||
100788,-33.3333333333333,4,2,5,80,0,1
|
||||
102237,202.702702702703,4,2,5,80,1,0
|
||||
102842,-100,4,2,10,80,0,0
|
||||
103013,-100,4,2,5,80,0,0
|
||||
103813,-100,4,2,1,80,0,0
|
||||
103908,-100,4,2,5,80,0,0
|
||||
105423,-100,4,2,5,80,0,0
|
||||
105823,-100,4,2,5,80,0,0
|
||||
106235,-100,4,2,10,80,0,0
|
||||
107045,-100,4,2,7,80,0,0
|
||||
107451,-100,4,2,10,80,0,0
|
||||
108419,-83.3333333333333,4,2,10,80,0,0
|
||||
109737,-100,4,2,10,80,0,0
|
||||
112372,213.523131672598,4,2,10,80,1,0
|
||||
112799,202.702702702703,4,2,10,80,1,0
|
||||
113204,192.926045016077,4,2,10,80,1,0
|
||||
113589,202.702702702703,4,2,10,80,1,0
|
||||
115210,-83.3333333333333,4,2,10,80,0,0
|
||||
115580,-100,4,2,10,80,0,0
|
||||
119467,196.078431372549,4,2,10,80,1,0
|
||||
119653,-100,4,2,1,80,0,0
|
||||
120009,-100,4,2,4,90,0,0
|
||||
120055,202.702702702703,4,2,4,90,1,0
|
||||
120830,-100,4,2,4,80,0,0
|
||||
131569,-100,4,2,4,100,0,0
|
||||
132177,-100,4,2,10,80,0,0
|
||||
132993,-83.3333333333333,4,2,10,80,0,0
|
||||
133027,205.831903945111,4,2,10,80,1,0
|
||||
133027,-83.3333333333333,4,2,10,80,0,0
|
||||
133198,-83.3333333333333,4,2,10,100,0,0
|
||||
133609,-83.3333333333333,4,2,10,100,0,0
|
||||
134020,-83.3333333333333,4,2,10,80,0,0
|
||||
134428,-83.3333333333333,4,2,10,80,0,0
|
||||
134467,243.90243902439,4,2,10,80,1,0
|
||||
134705,-100,4,2,10,80,0,0
|
||||
134711,250,4,2,10,80,1,0
|
||||
135461,262.008733624454,4,2,10,80,1,0
|
||||
135985,284.36018957346,4,2,10,80,1,0
|
||||
136553,312.5,4,2,10,80,1,0
|
||||
137178,286.396181384248,4,2,10,80,1,0
|
||||
137750,-100,4,2,10,80,0,1
|
||||
137822,-100,4,2,10,50,0,0
|
||||
138323,-100,4,2,10,45,0,0
|
||||
139469,-100,4,2,10,40,0,0
|
||||
140614,-100,4,2,10,35,0,0
|
||||
141760,-100,4,2,10,30,0,0
|
||||
142905,-100,4,2,10,20,0,0
|
||||
144051,-100,4,2,10,15,0,0
|
||||
145197,-100,4,2,10,10,0,0
|
||||
145626,-100,4,2,10,5,0,0
|
||||
|
||||
|
||||
[Colours]
|
||||
Combo1 : 192,192,192
|
||||
Combo2 : 0,128,128
|
||||
Combo3 : 255,174,255
|
||||
|
||||
[HitObjects]
|
||||
283,311,62,6,0,L|447:293,1,160,12|0,0:1|0:0,0:0:0:0:
|
||||
228,173,366,2,0,L|68:189,1,160,8|0,0:0|0:0,0:0:0:0:
|
||||
291,229,670,2,0,P|313:178|297:131,1,80,8|0,0:0|0:0,0:0:0:0:
|
||||
110,73,872,2,0,L|193:64,2,80,8|0|2,0:2|0:0|0:0,0:0:0:0:
|
||||
308,41,1176,2,0,L|404:46,2,80,8|2|2,0:0|0:0|0:0,0:0:0:0:
|
||||
123,60,1480,1,8,0:0:0:0:
|
||||
314,58,1582,1,0,0:2:0:0:
|
||||
119,190,1683,6,0,P|55:223|69:309,1,160,12|0,1:2|0:0,0:0:0:0:
|
||||
274,352,1987,2,0,L|449:326,1,160,8|0,0:0|0:0,0:0:0:0:
|
||||
242,241,2291,2,0,L|227:154,1,80,8|0,0:0|0:0,0:0:0:0:
|
||||
428,93,2494,2,0,L|332:87,2,80,8|0|2,0:0|0:0|0:0,0:0:0:0:
|
||||
252,62,2798,1,8,0:0:0:0:
|
||||
433,189,2899,2,0,L|348:210,1,80,2|2,0:0|0:0,0:0:0:0:
|
||||
180,340,3102,1,8,0:0:0:0:
|
||||
351,232,3203,1,0,0:0:0:0:
|
||||
167,316,3305,6,0,L|13:250,1,160,8|0,1:0|0:0,0:0:0:0:
|
||||
231,67,3609,2,0,L|243:244,1,160,8|0,0:0|0:0,0:0:0:0:
|
||||
454,248,3913,2,0,L|465:165,1,80,8|0,0:0|0:0,0:0:0:0:
|
||||
245,132,4116,2,0,L|258:33,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
356,36,4318,1,2,0:0:0:0:
|
||||
133,93,4420,2,0,L|147:177,1,80,10|2,0:0|0:0,0:0:0:0:
|
||||
252,156,4622,1,0,0:0:0:0:
|
||||
37,198,4724,1,10,0:0:0:0:
|
||||
221,290,4825,1,2,0:0:0:0:
|
||||
426,321,4926,6,0,L|443:151,1,160,12|0,1:2|0:0,0:0:0:0:
|
||||
244,110,5230,2,0,L|409:82,1,160,8|0,0:0|0:0,0:0:0:0:
|
||||
198,18,5534,2,0,L|102:30,1,80,8|2,0:0|0:0,0:0:0:0:
|
||||
327,226,5737,2,0,L|417:231,2,80,8|0|8,0:0|0:0|1:2,0:0:0:0:
|
||||
137,319,6041,1,8,1:2:0:0:
|
||||
318,200,6143,2,0,L|234:193,1,80,8|8,1:2|1:2,0:0:0:0:
|
||||
27,95,6345,2,0,L|140:87,1,80,8|8,1:2|1:2,0:0:0:0:
|
||||
325,338,6548,6,0,L|161:325,1,160,12|0,1:0|0:0,0:0:0:0:
|
||||
398,267,6852,2,0,L|412:76,1,160,8|0,0:0|0:0,0:0:0:0:
|
||||
218,38,7156,2,0,L|330:26,1,80,8|0,0:0|0:0,0:0:0:0:
|
||||
107,136,7359,2,0,L|17:133,2,80,8|0|2,0:0|0:0|0:0,0:0:0:0:
|
||||
292,236,7663,2,0,L|199:247,2,80,8|2|2,0:0|0:0|0:0,0:0:0:0:
|
||||
480,354,7967,1,8,0:0:0:0:
|
||||
291,378,8068,1,0,0:0:0:0:
|
||||
481,254,8170,6,0,L|451:82,1,160,12|0,1:2|0:0,0:0:0:0:
|
||||
218,38,8474,2,0,L|393:3,1,160,8|0,0:0|0:0,0:0:0:0:
|
||||
170,255,8778,2,0,L|183:364,1,80,8|0,0:0|0:0,0:0:0:0:
|
||||
414,301,8980,2,0,L|401:211,1,80,8|0,0:0|0:0,0:0:0:0:
|
||||
303,195,9183,1,2,0:0:0:0:
|
||||
110,166,9284,2,0,L|125:87,1,80,8|0,0:0|0:0,0:0:0:0:
|
||||
226,65,9487,1,0,0:0:0:0:
|
||||
30,42,9589,1,10,0:0:0:0:
|
||||
234,83,9690,1,0,0:0:0:0:
|
||||
32,68,9791,6,0,L|32:238,1,160,8|0,1:1|0:0,0:0:0:0:
|
||||
245,314,10095,2,0,L|55:347,1,160,8|0,0:0|0:0,0:0:0:0:
|
||||
298,199,10399,2,0,L|404:205,1,80,8|0,0:0|0:0,0:0:0:0:
|
||||
181,108,10602,2,0,L|277:95,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
154,68,10805,1,2,0:0:0:0:
|
||||
340,17,10906,2,0,L|428:24,1,80,10|2,0:0|0:0,0:0:0:0:
|
||||
232,123,11109,1,0,0:0:0:0:
|
||||
426,51,11210,1,10,0:0:0:0:
|
||||
241,231,11312,1,2,0:0:0:0:
|
||||
41,296,11413,6,0,L|26:115,1,160,12|0,2:2|0:0,0:0:0:0:
|
||||
239,97,11717,2,0,L|253:264,1,160,8|0,0:0|0:0,0:0:0:0:
|
||||
51,317,12021,2,0,L|144:321,1,80,8|2,0:0|0:0,0:0:0:0:
|
||||
322,176,12224,2,0,P|237:164|151:207,1,160,8|0,0:0|0:0,0:0:0:0:
|
||||
405,335,12528,2,0,L|419:162,1,160,8|0,0:0|0:0,0:0:0:0:
|
||||
228,69,12832,2,0,L|110:73,1,80,8|0,0:0|0:0,0:0:0:0:
|
||||
370,62,13034,6,0,L|423:138,1,80,8|0,0:0|0:0,0:0:0:0:
|
||||
319,154,13235,2,0,L|359:242,1,80,0|0,1:0|0:0,0:0:0:0:
|
||||
248,226,13436,2,0,L|266:320,1,80,0|0,1:0|0:0,0:0:0:0:
|
||||
148,297,13638,2,0,L|142:382,1,80,0|0,1:0|0:0,0:0:0:0:
|
||||
384,42,13839,6,0,L|379:140,1,80,8|0,1:2|0:0,0:0:0:0:
|
||||
266,148,14040,2,0,L|243:246,1,80,8|0,1:2|0:0,0:0:0:0:
|
||||
117,252,14242,2,0,L|75:326,1,80,8|0,1:2|0:0,0:0:0:0:
|
||||
293,366,14443,2,0,L|350:278,1,80,8|0,1:2|0:0,0:0:0:0:
|
||||
51,299,14644,6,0,L|18:203,1,80,8|0,1:2|0:0,0:0:0:0:
|
||||
263,215,14846,2,0,L|317:144,1,80,8|0,1:2|0:0,0:0:0:0:
|
||||
75,110,15047,2,0,L|150:62,1,80,8|0,1:2|0:0,0:0:0:0:
|
||||
388,51,15248,2,0,L|496:45,1,80,8|0,1:2|0:0,0:0:0:0:
|
||||
179,147,15450,5,4,1:2:0:0:
|
||||
493,352,15656,2,8,L|393:370,1,80,8|8,1:2|1:2,0:0:0:0:
|
||||
226,296,15863,2,8,L|167:294,2,40,8|0|8,1:2|0:0|1:2,0:0:0:0:
|
||||
466,106,16070,1,8,1:2:0:0:
|
||||
490,136,16121,1,0,0:0:0:0:
|
||||
485,175,16173,1,8,1:2:0:0:
|
||||
453,198,16225,1,0,0:0:0:0:
|
||||
231,193,16277,6,0,L|127:189,1,80,6|0,0:3|0:0,0:0:0:0:
|
||||
351,126,16479,2,0,L|208:53,1,160,10|0,0:0|0:0,0:0:0:0:
|
||||
300,42,16783,1,4,0:3:0:0:
|
||||
194,207,16885,2,0,L|88:223,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
294,325,17087,2,0,L|386:313,1,80,4|0,0:3|0:0,0:0:0:0:
|
||||
169,296,17290,2,0,L|319:198,1,160,10|0,0:0|0:0,0:0:0:0:
|
||||
213,189,17594,1,4,0:3:0:0:
|
||||
414,106,17695,2,0,L|325:98,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
142,98,17898,5,4,0:3:0:0:
|
||||
323,45,18101,2,0,L|188:148,1,160,10|0,0:0|0:0,0:0:0:0:
|
||||
281,146,18405,1,4,0:3:0:0:
|
||||
173,198,18506,2,0,L|280:205,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
450,170,18709,1,4,0:3:0:0:
|
||||
267,375,18912,2,0,L|253:210,1,160,10|4,0:0|0:3,0:0:0:0:
|
||||
161,222,19216,1,4,0:3:0:0:
|
||||
253,215,19317,2,0,L|343:194,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
76,56,19520,5,4,0:3:0:0:
|
||||
413,38,19722,2,0,L|233:66,1,160,10|0,0:0|0:3,0:0:0:0:
|
||||
242,139,20027,1,4,0:3:0:0:
|
||||
332,146,20128,2,0,L|353:231,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
114,149,20331,2,0,P|49:176|26:264,1,160,4|10,0:3|0:0,0:0:0:0:
|
||||
223,334,20635,2,0,L|123:343,2,80,4|0|4,0:3|0:0|0:3,0:0:0:0:
|
||||
415,220,20939,2,0,L|321:211,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
243,244,21141,2,0,L|232:152,1,80,4|0,0:3|0:0,0:0:0:0:
|
||||
461,81,21344,6,0,L|292:66,1,160,10|0,0:0|0:0,0:0:0:0:
|
||||
390,36,21648,1,4,0:3:0:0:
|
||||
177,78,21749,2,0,L|88:91,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
330,206,21952,2,0,L|345:318,1,80,12|0,1:1|0:0,0:0:0:0:
|
||||
239,331,22155,1,8,1:2:0:0:
|
||||
30,14,22256,2,0,L|50:113,1,80,4|0,0:3|0:0,0:0:0:0:
|
||||
225,166,22459,1,4,0:3:0:0:
|
||||
30,125,22560,2,0,L|128:111,1,80,8|0,1:2|0:0,0:0:0:0:
|
||||
354,114,22763,5,6,0:3:0:0:
|
||||
47,348,22966,2,0,L|215:361,1,160,10|0,0:0|0:0,0:0:0:0:
|
||||
125,326,23270,1,4,0:3:0:0:
|
||||
222,278,23371,2,0,L|305:267,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
109,113,23574,2,0,L|30:126,1,80,4|0,0:3|0:0,0:0:0:0:
|
||||
229,161,23777,2,0,L|394:142,1,160,10|0,0:0|0:0,0:0:0:0:
|
||||
307,113,24081,1,4,0:3:0:0:
|
||||
203,44,24182,2,0,L|284:29,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
486,94,24385,5,4,0:3:0:0:
|
||||
305,136,24587,2,0,L|294:298,1,160,10|0,0:0|0:0,0:0:0:0:
|
||||
378,313,24891,1,4,0:3:0:0:
|
||||
286,319,24993,1,10,0:0:0:0:
|
||||
373,336,25094,1,0,0:0:0:0:
|
||||
136,358,25195,1,4,0:3:0:0:
|
||||
314,133,25398,2,0,L|165:207,1,160,10|4,0:0|0:3,0:0:0:0:
|
||||
256,127,25702,1,4,0:3:0:0:
|
||||
48,48,25804,2,0,L|32:143,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
284,352,26006,6,0,P|221:314|145:320,1,143.999995605469,6|0,0:3|0:0,0:0:0:0:
|
||||
99,333,26209,2,0,L|90:209,1,95.9999970703126,10|0,0:0|0:0,0:0:0:0:
|
||||
294,341,26412,6,0,P|231:303|155:309,1,143.999995605469,4|0,0:3|0:0,0:0:0:0:
|
||||
109,322,26615,2,0,L|100:198,1,95.9999970703126,10|0,0:0|0:0,0:0:0:0:
|
||||
303,332,26817,6,0,P|240:294|164:300,1,143.999995605469,4|0,0:3|0:0,0:0:0:0:
|
||||
118,313,27020,2,0,L|109:189,1,95.9999970703126,10|0,0:0|0:0,0:0:0:0:
|
||||
313,321,27223,6,0,P|250:283|174:289,1,143.999995605469,4|0,0:3|0:0,0:0:0:0:
|
||||
128,302,27426,2,0,L|119:178,1,95.9999970703126,10|0,0:0|0:0,0:0:0:0:
|
||||
343,203,27628,6,0,L|365:107,1,80,4|0,0:3|0:0,0:0:0:0:
|
||||
255,126,27831,2,0,L|232:31,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
457,224,28033,2,0,L|475:317,1,80,4|0,0:3|0:0,0:0:0:0:
|
||||
221,104,28236,2,0,L|192:13,1,80,10|0,0:2|0:0,0:0:0:0:
|
||||
445,40,28439,5,2,0:3:0:0:
|
||||
251,148,28641,2,0,L|155:165,1,80,8|8,1:2|1:2,0:0:0:0:
|
||||
418,232,28844,2,0,L|330:234,1,80,8|8,1:2|1:2,0:0:0:0:
|
||||
130,293,29047,2,0,L|34:305,1,80,8|8,1:2|1:2,0:0:0:0:
|
||||
279,349,29249,5,2,0:0:0:0:
|
||||
100,352,29452,2,0,P|44:342|44:238,1,160,10|0,0:0|0:3,0:0:0:0:
|
||||
117,225,29756,1,4,0:3:0:0:
|
||||
221,211,29858,2,0,L|116:195,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
37,169,30060,1,4,0:3:0:0:
|
||||
317,158,30263,2,0,L|330:72,1,80,10|0,0:0|0:3,0:0:0:0:
|
||||
226,71,30466,2,0,L|306:55,1,80,4|4,0:3|0:3,0:0:0:0:
|
||||
400,55,30668,1,10,0:0:0:0:
|
||||
116,81,30871,5,4,0:3:0:0:
|
||||
307,159,31074,2,0,L|315:324,1,160,10|0,0:0|0:0,0:0:0:0:
|
||||
226,329,31378,1,4,0:3:0:0:
|
||||
132,315,31479,2,0,L|291:325,1,160,10|4,0:0|0:3,0:0:0:0:
|
||||
14,120,31885,2,0,L|175:102,1,160,10|4,0:0|0:3,0:0:0:0:
|
||||
88,56,32189,1,4,0:3:0:0:
|
||||
173,102,32290,2,0,L|281:105,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
470,221,32493,5,4,0:3:0:0:
|
||||
298,331,32695,2,0,L|276:243,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
381,225,32898,2,0,L|357:138,1,80,4|4,0:3|0:3,0:0:0:0:
|
||||
151,158,33101,1,10,0:0:0:0:
|
||||
338,44,33304,2,0,L|164:35,1,160,4|10,0:3|0:0,0:0:0:0:
|
||||
261,28,33608,1,0,0:0:0:0:
|
||||
346,48,33709,1,0,0:0:0:0:
|
||||
124,193,33810,2,0,L|29:201,2,80,4|10|4,0:3|0:0|0:3,0:0:0:0:
|
||||
358,351,34114,5,4,0:3:0:0:
|
||||
173,271,34317,2,0,L|342:253,1,160,10|4,0:0|0:3,0:0:0:0:
|
||||
241,222,34621,1,4,0:3:0:0:
|
||||
344,202,34722,2,0,L|356:104,1,80,10|4,0:0|0:3,0:0:0:0:
|
||||
121,80,34925,1,4,0:3:0:0:
|
||||
285,38,35128,2,0,L|185:42,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
405,76,35331,2,0,L|492:86,1,80,2|4,0:0|0:3,0:0:0:0:
|
||||
281,101,35533,2,0,L|197:109,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
424,258,35736,5,4,0:3:0:0:
|
||||
247,340,35939,2,0,P|205:289|265:214,1,160,10|0,0:0|0:0,0:0:0:0:
|
||||
334,205,36243,1,4,0:3:0:0:
|
||||
238,175,36344,2,0,L|129:172,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
375,110,36547,1,4,0:3:0:0:
|
||||
190,254,36749,2,0,L|167:79,1,160,10|4,0:0|0:3,0:0:0:0:
|
||||
266,83,37054,1,4,0:3:0:0:
|
||||
149,45,37155,2,0,L|69:39,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
306,20,37358,5,4,0:3:0:0:
|
||||
129,251,37560,2,0,L|304:257,1,160,10|0,0:0|0:0,0:0:0:0:
|
||||
195,301,37864,1,4,0:3:0:0:
|
||||
288,256,37966,1,10,0:0:0:0:
|
||||
474,232,38168,1,4,0:3:0:0:
|
||||
177,282,38371,2,0,L|167:186,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
276,150,38574,2,0,L|183:136,1,80,4|4,0:3|0:3,0:0:0:0:
|
||||
91,135,38777,2,0,L|77:39,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
285,48,38979,5,4,0:3:0:0:
|
||||
102,146,39182,2,0,P|39:199|67:293,1,160,10|0,0:0|0:0,0:0:0:0:
|
||||
159,315,39486,2,0,L|195:268,2,40,4|0|10,0:3|0:0|0:0,0:0:0:0:
|
||||
44,238,39689,1,0,0:0:0:0:
|
||||
272,173,39790,1,4,0:3:0:0:
|
||||
91,57,39993,2,0,L|179:47,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
256,90,40195,2,0,L|177:103,1,80,0|4,0:3|0:3,0:0:0:0:
|
||||
90,131,40398,2,0,L|88:210,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
322,338,40601,6,0,L|410:323,1,80,4|4,0:3|0:3,0:0:0:0:
|
||||
190,235,40801,1,10,0:0:0:0:
|
||||
374,157,41002,2,0,L|281:141,1,80,4|4,0:3|0:3,0:0:0:0:
|
||||
396,124,41203,2,0,L|492:126,1,80,10|4,0:0|0:3,0:0:0:0:
|
||||
210,54,41403,6,0,L|189:147,1,80,2|0,0:0|0:0,0:0:0:0:
|
||||
292,212,41604,2,0,L|189:222,1,80,8|8,1:2|1:2,0:0:0:0:
|
||||
413,295,41805,2,0,L|529:308,1,80,8|8,1:2|1:2,0:0:0:0:
|
||||
309,372,42005,1,8,1:2:0:0:
|
||||
120,371,42106,1,8,1:2:0:0:
|
||||
348,62,42206,6,0,L|501:42,1,143.999995605469,6|0,0:3|0:0,0:0:0:0:
|
||||
492,21,42408,2,0,L|382:31,1,95.9999970703126,10|0,0:0|0:0,0:0:0:0:
|
||||
197,204,42611,6,0,L|350:184,1,143.999995605469,4|0,0:3|0:0,0:0:0:0:
|
||||
341,163,42813,2,0,L|231:173,1,95.9999970703126,10|0,0:0|0:0,0:0:0:0:
|
||||
27,98,43016,6,0,L|180:78,1,143.999995605469,4|0,0:3|0:0,0:0:0:0:
|
||||
171,57,43218,2,0,L|61:67,1,95.9999970703126,10|0,0:0|0:0,0:0:0:0:
|
||||
296,309,43422,6,0,L|143:289,1,143.999995605469,4|0,0:3|0:0,0:0:0:0:
|
||||
152,268,43624,2,0,L|262:278,1,95.9999970703126,10|0,0:0|0:0,0:0:0:0:
|
||||
464,188,43827,6,0,L|311:168,1,143.999995605469,4|0,0:3|0:0,0:0:0:0:
|
||||
320,147,44029,2,0,L|430:157,1,95.9999970703126,10|0,0:0|0:0,0:0:0:0:
|
||||
195,40,44233,2,0,L|89:80,1,95.9999970703126,4|0,0:3|0:0,0:0:0:0:
|
||||
339,305,44435,2,0,L|234:272,1,95.9999970703126,10|0,0:0|0:0,0:0:0:0:
|
||||
43,306,44638,6,0,L|48:202,1,80,2|0,0:3|0:0,0:0:0:0:
|
||||
151,185,44841,2,0,L|252:174,1,80,8|4,0:3|0:3,0:0:0:0:
|
||||
21,107,45043,2,0,L|123:94,1,80,8|8,1:2|1:2,0:0:0:0:
|
||||
311,42,45246,1,8,1:2:0:0:
|
||||
100,73,45347,1,8,1:2:0:0:
|
||||
320,63,45449,6,0,L|419:64,1,80,6|0,0:3|0:0,0:0:0:0:
|
||||
203,93,45651,2,0,L|188:258,1,160,10|0,0:0|0:0,0:0:0:0:
|
||||
278,322,45956,1,4,0:3:0:0:
|
||||
192,308,46057,1,10,0:0:0:0:
|
||||
107,282,46158,1,0,0:0:0:0:
|
||||
344,262,46260,1,4,0:3:0:0:
|
||||
41,363,46462,6,0,L|29:195,1,160,10|4,0:0|0:3,0:0:0:0:
|
||||
146,159,46766,1,4,0:3:0:0:
|
||||
64,117,46868,1,10,0:0:0:0:
|
||||
147,91,46969,1,0,0:0:0:0:
|
||||
370,78,47070,1,4,0:3:0:0:
|
||||
82,28,47273,6,0,L|247:23,1,160,10|0,0:0|0:0,0:0:0:0:
|
||||
154,64,47577,1,4,0:3:0:0:
|
||||
360,110,47678,2,0,L|371:204,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
262,201,47881,2,0,L|246:285,1,80,4|0,0:3|0:0,0:0:0:0:
|
||||
455,349,48084,2,0,L|356:360,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
476,318,48287,2,0,L|487:231,1,80,4|4,0:3|0:3,0:0:0:0:
|
||||
278,105,48489,2,0,L|165:109,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
434,51,48692,5,4,0:3:0:0:
|
||||
134,32,48895,2,0,L|128:217,1,160,10|0,0:0|0:0,0:0:0:0:
|
||||
215,230,49199,1,4,0:3:0:0:
|
||||
306,248,49300,1,10,0:0:0:0:
|
||||
400,256,49401,1,0,0:0:0:0:
|
||||
134,346,49503,5,10,0:0:0:0:
|
||||
332,145,49706,2,0,L|217:133,1,80,8|8,0:3|0:3,0:0:0:0:
|
||||
139,84,49908,2,0,L|40:97,1,80,4|4,0:3|0:3,0:0:0:0:
|
||||
280,34,50111,2,0,L|359:36,1,80,4|4,0:3|0:3,0:0:0:0:
|
||||
39,184,50314,6,0,B|26:342|26:342|43:151,1,320,6|2,0:3|0:0,0:0:0:0:
|
||||
345,72,51124,1,4,0:3:0:0:
|
||||
393,76,51189,1,4,0:3:0:0:
|
||||
424,114,51254,1,4,0:3:0:0:
|
||||
394,165,51319,1,4,0:3:0:0:
|
||||
341,177,51384,2,0,L|252:182,2,80,4|4|4,1:3|0:3|0:3,0:0:0:0:
|
||||
150,299,51674,2,0,L|62:289,1,80,8|8,1:2|1:2,0:0:0:0:
|
||||
283,314,51867,1,8,1:2:0:0:
|
||||
49,382,51964,6,0,L|32:220,1,160,6|10,0:0|0:0,0:0:0:0:
|
||||
118,194,52268,1,0,0:0:0:0:
|
||||
317,113,52369,2,0,L|306:20,1,80,0|0,0:3|0:0,0:0:0:0:
|
||||
204,93,52572,2,0,L|93:103,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
327,206,52774,6,0,L|338:305,1,80,4|0,0:3|0:0,0:0:0:0:
|
||||
239,316,52977,1,10,0:0:0:0:
|
||||
455,265,53078,2,0,L|466:364,1,80,4|0,0:3|0:0,0:0:0:0:
|
||||
367,375,53281,1,4,0:3:0:0:
|
||||
144,213,53382,2,0,L|236:206,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
449,135,53585,5,4,0:3:0:0:
|
||||
251,129,53788,2,0,L|240:310,1,160,10|0,0:0|0:0,0:0:0:0:
|
||||
324,307,54092,1,4,0:3:0:0:
|
||||
222,340,54193,2,0,L|311:358,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
75,262,54396,5,4,0:3:0:0:
|
||||
268,150,54599,2,0,L|95:138,1,160,10|4,0:0|0:3,0:0:0:0:
|
||||
194,100,54903,1,4,0:3:0:0:
|
||||
94,66,55004,2,0,L|10:73,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
288,35,55207,1,4,0:1:0:0:
|
||||
17,277,55409,6,0,L|200:295,1,160,12|4,0:0|0:3,0:0:0:0:
|
||||
92,247,55714,1,4,0:3:0:0:
|
||||
299,208,55815,2,0,L|393:189,1,80,10|0,0:2|0:3,0:0:0:0:
|
||||
162,168,56018,2,0,L|142:75,1,80,4|4,0:3|0:3,0:0:0:0:
|
||||
384,353,56220,2,0,L|399:266,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
168,188,56423,2,0,L|254:171,1,80,4|4,0:3|0:3,0:0:0:0:
|
||||
491,60,56626,2,0,L|393:53,1,80,8|0,0:0|0:0,0:0:0:0:
|
||||
174,208,56828,6,0,L|366:157,1,160,12|0,0:0|0:0,0:0:0:0:
|
||||
97,299,57132,2,0,L|283:273,1,160,12|0,0:0|0:0,0:0:0:0:
|
||||
24,371,57436,2,0,L|128:375,1,80,12|0,0:0|0:0,0:0:0:0:
|
||||
490,297,57639,5,12,0:0:0:0:
|
||||
11,149,58045,1,12,0:0:0:0:
|
||||
485,101,58450,5,6,0:3:0:0:
|
||||
278,89,58653,2,0,L|265:255,1,160,12|0,0:0|0:0,0:0:0:0:
|
||||
461,317,58957,2,0,L|359:332,2,80,4|10|0,0:3|0:0|0:0,0:0:0:0:
|
||||
265,354,59261,2,0,L|168:342,1,80,4|4,0:3|0:3,0:0:0:0:
|
||||
399,207,59464,1,10,0:0:0:0:
|
||||
486,183,59565,2,0,L|315:167,1,160,0|4,0:0|0:3,0:0:0:0:
|
||||
101,196,59869,6,0,L|90:117,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
200,86,60072,2,0,L|297:79,1,80,4|0,0:3|0:0,0:0:0:0:
|
||||
50,29,60274,2,0,L|29:192,1,160,10|0,0:0|0:0,0:0:0:0:
|
||||
122,223,60578,1,4,0:3:0:0:
|
||||
345,323,60680,2,0,L|255:338,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
365,359,60882,2,0,L|452:374,1,80,4|0,0:3|0:0,0:0:0:0:
|
||||
214,258,61085,2,0,L|390:227,1,160,10|4,0:0|0:3,0:0:0:0:
|
||||
285,205,61389,1,4,0:3:0:0:
|
||||
490,116,61491,2,0,L|372:109,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
169,138,61693,6,0,P|215:106|312:93,1,143.999995605469,4|0,0:1|0:0,0:0:0:0:
|
||||
355,106,61896,2,0,L|363:8,1,95.9999970703126,10|0,0:0|0:0,0:0:0:0:
|
||||
150,159,62099,6,0,P|196:127|293:114,1,143.999995605469,4|0,0:3|0:0,0:0:0:0:
|
||||
336,127,62302,2,0,L|344:29,1,95.9999970703126,10|0,0:0|0:0,0:0:0:0:
|
||||
138,185,62504,6,0,P|184:153|281:140,1,143.999995605469,4|0,0:3|0:0,0:0:0:0:
|
||||
324,153,62707,2,0,L|332:55,1,95.9999970703126,10|0,0:0|0:0,0:0:0:0:
|
||||
125,217,62909,6,0,P|171:185|268:172,1,143.999995605469,4|0,0:3|0:0,0:0:0:0:
|
||||
311,185,63112,2,0,L|319:87,1,95.9999970703126,10|0,0:0|0:0,0:0:0:0:
|
||||
91,366,63315,6,0,L|72:285,1,80,4|0,0:3|0:0,0:0:0:0:
|
||||
188,123,63518,2,0,L|203:34,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
421,366,63720,2,0,L|440:285,1,80,4|0,0:3|0:0,0:0:0:0:
|
||||
324,123,63923,2,0,L|309:34,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
88,186,64126,6,0,L|177:206,1,80,6|0,0:3|0:0,0:0:0:0:
|
||||
69,245,64326,2,0,L|52:207,2,40,8|0|8,1:2|0:0|1:2,0:0:0:0:
|
||||
284,307,64526,1,8,1:2:0:0:
|
||||
189,322,64626,2,0,L|161:263,2,40,8|0|8,1:2|0:0|1:2,0:0:0:0:
|
||||
411,353,64826,1,8,1:2:0:0:
|
||||
194,345,64926,5,2,0:2:0:0:
|
||||
34,290,65128,2,0,L|203:234,1,160,10|0,0:0|0:0,0:0:0:0:
|
||||
276,197,65432,1,4,0:3:0:0:
|
||||
380,177,65534,1,10,0:0:0:0:
|
||||
188,49,65736,1,4,0:3:0:0:
|
||||
490,358,65939,6,0,P|425:328|317:326,1,160,10|4,0:2|0:3,0:0:0:0:
|
||||
255,318,66243,1,4,0:3:0:0:
|
||||
338,307,66344,1,10,0:0:0:0:
|
||||
427,304,66446,1,0,0:0:0:0:
|
||||
213,218,66547,5,4,0:3:0:0:
|
||||
391,119,66750,2,0,L|232:111,1,160,10|0,0:0|0:0,0:0:0:0:
|
||||
317,76,67054,1,4,0:3:0:0:
|
||||
227,47,67155,1,10,0:0:0:0:
|
||||
46,52,67358,1,4,0:3:0:0:
|
||||
341,167,67561,6,0,L|352:333,1,160,10|4,0:0|0:3,0:0:0:0:
|
||||
267,348,67865,1,4,0:3:0:0:
|
||||
169,341,67966,1,10,0:0:0:0:
|
||||
364,141,68169,1,4,0:3:0:0:
|
||||
58,232,68371,6,0,L|17:58,1,160,10|4,0:0|0:3,0:0:0:0:
|
||||
108,56,68676,1,4,0:3:0:0:
|
||||
196,63,68777,1,10,0:0:0:0:
|
||||
103,73,68878,1,4,0:3:0:0:
|
||||
309,166,68980,1,4,0:3:0:0:
|
||||
132,294,69182,2,0,L|40:311,2,80,8|0|4,0:0|0:0|0:3,0:0:0:0:
|
||||
346,348,69486,1,4,0:3:0:0:
|
||||
245,351,69588,2,0,L|228:257,1,80,10|4,0:0|0:3,0:0:0:0:
|
||||
462,217,69790,5,4,0:3:0:0:
|
||||
191,129,69993,2,0,L|358:74,1,160,10|0,0:0|0:0,0:0:0:0:
|
||||
251,60,70297,1,4,0:3:0:0:
|
||||
342,78,70398,2,0,L|435:70,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
225,260,70601,2,0,L|115:272,1,80,4|0,0:3|0:0,0:0:0:0:
|
||||
355,358,70804,2,0,L|455:352,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
194,210,71007,2,0,L|294:201,1,80,0|4,0:0|0:3,0:0:0:0:
|
||||
465,180,71209,1,10,0:0:0:0:
|
||||
171,113,71412,6,0,L|156:283,1,160,4|10,0:3|0:0,0:0:0:0:
|
||||
353,84,71817,1,0,0:0:0:0:
|
||||
279,41,71918,1,4,0:3:0:0:
|
||||
196,30,72019,1,10,0:0:0:0:
|
||||
15,120,72223,1,4,0:3:0:0:
|
||||
333,178,72426,6,0,L|349:349,1,160,10|4,0:0|0:3,0:0:0:0:
|
||||
265,355,72730,1,4,0:3:0:0:
|
||||
351,364,72831,1,10,0:0:0:0:
|
||||
438,377,72932,1,0,0:0:0:0:
|
||||
237,248,73034,1,4,0:3:0:0:
|
||||
418,131,73236,2,0,L|259:111,1,160,10|0,0:0|0:0,0:0:0:0:
|
||||
344,76,73540,1,4,0:3:0:0:
|
||||
255,56,73642,1,10,0:0:0:0:
|
||||
68,82,73844,1,4,0:3:0:0:
|
||||
418,131,74047,6,0,L|436:303,1,160,10|4,0:0|0:3,0:0:0:0:
|
||||
345,310,74351,1,4,0:3:0:0:
|
||||
437,312,74453,1,10,0:0:0:0:
|
||||
247,357,74655,2,0,L|148:345,1,80,4|0,0:3|0:0,0:0:0:0:
|
||||
375,215,74858,2,0,L|290:208,2,80,10|0|4,0:0|0:0|0:3,0:0:0:0:
|
||||
466,190,75162,2,0,L|484:147,2,40,4|0|10,0:3|0:0|0:0,0:0:0:0:
|
||||
377,201,75365,1,4,0:3:0:0:
|
||||
160,115,75466,6,0,L|14:220,1,160,4|10,0:3|0:0,0:0:0:0:
|
||||
232,278,75770,2,0,L|250:377,1,80,4|0,0:3|0:0,0:0:0:0:
|
||||
28,192,75973,2,0,L|139:184,2,80,4|10|0,0:3|0:0|0:0,0:0:0:0:
|
||||
246,135,76277,1,4,0:3:0:0:
|
||||
66,46,76480,2,0,P|149:13|233:19,1,160,10|4,0:0|0:3,0:0:0:0:
|
||||
438,117,76784,2,0,L|344:102,1,80,4|8,0:3|0:0,0:0:0:0:
|
||||
153,75,76986,1,4,0:3:0:0:
|
||||
371,127,77088,5,6,0:3:0:0:
|
||||
207,190,77290,2,0,L|196:284,1,80,8|8,1:2|1:2,0:0:0:0:
|
||||
392,262,77493,2,0,L|486:270,1,80,8|8,1:2|1:2,0:0:0:0:
|
||||
236,374,77696,2,0,L|324:362,1,80,8|8,1:2|1:2,0:0:0:0:
|
||||
70,318,77898,6,0,P|123:277|211:273,1,143.999995605469,6|0,0:3|0:0,0:0:0:0:
|
||||
144,233,78101,2,0,L|35:183,1,95.9999970703126,10|0,0:0|0:0,0:0:0:0:
|
||||
257,170,78304,6,0,P|310:129|398:125,1,143.999995605469,4|0,0:3|0:0,0:0:0:0:
|
||||
331,85,78507,2,0,L|222:35,1,95.9999970703126,10|0,0:0|0:0,0:0:0:0:
|
||||
460,184,78709,6,0,P|407:225|319:229,1,143.999995605469,4|0,0:3|0:0,0:0:0:0:
|
||||
386,269,78912,2,0,L|495:319,1,95.9999970703126,10|0,0:0|0:0,0:0:0:0:
|
||||
257,170,79115,6,0,P|204:211|116:215,1,143.999995605469,4|0,0:3|0:0,0:0:0:0:
|
||||
183,255,79318,2,0,L|292:305,1,95.9999970703126,10|0,0:0|0:0,0:0:0:0:
|
||||
40,35,79520,6,0,P|93:76|181:80,1,143.999995605469,4|0,0:3|0:0,0:0:0:0:
|
||||
114,120,79723,2,0,L|5:170,1,95.9999970703126,10|0,0:2|0:0,0:0:0:0:
|
||||
255,200,79926,2,0,L|271:301,1,95.9999970703126,4|4,0:3|0:3,0:0:0:0:
|
||||
41,348,80128,2,0,L|146:282,1,95.9999970703126,10|0,0:0|0:0,0:0:0:0:
|
||||
379,360,80331,6,0,B|484:361|484:361|485:138,1,320,6|0,0:3|2:0,0:0:0:0:
|
||||
259,86,80838,1,0,3:0:0:0:
|
||||
374,67,80939,1,2,0:0:0:0:
|
||||
147,28,81040,1,2,2:0:0:0:
|
||||
399,77,81125,6,0,L|418:259,1,160,12|0,0:1|0:0,0:0:0:0:
|
||||
175,318,81429,2,0,L|340:333,1,160,8|0,0:0|0:0,0:0:0:0:
|
||||
107,178,81733,2,0,L|2:190,1,80,8|0,0:0|0:0,0:0:0:0:
|
||||
236,154,81935,1,8,0:0:0:0:
|
||||
21,151,82037,2,0,L|117:140,1,80,0|2,0:0|0:0,0:0:0:0:
|
||||
294,66,82239,1,8,0:0:0:0:
|
||||
95,105,82341,1,2,0:0:0:0:
|
||||
305,39,82442,1,2,0:0:0:0:
|
||||
88,64,82543,2,0,L|181:48,1,80,8|0,0:0|0:0,0:0:0:0:
|
||||
410,86,82746,6,0,L|428:249,1,160,12|0,0:0|3:3,0:0:0:0:
|
||||
193,225,83050,2,0,L|164:400,1,160,8|0,0:0|3:0,0:0:0:0:
|
||||
381,368,83354,2,0,L|285:358,1,80,8|0,0:0|0:0,0:0:0:0:
|
||||
88,151,83557,2,0,L|193:137,1,80,0|0,3:0|3:0,0:0:0:0:
|
||||
362,100,83763,1,10,1:2:0:0:
|
||||
193,58,83867,1,0,1:0:0:0:
|
||||
17,208,83970,1,10,1:2:0:0:
|
||||
192,267,84074,2,0,L|292:279,1,80,0|0,1:0|1:2,0:0:0:0:
|
||||
22,238,84281,1,0,1:0:0:0:
|
||||
299,180,84384,6,0,L|469:174,1,160,12|0,0:1|0:0,0:0:0:0:
|
||||
207,344,84688,2,0,L|374:314,1,160,8|0,0:0|0:0,0:0:0:0:
|
||||
104,113,84992,2,0,L|-1:108,1,80,8|0,0:0|0:0,0:0:0:0:
|
||||
245,51,85194,2,0,L|254:141,1,80,14|0,0:0|0:0,0:0:0:0:
|
||||
154,191,85397,1,2,0:0:0:0:
|
||||
380,135,85498,2,0,L|353:235,1,80,10|2,0:0|0:0,0:0:0:0:
|
||||
160,220,85701,1,0,0:0:0:0:
|
||||
370,239,85802,2,0,L|483:248,1,80,10|2,0:0|0:0,0:0:0:0:
|
||||
208,327,86005,6,0,L|43:355,1,160,12|0,0:2|0:0,0:0:0:0:
|
||||
262,177,86306,2,0,L|88:170,1,160,8|0,0:0|0:0,0:0:0:0:
|
||||
339,53,86607,2,0,L|244:48,1,80,8|2,0:0|0:0,0:0:0:0:
|
||||
39,254,86807,2,0,L|134:265,2,80,8|0|0,0:0|0:0|0:0,0:0:0:0:
|
||||
236,164,87108,2,0,L|329:152,1,80,8|0,0:0|0:0,0:0:0:0:
|
||||
214,126,87309,1,0,0:0:0:0:
|
||||
435,318,87409,2,0,L|333:326,1,80,8|2,0:0|0:0,0:0:0:0:
|
||||
110,360,87610,6,0,L|43:194,1,160,12|0,0:1|0:0,0:0:0:0:
|
||||
263,245,87914,2,0,L|269:64,1,160,8|0,0:0|0:0,0:0:0:0:
|
||||
495,5,88218,2,0,L|407:-1,1,80,8|0,0:0|0:0,0:0:0:0:
|
||||
195,21,88420,2,0,L|204:100,1,80,8|0,0:0|0:0,0:0:0:0:
|
||||
410,38,88623,1,2,0:0:0:0:
|
||||
194,140,88724,2,0,L|90:150,1,80,8|2,0:0|0:0,0:0:0:0:
|
||||
308,223,88927,1,2,0:0:0:0:
|
||||
97,188,89028,1,8,0:0:0:0:
|
||||
305,260,89130,1,0,0:0:0:0:
|
||||
82,224,89231,6,0,L|38:377,1,160,12|0,0:0|3:0,0:0:0:0:
|
||||
301,300,89535,2,0,L|107:322,1,160,8|0,0:0|3:0,0:0:0:0:
|
||||
364,384,89839,2,0,L|472:376,1,80,8|0,0:0|0:0,0:0:0:0:
|
||||
217,210,90042,2,0,L|322:198,1,80,8|8,3:3|3:3,0:0:0:0:
|
||||
490,135,90245,1,8,1:0:0:0:
|
||||
290,156,90346,2,0,L|196:164,1,80,8|2,1:0|3:3,0:0:0:0:
|
||||
398,38,90549,1,8,1:0:0:0:
|
||||
218,115,90650,1,8,0:0:0:0:
|
||||
27,45,90751,1,0,0:0:0:0:
|
||||
270,295,90853,6,0,L|437:315,1,160,12|0,0:1|0:0,0:0:0:0:
|
||||
193,89,91157,2,0,L|15:69,1,160,8|0,0:0|0:0,0:0:0:0:
|
||||
262,215,91461,2,0,L|272:325,1,80,8|0,0:0|0:0,0:0:0:0:
|
||||
30,289,91664,2,0,L|41:197,1,80,12|0,0:2|0:0,0:0:0:0:
|
||||
252,323,91866,1,0,0:0:0:0:
|
||||
25,182,91968,2,0,L|136:168,1,80,8|0,0:0|0:0,0:0:0:0:
|
||||
295,111,92170,1,0,3:0:0:0:
|
||||
90,142,92272,1,8,0:0:0:0:
|
||||
303,72,92373,1,0,3:0:0:0:
|
||||
69,110,92474,6,0,L|31:283,1,160,12|0,0:1|0:0,0:0:0:0:
|
||||
244,208,92778,2,0,L|260:368,1,160,8|0,0:0|3:0,0:0:0:0:
|
||||
471,367,93082,1,8,0:0:0:0:
|
||||
268,347,93184,1,0,3:0:0:0:
|
||||
72,342,93285,6,0,L|285:283,1,191.999994140625,4|8,0:0|1:2,0:0:0:0:
|
||||
61,310,93589,1,8,1:2:0:0:
|
||||
246,260,93691,1,8,1:2:0:0:
|
||||
76,273,93792,1,8,1:2:0:0:
|
||||
211,232,93893,1,8,1:2:0:0:
|
||||
97,235,93995,1,8,1:2:0:0:
|
||||
185,206,94096,1,0,3:0:0:0:
|
||||
117,200,94197,1,0,3:0:0:0:
|
||||
328,14,94299,6,0,L|10:393,1,480.000018310548,12|0,0:0|3:0,0:0:0:0:
|
||||
103,375,94603,1,0,3:0:0:0:
|
||||
363,8,94704,6,0,L|57:377,1,480.000018310548,12|0,0:0|3:0,0:0:0:0:
|
||||
142,378,95008,1,0,3:0:0:0:
|
||||
416,14,95110,6,0,L|110:383,1,480.000018310548,12|0,0:0|3:0,0:0:0:0:
|
||||
195,384,95414,1,0,3:0:0:0:
|
||||
471,14,95515,6,0,L|165:383,1,480.000018310548,12|4,0:0|3:3,0:0:0:0:
|
||||
250,384,95819,1,0,0:0:0:0:
|
||||
468,363,95920,6,0,L|482:194,1,160,10|0,0:0|0:2,0:0:0:0:
|
||||
383,183,96224,2,0,L|290:173,1,80,2|8,3:2|0:0,0:0:0:0:
|
||||
401,144,96427,1,0,0:0:0:0:
|
||||
170,74,96528,2,0,L|150:189,1,80,2|0,3:2|0:0,0:0:0:0:
|
||||
271,268,96731,2,0,L|287:355,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
65,343,96934,2,0,L|144:322,1,80,2|0,3:2|0:0,0:0:0:0:
|
||||
340,209,97137,2,0,L|223:205,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
344,166,97339,2,0,L|442:166,1,80,0|0,3:0|3:0,0:0:0:0:
|
||||
171,14,97542,6,0,L|489:393,1,480.000018310548,12|0,0:0|3:0,0:0:0:0:
|
||||
396,375,97846,1,0,3:0:0:0:
|
||||
136,8,97947,6,0,L|442:377,1,480.000018310548,12|0,0:0|3:0,0:0:0:0:
|
||||
357,378,98251,1,0,3:0:0:0:
|
||||
83,14,98353,6,0,L|389:383,1,480.000018310548,12|0,0:0|3:0,0:0:0:0:
|
||||
304,384,98657,1,0,3:0:0:0:
|
||||
28,14,98758,6,0,L|334:383,1,480.000018310548,12|4,0:0|3:3,0:0:0:0:
|
||||
249,384,99062,1,0,0:0:0:0:
|
||||
46,364,99164,6,0,L|29:194,1,160,10|2,0:0|3:2,0:0:0:0:
|
||||
114,185,99468,1,0,0:0:0:0:
|
||||
213,128,99569,2,0,L|112:121,1,80,10|0,3:2|0:0,0:0:0:0:
|
||||
341,93,99772,2,0,L|430:77,1,80,2|0,3:2|0:0,0:0:0:0:
|
||||
320,51,99974,2,0,L|207:42,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
452,164,100177,2,0,L|470:266,1,80,2|0,3:2|0:0,0:0:0:0:
|
||||
232,253,100380,2,0,L|344:259,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
214,342,100582,2,0,L|197:237,1,80,0|0,3:0|3:0,0:0:0:0:
|
||||
442,13,100788,6,0,L|136:382,1,480.000018310548,12|0,0:0|3:0,0:0:0:0:
|
||||
221,383,101099,1,0,3:0:0:0:
|
||||
486,14,101202,6,0,L|180:383,1,480.000018310548,12|0,0:0|3:0,0:0:0:0:
|
||||
265,384,101513,1,0,3:0:0:0:
|
||||
26,14,101616,6,0,L|332:383,1,480.000018310548,12|0,0:0|3:0,0:0:0:0:
|
||||
247,384,101927,1,0,3:0:0:0:
|
||||
26,14,102030,6,0,L|332:383,1,480.000018310548,12|4,0:0|0:3,0:0:0:0:
|
||||
134,344,102439,6,0,L|121:161,1,160,10|0,0:0|0:0,0:0:0:0:
|
||||
207,149,102743,1,2,3:2:0:0:
|
||||
298,134,102845,1,8,0:0:0:0:
|
||||
106,78,103047,1,0,3:0:0:0:
|
||||
444,49,103250,1,8,0:0:0:0:
|
||||
355,52,103351,2,0,L|342:223,1,160,0|0,3:0|3:0,0:0:0:0:
|
||||
134,344,103655,2,0,L|213:340,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
457,313,103858,5,4,0:0:0:0:
|
||||
268,129,104061,2,0,L|110:165,1,160,8|0,0:0|0:0,0:0:0:0:
|
||||
196,211,104365,1,0,3:0:0:0:
|
||||
281,222,104466,1,8,0:0:0:0:
|
||||
101,272,104669,2,0,L|9:286,1,80,0|0,3:0|0:0,0:0:0:0:
|
||||
257,300,104872,6,0,L|268:129,1,160,8|0,0:0|0:0,0:0:0:0:
|
||||
180,112,105176,1,0,3:0:0:0:
|
||||
86,102,105277,1,8,0:0:0:0:
|
||||
280,40,105480,2,0,L|375:44,1,80,0|0,3:0|0:0,0:0:0:0:
|
||||
135,238,105682,2,0,L|305:251,1,160,8|0,0:0|0:0,0:0:0:0:
|
||||
208,296,105987,1,0,3:0:0:0:
|
||||
308,334,106088,2,0,L|406:338,1,80,8|0,0:0|0:0,0:0:0:0:
|
||||
138,367,106291,5,4,0:0:0:0:
|
||||
311,200,106493,2,0,L|212:192,1,80,8|8,1:2|1:2,0:0:0:0:
|
||||
53,121,106696,1,8,1:2:0:0:
|
||||
228,151,106797,1,8,1:2:0:0:
|
||||
416,137,106899,1,8,1:2:0:0:
|
||||
226,117,107000,1,8,1:2:0:0:
|
||||
474,37,107101,6,0,B|477:204|477:204|326:223,1,320,4|10,0:2|0:0,0:0:0:0:
|
||||
68,357,107811,2,0,L|233:291,1,160,8|0,0:0|0:0,0:0:0:0:
|
||||
39,173,108115,2,0,L|199:111,1,160,4|10,0:3|0:0,0:0:0:0:
|
||||
379,100,108419,2,0,L|209:212,1,191.999994140625,4|0,0:3|0:0,0:0:0:0:
|
||||
432,333,108723,6,0,B|262:274|262:274|256:68,1,383.99998828125,6|10,0:3|0:0,0:0:0:0:
|
||||
39,266,109432,2,0,L|34:64,1,191.999994140625,8|0,0:0|0:0,0:0:0:0:
|
||||
262,113,109737,2,0,L|119:183,1,160,4|10,0:3|0:0,0:0:0:0:
|
||||
315,301,110041,2,0,L|476:217,1,160,4|0,0:3|0:0,0:0:0:0:
|
||||
267,383,110345,6,0,L|252:213,1,160,6|0,0:3|0:0,0:0:0:0:
|
||||
445,151,110750,2,0,L|289:107,1,160,10|0,0:0|0:0,0:0:0:0:
|
||||
80,64,111054,2,0,L|74:149,1,80,8|0,0:0|0:0,0:0:0:0:
|
||||
381,285,111358,2,0,L|206:228,1,160,4|10,0:3|0:0,0:0:0:0:
|
||||
28,35,111662,2,0,L|198:93,1,160,4|0,0:3|0:0,0:0:0:0:
|
||||
420,0,111966,6,0,L|428:177,1,160,6|4,0:3|0:3,0:0:0:0:
|
||||
331,206,112270,1,4,0:3:0:0:
|
||||
114,320,112372,1,10,1:2:0:0:
|
||||
301,351,112585,2,0,L|401:348,1,80,0|0,1:2|1:3,0:0:0:0:
|
||||
141,360,112799,2,0,L|117:186,1,160,2|4,1:2|0:3,0:0:0:0:
|
||||
314,185,113103,1,4,0:3:0:0:
|
||||
89,105,113204,2,0,L|255:83,1,160,10|8,0:0|1:2,0:0:0:0:
|
||||
451,65,113493,1,8,1:2:0:0:
|
||||
212,174,113589,6,0,B|66:231|66:231|223:275,1,320,4|10,0:0|0:0,0:0:0:0:
|
||||
435,349,114298,2,0,L|256:346,1,160,8|0,0:0|0:0,0:0:0:0:
|
||||
43,328,114602,2,0,L|17:160,1,160,4|10,0:3|0:0,0:0:0:0:
|
||||
243,183,114906,2,0,L|271:-11,1,160,4|0,0:3|0:0,0:0:0:0:
|
||||
54,51,115210,6,0,B|215:100|215:100|223:315,1,383.99998828125,6|10,0:3|0:0,0:0:0:0:
|
||||
464,355,115920,2,0,L|450:158,1,160,8|0,0:0|0:0,0:0:0:0:
|
||||
267,153,116224,2,0,L|435:81,1,160,4|10,0:3|0:0,0:0:0:0:
|
||||
230,357,116528,2,0,L|65:300,1,160,4|0,0:3|0:0,0:0:0:0:
|
||||
281,231,116832,6,0,L|292:44,1,160,6|0,0:3|0:0,0:0:0:0:
|
||||
189,65,117136,1,0,0:0:0:0:
|
||||
86,120,117237,2,0,L|246:133,1,160,10|0,0:0|0:0,0:0:0:0:
|
||||
37,252,117541,2,0,L|130:241,2,80,8|0|0,0:0|0:0|0:0,0:0:0:0:
|
||||
249,342,117845,2,0,L|424:316,1,160,4|10,0:3|0:0,0:0:0:0:
|
||||
192,274,118149,2,0,L|171:89,1,160,4|0,0:3|0:0,0:0:0:0:
|
||||
392,72,118453,5,6,0:3:0:0:
|
||||
199,20,118656,2,0,L|291:15,1,80,0|4,0:0|0:3,0:0:0:0:
|
||||
499,235,118859,2,0,L|333:220,1,160,8|0,1:2|1:0,0:0:0:0:
|
||||
141,300,119163,1,0,1:0:0:0:
|
||||
347,334,119264,2,0,L|372:145,1,160,2|8,0:0|1:2,0:0:0:0:
|
||||
279,154,119565,1,8,1:2:0:0:
|
||||
87,137,119663,5,8,1:0:0:0:
|
||||
190,110,119761,1,8,1:0:0:0:
|
||||
15,60,119859,1,8,1:0:0:0:
|
||||
222,22,119957,1,8,1:0:0:0:
|
||||
423,36,120055,6,0,L|428:125,1,80,4|0,0:1|0:0,0:0:0:0:
|
||||
237,334,120257,2,0,L|433:339,1,160,8|0,0:0|0:0,0:0:0:0:
|
||||
315,296,120561,1,0,3:0:0:0:
|
||||
110,257,120663,2,0,L|10:239,2,80,8|0|2,0:0|0:0|3:2,0:0:0:0:
|
||||
401,36,121068,2,0,L|206:56,1,160,8|0,0:0|3:0,0:0:0:0:
|
||||
331,88,121372,1,0,3:0:0:0:
|
||||
140,122,121473,2,0,L|24:117,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
245,185,121676,6,0,L|261:280,1,80,0|0,3:0|0:0,0:0:0:0:
|
||||
67,353,121879,2,0,L|252:361,1,160,8|0,0:0|0:0,0:0:0:0:
|
||||
140,331,122183,1,0,3:0:0:0:
|
||||
234,300,122284,2,0,L|330:288,1,80,8|0,0:0|0:0,0:0:0:0:
|
||||
117,188,122487,2,0,L|8:178,1,80,2|0,3:2|0:0,0:0:0:0:
|
||||
251,209,122690,2,0,L|261:37,1,160,8|0,0:0|3:0,0:0:0:0:
|
||||
56,37,122994,2,0,L|163:22,2,80,0|10|0,3:0|0:0|0:0,0:0:0:0:
|
||||
293,246,123298,5,0,3:0:0:0:
|
||||
21,68,123500,2,0,L|192:77,1,160,10|0,0:0|3:0,0:0:0:0:
|
||||
96,101,123805,1,0,0:0:0:0:
|
||||
298,139,123906,2,0,L|389:143,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
196,277,124109,5,2,3:2:0:0:
|
||||
491,349,124311,2,0,L|314:364,1,160,8|0,0:0|0:0,0:0:0:0:
|
||||
410,326,124615,1,2,3:2:0:0:
|
||||
201,289,124717,2,0,L|184:204,1,80,8|8,0:2|0:2,0:0:0:0:
|
||||
292,195,124919,2,0,L|307:109,1,80,0|0,3:0|0:0,0:0:0:0:
|
||||
74,51,125122,6,0,L|171:36,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
55,89,125325,2,0,L|41:181,1,80,0|0,3:0|0:0,0:0:0:0:
|
||||
245,361,125527,2,0,L|346:362,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
98,279,125730,2,0,L|273:255,1,160,4|8,0:1|0:0,0:0:0:0:
|
||||
42,168,126034,2,0,L|142:155,2,80,0|0|0,3:0|0:0|3:0,0:0:0:0:
|
||||
260,73,126338,2,0,L|154:71,1,80,8|8,0:0|0:0,0:0:0:0:
|
||||
425,42,126541,5,4,0:1:0:0:
|
||||
247,119,126744,2,0,L|256:308,1,160,8|0,0:0|0:0,0:0:0:0:
|
||||
336,309,127048,1,0,3:0:0:0:
|
||||
120,350,127149,2,0,L|113:252,1,80,8|0,0:0|0:0,0:0:0:0:
|
||||
211,188,127352,2,0,L|103:188,1,80,2|0,3:2|0:0,0:0:0:0:
|
||||
346,102,127555,2,0,L|174:88,1,160,8|0,0:0|3:0,0:0:0:0:
|
||||
269,54,127859,1,0,3:0:0:0:
|
||||
64,24,127960,2,0,L|169:7,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
406,32,128163,5,0,3:0:0:0:
|
||||
103,146,128365,2,0,L|72:341,1,160,8|0,0:0|0:0,0:0:0:0:
|
||||
166,334,128669,1,0,3:0:0:0:
|
||||
360,304,128771,2,0,L|443:280,1,80,8|0,0:0|0:0,0:0:0:0:
|
||||
331,257,128973,2,0,L|232:245,1,80,2|0,3:2|0:0,0:0:0:0:
|
||||
478,193,129176,2,0,L|495:20,1,160,8|0,0:0|3:0,0:0:0:0:
|
||||
269,60,129480,2,0,L|357:48,2,80,0|10|0,3:0|0:0|0:0,0:0:0:0:
|
||||
37,64,129784,5,0,3:0:0:0:
|
||||
338,160,129987,2,0,L|153:186,1,160,10|2,0:0|3:2,0:0:0:0:
|
||||
101,189,130291,1,0,0:0:0:0:
|
||||
209,238,130392,2,0,L|305:224,1,80,10|2,0:0|3:2,0:0:0:0:
|
||||
60,338,130595,6,0,L|41:252,1,80,2|0,3:2|0:0,0:0:0:0:
|
||||
148,240,130798,2,0,L|162:128,1,80,10|0,0:2|0:0,0:0:0:0:
|
||||
375,95,131000,2,0,L|272:99,1,80,0|0,3:0|0:0,0:0:0:0:
|
||||
79,27,131203,2,0,L|176:17,1,80,8|0,0:0|0:0,0:0:0:0:
|
||||
398,188,131406,5,0,3:0:0:0:
|
||||
60,338,131609,2,0,L|243:358,1,160,8|0,0:0|3:0,0:0:0:0:
|
||||
139,302,131913,1,0,0:0:0:0:
|
||||
345,271,132014,2,0,L|236:260,1,80,8|0,0:0|0:0,0:0:0:0:
|
||||
40,182,132217,6,0,L|26:88,1,80,4|0,0:1|0:0,0:0:0:0:
|
||||
126,71,132419,1,8,1:0:0:0:
|
||||
330,109,132521,2,0,L|227:130,1,80,8|0,1:0|1:0,0:0:0:0:
|
||||
350,159,132723,2,0,L|467:163,1,80,0|8,1:0|1:0,0:0:0:0:
|
||||
241,249,132926,1,8,1:0:0:0:
|
||||
463,354,133027,6,0,P|403:318|292:320,1,143.999995605469,6|0,3:0|0:0,0:0:0:0:
|
||||
162,341,133232,2,0,L|150:237,1,95.9999970703126,10|0,0:0|0:0,0:0:0:0:
|
||||
416,274,133438,6,0,P|356:238|245:240,1,143.999995605469,4|0,0:3|0:0,0:0:0:0:
|
||||
115,261,133644,2,0,L|103:157,1,95.9999970703126,10|0,0:0|0:0,0:0:0:0:
|
||||
376,184,133850,6,0,P|316:148|205:150,1,143.999995605469,4|0,0:3|0:0,0:0:0:0:
|
||||
75,171,134056,2,0,L|63:67,1,95.9999970703126,10|0,0:0|0:0,0:0:0:0:
|
||||
324,109,134261,6,0,P|264:73|153:75,1,143.999995605469,4|0,0:3|0:0,0:0:0:0:
|
||||
23,96,134467,2,0,L|11:-16,1,80,10|0,0:0|0:0,0:0:0:0:
|
||||
308,14,134711,6,0,L|483:53,1,160,6|0,0:3|0:0,0:0:0:0:
|
||||
362,95,135127,1,8,0:0:0:0:
|
||||
199,130,135294,1,8,0:0:0:0:
|
||||
479,226,135461,1,8,0:0:0:0:
|
||||
289,289,135723,1,4,0:3:0:0:
|
||||
478,338,135985,1,4,0:3:0:0:
|
||||
141,224,136174,5,8,0:3:0:0:
|
||||
435,73,136553,1,4,0:3:0:0:
|
||||
199,42,136787,1,8,0:0:0:0:
|
||||
426,62,137178,1,8,0:0:0:0:
|
||||
27,107,137750,5,4,0:0:0:0:
|
||||
256,192,137822,12,0,145626,0:0:0:0:
|
||||
@@ -1,2 +0,0 @@
|
||||
/target
|
||||
Cargo.lock
|
||||
@@ -1,10 +0,0 @@
|
||||
[package]
|
||||
name = "mania"
|
||||
version = "0.1.0"
|
||||
authors = ["MaxOhn <ohn.m@hotmail.de>"]
|
||||
edition = "2018"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies.parse]
|
||||
path = "../parse"
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,2 +0,0 @@
|
||||
/target
|
||||
Cargo.lock
|
||||
@@ -1,10 +0,0 @@
|
||||
[package]
|
||||
name = "osu"
|
||||
version = "0.1.0"
|
||||
authors = ["MaxOhn <ohn.m@hotmail.de>"]
|
||||
edition = "2018"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies.parse]
|
||||
path = "../parse"
|
||||
@@ -1,150 +0,0 @@
|
||||
use super::math_util;
|
||||
|
||||
use parse::Pos2;
|
||||
|
||||
const SLIDER_QUALITY: f32 = 50.0;
|
||||
|
||||
pub(crate) enum Points {
|
||||
Single(Pos2),
|
||||
Multi(Vec<Pos2>),
|
||||
}
|
||||
|
||||
pub(crate) enum Curve {
|
||||
Linear {
|
||||
a: Pos2,
|
||||
b: Pos2,
|
||||
},
|
||||
Bezier(Points),
|
||||
Catmull(Points),
|
||||
Perfect {
|
||||
origin: Pos2,
|
||||
cx: f32,
|
||||
cy: f32,
|
||||
radius: f32,
|
||||
},
|
||||
}
|
||||
|
||||
impl Curve {
|
||||
#[inline]
|
||||
pub(crate) fn linear(a: Pos2, b: Pos2) -> Self {
|
||||
Self::Linear { a, b }
|
||||
}
|
||||
|
||||
pub(crate) fn bezier(points: &[Pos2]) -> Self {
|
||||
if points.len() == 1 {
|
||||
return Self::Bezier(Points::Single(points[0]));
|
||||
}
|
||||
|
||||
let mut start = 0;
|
||||
let mut end = 0;
|
||||
let mut result = Vec::with_capacity(4);
|
||||
|
||||
for i in 0..points.len() - 1 {
|
||||
if end - start > 1 && points[i] == points[end - 1] {
|
||||
Self::_bezier(&mut result, &points[start..end]);
|
||||
start = end;
|
||||
}
|
||||
|
||||
end += 1;
|
||||
}
|
||||
|
||||
Self::_bezier(&mut result, &points[start..end + 1]);
|
||||
|
||||
Self::Bezier(Points::Multi(result))
|
||||
}
|
||||
|
||||
fn _bezier(result: &mut Vec<Pos2>, points: &[Pos2]) {
|
||||
let step = 0.25 / SLIDER_QUALITY / points.len() as f32;
|
||||
let mut i = 0.0;
|
||||
let n = points.len() as i32 - 1;
|
||||
|
||||
while i < 1.0 + step {
|
||||
let point = (0..=n).fold(Pos2 { x: 0.0, y: 0.0 }, |point, p| {
|
||||
let factor = math_util::cpn(p, n) * (1.0 - i).powi(n - p) * i.powi(p);
|
||||
|
||||
point + points[p as usize] * factor
|
||||
});
|
||||
|
||||
result.push(point);
|
||||
i += step;
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn catmull(points: &[Pos2]) -> Self {
|
||||
if points.len() == 1 {
|
||||
return Self::Catmull(Points::Single(points[0]));
|
||||
}
|
||||
|
||||
let order = points.len();
|
||||
let step = 2.5 / SLIDER_QUALITY;
|
||||
let target = step + 1.0;
|
||||
|
||||
let mut resulting_points = Vec::with_capacity(4);
|
||||
|
||||
for x in 0..order - 1 {
|
||||
let mut t = 0.0;
|
||||
|
||||
while t < target {
|
||||
let v1 = if x >= 1 { points[x - 1] } else { points[x] };
|
||||
let v2 = points[x];
|
||||
|
||||
let v3 = if x + 1 < order {
|
||||
points[x + 1]
|
||||
} else {
|
||||
v2.add_scaled(v2.add_scaled(v1, -1.0), 1.0)
|
||||
};
|
||||
|
||||
let v4 = if x + 2 < order {
|
||||
points[x + 2]
|
||||
} else {
|
||||
v3.add_scaled(v3.add_scaled(v2, -1.0), 1.0)
|
||||
};
|
||||
|
||||
let point = Self::catmull_point(v1, v2, v3, v4, t);
|
||||
resulting_points.push(point);
|
||||
t += step;
|
||||
}
|
||||
}
|
||||
|
||||
Self::Catmull(Points::Multi(resulting_points))
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn catmull_point(p0: Pos2, p1: Pos2, p2: Pos2, p3: Pos2, len: f32) -> Pos2 {
|
||||
Pos2 {
|
||||
x: math_util::catmull(p0.x, p1.x, p2.x, p3.x, len),
|
||||
y: math_util::catmull(p0.y, p1.y, p2.y, p3.y, len),
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn perfect(points: &[Pos2]) -> Self {
|
||||
let (cx, cy, mut radius) = math_util::get_circum_circle(&points);
|
||||
radius *= ((!math_util::is_left(&points)) as i8 * 2 - 1) as f32;
|
||||
|
||||
Self::Perfect {
|
||||
origin: points[0],
|
||||
cx,
|
||||
cy,
|
||||
radius,
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn point_at_distance(&self, len: f32) -> Pos2 {
|
||||
let points = match self {
|
||||
Self::Bezier(points) => points,
|
||||
Self::Catmull(points) => points,
|
||||
Self::Linear { a, b } => return math_util::point_on_line(*a, *b, len),
|
||||
Self::Perfect {
|
||||
origin,
|
||||
cx,
|
||||
cy,
|
||||
radius,
|
||||
} => return math_util::rotate(*cx, *cy, *origin, len / *radius),
|
||||
};
|
||||
|
||||
match points {
|
||||
Points::Single(point) => *point,
|
||||
Points::Multi(points) => math_util::point_at_distance(points, len),
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,129 +0,0 @@
|
||||
use parse::Pos2;
|
||||
|
||||
#[inline]
|
||||
pub(crate) fn cpn(mut p: i32, n: i32) -> f32 {
|
||||
if p < 0 || p > n {
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
p = p.min(n - p);
|
||||
let mut out = 1.0;
|
||||
|
||||
for i in 1..=p {
|
||||
out *= (n - p + i) as f32 / i as f32;
|
||||
}
|
||||
|
||||
out
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub(crate) fn catmull(p0: f32, p1: f32, p2: f32, p3: f32, t: f32) -> f32 {
|
||||
0.5 * ((2.0 * p1)
|
||||
+ (-p0 + p2) * t
|
||||
+ (2.0 * p0 - 5.0 * p1 + 4.0 * p2 - p3) * t.powi(2)
|
||||
+ (-p0 + 3.0 * p1 - 3.0 * p2 + p3 * t.powi(3)))
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub(crate) fn point_on_line(p1: Pos2, p2: Pos2, len: f32) -> Pos2 {
|
||||
let mut full_len = ((p1.x - p2.x).powi(2) + (p1.y - p2.y).powi(2)).sqrt();
|
||||
let n = full_len - len;
|
||||
|
||||
if full_len.abs() < f32::EPSILON {
|
||||
full_len = 1.0;
|
||||
}
|
||||
|
||||
(p1 * n + p2 * len) / full_len
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub(crate) fn angle_from_points(p0: Pos2, p1: Pos2) -> f32 {
|
||||
(p1.y - p0.y).atan2(p1.x - p0.x)
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub(crate) fn distance_from_points(arr: &[Pos2]) -> f32 {
|
||||
arr.iter()
|
||||
.skip(1)
|
||||
.zip(arr.iter())
|
||||
.map(|(curr, prev)| curr.distance(prev))
|
||||
.sum()
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub(crate) fn cart_from_pol(r: f32, t: f32) -> Pos2 {
|
||||
Pos2 {
|
||||
x: r * t.cos(),
|
||||
y: r * t.sin(),
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn point_at_distance(array: &[Pos2], distance: f32) -> Pos2 {
|
||||
if array.len() < 2 {
|
||||
return Pos2 { x: 0.0, y: 0.0 };
|
||||
} else if distance.abs() < f32::EPSILON {
|
||||
return array[0];
|
||||
} else if distance_from_points(array) <= distance {
|
||||
return array[array.len() - 1];
|
||||
}
|
||||
|
||||
let mut i = 0;
|
||||
let mut current_distance = 0.0;
|
||||
let mut new_distance = 0.0;
|
||||
|
||||
while i < array.len() - 2 {
|
||||
new_distance = (array[i] - array[i + 1]).length();
|
||||
current_distance += new_distance;
|
||||
|
||||
if distance <= current_distance {
|
||||
break;
|
||||
}
|
||||
|
||||
i += 1;
|
||||
}
|
||||
|
||||
current_distance -= new_distance;
|
||||
|
||||
if (distance - current_distance).abs() <= f32::EPSILON {
|
||||
array[i]
|
||||
} else {
|
||||
let angle = angle_from_points(array[i], array[i + 1]);
|
||||
let cart = cart_from_pol(distance - current_distance, angle);
|
||||
|
||||
array[i] + cart * ((array[i].x <= array[i + 1].x) as i8 * 2 - 1) as f32
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn get_circum_circle(p: &[Pos2]) -> (f32, f32, f32) {
|
||||
let d = 2.0
|
||||
* (p[0].x * (p[1].y - p[2].y) + p[1].x * (p[2].y - p[0].y) + p[2].x * (p[0].y - p[1].y));
|
||||
|
||||
let p0 = p[0].x * p[0].x + p[0].y * p[0].y;
|
||||
let p1 = p[1].x * p[1].x + p[1].y * p[1].y;
|
||||
let p2 = p[2].x * p[2].x + p[2].y * p[2].y;
|
||||
|
||||
let ux = (p0 * (p[1].y - p[2].y) + p1 * (p[2].y - p[0].y) + p2 * (p[0].y - p[1].y)) / d;
|
||||
let uy = (p0 * (p[2].x - p[1].x) + p1 * (p[0].x - p[2].x) + p2 * (p[1].x - p[0].x)) / d;
|
||||
|
||||
let px = ux - p[0].x;
|
||||
let py = uy - p[0].y;
|
||||
let r = (px * px + py * py).sqrt();
|
||||
|
||||
(ux, uy, r)
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub(crate) fn is_left(p: &[Pos2]) -> bool {
|
||||
((p[1].x - p[0].x) * (p[2].y - p[0].y) - (p[1].y - p[0].y) * (p[2].x - p[0].x)) < 0.0
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub(crate) fn rotate(cx: f32, cy: f32, p: Pos2, radians: f32) -> Pos2 {
|
||||
let cos = radians.cos();
|
||||
let sin = radians.sin();
|
||||
|
||||
Pos2 {
|
||||
x: (cos * (p.x - cx)) - (sin * (p.y - cy)) + cx,
|
||||
y: (sin * (p.x - cx)) + (cos * (p.y - cy)) + cy,
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,188 +0,0 @@
|
||||
osu file format v14
|
||||
|
||||
[General]
|
||||
AudioFilename: audio.mp3
|
||||
AudioLeadIn: 0
|
||||
PreviewTime: 2154
|
||||
Countdown: 0
|
||||
SampleSet: Soft
|
||||
StackLeniency: 0.7
|
||||
Mode: 0
|
||||
LetterboxInBreaks: 0
|
||||
WidescreenStoryboard: 1
|
||||
|
||||
[Editor]
|
||||
Bookmarks: 14272,22742,24684,25566,28390,34037
|
||||
DistanceSpacing: 0.8
|
||||
BeatDivisor: 3
|
||||
GridSize: 4
|
||||
TimelineZoom: 1.3
|
||||
|
||||
[Metadata]
|
||||
Title:Harumachi Clover (Swing Arrangement)
|
||||
TitleUnicode:春待ちクローバー (Swing Arrangement)
|
||||
Artist:Will Stetson
|
||||
ArtistUnicode:Will Stetson
|
||||
Creator:Will Stetson
|
||||
Version:Woey's Extra
|
||||
Source:OneRoom
|
||||
Tags:花坂結衣 CV:M・A・O Hanasaka Yui M.A.O kantoku カントク one room ワンルーム mix remix yahuri mohab500 FrenZ396 Chanci -Laura- Corinn Akitoshi Denil25 Dafiely A_r_m_i_n Armin wiz khalifa Jenny Woey Mr Moseby FoxyGrandpa Foxy Grandpa fieryrage
|
||||
BeatmapID:1851299
|
||||
BeatmapSetID:859783
|
||||
|
||||
[Difficulty]
|
||||
HPDrainRate:6
|
||||
CircleSize:3.8
|
||||
OverallDifficulty:9.1
|
||||
ApproachRate:9.2
|
||||
SliderMultiplier:1.80000000596047
|
||||
SliderTickRate:1
|
||||
|
||||
[Events]
|
||||
//Background and Video events
|
||||
0,0,"exbg.jpg",0,0
|
||||
//Break Periods
|
||||
//Storyboard Layer 0 (Background)
|
||||
//Storyboard Layer 1 (Fail)
|
||||
//Storyboard Layer 2 (Pass)
|
||||
//Storyboard Layer 3 (Foreground)
|
||||
//Storyboard Sound Samples
|
||||
|
||||
[TimingPoints]
|
||||
154,352.941176470588,4,2,22,47,1,0
|
||||
1919,-125,4,2,22,47,0,0
|
||||
2154,-125,4,2,22,47,0,0
|
||||
13919,-125,4,1,47,75,0,0
|
||||
14272,-90.9090909090909,4,2,47,75,0,0
|
||||
24242,-90.9090909090909,4,2,47,75,0,0
|
||||
24331,-90.9090909090909,4,2,47,75,0,0
|
||||
29625,-90.9090909090909,4,2,47,75,0,0
|
||||
29801,-90.9090909090909,4,2,47,75,0,0
|
||||
30154,-90.9090909090909,4,2,47,75,0,0
|
||||
30507,-90.9090909090909,4,2,47,75,0,0
|
||||
30860,-90.9090909090909,4,2,47,75,0,0
|
||||
31213,-90.9090909090909,4,2,47,75,0,0
|
||||
32624,-90.9090909090909,4,2,47,15,0,0
|
||||
|
||||
|
||||
[Colours]
|
||||
Combo1 : 255,43,48
|
||||
Combo2 : 239,186,239
|
||||
Combo3 : 205,218,165
|
||||
Combo4 : 152,211,231
|
||||
Combo5 : 239,226,186
|
||||
|
||||
[HitObjects]
|
||||
256,192,2154,5,2,0:0:0:0:
|
||||
312,180,2272,2,0,P|344:130|334:66,1,96.0000003178917,2|2,0:0|0:0,0:0:0:0:
|
||||
210,125,2625,2,0,P|178:175|188:239,1,96.0000003178917,2|2,0:0|0:0,0:0:0:0:
|
||||
299,303,2978,6,0,L|414:291,1,96.0000003178917,2|2,0:0|0:0,0:0:0:0:
|
||||
465,200,3331,2,0,L|369:209,1,96.0000003178917,2|2,0:0|0:0,0:0:0:0:
|
||||
323,384,3684,2,0,L|438:372,1,96.0000003178917,2|2,0:0|0:0,0:0:0:0:
|
||||
276,219,4037,2,0,L|180:228,1,96.0000003178917,2|2,0:0|0:0,0:0:0:0:
|
||||
111,293,4390,6,0,P|178:323|222:314,1,96.0000003178917,2|2,0:0|0:0,0:0:0:0:
|
||||
249,294,4742,1,2,0:0:0:0:
|
||||
203,109,4978,2,0,P|82:154|74:216,1,192.000000635783,2|2,0:0|0:0,0:0:0:0:
|
||||
329,209,5684,5,2,0:0:0:0:
|
||||
315,153,5801,2,0,L|290:47,1,96.0000003178917,2|2,0:0|0:0,0:0:0:0:
|
||||
423,181,6154,2,0,L|400:274,1,96.0000003178917,2|2,0:0|0:0,0:0:0:0:
|
||||
207,234,6507,2,0,L|229:140,1,96.0000003178917,2|2,0:0|0:0,0:0:0:0:
|
||||
378,27,6860,2,0,P|426:69|429:118,1,96.0000003178917,2|2,0:0|0:0,0:0:0:0:
|
||||
400,274,7213,6,0,P|352:271|314:244,1,96.0000003178917,2|2,0:0|0:0,0:0:0:0:
|
||||
300,188,7566,1,2,0:0:0:0:
|
||||
495,319,7801,2,0,P|414:362|291:339,1,192.000000635783,2|2,0:0|0:0,0:0:0:0:
|
||||
169,265,8507,5,2,0:0:0:0:
|
||||
218,235,8625,2,0,P|269:225|318:259,1,96.0000003178917,2|2,0:0|0:0,0:0:0:0:
|
||||
206,335,8978,2,0,P|155:345|106:311,1,96.0000003178917,2|2,0:0|0:0,0:0:0:0:
|
||||
87,276,9331,1,2,0:0:0:0:
|
||||
289,325,9566,1,2,0:0:0:0:
|
||||
289,325,9684,1,2,0:0:0:0:
|
||||
175,164,9919,6,0,P|299:144|347:167,1,144.000000476838,2|2,0:0|0:0,0:0:0:0:
|
||||
370,266,10390,2,0,P|315:224|306:172,1,96.0000003178917,2|2,0:0|0:0,0:0:0:0:
|
||||
312,148,10742,1,2,0:0:0:0:
|
||||
475,241,10978,1,2,0:0:0:0:
|
||||
475,241,11095,1,2,0:0:0:0:
|
||||
403,57,11331,5,2,0:0:0:0:
|
||||
403,57,11448,2,0,P|441:49|481:60,1,48.0000001589459,2|0,0:0|0:0,0:0:0:0:
|
||||
512,165,11684,1,2,0:0:0:0:
|
||||
290,249,12037,1,2,0:0:0:0:
|
||||
318,12,12389,1,2,0:0:0:0:
|
||||
58,105,12742,6,0,P|94:183|146:139,1,144.000000476838,2|2,0:0|0:0,0:0:0:0:
|
||||
206,88,13213,2,0,P|265:77|305:98,1,96.0000003178917,2|2,0:0|0:0,0:0:0:0:
|
||||
334,221,13565,2,0,P|294:175|293:130,1,96.0000003178917,2|2,0:0|0:0,0:0:0:0:
|
||||
398,78,13919,5,0,1:0:0:0:
|
||||
398,78,14007,1,0,1:0:0:0:
|
||||
398,78,14095,1,0,1:0:0:0:
|
||||
203,217,14272,5,2,1:0:0:0:
|
||||
449,215,14448,1,8,0:0:0:0:
|
||||
274,168,14625,5,2,1:0:0:0:
|
||||
489,292,14801,1,8,0:0:0:0:
|
||||
234,329,14978,5,2,1:0:0:0:
|
||||
449,215,15154,1,10,0:0:0:0:
|
||||
203,217,15331,5,2,1:0:0:0:
|
||||
481,373,15507,1,10,0:0:0:0:
|
||||
136,273,15684,6,0,P|117:213|143:155,1,99.0000033490662,2|10,1:0|0:0,0:0:0:0:
|
||||
280,55,16037,1,2,1:0:0:0:
|
||||
360,266,16213,2,0,P|300:285|242:259,1,99.0000033490662,10|0,0:0|1:0,0:0:0:0:
|
||||
178,85,16566,1,8,0:0:0:0:
|
||||
353,131,16742,1,0,1:0:0:0:
|
||||
233,207,16919,1,10,0:0:0:0:
|
||||
280,55,17095,5,2,1:0:0:0:
|
||||
311,199,17272,1,10,0:0:0:0:
|
||||
366,38,17448,5,2,1:0:0:0:
|
||||
381,245,17625,1,10,0:0:0:0:
|
||||
264,21,17801,5,2,1:0:0:0:
|
||||
244,266,17978,1,10,0:0:0:0:
|
||||
153,6,18154,5,2,1:0:0:0:
|
||||
96,249,18331,1,10,0:0:0:0:
|
||||
331,101,18507,5,2,1:0:0:0:
|
||||
88,78,18684,1,8,0:0:0:0:
|
||||
375,19,18860,1,2,1:0:0:0:
|
||||
132,160,19037,2,0,P|191:205|250:197,1,99.0000033490662,10|0,0:0|1:0,0:0:0:0:
|
||||
420,170,19390,1,8,0:0:0:0:
|
||||
202,291,19566,1,0,1:0:0:0:
|
||||
331,101,19742,1,10,0:0:0:0:
|
||||
291,360,19919,5,2,1:0:0:0:
|
||||
318,189,20095,1,10,0:0:0:0:
|
||||
175,357,20272,5,2,1:0:0:0:
|
||||
148,186,20448,1,10,0:0:0:0:
|
||||
353,282,20625,5,2,1:0:0:0:
|
||||
315,39,20801,1,10,0:0:0:0:
|
||||
223,282,20978,5,2,1:0:0:0:
|
||||
185,39,21154,1,10,0:0:0:0:
|
||||
401,202,21331,5,0,1:0:0:0:
|
||||
256,172,21507,1,10,0:0:0:0:
|
||||
471,141,21684,5,2,1:0:0:0:
|
||||
441,286,21860,1,10,0:0:0:0:
|
||||
326,111,22037,5,2,1:0:0:0:
|
||||
402,381,22213,1,10,0:0:0:0:
|
||||
402,54,22390,5,2,1:0:0:0:
|
||||
326,324,22566,1,10,0:0:0:0:
|
||||
268,31,22742,6,0,P|167:29|111:114,1,198.000006698132,6|0,1:2|1:0,0:0:0:0:
|
||||
213,314,23272,2,0,B|232:268|220:220|216:220|212:220|192:180|214:120,1,198.000006698132,12|8,0:0|0:0,0:0:0:0:
|
||||
321,26,23801,1,0,1:0:0:0:
|
||||
481,201,23978,2,0,P|431:253|333:171,1,198.000006698132,14|2,0:0|1:0,0:0:0:0:
|
||||
456,41,24507,1,10,0:0:0:0:
|
||||
498,300,24684,2,0,P|414:331|303:289,1,198.000006698132,14|2,0:0|1:0,0:0:0:0:
|
||||
220,82,25213,1,10,0:0:0:0:
|
||||
383,148,25390,1,10,0:0:0:0:
|
||||
251,245,25566,5,6,1:2:0:0:
|
||||
276,13,25742,1,8,0:0:0:0:
|
||||
454,192,25919,5,4,1:2:0:0:
|
||||
188,162,26095,1,8,0:0:0:0:
|
||||
395,3,26272,5,4,1:2:0:0:
|
||||
364,283,26448,1,10,0:0:0:0:
|
||||
169,75,26625,5,4,1:2:0:0:
|
||||
487,111,26801,1,10,0:0:0:0:
|
||||
277,326,26978,5,4,1:2:0:0:
|
||||
259,42,27154,1,8,0:0:0:0:
|
||||
371,361,27331,5,6,1:2:0:0:
|
||||
364,60,27507,1,10,0:0:0:0:
|
||||
254,344,27684,5,4,1:2:0:0:
|
||||
284,26,27860,1,10,0:0:0:0:
|
||||
126,363,28037,5,4,1:2:0:0:
|
||||
195,22,28213,1,10,0:0:0:0:
|
||||
179,289,28390,6,0,P|125:257|122:133,1,198.000006698132,6|0,1:2|0:0,0:0:0:0:
|
||||
398,195,28919,2,0,B|356:180|304:188|304:192|304:196|260:216|204:193,1,198.000006698132,6|0,1:2|0:0,0:0:0:0:
|
||||
47,39,29448,5,6,1:2:0:0:
|
||||
256,192,29625,12,0,32977,0:0:0:0:
|
||||
@@ -1,391 +0,0 @@
|
||||
osu file format v8
|
||||
|
||||
[General]
|
||||
AudioFilename: tutorial2.ogg
|
||||
AudioLeadIn: 0
|
||||
PreviewTime: 52620
|
||||
Countdown: 0
|
||||
SampleSet: Normal
|
||||
StackLeniency: 0.7
|
||||
Mode: 0
|
||||
LetterboxInBreaks: 0
|
||||
UseSkinSprites: 1
|
||||
|
||||
[Editor]
|
||||
Bookmarks: 42132
|
||||
DistanceSpacing: 1.39999997615814
|
||||
BeatDivisor: 3
|
||||
GridSize: 8
|
||||
|
||||
[Metadata]
|
||||
Title:osu! tutorial
|
||||
Artist:Peter Lambert
|
||||
Creator:Sushi
|
||||
Version:Advanced Gameplay
|
||||
Source:
|
||||
Tags:Agnes
|
||||
|
||||
[Difficulty]
|
||||
HPDrainRate:4
|
||||
CircleSize:4
|
||||
OverallDifficulty:6
|
||||
ApproachRate:7
|
||||
SliderMultiplier:1.5
|
||||
SliderTickRate:1
|
||||
|
||||
[Events]
|
||||
//Background and Video events
|
||||
0,0,"bg.jpg"
|
||||
//Break Periods
|
||||
//Storyboard Layer 0 (Background)
|
||||
Sprite,Background,Centre,"black.png",320,240
|
||||
M,0,-2119,-124,320,240
|
||||
M,0,-124,6235,320,240
|
||||
F,0,5861,6235,1,0
|
||||
Sprite,Background,Centre,"osulogo.png",320,250
|
||||
L,1746,11
|
||||
S,1,0,374,1.1,1
|
||||
F,0,24,607,0,1
|
||||
M,1,24,1746,0,250,320,250
|
||||
R,1,24,1746,-4,0
|
||||
F,1,5861,6235,1,0
|
||||
S,0,5861,6235,1,3
|
||||
Sprite,Background,Centre,"black.png",320,240
|
||||
F,0,122709,122833,0,1
|
||||
F,0,122833,125951,1,0.984
|
||||
//Storyboard Layer 1 (Fail)
|
||||
//Storyboard Layer 2 (Pass)
|
||||
Sprite,Pass,Centre,"endpass.png",320,240
|
||||
M,0,119965,,316,155
|
||||
F,0,119965,120090,0,1
|
||||
S,1,119965,120090,0.1,1
|
||||
F,0,120090,,1
|
||||
F,0,120090,122958,1
|
||||
F,0,122958,123083,1,0
|
||||
F,0,123083,,0
|
||||
Sprite,Pass,Centre,"inorite.png",320,240
|
||||
M,0,121462,,315,356
|
||||
S,0,121462,,0.4
|
||||
F,0,121462,121836,0,1
|
||||
F,0,121836,122958,1
|
||||
F,0,122958,123332,1,0
|
||||
//Storyboard Layer 3 (Foreground)
|
||||
Sprite,Foreground,Centre,"howto3.png",320,180
|
||||
L,1746,2
|
||||
S,1,0,374,0.8,0.7
|
||||
S,1,374,747,0.8,0.7
|
||||
R,0,746,1120,-0.1,-6.38
|
||||
S,1,748,1120,0.8,0.7
|
||||
S,1,1122,1495,0.8,0.7
|
||||
L,4739,2
|
||||
S,1,0,374,0.8,0.7
|
||||
M,0,1024,1624,310,515,314,319
|
||||
F,0,1024,1624,0,1
|
||||
S,0,1024,1624,0.7
|
||||
R,0,1024,1624,0.5,-0.1
|
||||
R,0,2494,2868,-0.1,-6.38
|
||||
F,0,5487,5861,1,0
|
||||
S,0,5487,5861,0.7,3
|
||||
Sprite,Foreground,Centre,"text1.png",320,240
|
||||
M,1,6235,6609,156,73,239,73
|
||||
F,2,6235,6609,0,1
|
||||
M,0,6609,,239,73
|
||||
F,0,6609,22696,1
|
||||
F,0,22696,22821,1,0
|
||||
Sprite,Foreground,Centre,"text2.png",320,240
|
||||
M,1,8480,8854,513,115,322,115
|
||||
F,2,8480,8854,0,1
|
||||
F,0,8854,22696,1,0.9973262
|
||||
F,0,22696,22946,0.9973262,0
|
||||
Sprite,Foreground,Centre,"text3.png",320,240
|
||||
M,1,10725,11099,76,144,212,140
|
||||
F,2,10725,11099,0,1
|
||||
F,0,11099,22696,1,0.9946524
|
||||
F,0,22696,23070,0.9946524,0
|
||||
Sprite,Foreground,Centre,"text4.png",320,240
|
||||
M,1,12969,13343,537,179,374,179
|
||||
F,2,12969,13343,0,1
|
||||
F,0,13343,22696,1,0.9946524
|
||||
F,0,22696,23195,0.9946524,0
|
||||
Sprite,Foreground,Centre,"text5.png",320,240
|
||||
M,1,15214,15588,79,217,282,211
|
||||
F,2,15214,15588,0,1
|
||||
F,0,15588,22696,1
|
||||
F,0,22696,23320,1,0
|
||||
Sprite,Foreground,Centre,"text6.png",320,240
|
||||
M,1,17459,17833,545,249,417,249
|
||||
F,2,17459,17833,0,1
|
||||
F,0,17833,22696,1
|
||||
F,0,22696,23444,1,0
|
||||
Sprite,Foreground,Centre,"text7.png",320,240
|
||||
M,1,18955,19329,-20,286,62,286
|
||||
F,2,18955,19329,0,1
|
||||
M,0,19329,,62,286
|
||||
F,0,19329,22696,1,0.9629171
|
||||
F,0,22696,23569,0.9629171,0
|
||||
Sprite,Foreground,Centre,"text8.png",320,240
|
||||
M,1,20452,20826,560,358,321,358
|
||||
F,2,20452,20826,0,1
|
||||
F,0,20826,22696,1
|
||||
F,0,22696,23694,1,0
|
||||
Sprite,Foreground,Centre,"osulogo.png",320,240
|
||||
S,0,122335,122709,3.032
|
||||
F,0,122335,122833,0,1
|
||||
S,0,122709,123582,3.032,0.968
|
||||
F,0,122833,,1
|
||||
F,0,122833,124455,1
|
||||
F,0,124455,124829,1,0
|
||||
//Storyboard Sound Samples
|
||||
//Background Colour Transformations
|
||||
3,100,128,128,255
|
||||
|
||||
[TimingPoints]
|
||||
250,374.111485222596,4,1,0,58,1,0
|
||||
29377,-100,4,2,0,69,0,0
|
||||
29939,-100,4,1,0,58,0,0
|
||||
35363,-100,4,2,0,69,0,0
|
||||
35971,-100,4,2,0,100,0,0
|
||||
40461,-100,4,1,0,58,0,0
|
||||
41349,-100,4,2,0,69,0,0
|
||||
41910,-100,4,2,0,100,0,0
|
||||
46518,-100,4,1,0,58,0,0
|
||||
47335,-100,4,2,0,69,0,0
|
||||
47943,-100,4,2,0,100,0,0
|
||||
52451,-100,4,1,0,58,0,0
|
||||
53321,-100,4,2,0,69,0,0
|
||||
53929,-100,4,2,0,100,0,0
|
||||
58980,-100,4,1,0,74,0,0
|
||||
96018,-100,4,1,0,74,0,1
|
||||
119588,-100,4,1,0,74,0,0
|
||||
|
||||
[Colours]
|
||||
Combo1 : 0,255,0
|
||||
Combo2 : 255,0,0
|
||||
Combo3 : 0,0,255
|
||||
Combo4 : 255,255,0
|
||||
|
||||
[HitObjects]
|
||||
256,328,24193,2,0,C|424:328,2,150
|
||||
256,192,25315,1,8
|
||||
256,56,25689,6,0,C|96:56,2,150
|
||||
256,192,26811,1,8
|
||||
136,128,27186,5,0
|
||||
16,192,27560,1,0
|
||||
136,256,27934,1,0
|
||||
256,192,28308,1,8
|
||||
256,328,28682,6,0,C|304:328,3,50
|
||||
440,328,29430,1,4
|
||||
440,328,29804,1,4
|
||||
440,192,30178,6,0,C|480:152,3,50
|
||||
376,64,30927,1,0
|
||||
376,64,31301,1,8
|
||||
312,192,31675,6,0,C|264:144,3,50
|
||||
376,64,32423,1,0
|
||||
376,64,32797,1,8
|
||||
376,200,33171,5,0
|
||||
376,336,33545,1,0
|
||||
376,200,33920,1,0
|
||||
376,336,34294,1,8
|
||||
240,336,34668,6,0,C|176:336,3,50
|
||||
256,192,35416,5,4
|
||||
256,192,35790,1,4
|
||||
144,112,36164,6,0,C|72:144|96:240,2,150,0|2|0
|
||||
256,192,37287,1,2
|
||||
368,272,37661,6,0,C|440:240|416:144,2,150,0|2|0
|
||||
256,192,38783,1,2
|
||||
192,72,39157,6,0,C|128:232,1,150,0|2
|
||||
320,72,39905,2,0,C|384:232,1,150,0|2
|
||||
256,280,40654,6,0,C|256:352,3,50
|
||||
256,192,41402,1,0
|
||||
256,192,41776,1,4
|
||||
392,192,42150,5,0
|
||||
392,192,42275,1,0
|
||||
392,192,42399,1,0
|
||||
392,192,42524,2,0,B|392:288|312:304,2,150,2|0|2
|
||||
392,56,43646,5,0
|
||||
392,56,43771,1,0
|
||||
392,56,43896,1,0
|
||||
392,56,44021,2,0,B|296:56|280:136,2,150,2|0|2
|
||||
344,184,45143,5,0
|
||||
344,184,45268,1,0
|
||||
344,184,45392,1,0
|
||||
344,184,45517,2,0,B|280:256|216:184,2,150,2|0|2
|
||||
344,320,46639,6,0,B|192:320,1,150
|
||||
194,320,47138,1,0
|
||||
194,320,47263,1,0
|
||||
194,320,47388,1,0
|
||||
56,320,47762,1,4
|
||||
56,184,48136,6,0,B|56:96|152:96,1,150,0|2
|
||||
256,192,48884,1,2
|
||||
256,192,49009,1,0
|
||||
256,192,49133,1,0
|
||||
256,192,49258,1,2
|
||||
456,200,49632,6,0,B|456:288|360:288,1,150,0|2
|
||||
256,192,50380,1,2
|
||||
256,192,50505,1,0
|
||||
256,192,50630,1,0
|
||||
256,192,50755,1,2
|
||||
184,72,51129,5,0
|
||||
328,72,51503,1,2
|
||||
184,72,51877,1,0
|
||||
328,72,52251,1,2
|
||||
256,192,52625,6,0,B|256:352,1,150
|
||||
256,342,53124,1,0
|
||||
256,342,53249,1,0
|
||||
256,342,53373,1,0
|
||||
392,344,53747,1,4
|
||||
392,208,54122,6,0,B|456:208,3,50,0|0|0|2
|
||||
392,80,54870,1,2
|
||||
392,80,54994,1,0
|
||||
392,80,55119,1,0
|
||||
392,80,55244,1,2
|
||||
256,80,55618,6,0,B|256:176|152:176,1,150,0|2
|
||||
64,80,56366,1,2
|
||||
64,128,56491,1,0
|
||||
64,176,56616,1,0
|
||||
64,224,56740,1,2
|
||||
184,280,57114,6,0,B|184:344,3,50,0|0|0|2
|
||||
328,280,57863,2,0,B|328:344,3,50,2|0|0|2
|
||||
256,192,58611,12,4,59733
|
||||
256,48,60107,6,0,B|352:48|352:136,2,150,4|8|0
|
||||
200,80,61043,1,8
|
||||
160,136,61230,1,2
|
||||
144,200,61417,1,10
|
||||
144,264,61604,6,0,B|152:360|264:320,2,150,0|8|0
|
||||
144,200,62539,1,0
|
||||
208,176,62726,1,10
|
||||
272,192,62913,1,0
|
||||
328,224,63100,6,0,B|432:256|416:152,2,150,4|8|0
|
||||
272,192,64036,1,8
|
||||
256,128,64223,1,2
|
||||
296,72,64410,1,10
|
||||
256,192,64597,12,8,65719
|
||||
256,72,66093,5,4
|
||||
192,72,66280,1,0
|
||||
128,72,66467,2,0,B|56:104|72:208,2,150,8|0|10
|
||||
192,72,67403,1,2
|
||||
240,120,67590,5,0
|
||||
192,168,67777,2,0,B|160:248,2,75,8|0|0
|
||||
248,200,68338,2,0,B|264:280,3,75,0|0|10|0
|
||||
320,240,69086,6,0,B|472:240,1,150,4|8
|
||||
470,173,69647,1,0
|
||||
470,105,69834,2,8,B|320:105,1,150,0|10
|
||||
256,192,70582,12,8,71705
|
||||
256,64,72079,6,0,B|416:64,1,150,4|8
|
||||
288,128,72827,1,0
|
||||
352,128,73014,1,0
|
||||
416,128,73201,1,10
|
||||
320,224,73575,6,0,B|152:224,1,150,0|8
|
||||
288,288,74324,1,0
|
||||
224,288,74511,1,0
|
||||
160,288,74698,1,10
|
||||
64,192,75072,6,0,B|64:88|152:88,1,150,0|8
|
||||
216,88,75633,1,0
|
||||
280,88,75820,1,0
|
||||
280,152,76007,1,0
|
||||
216,152,76194,1,10
|
||||
256,192,76568,12,8,77691
|
||||
256,48,78065,6,0,B|344:72,1,75
|
||||
400,32,78439,2,0,B|424:120,1,75,8|0
|
||||
464,168,78813,2,0,B|408:256,1,75
|
||||
352,224,79187,1,10
|
||||
256,48,79561,6,0,B|168:72,1,75
|
||||
112,32,79935,2,0,B|88:120,1,75,8|0
|
||||
48,168,80309,2,0,B|104:256,1,75
|
||||
160,224,80683,1,10
|
||||
208,368,81058,6,0,B|176:280,1,75
|
||||
256,197,81432,2,0,B|256:272,1,75,8|0
|
||||
304,368,81806,2,0,B|336:280,1,75,0|0
|
||||
352,224,82180,1,10
|
||||
256,192,82554,12,4,83676
|
||||
256,48,84050,5,8
|
||||
256,48,84175,1,0
|
||||
256,48,84300,1,0
|
||||
256,48,84425,2,2,B|160:48|160:136,1,150,2|8
|
||||
40,48,85173,1,2
|
||||
32,200,85547,5,8
|
||||
32,200,85672,1,0
|
||||
32,200,85796,1,0
|
||||
32,200,85921,2,2,B|32:296|120:296,2,150,2|8|8
|
||||
256,336,87043,5,8
|
||||
256,336,87168,1,0
|
||||
256,336,87293,1,0
|
||||
256,336,87417,2,2,B|352:336|352:248,1,150,2|8
|
||||
472,336,88166,1,2
|
||||
480,184,88540,5,8
|
||||
480,184,88665,1,0
|
||||
480,184,88789,1,0
|
||||
480,184,88914,2,2,B|480:88|392:88,2,150,2|8|2
|
||||
256,64,90036,6,0,B|256:184,1,100,8|0
|
||||
256,216,90410,1,2
|
||||
184,352,90784,1,8
|
||||
232,352,90909,1,0
|
||||
280,352,91034,1,0
|
||||
328,352,91159,1,2
|
||||
320,200,91533,6,0,B|384:200|384:136,1,100,8|0
|
||||
384,88,91907,1,2
|
||||
472,208,92281,1,8
|
||||
448,256,92406,1,0
|
||||
424,304,92530,1,0
|
||||
400,352,92655,2,2,B|296:352,1,100,2|2
|
||||
256,192,93029,12,0,95648
|
||||
376,96,96022,6,0,B|472:96|472:192,2,150,8|8|0
|
||||
328,96,96895,1,0
|
||||
280,96,97020,1,0
|
||||
232,96,97144,1,8
|
||||
168,232,97518,6,0,B|72:232|72:136,2,150,8|8|0
|
||||
216,232,98391,1,0
|
||||
264,232,98516,1,0
|
||||
312,232,98641,1,8
|
||||
256,96,99015,6,0,B|416:96,2,150,8|8|0
|
||||
256,96,99888,1,0
|
||||
256,96,100013,1,0
|
||||
256,96,100137,1,8
|
||||
256,248,100511,6,0,B|256:304,2,50
|
||||
256,200,100885,2,0,B|256:136,3,50,8|0|0|4
|
||||
106,150,101634,1,4
|
||||
96,288,102008,6,0,B|80:344,2,50,8|0|0
|
||||
104,240,102382,1,2
|
||||
216,320,102756,1,0
|
||||
216,184,103130,1,10
|
||||
336,128,103504,6,0,B|352:72,2,50,8|0|0
|
||||
328,176,103878,1,2
|
||||
216,96,104252,1,0
|
||||
216,232,104627,1,10
|
||||
328,304,105001,5,8
|
||||
328,304,105125,1,0
|
||||
328,304,105250,1,0
|
||||
328,304,105375,2,0,B|416:304|416:208,1,150,2|0
|
||||
416,72,106123,1,10
|
||||
256,192,106497,12,4,107619
|
||||
256,56,107994,6,0,B|144:56,1,100
|
||||
96,56,108368,2,0,B|40:152,1,100,10|2
|
||||
40,200,108742,2,0,B|40:272,3,50,0|0|0|10
|
||||
200,336,109490,6,0,B|296:256,1,100
|
||||
312,320,109864,2,2,B|408:240,1,100,10|2
|
||||
424,304,110238,2,0,B|464:272,3,50,0|0|0|10
|
||||
424,96,110986,6,0,B|376:64|328:96,1,100
|
||||
328,152,111361,2,2,B|280:184|232:152,1,100,10|2
|
||||
224,96,111735,2,0,B|200:80|176:96,3,50,0|0|0|10
|
||||
256,256,112483,5,0
|
||||
256,256,112608,1,0
|
||||
256,256,112732,1,0
|
||||
256,256,112857,1,8
|
||||
256,256,112982,1,0
|
||||
256,256,113106,1,0
|
||||
256,256,113231,2,0,B|208:312|320:360|328:296,1,150,4|4
|
||||
120,208,113979,6,0,B|56:208,3,50,8|0|0|2
|
||||
120,80,114728,1,8
|
||||
120,80,114852,1,0
|
||||
120,80,114977,1,0
|
||||
120,80,115102,1,2
|
||||
256,80,115476,6,0,B|256:176|360:176,1,150,8|2
|
||||
448,80,116224,1,8
|
||||
448,128,116349,1,0
|
||||
448,176,116473,1,0
|
||||
448,224,116598,1,2
|
||||
256,192,116972,12,8,118095
|
||||
184,304,118469,6,0,B|296:304,1,100,0|8
|
||||
320,248,118843,2,0,B|208:248,1,100,0|8
|
||||
184,192,119217,1,4
|
||||
184,192,119591,1,4
|
||||
@@ -1,2 +0,0 @@
|
||||
/target
|
||||
Cargo.lock
|
||||
@@ -1,9 +0,0 @@
|
||||
[package]
|
||||
name = "parse"
|
||||
version = "0.1.0"
|
||||
authors = ["MaxOhn <ohn.m@hotmail.de>"]
|
||||
edition = "2018"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
@@ -1,6 +1,4 @@
|
||||
use super::math_util;
|
||||
|
||||
use parse::Pos2;
|
||||
use crate::{math_util, Pos2};
|
||||
|
||||
const SLIDER_QUALITY: f32 = 50.0;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use parse::Pos2;
|
||||
use crate::Pos2;
|
||||
|
||||
const PLAYFIELD_WIDHT: f32 = 512.0;
|
||||
const BASE_SPEED: f32 = 1.0;
|
||||
@@ -1,15 +1,15 @@
|
||||
mod catch_object;
|
||||
mod curve;
|
||||
mod difficulty_object;
|
||||
mod math_util;
|
||||
mod movement;
|
||||
mod pp;
|
||||
|
||||
use catch_object::CatchObject;
|
||||
use curve::Curve;
|
||||
use difficulty_object::DifficultyObject;
|
||||
use movement::Movement;
|
||||
pub use pp::*;
|
||||
|
||||
use crate::{curve::Curve, Beatmap, HitObjectKind, Mods, PathType};
|
||||
|
||||
use parse::{Beatmap, HitObjectKind, Mods, PathType};
|
||||
use std::cmp::Ordering;
|
||||
use std::convert::identity;
|
||||
|
||||
@@ -301,245 +301,6 @@ pub struct DifficultyAttributes {
|
||||
pub n_droplets: usize,
|
||||
}
|
||||
|
||||
pub struct PpResult {
|
||||
pub pp: f32,
|
||||
pub stars: f32,
|
||||
}
|
||||
|
||||
pub trait PpProvider {
|
||||
fn pp(&self) -> PpCalculator;
|
||||
}
|
||||
|
||||
impl PpProvider for Beatmap {
|
||||
#[inline]
|
||||
fn pp(&self) -> PpCalculator {
|
||||
PpCalculator::new(self)
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: Allow partial plays
|
||||
pub struct PpCalculator<'m> {
|
||||
map: &'m Beatmap,
|
||||
attributes: Option<DifficultyAttributes>,
|
||||
mods: u32,
|
||||
combo: Option<usize>,
|
||||
|
||||
n_fruits: Option<usize>,
|
||||
n_droplets: Option<usize>,
|
||||
n_tiny_droplets: Option<usize>,
|
||||
n_tiny_droplet_misses: Option<usize>,
|
||||
n_misses: usize,
|
||||
}
|
||||
|
||||
impl<'m> PpCalculator<'m> {
|
||||
#[inline]
|
||||
pub fn new(map: &'m Beatmap) -> Self {
|
||||
Self {
|
||||
map,
|
||||
attributes: None,
|
||||
mods: 0,
|
||||
combo: None,
|
||||
|
||||
n_fruits: None,
|
||||
n_droplets: None,
|
||||
n_tiny_droplets: None,
|
||||
n_tiny_droplet_misses: None,
|
||||
n_misses: 0,
|
||||
}
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn attributes(mut self, attributes: DifficultyAttributes) -> Self {
|
||||
self.attributes.replace(attributes);
|
||||
|
||||
self
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn mods(mut self, mods: u32) -> Self {
|
||||
self.mods = mods;
|
||||
|
||||
self
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn combo(mut self, combo: usize) -> Self {
|
||||
self.combo.replace(combo);
|
||||
|
||||
self
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn fruits(mut self, n_fruits: usize) -> Self {
|
||||
self.n_fruits.replace(n_fruits);
|
||||
|
||||
self
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn droplets(mut self, n_droplets: usize) -> Self {
|
||||
self.n_droplets.replace(n_droplets);
|
||||
|
||||
self
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn tiny_droplets(mut self, n_tiny_droplets: usize) -> Self {
|
||||
self.n_tiny_droplets.replace(n_tiny_droplets);
|
||||
|
||||
self
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn tiny_droplet_misses(mut self, n_tiny_droplet_misses: usize) -> Self {
|
||||
self.n_tiny_droplet_misses.replace(n_tiny_droplet_misses);
|
||||
|
||||
self
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn misses(mut self, n_misses: usize) -> Self {
|
||||
self.n_misses = n_misses;
|
||||
|
||||
self
|
||||
}
|
||||
|
||||
/// Generate the hit results with respect to the given accuracy between `0` and `100`.
|
||||
///
|
||||
/// Be sure to set `misses` beforehand! Also, if available, set `attributes` beforehand.
|
||||
pub fn accuracy(mut self, acc: f32) -> Self {
|
||||
if self.attributes.is_none() {
|
||||
self.attributes.replace(stars(self.map, self.mods));
|
||||
}
|
||||
|
||||
let attributes = self.attributes.as_ref().unwrap();
|
||||
|
||||
let n_droplets = self
|
||||
.n_droplets
|
||||
.unwrap_or_else(|| attributes.n_droplets.saturating_sub(self.n_misses));
|
||||
|
||||
let n_fruits = self.n_fruits.unwrap_or_else(|| {
|
||||
attributes
|
||||
.max_combo
|
||||
.saturating_sub(self.n_misses.saturating_sub(n_droplets))
|
||||
});
|
||||
|
||||
let max_tiny_droplets = 0; // TODO
|
||||
|
||||
let n_tiny_droplets = self.n_tiny_droplets.unwrap_or_else(|| {
|
||||
((acc * (attributes.max_combo + max_tiny_droplets) as f32).round() as usize)
|
||||
.saturating_sub(n_fruits)
|
||||
.saturating_sub(n_droplets)
|
||||
});
|
||||
|
||||
let n_tiny_droplet_misses = max_tiny_droplets - n_tiny_droplets;
|
||||
|
||||
self.n_fruits.replace(n_fruits);
|
||||
self.n_droplets.replace(n_droplets);
|
||||
self.n_tiny_droplets.replace(n_tiny_droplets);
|
||||
self.n_tiny_droplet_misses.replace(n_tiny_droplet_misses);
|
||||
|
||||
self
|
||||
}
|
||||
|
||||
pub fn calculate(mut self) -> PpResult {
|
||||
let attributes = self
|
||||
.attributes
|
||||
.take()
|
||||
.unwrap_or_else(|| stars(self.map, self.mods));
|
||||
|
||||
let stars = attributes.stars;
|
||||
|
||||
// Relying heavily on aim
|
||||
let mut pp = (5.0 * ((stars / 0.0049).max(1.0)) - 4.0).powi(2) / 100_000.0;
|
||||
|
||||
let mut combo_hits = self.combo_hits();
|
||||
if combo_hits == 0 {
|
||||
combo_hits = attributes.max_combo;
|
||||
}
|
||||
|
||||
// Longer maps are worth more
|
||||
let len_bonus = 0.95
|
||||
+ 0.3 * (combo_hits as f32 / 2500.0).min(1.0)
|
||||
+ (combo_hits > 2500) as u8 as f32 * (combo_hits as f32 / 2500.0).log10() * 0.475;
|
||||
pp *= len_bonus;
|
||||
|
||||
// Penalize misses exponentially
|
||||
pp *= 0.97_f32.powi(self.n_misses as i32);
|
||||
|
||||
// Combo scaling
|
||||
if let Some(combo) = self.combo.filter(|_| attributes.max_combo > 0) {
|
||||
pp *= (combo as f32 / attributes.max_combo as f32)
|
||||
.powf(0.8)
|
||||
.min(1.0);
|
||||
}
|
||||
|
||||
// AR scaling
|
||||
let ar = self.map.ar;
|
||||
let mut ar_factor = 1.0;
|
||||
if ar > 9.0 {
|
||||
ar_factor += 0.1 * (ar - 9.0) + (ar > 10.0) as u8 as f32 * 0.1 * (ar - 10.0);
|
||||
} else if ar < 8.0 {
|
||||
ar_factor += 0.025 * (8.0 - ar);
|
||||
}
|
||||
pp *= ar_factor;
|
||||
|
||||
// HD bonus
|
||||
if self.mods.hd() {
|
||||
if ar <= 10.0 {
|
||||
pp *= 1.05 + 0.075 * (10.0 - ar);
|
||||
} else if ar > 10.0 {
|
||||
pp *= 1.01 + 0.04 * (11.0 - ar.min(11.0));
|
||||
}
|
||||
}
|
||||
|
||||
// FL bonus
|
||||
if self.mods.fl() {
|
||||
pp *= 1.35 * len_bonus;
|
||||
}
|
||||
|
||||
// Accuracy scaling
|
||||
pp *= self.acc().powf(5.5);
|
||||
|
||||
// NF penalty
|
||||
if self.mods.nf() {
|
||||
pp *= 0.9;
|
||||
}
|
||||
|
||||
PpResult { pp, stars }
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn combo_hits(&self) -> usize {
|
||||
self.n_fruits.unwrap_or(0) + self.n_droplets.unwrap_or(0) + self.n_misses
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn successful_hits(&self) -> usize {
|
||||
self.n_fruits.unwrap_or(0)
|
||||
+ self.n_droplets.unwrap_or(0)
|
||||
+ self.n_tiny_droplets.unwrap_or(0)
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn total_hits(&self) -> usize {
|
||||
self.successful_hits() + self.n_tiny_droplet_misses.unwrap_or(0) + self.n_misses
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn acc(&self) -> f32 {
|
||||
let total_hits = self.total_hits();
|
||||
|
||||
if total_hits == 0 {
|
||||
0.0
|
||||
} else {
|
||||
(self.successful_hits() as f32 / total_hits as f32)
|
||||
.max(0.0)
|
||||
.min(1.0)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@@ -0,0 +1,241 @@
|
||||
use super::{stars, DifficultyAttributes};
|
||||
use crate::{Beatmap, Mods};
|
||||
|
||||
pub struct PpResult {
|
||||
pub pp: f32,
|
||||
pub stars: f32,
|
||||
}
|
||||
|
||||
pub trait PpProvider {
|
||||
fn pp(&self) -> PpCalculator;
|
||||
}
|
||||
|
||||
impl PpProvider for Beatmap {
|
||||
#[inline]
|
||||
fn pp(&self) -> PpCalculator {
|
||||
PpCalculator::new(self)
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: Allow partial plays
|
||||
pub struct PpCalculator<'m> {
|
||||
map: &'m Beatmap,
|
||||
attributes: Option<DifficultyAttributes>,
|
||||
mods: u32,
|
||||
combo: Option<usize>,
|
||||
|
||||
n_fruits: Option<usize>,
|
||||
n_droplets: Option<usize>,
|
||||
n_tiny_droplets: Option<usize>,
|
||||
n_tiny_droplet_misses: Option<usize>,
|
||||
n_misses: usize,
|
||||
}
|
||||
|
||||
impl<'m> PpCalculator<'m> {
|
||||
#[inline]
|
||||
pub fn new(map: &'m Beatmap) -> Self {
|
||||
Self {
|
||||
map,
|
||||
attributes: None,
|
||||
mods: 0,
|
||||
combo: None,
|
||||
|
||||
n_fruits: None,
|
||||
n_droplets: None,
|
||||
n_tiny_droplets: None,
|
||||
n_tiny_droplet_misses: None,
|
||||
n_misses: 0,
|
||||
}
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn attributes(mut self, attributes: DifficultyAttributes) -> Self {
|
||||
self.attributes.replace(attributes);
|
||||
|
||||
self
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn mods(mut self, mods: u32) -> Self {
|
||||
self.mods = mods;
|
||||
|
||||
self
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn combo(mut self, combo: usize) -> Self {
|
||||
self.combo.replace(combo);
|
||||
|
||||
self
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn fruits(mut self, n_fruits: usize) -> Self {
|
||||
self.n_fruits.replace(n_fruits);
|
||||
|
||||
self
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn droplets(mut self, n_droplets: usize) -> Self {
|
||||
self.n_droplets.replace(n_droplets);
|
||||
|
||||
self
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn tiny_droplets(mut self, n_tiny_droplets: usize) -> Self {
|
||||
self.n_tiny_droplets.replace(n_tiny_droplets);
|
||||
|
||||
self
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn tiny_droplet_misses(mut self, n_tiny_droplet_misses: usize) -> Self {
|
||||
self.n_tiny_droplet_misses.replace(n_tiny_droplet_misses);
|
||||
|
||||
self
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn misses(mut self, n_misses: usize) -> Self {
|
||||
self.n_misses = n_misses;
|
||||
|
||||
self
|
||||
}
|
||||
|
||||
/// Generate the hit results with respect to the given accuracy between `0` and `100`.
|
||||
///
|
||||
/// Be sure to set `misses` beforehand! Also, if available, set `attributes` beforehand.
|
||||
pub fn accuracy(mut self, acc: f32) -> Self {
|
||||
if self.attributes.is_none() {
|
||||
self.attributes.replace(stars(self.map, self.mods));
|
||||
}
|
||||
|
||||
let attributes = self.attributes.as_ref().unwrap();
|
||||
|
||||
let n_droplets = self
|
||||
.n_droplets
|
||||
.unwrap_or_else(|| attributes.n_droplets.saturating_sub(self.n_misses));
|
||||
|
||||
let n_fruits = self.n_fruits.unwrap_or_else(|| {
|
||||
attributes
|
||||
.max_combo
|
||||
.saturating_sub(self.n_misses.saturating_sub(n_droplets))
|
||||
});
|
||||
|
||||
let max_tiny_droplets = 0; // TODO
|
||||
|
||||
let n_tiny_droplets = self.n_tiny_droplets.unwrap_or_else(|| {
|
||||
((acc * (attributes.max_combo + max_tiny_droplets) as f32).round() as usize)
|
||||
.saturating_sub(n_fruits)
|
||||
.saturating_sub(n_droplets)
|
||||
});
|
||||
|
||||
let n_tiny_droplet_misses = max_tiny_droplets - n_tiny_droplets;
|
||||
|
||||
self.n_fruits.replace(n_fruits);
|
||||
self.n_droplets.replace(n_droplets);
|
||||
self.n_tiny_droplets.replace(n_tiny_droplets);
|
||||
self.n_tiny_droplet_misses.replace(n_tiny_droplet_misses);
|
||||
|
||||
self
|
||||
}
|
||||
|
||||
pub fn calculate(mut self) -> PpResult {
|
||||
let attributes = self
|
||||
.attributes
|
||||
.take()
|
||||
.unwrap_or_else(|| stars(self.map, self.mods));
|
||||
|
||||
let stars = attributes.stars;
|
||||
|
||||
// Relying heavily on aim
|
||||
let mut pp = (5.0 * ((stars / 0.0049).max(1.0)) - 4.0).powi(2) / 100_000.0;
|
||||
|
||||
let mut combo_hits = self.combo_hits();
|
||||
if combo_hits == 0 {
|
||||
combo_hits = attributes.max_combo;
|
||||
}
|
||||
|
||||
// Longer maps are worth more
|
||||
let len_bonus = 0.95
|
||||
+ 0.3 * (combo_hits as f32 / 2500.0).min(1.0)
|
||||
+ (combo_hits > 2500) as u8 as f32 * (combo_hits as f32 / 2500.0).log10() * 0.475;
|
||||
pp *= len_bonus;
|
||||
|
||||
// Penalize misses exponentially
|
||||
pp *= 0.97_f32.powi(self.n_misses as i32);
|
||||
|
||||
// Combo scaling
|
||||
if let Some(combo) = self.combo.filter(|_| attributes.max_combo > 0) {
|
||||
pp *= (combo as f32 / attributes.max_combo as f32)
|
||||
.powf(0.8)
|
||||
.min(1.0);
|
||||
}
|
||||
|
||||
// AR scaling
|
||||
let ar = self.map.ar;
|
||||
let mut ar_factor = 1.0;
|
||||
if ar > 9.0 {
|
||||
ar_factor += 0.1 * (ar - 9.0) + (ar > 10.0) as u8 as f32 * 0.1 * (ar - 10.0);
|
||||
} else if ar < 8.0 {
|
||||
ar_factor += 0.025 * (8.0 - ar);
|
||||
}
|
||||
pp *= ar_factor;
|
||||
|
||||
// HD bonus
|
||||
if self.mods.hd() {
|
||||
if ar <= 10.0 {
|
||||
pp *= 1.05 + 0.075 * (10.0 - ar);
|
||||
} else if ar > 10.0 {
|
||||
pp *= 1.01 + 0.04 * (11.0 - ar.min(11.0));
|
||||
}
|
||||
}
|
||||
|
||||
// FL bonus
|
||||
if self.mods.fl() {
|
||||
pp *= 1.35 * len_bonus;
|
||||
}
|
||||
|
||||
// Accuracy scaling
|
||||
pp *= self.acc().powf(5.5);
|
||||
|
||||
// NF penalty
|
||||
if self.mods.nf() {
|
||||
pp *= 0.9;
|
||||
}
|
||||
|
||||
PpResult { pp, stars }
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn combo_hits(&self) -> usize {
|
||||
self.n_fruits.unwrap_or(0) + self.n_droplets.unwrap_or(0) + self.n_misses
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn successful_hits(&self) -> usize {
|
||||
self.n_fruits.unwrap_or(0)
|
||||
+ self.n_droplets.unwrap_or(0)
|
||||
+ self.n_tiny_droplets.unwrap_or(0)
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn total_hits(&self) -> usize {
|
||||
self.successful_hits() + self.n_tiny_droplet_misses.unwrap_or(0) + self.n_misses
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn acc(&self) -> f32 {
|
||||
let total_hits = self.total_hits();
|
||||
|
||||
if total_hits == 0 {
|
||||
0.0
|
||||
} else {
|
||||
(self.successful_hits() as f32 / total_hits as f32)
|
||||
.max(0.0)
|
||||
.min(1.0)
|
||||
}
|
||||
}
|
||||
}
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
pub mod fruits;
|
||||
pub mod mania;
|
||||
pub mod osu;
|
||||
pub mod parse;
|
||||
pub mod taiko;
|
||||
|
||||
mod curve;
|
||||
mod math_util;
|
||||
|
||||
pub use parse::*;
|
||||
|
||||
#[inline]
|
||||
fn difficulty_range(val: f32, max: f32, avg: f32, min: f32) -> f32 {
|
||||
if val > 5.0 {
|
||||
avg + (max - avg) * (val - 5.0) / 5.0
|
||||
} else if val < 5.0 {
|
||||
avg - (avg - min) * (5.0 - val) / 5.0
|
||||
} else {
|
||||
avg
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,7 @@ mod strain;
|
||||
|
||||
use strain::Strain;
|
||||
|
||||
use parse::{Beatmap, HitObject, Mods};
|
||||
use crate::{Beatmap, HitObject, Mods};
|
||||
|
||||
const SECTION_LEN: f32 = 400.0;
|
||||
const STAR_SCALING_FACTOR: f32 = 0.018;
|
||||
@@ -45,7 +45,7 @@ pub fn stars(map: &Beatmap, mods: impl Mods) -> f32 {
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
struct DifficultyHitObject<'o> {
|
||||
pub(crate) struct DifficultyHitObject<'o> {
|
||||
base: &'o HitObject,
|
||||
column: usize,
|
||||
delta: f32,
|
||||
@@ -1,4 +1,4 @@
|
||||
use parse::Pos2;
|
||||
use crate::Pos2;
|
||||
|
||||
#[inline]
|
||||
pub(crate) fn cpn(mut p: i32, n: i32) -> f32 {
|
||||
@@ -1,5 +1,3 @@
|
||||
mod curve;
|
||||
mod math_util;
|
||||
mod pp;
|
||||
mod versions;
|
||||
|
||||
@@ -28,21 +26,10 @@ const HITWINDOW_AR_MAX: f32 = 450.0;
|
||||
|
||||
#[inline]
|
||||
pub(crate) fn difficulty_range_od(od: f32) -> f32 {
|
||||
difficulty_range(od, HITWINDOW_OD_MAX, HITWINDOW_OD_AVG, HITWINDOW_OD_MIN)
|
||||
crate::difficulty_range(od, HITWINDOW_OD_MAX, HITWINDOW_OD_AVG, HITWINDOW_OD_MIN)
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub(crate) fn difficulty_range_ar(ar: f32) -> f32 {
|
||||
difficulty_range(ar, HITWINDOW_AR_MAX, HITWINDOW_AR_AVG, HITWINDOW_AR_MIN)
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn difficulty_range(val: f32, max: f32, avg: f32, min: f32) -> f32 {
|
||||
if val > 5.0 {
|
||||
avg + (max - avg) * (val - 5.0) / 5.0
|
||||
} else if val < 5.0 {
|
||||
avg - (avg - min) * (5.0 - val) / 5.0
|
||||
} else {
|
||||
avg
|
||||
}
|
||||
crate::difficulty_range(ar, HITWINDOW_AR_MAX, HITWINDOW_AR_AVG, HITWINDOW_AR_MIN)
|
||||
}
|
||||
@@ -1,6 +1,5 @@
|
||||
use super::DifficultyAttributes as Attributes;
|
||||
|
||||
use parse::{Beatmap, Mods};
|
||||
use crate::{Beatmap, Mods};
|
||||
|
||||
pub struct PpResult {
|
||||
pub pp: f32,
|
||||
@@ -8,9 +8,8 @@ use osu_object::OsuObject;
|
||||
use skill::Skill;
|
||||
use skill_kind::SkillKind;
|
||||
|
||||
use crate::DifficultyAttributes;
|
||||
|
||||
use parse::{Beatmap, Mods};
|
||||
use super::super::DifficultyAttributes;
|
||||
use crate::{Beatmap, Mods};
|
||||
|
||||
const SECTION_LEN: f32 = 400.0;
|
||||
const DIFFICULTY_MULTIPLIER: f32 = 0.0675;
|
||||
@@ -120,9 +119,9 @@ pub fn stars(map: &Beatmap, mods: impl Mods) -> DifficultyAttributes {
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::super::super::PpCalculator;
|
||||
use super::stars;
|
||||
use crate::PpCalculator;
|
||||
use parse::Beatmap;
|
||||
use crate::Beatmap;
|
||||
use std::fs::File;
|
||||
|
||||
#[test]
|
||||
+1
-2
@@ -1,8 +1,7 @@
|
||||
#![allow(unused)]
|
||||
|
||||
use crate::curve::Curve;
|
||||
use crate::{curve::Curve, Beatmap, BeatmapAttributes, HitObject, HitObjectKind, PathType, Pos2};
|
||||
|
||||
use parse::{Beatmap, BeatmapAttributes, HitObject, HitObjectKind, PathType, Pos2};
|
||||
use std::cmp::Ordering;
|
||||
|
||||
macro_rules! binary_search {
|
||||
+2
-1
@@ -1,4 +1,5 @@
|
||||
use parse::{Beatmap, DifficultyPoint, TimingPoint};
|
||||
use crate::{Beatmap, DifficultyPoint, TimingPoint};
|
||||
|
||||
use std::slice::Iter;
|
||||
|
||||
macro_rules! next_tuple {
|
||||
@@ -1,4 +1,4 @@
|
||||
use crate::DifficultyAttributes;
|
||||
use super::super::DifficultyAttributes;
|
||||
|
||||
mod control_point_iter;
|
||||
mod difficulty_object;
|
||||
@@ -13,7 +13,7 @@ use skill::Skill;
|
||||
use skill_kind::SkillKind;
|
||||
use slider_state::SliderState;
|
||||
|
||||
use parse::{Beatmap, Mods};
|
||||
use crate::{Beatmap, Mods};
|
||||
|
||||
const OBJECT_RADIUS: f32 = 64.0;
|
||||
const SECTION_LEN: f32 = 400.0;
|
||||
@@ -137,9 +137,9 @@ pub fn stars(map: &Beatmap, mods: impl Mods) -> DifficultyAttributes {
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::super::super::PpCalculator;
|
||||
use super::stars;
|
||||
use crate::PpCalculator;
|
||||
use parse::Beatmap;
|
||||
use crate::Beatmap;
|
||||
use std::fs::File;
|
||||
|
||||
#[test]
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
use super::super::super::DifficultyAttributes;
|
||||
use super::slider_state::SliderState;
|
||||
use crate::{curve::Curve, DifficultyAttributes};
|
||||
|
||||
use parse::{Beatmap, HitObject, HitObjectKind, PathType, Pos2};
|
||||
use crate::{curve::Curve, Beatmap, HitObject, HitObjectKind, PathType, Pos2};
|
||||
|
||||
const LEGACY_LAST_TICK_OFFSET: f32 = 36.0;
|
||||
|
||||
+1
-2
@@ -1,6 +1,5 @@
|
||||
use super::control_point_iter::{ControlPoint, ControlPointIter};
|
||||
|
||||
use parse::Beatmap;
|
||||
use crate::Beatmap;
|
||||
|
||||
pub(crate) struct SliderState<'p> {
|
||||
control_points: ControlPointIter<'p>,
|
||||
+2
-1
@@ -1,4 +1,5 @@
|
||||
use parse::{Beatmap, DifficultyPoint, TimingPoint};
|
||||
use crate::{Beatmap, DifficultyPoint, TimingPoint};
|
||||
|
||||
use std::slice::Iter;
|
||||
|
||||
pub(crate) struct ControlPointIter<'p> {
|
||||
+2
-1
@@ -1,4 +1,5 @@
|
||||
use parse::HitObject;
|
||||
use crate::HitObject;
|
||||
|
||||
use std::borrow::Cow;
|
||||
|
||||
pub(crate) struct DifficultyObject<'h> {
|
||||
+5
-4
@@ -1,4 +1,4 @@
|
||||
use crate::{difficulty_range_ar, difficulty_range_od, DifficultyAttributes};
|
||||
use super::super::{difficulty_range_ar, difficulty_range_od, DifficultyAttributes};
|
||||
|
||||
mod control_point_iter;
|
||||
mod difficulty_object;
|
||||
@@ -11,7 +11,8 @@ use skill::Skill;
|
||||
use skill_kind::SkillKind;
|
||||
use slider_state::SliderState;
|
||||
|
||||
use parse::{Beatmap, HitObject, HitObjectKind, Mods};
|
||||
use crate::{Beatmap, HitObject, HitObjectKind, Mods};
|
||||
|
||||
use std::borrow::Cow;
|
||||
|
||||
const OBJECT_RADIUS: f32 = 64.0;
|
||||
@@ -166,9 +167,9 @@ pub fn stars(map: &Beatmap, mods: impl Mods) -> DifficultyAttributes {
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::super::super::PpCalculator;
|
||||
use super::stars;
|
||||
use crate::PpCalculator;
|
||||
use parse::Beatmap;
|
||||
use crate::Beatmap;
|
||||
use std::fs::File;
|
||||
|
||||
#[test]
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
use super::control_point_iter::{ControlPoint, ControlPointIter};
|
||||
|
||||
use parse::Beatmap;
|
||||
use crate::Beatmap;
|
||||
|
||||
pub(crate) struct SliderState<'p> {
|
||||
control_points: ControlPointIter<'p>,
|
||||
@@ -1,6 +1,5 @@
|
||||
use super::{closest_rhythm, HitObjectRhythm};
|
||||
|
||||
use parse::HitObject;
|
||||
use crate::HitObject;
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
pub(crate) struct DifficultyObject<'o> {
|
||||
@@ -1,4 +1,5 @@
|
||||
use parse::HitObject;
|
||||
use crate::HitObject;
|
||||
|
||||
use std::cmp::Ordering;
|
||||
|
||||
lazy_static::lazy_static! {
|
||||
@@ -0,0 +1,179 @@
|
||||
mod difficulty_object;
|
||||
mod hitobject_rhythm;
|
||||
mod limited_queue;
|
||||
mod pp;
|
||||
mod rim;
|
||||
mod skill;
|
||||
mod skill_kind;
|
||||
mod stamina_cheese;
|
||||
|
||||
use difficulty_object::DifficultyObject;
|
||||
use hitobject_rhythm::{closest_rhythm, HitObjectRhythm};
|
||||
use limited_queue::LimitedQueue;
|
||||
pub use pp::*;
|
||||
use rim::Rim;
|
||||
use skill::Skill;
|
||||
use skill_kind::SkillKind;
|
||||
use stamina_cheese::StaminaCheeseDetector;
|
||||
|
||||
use crate::{Beatmap, Mods};
|
||||
|
||||
use std::cmp::Ordering;
|
||||
use std::f32::consts::PI;
|
||||
|
||||
const SECTION_LEN: f32 = 400.0;
|
||||
|
||||
const COLOR_SKILL_MULTIPLIER: f32 = 0.01;
|
||||
const RHYTHM_SKILL_MULTIPLIER: f32 = 0.014;
|
||||
const STAMINA_SKILL_MULTIPLIER: f32 = 0.02;
|
||||
|
||||
/// Star calculation for osu!taiko maps
|
||||
pub fn stars(map: &Beatmap, mods: impl Mods) -> f32 {
|
||||
if map.hit_objects.len() < 2 {
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
// True if the object at that index is stamina cheese
|
||||
let cheese = map.find_cheese();
|
||||
|
||||
let mut skills = vec![
|
||||
Skill::new(SkillKind::color()),
|
||||
Skill::new(SkillKind::rhythm()),
|
||||
Skill::new(SkillKind::stamina(true)),
|
||||
Skill::new(SkillKind::stamina(false)),
|
||||
];
|
||||
|
||||
let clock_rate = mods.speed();
|
||||
let section_len = SECTION_LEN * clock_rate;
|
||||
|
||||
// No strain for first object
|
||||
let mut current_section_end =
|
||||
(map.hit_objects[0].start_time / section_len).ceil() * section_len;
|
||||
|
||||
let hit_objects = map
|
||||
.hit_objects
|
||||
.iter()
|
||||
.enumerate()
|
||||
.skip(2)
|
||||
.zip(map.hit_objects.iter().skip(1))
|
||||
.zip(map.hit_objects.iter())
|
||||
.map(|(((idx, base), prev), prev_prev)| {
|
||||
DifficultyObject::new(idx, base, prev, prev_prev, clock_rate)
|
||||
});
|
||||
|
||||
for h in hit_objects {
|
||||
while h.base.start_time > current_section_end {
|
||||
for skill in skills.iter_mut() {
|
||||
skill.save_current_peak();
|
||||
skill.start_new_section_from(current_section_end);
|
||||
}
|
||||
|
||||
current_section_end += section_len;
|
||||
}
|
||||
|
||||
for skill in skills.iter_mut() {
|
||||
skill.process(&h, &cheese);
|
||||
}
|
||||
}
|
||||
|
||||
for skill in skills.iter_mut() {
|
||||
skill.save_current_peak();
|
||||
}
|
||||
|
||||
let mut buf = vec![0.0; skills[0].strain_peaks.len()];
|
||||
|
||||
let color_rating = skills[0].difficulty_value(&mut buf) * COLOR_SKILL_MULTIPLIER;
|
||||
let rhythm_rating = skills[1].difficulty_value(&mut buf) * RHYTHM_SKILL_MULTIPLIER;
|
||||
|
||||
let mut stamina_rating = (skills[2].difficulty_value(&mut buf)
|
||||
+ skills[3].difficulty_value(&mut buf))
|
||||
* STAMINA_SKILL_MULTIPLIER;
|
||||
|
||||
let stamina_penalty = simple_color_penalty(stamina_rating, color_rating);
|
||||
stamina_rating *= stamina_penalty;
|
||||
|
||||
let combined_rating = locally_combined_difficulty(&skills, stamina_penalty);
|
||||
let separate_rating = norm(1.5, color_rating, rhythm_rating, stamina_rating);
|
||||
|
||||
rescale(1.4 * separate_rating + 0.5 * combined_rating)
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn rescale(stars: f32) -> f32 {
|
||||
if stars < 0.0 {
|
||||
stars
|
||||
} else {
|
||||
10.43 * (stars / 8.0 + 1.0).ln()
|
||||
}
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn simple_color_penalty(stamina: f32, color: f32) -> f32 {
|
||||
if color <= 0.0 {
|
||||
0.79 - 0.25
|
||||
} else {
|
||||
0.79 - (stamina / color - 12.0).atan() / PI / 2.0
|
||||
}
|
||||
}
|
||||
|
||||
fn locally_combined_difficulty(skills: &[Skill], stamina_penalty: f32) -> f32 {
|
||||
let mut peaks = Vec::with_capacity(skills[0].strain_peaks.len());
|
||||
|
||||
let iter = skills[0]
|
||||
.strain_peaks
|
||||
.iter()
|
||||
.zip(skills[1].strain_peaks.iter())
|
||||
.zip(skills[2].strain_peaks.iter())
|
||||
.zip(skills[3].strain_peaks.iter())
|
||||
.map(|(((&color, &rhythm), &stamina_right), &stamina_left)| {
|
||||
norm(
|
||||
2.0,
|
||||
color * COLOR_SKILL_MULTIPLIER,
|
||||
rhythm * RHYTHM_SKILL_MULTIPLIER,
|
||||
(stamina_right + stamina_left) * STAMINA_SKILL_MULTIPLIER * stamina_penalty,
|
||||
)
|
||||
});
|
||||
|
||||
peaks.extend(iter);
|
||||
peaks.sort_unstable_by(|a, b| b.partial_cmp(a).unwrap_or(Ordering::Equal));
|
||||
|
||||
let mut difficulty = 0.0;
|
||||
let mut weight = 1.0;
|
||||
|
||||
for strain in peaks {
|
||||
difficulty += strain * weight;
|
||||
weight *= 0.9;
|
||||
}
|
||||
|
||||
difficulty
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn norm(p: f32, a: f32, b: f32, c: f32) -> f32 {
|
||||
(a.powf(p) + b.powf(p) + c.powf(p)).powf(p.recip())
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use std::fs::File;
|
||||
|
||||
#[test]
|
||||
#[ignore]
|
||||
fn taiko_single() {
|
||||
let file = match File::open("E:/Games/osu!/beatmaps/1097541.osu") {
|
||||
Ok(file) => file,
|
||||
Err(why) => panic!("Could not open file: {}", why),
|
||||
};
|
||||
|
||||
let map = match Beatmap::parse(file) {
|
||||
Ok(map) => map,
|
||||
Err(why) => panic!("Error while parsing map: {}", why),
|
||||
};
|
||||
|
||||
let result = PpCalculator::new(&map).mods(256).calculate();
|
||||
|
||||
println!("Stars: {}", result.stars);
|
||||
println!("PP: {}", result.pp);
|
||||
}
|
||||
}
|
||||
+149
@@ -0,0 +1,149 @@
|
||||
use crate::{Beatmap, Mods};
|
||||
|
||||
pub struct PpResult {
|
||||
pub pp: f32,
|
||||
pub stars: f32,
|
||||
}
|
||||
|
||||
pub trait PpProvider {
|
||||
fn pp(&self) -> PpCalculator;
|
||||
}
|
||||
|
||||
impl PpProvider for Beatmap {
|
||||
#[inline]
|
||||
fn pp(&self) -> PpCalculator {
|
||||
PpCalculator::new(self)
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: Allow partial plays
|
||||
pub struct PpCalculator<'m> {
|
||||
map: &'m Beatmap,
|
||||
stars: Option<f32>,
|
||||
mods: u32,
|
||||
max_combo: usize,
|
||||
combo: Option<usize>,
|
||||
acc: f32,
|
||||
n_misses: usize,
|
||||
}
|
||||
|
||||
impl<'m> PpCalculator<'m> {
|
||||
#[inline]
|
||||
pub fn new(map: &'m Beatmap) -> Self {
|
||||
let max_combo = map.hit_objects.iter().filter(|h| h.is_circle()).count();
|
||||
|
||||
Self {
|
||||
map,
|
||||
stars: None,
|
||||
mods: 0,
|
||||
max_combo,
|
||||
combo: None,
|
||||
acc: 100.0,
|
||||
n_misses: 0,
|
||||
}
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn stars(mut self, stars: f32) -> Self {
|
||||
self.stars.replace(stars);
|
||||
|
||||
self
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn mods(mut self, mods: u32) -> Self {
|
||||
self.mods = mods;
|
||||
|
||||
self
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn combo(mut self, combo: usize) -> Self {
|
||||
self.combo.replace(combo);
|
||||
|
||||
self
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn misses(mut self, n_misses: usize) -> Self {
|
||||
self.n_misses = n_misses;
|
||||
|
||||
self
|
||||
}
|
||||
|
||||
/// Set the accuracy between 0.0 and 100.0;
|
||||
#[inline]
|
||||
pub fn accuracy(mut self, acc: f32) -> Self {
|
||||
self.acc = acc / 100.0;
|
||||
|
||||
self
|
||||
}
|
||||
|
||||
pub fn calculate(self) -> PpResult {
|
||||
let stars = self
|
||||
.stars
|
||||
.unwrap_or_else(|| super::stars(self.map, self.mods));
|
||||
|
||||
let mut multiplier = 1.1;
|
||||
|
||||
if self.mods.nf() {
|
||||
multiplier *= 0.9;
|
||||
}
|
||||
|
||||
if self.mods.hd() {
|
||||
multiplier *= 1.1;
|
||||
}
|
||||
|
||||
// TODO: Consider HR & co?
|
||||
let hit_window = difficulty_range_od(self.map.od) as i32 as f32 / self.mods.speed();
|
||||
|
||||
let strain_value = self.compute_strain_value(stars);
|
||||
let acc_value = self.compute_accuracy_value(hit_window);
|
||||
|
||||
let pp = (strain_value.powf(1.1) + acc_value.powf(1.1)).powf(1.0 / 1.1) * multiplier;
|
||||
|
||||
PpResult { stars, pp }
|
||||
}
|
||||
|
||||
fn compute_strain_value(&self, stars: f32) -> f32 {
|
||||
let exp_base = 5.0 * (stars / 0.0075).max(1.0) - 4.0;
|
||||
let mut strain = exp_base * exp_base / 100_000.0;
|
||||
|
||||
// Longer maps are worth more
|
||||
let len_bonus = 1.0 + 0.1 * (self.max_combo as f32 / 1500.0).min(1.0);
|
||||
strain *= len_bonus;
|
||||
|
||||
// Penalize misses exponentially
|
||||
strain *= 0.985_f32.powi(self.n_misses as i32);
|
||||
|
||||
// HD bonus
|
||||
if self.mods.hd() {
|
||||
strain *= 1.025;
|
||||
}
|
||||
|
||||
// FL bonus
|
||||
if self.mods.fl() {
|
||||
strain *= 1.05 * len_bonus;
|
||||
}
|
||||
|
||||
// Scale with accuracy
|
||||
strain * self.acc
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn compute_accuracy_value(&self, hit_window: f32) -> f32 {
|
||||
(150.0 / hit_window).powf(1.1)
|
||||
* self.acc.powi(15)
|
||||
* 22.0
|
||||
* (self.max_combo as f32 / 1500.0).powf(0.3).min(1.15)
|
||||
}
|
||||
}
|
||||
|
||||
const HITWINDOW_MIN: f32 = 50.0;
|
||||
const HITWINDOW_AVG: f32 = 35.0;
|
||||
const HITWINDOW_MAX: f32 = 20.0;
|
||||
|
||||
#[inline]
|
||||
pub(crate) fn difficulty_range_od(ar: f32) -> f32 {
|
||||
crate::difficulty_range(ar, HITWINDOW_MAX, HITWINDOW_AVG, HITWINDOW_MIN)
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
use parse::{HitObject, HitSound};
|
||||
use crate::{HitObject, HitSound};
|
||||
|
||||
pub(crate) trait Rim {
|
||||
fn is_rim(&self) -> bool;
|
||||
@@ -1,6 +1,6 @@
|
||||
use super::{LimitedQueue, Rim};
|
||||
|
||||
use parse::{Beatmap, HitObject};
|
||||
use crate::{Beatmap, HitObject};
|
||||
|
||||
const ROLL_MIN_REPETITIONS: usize = 12;
|
||||
const TL_MIN_REPETITIONS: isize = 16;
|
||||
@@ -1,2 +0,0 @@
|
||||
/target
|
||||
Cargo.lock
|
||||
@@ -1,13 +0,0 @@
|
||||
[package]
|
||||
name = "taiko"
|
||||
version = "0.1.0"
|
||||
authors = ["MaxOhn <ohn.m@hotmail.de>"]
|
||||
edition = "2018"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies.parse]
|
||||
path = "../parse"
|
||||
|
||||
[dependencies.lazy_static]
|
||||
version = "1.4"
|
||||
@@ -1,375 +0,0 @@
|
||||
mod difficulty_object;
|
||||
mod hitobject_rhythm;
|
||||
mod limited_queue;
|
||||
mod rim;
|
||||
mod skill;
|
||||
mod skill_kind;
|
||||
mod stamina_cheese;
|
||||
|
||||
use difficulty_object::DifficultyObject;
|
||||
use hitobject_rhythm::{closest_rhythm, HitObjectRhythm};
|
||||
use limited_queue::LimitedQueue;
|
||||
use rim::Rim;
|
||||
use skill::Skill;
|
||||
use skill_kind::SkillKind;
|
||||
use stamina_cheese::StaminaCheeseDetector;
|
||||
|
||||
use parse::{Beatmap, Mods};
|
||||
|
||||
use std::cmp::Ordering;
|
||||
use std::f32::consts::PI;
|
||||
|
||||
const SECTION_LEN: f32 = 400.0;
|
||||
|
||||
const COLOR_SKILL_MULTIPLIER: f32 = 0.01;
|
||||
const RHYTHM_SKILL_MULTIPLIER: f32 = 0.014;
|
||||
const STAMINA_SKILL_MULTIPLIER: f32 = 0.02;
|
||||
|
||||
/// Star calculation for osu!taiko maps
|
||||
pub fn stars(map: &Beatmap, mods: impl Mods) -> f32 {
|
||||
if map.hit_objects.len() < 2 {
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
// True if the object at that index is stamina cheese
|
||||
let cheese = map.find_cheese();
|
||||
|
||||
let mut skills = vec![
|
||||
Skill::new(SkillKind::color()),
|
||||
Skill::new(SkillKind::rhythm()),
|
||||
Skill::new(SkillKind::stamina(true)),
|
||||
Skill::new(SkillKind::stamina(false)),
|
||||
];
|
||||
|
||||
let clock_rate = mods.speed();
|
||||
let section_len = SECTION_LEN * clock_rate;
|
||||
|
||||
// No strain for first object
|
||||
let mut current_section_end =
|
||||
(map.hit_objects[0].start_time / section_len).ceil() * section_len;
|
||||
|
||||
let hit_objects = map
|
||||
.hit_objects
|
||||
.iter()
|
||||
.enumerate()
|
||||
.skip(2)
|
||||
.zip(map.hit_objects.iter().skip(1))
|
||||
.zip(map.hit_objects.iter())
|
||||
.map(|(((idx, base), prev), prev_prev)| {
|
||||
DifficultyObject::new(idx, base, prev, prev_prev, clock_rate)
|
||||
});
|
||||
|
||||
for h in hit_objects {
|
||||
while h.base.start_time > current_section_end {
|
||||
for skill in skills.iter_mut() {
|
||||
skill.save_current_peak();
|
||||
skill.start_new_section_from(current_section_end);
|
||||
}
|
||||
|
||||
current_section_end += section_len;
|
||||
}
|
||||
|
||||
for skill in skills.iter_mut() {
|
||||
skill.process(&h, &cheese);
|
||||
}
|
||||
}
|
||||
|
||||
for skill in skills.iter_mut() {
|
||||
skill.save_current_peak();
|
||||
}
|
||||
|
||||
let mut buf = vec![0.0; skills[0].strain_peaks.len()];
|
||||
|
||||
let color_rating = skills[0].difficulty_value(&mut buf) * COLOR_SKILL_MULTIPLIER;
|
||||
let rhythm_rating = skills[1].difficulty_value(&mut buf) * RHYTHM_SKILL_MULTIPLIER;
|
||||
|
||||
let mut stamina_rating = (skills[2].difficulty_value(&mut buf)
|
||||
+ skills[3].difficulty_value(&mut buf))
|
||||
* STAMINA_SKILL_MULTIPLIER;
|
||||
|
||||
let stamina_penalty = simple_color_penalty(stamina_rating, color_rating);
|
||||
stamina_rating *= stamina_penalty;
|
||||
|
||||
let combined_rating = locally_combined_difficulty(&skills, stamina_penalty);
|
||||
let separate_rating = norm(1.5, color_rating, rhythm_rating, stamina_rating);
|
||||
|
||||
rescale(1.4 * separate_rating + 0.5 * combined_rating)
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn rescale(stars: f32) -> f32 {
|
||||
if stars < 0.0 {
|
||||
stars
|
||||
} else {
|
||||
10.43 * (stars / 8.0 + 1.0).ln()
|
||||
}
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn simple_color_penalty(stamina: f32, color: f32) -> f32 {
|
||||
if color <= 0.0 {
|
||||
0.79 - 0.25
|
||||
} else {
|
||||
0.79 - (stamina / color - 12.0).atan() / PI / 2.0
|
||||
}
|
||||
}
|
||||
|
||||
fn locally_combined_difficulty(skills: &[Skill], stamina_penalty: f32) -> f32 {
|
||||
let mut peaks = Vec::with_capacity(skills[0].strain_peaks.len());
|
||||
|
||||
let iter = skills[0]
|
||||
.strain_peaks
|
||||
.iter()
|
||||
.zip(skills[1].strain_peaks.iter())
|
||||
.zip(skills[2].strain_peaks.iter())
|
||||
.zip(skills[3].strain_peaks.iter())
|
||||
.map(|(((&color, &rhythm), &stamina_right), &stamina_left)| {
|
||||
norm(
|
||||
2.0,
|
||||
color * COLOR_SKILL_MULTIPLIER,
|
||||
rhythm * RHYTHM_SKILL_MULTIPLIER,
|
||||
(stamina_right + stamina_left) * STAMINA_SKILL_MULTIPLIER * stamina_penalty,
|
||||
)
|
||||
});
|
||||
|
||||
peaks.extend(iter);
|
||||
peaks.sort_unstable_by(|a, b| b.partial_cmp(a).unwrap_or(Ordering::Equal));
|
||||
|
||||
let mut difficulty = 0.0;
|
||||
let mut weight = 1.0;
|
||||
|
||||
for strain in peaks {
|
||||
difficulty += strain * weight;
|
||||
weight *= 0.9;
|
||||
}
|
||||
|
||||
difficulty
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn norm(p: f32, a: f32, b: f32, c: f32) -> f32 {
|
||||
(a.powf(p) + b.powf(p) + c.powf(p)).powf(p.recip())
|
||||
}
|
||||
|
||||
pub struct PpResult {
|
||||
pub pp: f32,
|
||||
pub stars: f32,
|
||||
}
|
||||
|
||||
pub trait PpProvider {
|
||||
fn pp(&self) -> PpCalculator;
|
||||
}
|
||||
|
||||
impl PpProvider for Beatmap {
|
||||
#[inline]
|
||||
fn pp(&self) -> PpCalculator {
|
||||
PpCalculator::new(self)
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: Allow partial plays
|
||||
pub struct PpCalculator<'m> {
|
||||
map: &'m Beatmap,
|
||||
stars: Option<f32>,
|
||||
mods: u32,
|
||||
max_combo: usize,
|
||||
combo: Option<usize>,
|
||||
acc: f32,
|
||||
n_misses: usize,
|
||||
}
|
||||
|
||||
impl<'m> PpCalculator<'m> {
|
||||
#[inline]
|
||||
pub fn new(map: &'m Beatmap) -> Self {
|
||||
let max_combo = map.hit_objects.iter().filter(|h| h.is_circle()).count();
|
||||
|
||||
Self {
|
||||
map,
|
||||
stars: None,
|
||||
mods: 0,
|
||||
max_combo,
|
||||
combo: None,
|
||||
acc: 100.0,
|
||||
n_misses: 0,
|
||||
}
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn stars(mut self, stars: f32) -> Self {
|
||||
self.stars.replace(stars);
|
||||
|
||||
self
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn mods(mut self, mods: u32) -> Self {
|
||||
self.mods = mods;
|
||||
|
||||
self
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn combo(mut self, combo: usize) -> Self {
|
||||
self.combo.replace(combo);
|
||||
|
||||
self
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn misses(mut self, n_misses: usize) -> Self {
|
||||
self.n_misses = n_misses;
|
||||
|
||||
self
|
||||
}
|
||||
|
||||
/// Set the accuracy between 0.0 and 100.0;
|
||||
#[inline]
|
||||
pub fn accuracy(mut self, acc: f32) -> Self {
|
||||
self.acc = acc / 100.0;
|
||||
|
||||
self
|
||||
}
|
||||
|
||||
pub fn calculate(self) -> PpResult {
|
||||
let stars = self.stars.unwrap_or_else(|| stars(self.map, self.mods));
|
||||
|
||||
let mut multiplier = 1.1;
|
||||
|
||||
if self.mods.nf() {
|
||||
multiplier *= 0.9;
|
||||
}
|
||||
|
||||
if self.mods.hd() {
|
||||
multiplier *= 1.1;
|
||||
}
|
||||
|
||||
// TODO: Consider HR & co?
|
||||
let hit_window = difficulty_range(self.map.od) as i32 as f32 / self.mods.speed();
|
||||
|
||||
let strain_value = self.compute_strain_value(stars);
|
||||
let acc_value = self.compute_accuracy_value(hit_window);
|
||||
|
||||
let pp = (strain_value.powf(1.1) + acc_value.powf(1.1)).powf(1.0 / 1.1) * multiplier;
|
||||
|
||||
PpResult { stars, pp }
|
||||
}
|
||||
|
||||
fn compute_strain_value(&self, stars: f32) -> f32 {
|
||||
let exp_base = 5.0 * (stars / 0.0075).max(1.0) - 4.0;
|
||||
let mut strain = exp_base * exp_base / 100_000.0;
|
||||
|
||||
// Longer maps are worth more
|
||||
let len_bonus = 1.0 + 0.1 * (self.max_combo as f32 / 1500.0).min(1.0);
|
||||
strain *= len_bonus;
|
||||
|
||||
// Penalize misses exponentially
|
||||
strain *= 0.985_f32.powi(self.n_misses as i32);
|
||||
|
||||
// HD bonus
|
||||
if self.mods.hd() {
|
||||
strain *= 1.025;
|
||||
}
|
||||
|
||||
// FL bonus
|
||||
if self.mods.fl() {
|
||||
strain *= 1.05 * len_bonus;
|
||||
}
|
||||
|
||||
// Scale with accuracy
|
||||
strain * self.acc
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn compute_accuracy_value(&self, hit_window: f32) -> f32 {
|
||||
(150.0 / hit_window).powf(1.1)
|
||||
* self.acc.powi(15)
|
||||
* 22.0
|
||||
* (self.max_combo as f32 / 1500.0).powf(0.3).min(1.15)
|
||||
}
|
||||
}
|
||||
|
||||
const HITWINDOW_MIN: f32 = 50.0;
|
||||
const HITWINDOW_AVG: f32 = 35.0;
|
||||
const HITWINDOW_MAX: f32 = 20.0;
|
||||
|
||||
#[inline]
|
||||
fn difficulty_range(od: f32) -> f32 {
|
||||
if od > 5.0 {
|
||||
HITWINDOW_AVG + (HITWINDOW_MAX - HITWINDOW_AVG) * (od - 5.0) / 5.0
|
||||
} else if od < 5.0 {
|
||||
HITWINDOW_AVG - (HITWINDOW_AVG - HITWINDOW_MIN) * (5.0 - od) / 5.0
|
||||
} else {
|
||||
HITWINDOW_AVG
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use std::fs::File;
|
||||
|
||||
#[test]
|
||||
fn test_single() {
|
||||
let file = match File::open("E:/Games/osu!/beatmaps/1097541.osu") {
|
||||
Ok(file) => file,
|
||||
Err(why) => panic!("Could not open file: {}", why),
|
||||
};
|
||||
|
||||
let map = match Beatmap::parse(file) {
|
||||
Ok(map) => map,
|
||||
Err(why) => panic!("Error while parsing map: {}", why),
|
||||
};
|
||||
|
||||
let stars = stars(&map, 16);
|
||||
|
||||
println!("Stars: {}", stars);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_taiko() {
|
||||
let margin = 0.005;
|
||||
|
||||
#[rustfmt::skip]
|
||||
let data = vec![
|
||||
(110219, 1 << 8, 4.090461690284154), // HT
|
||||
(110219, 0, 5.137432251440863), // NM
|
||||
(110219, 1 << 6, 6.785308286298745), // DT
|
||||
|
||||
(168450, 1 << 8, 3.9102755155437663), // HT
|
||||
(168450, 0, 4.740171803038067), // NM
|
||||
(168450, 1 << 6, 5.894260068145283), // DT
|
||||
|
||||
(1097541, 1 << 8, 4.0027499635116595),// HT
|
||||
(1097541, 0, 4.891409786886079), // NM
|
||||
(1097541, 1 << 6, 6.587467490088248), // DT
|
||||
|
||||
(1432878, 1 << 8, 3.5850143199594258),// HT
|
||||
(1432878, 0, 4.416206873466799), // NM
|
||||
(1432878, 1 << 6, 5.908970879987477), // DT
|
||||
];
|
||||
|
||||
for (map_id, mods, expected_stars) in data {
|
||||
let file = match File::open(format!("./test/{}.osu", map_id)) {
|
||||
Ok(file) => file,
|
||||
Err(why) => panic!("Could not open file {}.osu: {}", map_id, why),
|
||||
};
|
||||
|
||||
let map = match Beatmap::parse(file) {
|
||||
Ok(map) => map,
|
||||
Err(why) => panic!("Error while parsing map {}: {}", map_id, why),
|
||||
};
|
||||
|
||||
let stars = stars(&map, mods);
|
||||
|
||||
assert!(
|
||||
(stars - expected_stars).abs() < margin,
|
||||
"Stars: {} | Expected: {} => {} margin [map {} | mods {}]",
|
||||
stars,
|
||||
expected_stars,
|
||||
(stars - expected_stars).abs(),
|
||||
map_id,
|
||||
mods
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,598 +0,0 @@
|
||||
osu file format v14
|
||||
|
||||
[General]
|
||||
AudioFilename: audio.mp3
|
||||
AudioLeadIn: 0
|
||||
PreviewTime: 47433
|
||||
Countdown: 0
|
||||
SampleSet: Normal
|
||||
StackLeniency: 0.7
|
||||
Mode: 1
|
||||
LetterboxInBreaks: 0
|
||||
WidescreenStoryboard: 0
|
||||
|
||||
[Editor]
|
||||
DistanceSpacing: 0.8
|
||||
BeatDivisor: 4
|
||||
GridSize: 32
|
||||
TimelineZoom: 2.6
|
||||
|
||||
[Metadata]
|
||||
Title:Physicality
|
||||
TitleUnicode:Physicality
|
||||
Artist:Renard + Adraen
|
||||
ArtistUnicode:Renard + Adraen
|
||||
Creator:Surono
|
||||
Version:Oni
|
||||
Source:
|
||||
Tags:lapfox trax vulpvibe records acid intravenous electronic breakcore system of a down
|
||||
BeatmapID:1432878
|
||||
BeatmapSetID:601403
|
||||
|
||||
[Difficulty]
|
||||
HPDrainRate:5
|
||||
CircleSize:2
|
||||
OverallDifficulty:6
|
||||
ApproachRate:10
|
||||
SliderMultiplier:1.4
|
||||
SliderTickRate:1
|
||||
|
||||
[Events]
|
||||
//Background and Video events
|
||||
0,0,"fox stupud.jpg",0,0
|
||||
//Break Periods
|
||||
//Storyboard Layer 0 (Background)
|
||||
//Storyboard Layer 1 (Fail)
|
||||
//Storyboard Layer 2 (Pass)
|
||||
//Storyboard Layer 3 (Foreground)
|
||||
//Storyboard Sound Samples
|
||||
|
||||
[TimingPoints]
|
||||
115,218.181818181818,4,1,0,45,1,0
|
||||
115,-151.515151515152,4,1,0,45,0,0
|
||||
5339,331.455087835598,4,1,0,90,1,0
|
||||
47765,-100,4,1,0,90,0,1
|
||||
68978,-100,4,1,0,90,0,0
|
||||
90191,218.181818181818,4,1,0,45,1,0
|
||||
90191,-151.515151515152,4,1,0,45,0,0
|
||||
|
||||
|
||||
[HitObjects]
|
||||
256,192,115,12,0,5133,0:0:0:0:
|
||||
256,192,5339,5,0,0:0:0:0:
|
||||
256,192,5421,1,0,0:0:0:0:
|
||||
256,192,5504,1,0,0:0:0:0:
|
||||
256,192,5670,1,8,0:0:0:0:
|
||||
256,192,5836,1,0,0:0:0:0:
|
||||
256,192,5919,1,0,0:0:0:0:
|
||||
256,192,6001,1,0,0:0:0:0:
|
||||
256,192,6250,1,0,0:0:0:0:
|
||||
256,192,6333,1,8,0:0:0:0:
|
||||
256,192,6499,1,0,0:0:0:0:
|
||||
256,192,6664,1,8,0:0:0:0:
|
||||
256,192,6747,1,8,0:0:0:0:
|
||||
256,192,6830,1,8,0:0:0:0:
|
||||
256,192,6996,1,0,0:0:0:0:
|
||||
256,192,7162,1,8,0:0:0:0:
|
||||
256,192,7244,1,8,0:0:0:0:
|
||||
256,192,7327,1,8,0:0:0:0:
|
||||
256,192,7576,1,8,0:0:0:0:
|
||||
256,192,7659,1,0,0:0:0:0:
|
||||
256,192,7824,1,8,0:0:0:0:
|
||||
256,192,7990,5,0,0:0:0:0:
|
||||
256,192,8073,1,0,0:0:0:0:
|
||||
256,192,8156,1,0,0:0:0:0:
|
||||
256,192,8322,1,8,0:0:0:0:
|
||||
256,192,8487,1,0,0:0:0:0:
|
||||
256,192,8570,1,0,0:0:0:0:
|
||||
256,192,8653,1,0,0:0:0:0:
|
||||
256,192,8902,1,0,0:0:0:0:
|
||||
256,192,8985,1,8,0:0:0:0:
|
||||
256,192,9150,1,0,0:0:0:0:
|
||||
256,192,9316,1,8,0:0:0:0:
|
||||
256,192,9399,1,8,0:0:0:0:
|
||||
256,192,9482,1,8,0:0:0:0:
|
||||
256,192,9647,1,0,0:0:0:0:
|
||||
256,192,9813,1,8,0:0:0:0:
|
||||
256,192,9896,1,8,0:0:0:0:
|
||||
256,192,9979,1,8,0:0:0:0:
|
||||
256,192,10227,1,0,0:0:0:0:
|
||||
256,192,10310,1,8,0:0:0:0:
|
||||
256,192,10476,1,8,0:0:0:0:
|
||||
256,192,10642,5,0,0:0:0:0:
|
||||
256,192,10725,1,0,0:0:0:0:
|
||||
256,192,10808,1,0,0:0:0:0:
|
||||
256,192,10973,1,8,0:0:0:0:
|
||||
256,192,11139,1,0,0:0:0:0:
|
||||
256,192,11222,1,0,0:0:0:0:
|
||||
256,192,11305,1,0,0:0:0:0:
|
||||
256,192,11553,1,0,0:0:0:0:
|
||||
256,192,11636,1,8,0:0:0:0:
|
||||
256,192,11802,1,0,0:0:0:0:
|
||||
256,192,11968,1,8,0:0:0:0:
|
||||
256,192,12050,1,8,0:0:0:0:
|
||||
256,192,12133,1,8,0:0:0:0:
|
||||
256,192,12299,1,0,0:0:0:0:
|
||||
256,192,12465,1,8,0:0:0:0:
|
||||
256,192,12548,1,8,0:0:0:0:
|
||||
256,192,12631,1,8,0:0:0:0:
|
||||
256,192,12879,1,8,0:0:0:0:
|
||||
256,192,12962,1,0,0:0:0:0:
|
||||
256,192,13128,1,8,0:0:0:0:
|
||||
256,192,13293,5,0,0:0:0:0:
|
||||
256,192,13376,1,0,0:0:0:0:
|
||||
256,192,13459,1,0,0:0:0:0:
|
||||
256,192,13625,1,8,0:0:0:0:
|
||||
256,192,13791,1,0,0:0:0:0:
|
||||
256,192,13873,1,0,0:0:0:0:
|
||||
256,192,13956,1,0,0:0:0:0:
|
||||
256,192,14205,1,0,0:0:0:0:
|
||||
256,192,14288,1,8,0:0:0:0:
|
||||
256,192,14454,1,0,0:0:0:0:
|
||||
256,192,14619,1,8,0:0:0:0:
|
||||
256,192,14702,1,8,0:0:0:0:
|
||||
256,192,14785,1,8,0:0:0:0:
|
||||
256,192,14951,1,0,0:0:0:0:
|
||||
256,192,15116,1,8,0:0:0:0:
|
||||
256,192,15199,1,8,0:0:0:0:
|
||||
256,192,15282,1,8,0:0:0:0:
|
||||
256,192,15531,1,0,0:0:0:0:
|
||||
256,192,15614,1,8,0:0:0:0:
|
||||
256,192,15779,1,8,0:0:0:0:
|
||||
256,192,15862,1,8,0:0:0:0:
|
||||
256,192,15945,1,4,0:0:0:0:
|
||||
256,192,16277,1,4,0:0:0:0:
|
||||
256,192,16608,1,8,0:0:0:0:
|
||||
256,192,16774,1,0,0:0:0:0:
|
||||
256,192,16939,1,0,0:0:0:0:
|
||||
256,192,17105,1,8,0:0:0:0:
|
||||
256,192,17188,1,8,0:0:0:0:
|
||||
256,192,17271,1,0,0:0:0:0:
|
||||
256,192,17437,1,0,0:0:0:0:
|
||||
256,192,17519,1,0,0:0:0:0:
|
||||
256,192,17602,1,0,0:0:0:0:
|
||||
256,192,17768,1,0,0:0:0:0:
|
||||
256,192,17851,1,0,0:0:0:0:
|
||||
256,192,17934,1,8,0:0:0:0:
|
||||
256,192,18100,1,0,0:0:0:0:
|
||||
256,192,18182,1,0,0:0:0:0:
|
||||
256,192,18265,1,8,0:0:0:0:
|
||||
256,192,18431,1,8,0:0:0:0:
|
||||
256,192,18597,1,4,0:0:0:0:
|
||||
256,192,18928,1,0,0:0:0:0:
|
||||
256,192,19011,1,0,0:0:0:0:
|
||||
256,192,19094,1,0,0:0:0:0:
|
||||
256,192,19260,1,8,0:0:0:0:
|
||||
256,192,19342,1,0,0:0:0:0:
|
||||
256,192,19425,1,0,0:0:0:0:
|
||||
256,192,19591,1,0,0:0:0:0:
|
||||
256,192,19674,1,0,0:0:0:0:
|
||||
256,192,19757,1,8,0:0:0:0:
|
||||
256,192,19923,1,0,0:0:0:0:
|
||||
256,192,20088,1,8,0:0:0:0:
|
||||
256,192,20254,1,0,0:0:0:0:
|
||||
256,192,20420,1,0,0:0:0:0:
|
||||
256,192,20585,1,8,0:0:0:0:
|
||||
256,192,20751,1,0,0:0:0:0:
|
||||
256,192,20834,1,8,0:0:0:0:
|
||||
256,192,20917,1,0,0:0:0:0:
|
||||
256,192,21000,1,0,0:0:0:0:
|
||||
256,192,21083,1,8,0:0:0:0:
|
||||
256,192,21248,1,4,0:0:0:0:
|
||||
256,192,21580,1,4,0:0:0:0:
|
||||
256,192,21911,1,8,0:0:0:0:
|
||||
256,192,22077,1,0,0:0:0:0:
|
||||
256,192,22243,1,0,0:0:0:0:
|
||||
256,192,22408,1,8,0:0:0:0:
|
||||
256,192,22491,1,8,0:0:0:0:
|
||||
256,192,22574,1,0,0:0:0:0:
|
||||
256,192,22740,1,0,0:0:0:0:
|
||||
256,192,22823,1,0,0:0:0:0:
|
||||
256,192,22906,1,0,0:0:0:0:
|
||||
256,192,23071,1,0,0:0:0:0:
|
||||
256,192,23154,1,0,0:0:0:0:
|
||||
256,192,23237,1,8,0:0:0:0:
|
||||
256,192,23403,1,0,0:0:0:0:
|
||||
256,192,23486,1,0,0:0:0:0:
|
||||
256,192,23569,1,8,0:0:0:0:
|
||||
256,192,23734,1,8,0:0:0:0:
|
||||
256,192,23900,1,4,0:0:0:0:
|
||||
256,192,24231,1,0,0:0:0:0:
|
||||
256,192,24314,1,0,0:0:0:0:
|
||||
256,192,24397,1,0,0:0:0:0:
|
||||
256,192,24563,1,8,0:0:0:0:
|
||||
256,192,24646,1,0,0:0:0:0:
|
||||
256,192,24729,1,0,0:0:0:0:
|
||||
256,192,24894,1,0,0:0:0:0:
|
||||
256,192,24977,1,0,0:0:0:0:
|
||||
256,192,25060,1,8,0:0:0:0:
|
||||
256,192,25226,1,0,0:0:0:0:
|
||||
256,192,25392,1,8,0:0:0:0:
|
||||
256,192,25557,1,0,0:0:0:0:
|
||||
256,192,25723,1,0,0:0:0:0:
|
||||
256,192,25889,1,8,0:0:0:0:
|
||||
256,192,26054,1,0,0:0:0:0:
|
||||
256,192,26137,1,8,0:0:0:0:
|
||||
256,192,26220,1,0,0:0:0:0:
|
||||
256,192,26303,1,0,0:0:0:0:
|
||||
256,192,26386,1,8,0:0:0:0:
|
||||
256,192,26552,5,0,0:0:0:0:
|
||||
256,192,26634,1,0,0:0:0:0:
|
||||
256,192,26717,1,0,0:0:0:0:
|
||||
256,192,26883,1,8,0:0:0:0:
|
||||
256,192,27049,1,0,0:0:0:0:
|
||||
256,192,27132,1,8,0:0:0:0:
|
||||
256,192,27215,1,0,0:0:0:0:
|
||||
256,192,27463,1,0,0:0:0:0:
|
||||
256,192,27546,1,8,0:0:0:0:
|
||||
256,192,27712,1,0,0:0:0:0:
|
||||
256,192,27877,1,8,0:0:0:0:
|
||||
256,192,27960,1,8,0:0:0:0:
|
||||
256,192,28043,1,8,0:0:0:0:
|
||||
256,192,28209,1,0,0:0:0:0:
|
||||
256,192,28375,1,8,0:0:0:0:
|
||||
256,192,28457,1,0,0:0:0:0:
|
||||
256,192,28540,1,8,0:0:0:0:
|
||||
256,192,28789,1,8,0:0:0:0:
|
||||
256,192,28872,1,0,0:0:0:0:
|
||||
256,192,29038,1,8,0:0:0:0:
|
||||
256,192,29203,5,0,0:0:0:0:
|
||||
256,192,29286,1,0,0:0:0:0:
|
||||
256,192,29369,1,0,0:0:0:0:
|
||||
256,192,29535,1,8,0:0:0:0:
|
||||
256,192,29700,1,0,0:0:0:0:
|
||||
256,192,29783,1,8,0:0:0:0:
|
||||
256,192,29866,1,0,0:0:0:0:
|
||||
256,192,30115,1,0,0:0:0:0:
|
||||
256,192,30198,1,8,0:0:0:0:
|
||||
256,192,30363,1,0,0:0:0:0:
|
||||
256,192,30529,1,8,0:0:0:0:
|
||||
256,192,30612,1,8,0:0:0:0:
|
||||
256,192,30695,1,8,0:0:0:0:
|
||||
256,192,30861,1,0,0:0:0:0:
|
||||
256,192,31026,1,8,0:0:0:0:
|
||||
256,192,31109,1,0,0:0:0:0:
|
||||
256,192,31192,1,8,0:0:0:0:
|
||||
256,192,31441,1,0,0:0:0:0:
|
||||
256,192,31523,1,8,0:0:0:0:
|
||||
256,192,31689,1,8,0:0:0:0:
|
||||
256,192,31855,5,0,0:0:0:0:
|
||||
256,192,31938,1,0,0:0:0:0:
|
||||
256,192,32021,1,0,0:0:0:0:
|
||||
256,192,32186,1,8,0:0:0:0:
|
||||
256,192,32352,1,0,0:0:0:0:
|
||||
256,192,32435,1,8,0:0:0:0:
|
||||
256,192,32518,1,0,0:0:0:0:
|
||||
256,192,32766,1,0,0:0:0:0:
|
||||
256,192,32849,1,8,0:0:0:0:
|
||||
256,192,33015,1,0,0:0:0:0:
|
||||
256,192,33181,1,8,0:0:0:0:
|
||||
256,192,33264,1,8,0:0:0:0:
|
||||
256,192,33346,1,8,0:0:0:0:
|
||||
256,192,33512,1,0,0:0:0:0:
|
||||
256,192,33678,1,8,0:0:0:0:
|
||||
256,192,33761,1,0,0:0:0:0:
|
||||
256,192,33844,1,8,0:0:0:0:
|
||||
256,192,34092,1,8,0:0:0:0:
|
||||
256,192,34175,1,0,0:0:0:0:
|
||||
256,192,34341,1,8,0:0:0:0:
|
||||
256,192,34507,5,0,0:0:0:0:
|
||||
256,192,34589,1,0,0:0:0:0:
|
||||
256,192,34672,1,0,0:0:0:0:
|
||||
256,192,34838,1,8,0:0:0:0:
|
||||
256,192,35004,1,0,0:0:0:0:
|
||||
256,192,35087,1,8,0:0:0:0:
|
||||
256,192,35169,1,0,0:0:0:0:
|
||||
256,192,35418,1,0,0:0:0:0:
|
||||
256,192,35501,1,8,0:0:0:0:
|
||||
256,192,35667,1,0,0:0:0:0:
|
||||
256,192,35832,1,8,0:0:0:0:
|
||||
256,192,35915,1,8,0:0:0:0:
|
||||
256,192,35998,1,8,0:0:0:0:
|
||||
256,192,36164,1,0,0:0:0:0:
|
||||
256,192,36330,1,8,0:0:0:0:
|
||||
256,192,36412,1,0,0:0:0:0:
|
||||
256,192,36495,1,8,0:0:0:0:
|
||||
256,192,36744,1,0,0:0:0:0:
|
||||
256,192,36827,1,8,0:0:0:0:
|
||||
256,192,37158,1,4,0:0:0:0:
|
||||
256,192,37490,1,8,0:0:0:0:
|
||||
256,192,37738,1,4,0:0:0:0:
|
||||
256,192,37987,1,0,0:0:0:0:
|
||||
256,192,38153,1,8,0:0:0:0:
|
||||
256,192,38484,1,12,0:0:0:0:
|
||||
256,192,38815,1,0,0:0:0:0:
|
||||
256,192,39064,1,12,0:0:0:0:
|
||||
256,192,39313,1,0,0:0:0:0:
|
||||
256,192,39478,1,8,0:0:0:0:
|
||||
256,192,39644,1,0,0:0:0:0:
|
||||
256,192,39810,1,4,0:0:0:0:
|
||||
256,192,40141,1,8,0:0:0:0:
|
||||
256,192,40390,1,4,0:0:0:0:
|
||||
256,192,40638,1,0,0:0:0:0:
|
||||
256,192,40804,1,8,0:0:0:0:
|
||||
256,192,41136,1,12,0:0:0:0:
|
||||
256,192,41467,1,0,0:0:0:0:
|
||||
256,192,41716,1,12,0:0:0:0:
|
||||
256,192,41964,1,0,0:0:0:0:
|
||||
256,192,42130,1,8,0:0:0:0:
|
||||
256,192,42296,1,8,0:0:0:0:
|
||||
256,192,42461,1,4,0:0:0:0:
|
||||
256,192,42793,1,8,0:0:0:0:
|
||||
256,192,43042,1,4,0:0:0:0:
|
||||
256,192,43290,1,0,0:0:0:0:
|
||||
256,192,43456,1,8,0:0:0:0:
|
||||
256,192,43787,1,12,0:0:0:0:
|
||||
256,192,44119,1,0,0:0:0:0:
|
||||
256,192,44367,1,12,0:0:0:0:
|
||||
256,192,44616,1,0,0:0:0:0:
|
||||
256,192,44782,1,8,0:0:0:0:
|
||||
256,192,44947,1,0,0:0:0:0:
|
||||
256,192,45113,1,4,0:0:0:0:
|
||||
256,192,45445,1,8,0:0:0:0:
|
||||
256,192,45693,1,4,0:0:0:0:
|
||||
256,192,45942,1,0,0:0:0:0:
|
||||
256,192,46107,1,8,0:0:0:0:
|
||||
256,192,46439,1,12,0:0:0:0:
|
||||
256,192,46770,1,8,0:0:0:0:
|
||||
256,192,46936,1,0,0:0:0:0:
|
||||
256,192,47019,1,0,0:0:0:0:
|
||||
256,192,47102,1,8,0:0:0:0:
|
||||
256,192,47268,1,0,0:0:0:0:
|
||||
256,192,47350,1,0,0:0:0:0:
|
||||
256,192,47433,1,8,0:0:0:0:
|
||||
256,192,47765,1,4,0:0:0:0:
|
||||
256,192,48096,1,4,0:0:0:0:
|
||||
256,192,48428,1,8,0:0:0:0:
|
||||
256,192,48593,1,0,0:0:0:0:
|
||||
256,192,48759,1,0,0:0:0:0:
|
||||
256,192,48925,1,8,0:0:0:0:
|
||||
256,192,49008,1,8,0:0:0:0:
|
||||
256,192,49091,1,0,0:0:0:0:
|
||||
256,192,49256,1,0,0:0:0:0:
|
||||
256,192,49339,1,0,0:0:0:0:
|
||||
256,192,49422,1,8,0:0:0:0:
|
||||
256,192,49588,1,0,0:0:0:0:
|
||||
256,192,49671,1,0,0:0:0:0:
|
||||
256,192,49753,1,8,0:0:0:0:
|
||||
256,192,49919,1,0,0:0:0:0:
|
||||
256,192,50002,1,0,0:0:0:0:
|
||||
256,192,50085,1,8,0:0:0:0:
|
||||
256,192,50251,1,8,0:0:0:0:
|
||||
256,192,50416,1,4,0:0:0:0:
|
||||
256,192,50748,1,0,0:0:0:0:
|
||||
256,192,50831,1,0,0:0:0:0:
|
||||
256,192,50914,1,0,0:0:0:0:
|
||||
256,192,51079,1,8,0:0:0:0:
|
||||
256,192,51162,1,0,0:0:0:0:
|
||||
256,192,51245,1,0,0:0:0:0:
|
||||
256,192,51411,1,0,0:0:0:0:
|
||||
256,192,51494,1,0,0:0:0:0:
|
||||
256,192,51576,1,8,0:0:0:0:
|
||||
256,192,51742,1,0,0:0:0:0:
|
||||
256,192,51908,1,8,0:0:0:0:
|
||||
256,192,52074,1,8,0:0:0:0:
|
||||
256,192,52239,1,0,0:0:0:0:
|
||||
256,192,52405,1,8,0:0:0:0:
|
||||
256,192,52571,1,8,0:0:0:0:
|
||||
256,192,52654,1,8,0:0:0:0:
|
||||
256,192,52737,1,0,0:0:0:0:
|
||||
256,192,52819,1,0,0:0:0:0:
|
||||
256,192,52902,1,8,0:0:0:0:
|
||||
256,192,53068,1,4,0:0:0:0:
|
||||
256,192,53399,1,4,0:0:0:0:
|
||||
256,192,53731,1,8,0:0:0:0:
|
||||
256,192,53897,1,0,0:0:0:0:
|
||||
256,192,54062,1,0,0:0:0:0:
|
||||
256,192,54228,1,8,0:0:0:0:
|
||||
256,192,54311,1,8,0:0:0:0:
|
||||
256,192,54394,1,0,0:0:0:0:
|
||||
256,192,54560,1,0,0:0:0:0:
|
||||
256,192,54642,1,0,0:0:0:0:
|
||||
256,192,54725,1,8,0:0:0:0:
|
||||
256,192,54891,1,0,0:0:0:0:
|
||||
256,192,54974,1,0,0:0:0:0:
|
||||
256,192,55057,1,8,0:0:0:0:
|
||||
256,192,55222,1,0,0:0:0:0:
|
||||
256,192,55305,1,0,0:0:0:0:
|
||||
256,192,55388,1,8,0:0:0:0:
|
||||
256,192,55554,1,8,0:0:0:0:
|
||||
256,192,55720,1,4,0:0:0:0:
|
||||
256,192,56051,1,0,0:0:0:0:
|
||||
256,192,56134,1,0,0:0:0:0:
|
||||
256,192,56217,1,0,0:0:0:0:
|
||||
256,192,56383,1,8,0:0:0:0:
|
||||
256,192,56465,1,0,0:0:0:0:
|
||||
256,192,56548,1,0,0:0:0:0:
|
||||
256,192,56714,1,0,0:0:0:0:
|
||||
256,192,56797,1,0,0:0:0:0:
|
||||
256,192,56880,1,8,0:0:0:0:
|
||||
256,192,57045,1,0,0:0:0:0:
|
||||
256,192,57211,1,8,0:0:0:0:
|
||||
256,192,57377,1,8,0:0:0:0:
|
||||
256,192,57543,1,0,0:0:0:0:
|
||||
256,192,57708,1,8,0:0:0:0:
|
||||
256,192,57874,1,8,0:0:0:0:
|
||||
256,192,57957,1,8,0:0:0:0:
|
||||
256,192,58040,1,0,0:0:0:0:
|
||||
256,192,58123,1,0,0:0:0:0:
|
||||
256,192,58206,1,8,0:0:0:0:
|
||||
256,192,58371,1,4,0:0:0:0:
|
||||
256,192,58703,1,4,0:0:0:0:
|
||||
256,192,59034,1,8,0:0:0:0:
|
||||
256,192,59200,1,8,0:0:0:0:
|
||||
256,192,59366,1,0,0:0:0:0:
|
||||
256,192,59531,1,8,0:0:0:0:
|
||||
256,192,59614,1,8,0:0:0:0:
|
||||
256,192,59697,1,0,0:0:0:0:
|
||||
256,192,59863,1,0,0:0:0:0:
|
||||
256,192,59946,1,8,0:0:0:0:
|
||||
256,192,60029,1,0,0:0:0:0:
|
||||
256,192,60194,1,0,0:0:0:0:
|
||||
256,192,60277,1,0,0:0:0:0:
|
||||
256,192,60360,1,8,0:0:0:0:
|
||||
256,192,60526,1,0,0:0:0:0:
|
||||
256,192,60609,1,0,0:0:0:0:
|
||||
256,192,60691,1,8,0:0:0:0:
|
||||
256,192,60857,1,8,0:0:0:0:
|
||||
256,192,61023,1,4,0:0:0:0:
|
||||
256,192,61189,1,0,0:0:0:0:
|
||||
256,192,61354,1,8,0:0:0:0:
|
||||
256,192,61437,1,8,0:0:0:0:
|
||||
256,192,61520,1,0,0:0:0:0:
|
||||
256,192,61686,1,8,0:0:0:0:
|
||||
256,192,61769,1,8,0:0:0:0:
|
||||
256,192,61852,1,0,0:0:0:0:
|
||||
256,192,62017,1,0,0:0:0:0:
|
||||
256,192,62100,1,0,0:0:0:0:
|
||||
256,192,62183,1,8,0:0:0:0:
|
||||
256,192,62349,1,0,0:0:0:0:
|
||||
256,192,62515,1,8,0:0:0:0:
|
||||
256,192,62680,1,8,0:0:0:0:
|
||||
256,192,62763,1,0,0:0:0:0:
|
||||
256,192,62846,1,0,0:0:0:0:
|
||||
256,192,63012,1,8,0:0:0:0:
|
||||
256,192,63177,1,8,0:0:0:0:
|
||||
256,192,63260,1,8,0:0:0:0:
|
||||
256,192,63343,1,0,0:0:0:0:
|
||||
256,192,63426,1,0,0:0:0:0:
|
||||
256,192,63509,1,8,0:0:0:0:
|
||||
256,192,63675,1,4,0:0:0:0:
|
||||
256,192,64006,1,4,0:0:0:0:
|
||||
256,192,64338,1,8,0:0:0:0:
|
||||
256,192,64503,1,8,0:0:0:0:
|
||||
256,192,64669,1,0,0:0:0:0:
|
||||
256,192,64835,1,8,0:0:0:0:
|
||||
256,192,64918,1,8,0:0:0:0:
|
||||
256,192,65000,1,0,0:0:0:0:
|
||||
256,192,65166,1,0,0:0:0:0:
|
||||
256,192,65249,1,8,0:0:0:0:
|
||||
256,192,65332,1,0,0:0:0:0:
|
||||
256,192,65498,1,0,0:0:0:0:
|
||||
256,192,65580,1,0,0:0:0:0:
|
||||
256,192,65663,1,8,0:0:0:0:
|
||||
256,192,65829,1,0,0:0:0:0:
|
||||
256,192,65912,1,0,0:0:0:0:
|
||||
256,192,65995,1,8,0:0:0:0:
|
||||
256,192,66161,1,8,0:0:0:0:
|
||||
256,192,66326,1,4,0:0:0:0:
|
||||
256,192,66492,1,0,0:0:0:0:
|
||||
256,192,66658,1,8,0:0:0:0:
|
||||
256,192,66741,1,8,0:0:0:0:
|
||||
256,192,66823,1,0,0:0:0:0:
|
||||
256,192,66989,1,8,0:0:0:0:
|
||||
256,192,67072,1,8,0:0:0:0:
|
||||
256,192,67155,1,0,0:0:0:0:
|
||||
256,192,67321,1,0,0:0:0:0:
|
||||
256,192,67403,1,0,0:0:0:0:
|
||||
256,192,67486,1,8,0:0:0:0:
|
||||
256,192,67652,1,0,0:0:0:0:
|
||||
256,192,67818,1,8,0:0:0:0:
|
||||
256,192,67984,1,8,0:0:0:0:
|
||||
256,192,68066,1,0,0:0:0:0:
|
||||
256,192,68149,1,0,0:0:0:0:
|
||||
256,192,68315,1,8,0:0:0:0:
|
||||
256,192,68481,1,8,0:0:0:0:
|
||||
256,192,68564,1,8,0:0:0:0:
|
||||
256,192,68646,1,0,0:0:0:0:
|
||||
256,192,68729,1,0,0:0:0:0:
|
||||
256,192,68812,1,8,0:0:0:0:
|
||||
256,192,68978,5,4,0:0:0:0:
|
||||
256,192,69475,1,0,0:0:0:0:
|
||||
256,192,70304,1,8,0:0:0:0:
|
||||
256,192,70801,1,8,0:0:0:0:
|
||||
256,192,71630,1,0,0:0:0:0:
|
||||
256,192,72127,1,0,0:0:0:0:
|
||||
256,192,72955,1,8,0:0:0:0:
|
||||
256,192,73453,1,8,0:0:0:0:
|
||||
256,192,73950,1,8,0:0:0:0:
|
||||
256,192,74281,1,4,0:0:0:0:
|
||||
256,192,74778,2,4,L|128:128,1,140
|
||||
256,192,75607,1,8,0:0:0:0:
|
||||
256,192,76104,2,0,L|128:96,1,140
|
||||
256,192,76933,1,0,0:0:0:0:
|
||||
256,192,77430,2,4,L|128:96,1,140
|
||||
256,192,78259,1,8,0:0:0:0:
|
||||
256,192,78756,2,8,L|128:128,1,140
|
||||
256,192,79253,1,8,0:0:0:0:
|
||||
256,192,79584,5,0,0:0:0:0:
|
||||
256,192,79667,1,0,0:0:0:0:
|
||||
256,192,79750,1,0,0:0:0:0:
|
||||
256,192,79916,1,8,0:0:0:0:
|
||||
256,192,80082,1,0,0:0:0:0:
|
||||
256,192,80164,1,8,0:0:0:0:
|
||||
256,192,80247,1,0,0:0:0:0:
|
||||
256,192,80413,1,0,0:0:0:0:
|
||||
256,192,80579,1,8,0:0:0:0:
|
||||
256,192,80745,1,0,0:0:0:0:
|
||||
256,192,80910,1,8,0:0:0:0:
|
||||
256,192,80993,1,8,0:0:0:0:
|
||||
256,192,81076,1,8,0:0:0:0:
|
||||
256,192,81242,1,0,0:0:0:0:
|
||||
256,192,81407,1,8,0:0:0:0:
|
||||
256,192,81490,1,0,0:0:0:0:
|
||||
256,192,81573,1,8,0:0:0:0:
|
||||
256,192,81739,1,8,0:0:0:0:
|
||||
256,192,81905,1,0,0:0:0:0:
|
||||
256,192,82070,1,8,0:0:0:0:
|
||||
256,192,82236,5,0,0:0:0:0:
|
||||
256,192,82319,1,0,0:0:0:0:
|
||||
256,192,82402,1,0,0:0:0:0:
|
||||
256,192,82568,1,8,0:0:0:0:
|
||||
256,192,82733,1,0,0:0:0:0:
|
||||
256,192,82816,1,8,0:0:0:0:
|
||||
256,192,82899,1,0,0:0:0:0:
|
||||
256,192,83065,1,0,0:0:0:0:
|
||||
256,192,83230,1,8,0:0:0:0:
|
||||
256,192,83396,1,0,0:0:0:0:
|
||||
256,192,83562,1,8,0:0:0:0:
|
||||
256,192,83645,1,8,0:0:0:0:
|
||||
256,192,83728,1,8,0:0:0:0:
|
||||
256,192,83893,1,0,0:0:0:0:
|
||||
256,192,84059,1,8,0:0:0:0:
|
||||
256,192,84142,1,0,0:0:0:0:
|
||||
256,192,84225,1,8,0:0:0:0:
|
||||
256,192,84391,1,0,0:0:0:0:
|
||||
256,192,84556,1,8,0:0:0:0:
|
||||
256,192,84722,1,8,0:0:0:0:
|
||||
256,192,84888,5,0,0:0:0:0:
|
||||
256,192,84971,1,0,0:0:0:0:
|
||||
256,192,85053,1,0,0:0:0:0:
|
||||
256,192,85219,1,8,0:0:0:0:
|
||||
256,192,85385,1,0,0:0:0:0:
|
||||
256,192,85468,1,8,0:0:0:0:
|
||||
256,192,85551,1,0,0:0:0:0:
|
||||
256,192,85716,1,0,0:0:0:0:
|
||||
256,192,85882,1,8,0:0:0:0:
|
||||
256,192,86048,1,0,0:0:0:0:
|
||||
256,192,86214,1,8,0:0:0:0:
|
||||
256,192,86296,1,8,0:0:0:0:
|
||||
256,192,86379,1,8,0:0:0:0:
|
||||
256,192,86545,1,0,0:0:0:0:
|
||||
256,192,86711,1,8,0:0:0:0:
|
||||
256,192,86794,1,0,0:0:0:0:
|
||||
256,192,86876,1,8,0:0:0:0:
|
||||
256,192,87042,1,8,0:0:0:0:
|
||||
256,192,87208,1,0,0:0:0:0:
|
||||
256,192,87374,1,8,0:0:0:0:
|
||||
256,192,87539,5,0,0:0:0:0:
|
||||
256,192,87622,1,0,0:0:0:0:
|
||||
256,192,87705,1,0,0:0:0:0:
|
||||
256,192,87871,1,8,0:0:0:0:
|
||||
256,192,88037,1,0,0:0:0:0:
|
||||
256,192,88119,1,8,0:0:0:0:
|
||||
256,192,88202,1,0,0:0:0:0:
|
||||
256,192,88368,1,0,0:0:0:0:
|
||||
256,192,88534,1,8,0:0:0:0:
|
||||
256,192,88699,1,0,0:0:0:0:
|
||||
256,192,88865,1,8,0:0:0:0:
|
||||
256,192,88948,1,8,0:0:0:0:
|
||||
256,192,89031,1,8,0:0:0:0:
|
||||
256,192,89197,1,0,0:0:0:0:
|
||||
256,192,89362,1,8,0:0:0:0:
|
||||
256,192,89445,1,0,0:0:0:0:
|
||||
256,192,89528,1,8,0:0:0:0:
|
||||
256,192,89694,1,0,0:0:0:0:
|
||||
256,192,89860,1,8,0:0:0:0:
|
||||
256,192,90025,1,8,0:0:0:0:
|
||||
256,192,90191,12,0,95427,0:0:0:0:
|
||||
File diff suppressed because it is too large
Load Diff
+137
@@ -0,0 +1,137 @@
|
||||
extern crate rosu_pp;
|
||||
|
||||
use rosu_pp::Beatmap;
|
||||
use std::fs::File;
|
||||
|
||||
struct MapResult {
|
||||
map_id: u32,
|
||||
mods: u32,
|
||||
stars: f32,
|
||||
pp: f32,
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn taiko() {
|
||||
let star_margin = 0.001;
|
||||
let pp_margin = 0.001;
|
||||
|
||||
for result in RESULTS {
|
||||
let MapResult {
|
||||
map_id,
|
||||
mods,
|
||||
stars,
|
||||
pp,
|
||||
} = result;
|
||||
|
||||
let file = match File::open(format!("./maps/{}.osu", map_id)) {
|
||||
Ok(file) => file,
|
||||
Err(why) => panic!("Could not open file {}.osu: {}", map_id, why),
|
||||
};
|
||||
|
||||
let map = match Beatmap::parse(file) {
|
||||
Ok(map) => map,
|
||||
Err(why) => panic!("Error while parsing map {}: {}", map_id, why),
|
||||
};
|
||||
|
||||
let calculator = rosu_pp::taiko::PpCalculator::new(&map).mods(*mods);
|
||||
let result = calculator.calculate();
|
||||
|
||||
assert!(
|
||||
(result.stars - stars).abs() < star_margin,
|
||||
"Stars: {} | Expected: {} => {} margin [map {} | mods {}]",
|
||||
result.stars,
|
||||
stars,
|
||||
(result.stars - stars).abs(),
|
||||
map_id,
|
||||
mods
|
||||
);
|
||||
|
||||
assert!(
|
||||
(result.pp - pp).abs() < pp_margin,
|
||||
"PP: {} | Expected: {} => {} margin [map {} | mods {}]",
|
||||
result.pp,
|
||||
pp,
|
||||
(result.pp - pp).abs(),
|
||||
map_id,
|
||||
mods
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
const RESULTS: &[MapResult] = &[
|
||||
MapResult {
|
||||
map_id: 110219,
|
||||
mods: 256,
|
||||
stars: 4.090461690284154,
|
||||
pp: 172.2934532692781,
|
||||
},
|
||||
MapResult {
|
||||
map_id: 110219,
|
||||
mods: 0,
|
||||
stars: 5.137432251440863,
|
||||
pp: 253.6918375585501,
|
||||
},
|
||||
MapResult {
|
||||
map_id: 110219,
|
||||
mods: 64,
|
||||
stars: 5.137432251440863,
|
||||
pp: 253.6918375585501,
|
||||
},
|
||||
// -----
|
||||
MapResult {
|
||||
map_id: 168450,
|
||||
mods: 256,
|
||||
stars: 3.9102755155437663,
|
||||
pp: 159.66231311695273,
|
||||
},
|
||||
MapResult {
|
||||
map_id: 168450,
|
||||
mods: 0,
|
||||
stars: 4.740171803038067,
|
||||
pp: 226.46677950133315,
|
||||
},
|
||||
MapResult {
|
||||
map_id: 168450,
|
||||
mods: 64,
|
||||
stars: 5.894260068145283,
|
||||
pp: 352.08717183038954,
|
||||
},
|
||||
// -----
|
||||
MapResult {
|
||||
map_id: 1097541,
|
||||
mods: 256,
|
||||
stars: 4.0027499635116595,
|
||||
pp: 181.18594125657705,
|
||||
},
|
||||
MapResult {
|
||||
map_id: 1097541,
|
||||
mods: 0,
|
||||
stars: 4.891409786886079,
|
||||
pp: 258.3724413997574,
|
||||
},
|
||||
MapResult {
|
||||
map_id: 1097541,
|
||||
mods: 64,
|
||||
stars: 6.587467490088248,
|
||||
pp: 433.97174733352375,
|
||||
},
|
||||
// -----
|
||||
MapResult {
|
||||
map_id: 1432878,
|
||||
mods: 256,
|
||||
stars: 3.5850143199594258,
|
||||
pp: 127.27033873288904,
|
||||
},
|
||||
MapResult {
|
||||
map_id: 1432878,
|
||||
mods: 0,
|
||||
stars: 4.416206873466799,
|
||||
pp: 183.53015221780785,
|
||||
},
|
||||
MapResult {
|
||||
map_id: 1432878,
|
||||
mods: 64,
|
||||
stars: 5.908970879987477,
|
||||
pp: 307.9875634986321,
|
||||
},
|
||||
];
|
||||
Reference in New Issue
Block a user