mirror of
https://github.com/jiojciojsioe3/a3cjroijsiojiorj.git
synced 2024-11-15 23:41:50 +08:00
e81bf9b480
- BPM and go go time change even when there are no notes after the change, seen in Ego Ego Atakushi and UFO Swingin' - Maker URL can be added to a local tja - Example: `MAKER: Creator name <https://example.com/path>` - Long list of settings scrolls more naturally with arrow keys - When media engagement is low, gamepad users will not be able to proceed on the title screen until a mouse click or a key press unpauses the audio context - Fix "Bad" note gauge judgement on easy difficulty - In debug, use hash to tell apart songs
75 lines
1.5 KiB
JavaScript
75 lines
1.5 KiB
JavaScript
class GameRules{
|
|
constructor(game){
|
|
this.difficulty = game.controller.selectedSong.difficulty
|
|
var frame = 1000 / 60
|
|
|
|
switch(this.difficulty){
|
|
case "easy":
|
|
case "normal":
|
|
this.good = 5 / 2 * frame
|
|
this.ok = 13 / 2 * frame
|
|
this.bad = 15 / 2 * frame
|
|
break
|
|
case "hard":
|
|
case "oni":
|
|
case "ura":
|
|
default:
|
|
this.good = 3 / 2 * frame
|
|
this.ok = 9 / 2 * frame
|
|
this.bad = 13 / 2 * frame
|
|
break
|
|
}
|
|
switch(this.difficulty){
|
|
case "easy":
|
|
this.gaugeClear = 30 / 50
|
|
break
|
|
case "normal":
|
|
case "hard":
|
|
this.gaugeClear = 35 / 50
|
|
break
|
|
case "oni":
|
|
case "ura":
|
|
this.gaugeClear = 40 / 50
|
|
break
|
|
default:
|
|
this.gaugeClear = 51 / 50
|
|
break
|
|
}
|
|
|
|
this.daiLeniency = 2 * frame
|
|
}
|
|
soulPoints(combo){
|
|
var good, ok, bad
|
|
switch(this.difficulty){
|
|
case "easy":
|
|
good = Math.floor(10000 / combo * 1.575)
|
|
ok = Math.floor(good * 0.75)
|
|
bad = Math.ceil(good / -2)
|
|
break
|
|
case "normal":
|
|
good = Math.floor(10000 / combo / 0.7)
|
|
ok = Math.floor(good * 0.75)
|
|
bad = Math.ceil(good / -0.75)
|
|
break
|
|
case "hard":
|
|
good = Math.floor(10000 / combo * 1.5)
|
|
ok = Math.floor(good * 0.75)
|
|
bad = Math.ceil(good / -0.8)
|
|
break
|
|
case "oni":
|
|
case "ura":
|
|
good = Math.floor(10000 / combo / 0.7)
|
|
ok = Math.floor(good * 0.5)
|
|
bad = Math.ceil(good * -1.6)
|
|
break
|
|
}
|
|
return {good: good, ok: ok, bad: bad}
|
|
}
|
|
gaugePercent(gauge){
|
|
return Math.floor(gauge / 200) / 50
|
|
}
|
|
clearReached(gauge){
|
|
return this.gaugePercent(gauge) >= this.gaugeClear
|
|
}
|
|
}
|