Compare commits

...

2 Commits

Author SHA1 Message Date
Entarno54
bb04425fb8 Fixes for remaining songs without stages 2025-06-03 12:17:11 +07:00
Entarno54
71ad1840a3 Fixed high having normal GF and removed receptor animations ( i hate ) 2025-06-02 14:00:57 +07:00
9 changed files with 691 additions and 375 deletions

View File

@ -4169,7 +4169,7 @@
"mustHitSection": true
}
],
"gfVersion": "gf",
"gfVersion": "gf-car",
"song": "High Erect",
"needsVoices": true,
"stage": "limo",

View File

@ -8681,7 +8681,7 @@
"player3": "none",
"song": "Obituary",
"needsVoices": true,
"stage": "stages",
"stage": "stage",
"validScore": true,
"bpm": 101,
"speed": 2.3

View File

@ -5788,7 +5788,7 @@
"player2": "tankman",
"player3": null,
"song": "Stress",
"stage": "tank",
"stage": "stage",
"needsVoices": true,
"validScore": true,
"bpm": 178,

View File

@ -11281,7 +11281,7 @@
"sections": 0,
"needsVoices": true,
"validScore": true,
"stage": "arenanew",
"stage": "stage",
"bpm": 245,
"speed": 3.1
}

View File

@ -44,6 +44,9 @@ local function state(songName, songDifficulty)
local unspawnedNotes = {}
local notes = {}
local unspawnedHoldNotes = {}
local holdNotes = {}
local characters = {}
local settings = {}
@ -142,7 +145,6 @@ local function state(songName, songDifficulty)
ratings[rating] = ratings[rating] + 1
characters.bf:PlayAnimation("sing"..directions[closestNote.direction])
closestNote.pressed = true
receptors[dir]:PlayAnimation(string.lower(directions[dir]).." confirm", 5, false)
notes[closestIndex] = nil
closestNote:destroy()
end
@ -211,17 +213,21 @@ local function state(songName, songDifficulty)
end
for index, note in next, unspawnedNotes do
if note.position - elapsed < 600 and note.mustPress then
note:spawn()
unspawnedNotes[index] = nil
notes[#notes+1] = note
elseif note.position - elapsed < 600 and not note.mustPress then
if note.position - elapsed < 600 then
note:spawn()
unspawnedNotes[index] = nil
notes[#notes+1] = note
end
end
for index, holdNote in next, unspawnedHoldNotes do
if holdNote.position - elapsed < 600 then
holdNote:spawn()
unspawnedHoldNotes[index] = nil
holdNotes[#notes+1] = holdNote
end
end
for index, note in next, notes do
if note.mustPress then
note.sprite.position = myTypes.Vector2(600 + (79 * (note.direction - 1)), settings.Downscroll and 430 - (note.position-elapsed) or note.position - elapsed)
@ -234,7 +240,7 @@ local function state(songName, songDifficulty)
ratings.miss = ratings.miss + 1
end
else
note.sprite.position = myTypes.Vector2(20 + 79 * (note.direction - 1), settings.Downscroll and 430 - (note.position-elapsed) or note.position - elapsed)
note.sprite.position = myTypes.Vector2(50 + 79 * (note.direction - 1), settings.Downscroll and 430 - (note.position-elapsed) or note.position - elapsed)
if note.position - elapsed < 10 then
notes[index] = nil
if section.altAnim or note.altAnim then
@ -248,13 +254,30 @@ local function state(songName, songDifficulty)
end
end
for index, receptor in next, receptors do
if receptor.ended and receptor.animation ~= "arrow"..directions[index] and receptor.animation ~= "" then
receptor:PlayAnimation("arrow"..directions[index], 25, false)
for index, hold in next, holdNotes do
if hold.mustPress then
hold.sprite.position = myTypes.Vector2(600 + (79 * (hold.direction - 1)), settings.Downscroll and 430 - (hold.position-elapsed) or hold.position - elapsed)
if hold.position - elapsed < 50 then
if love.keyboard.isDown(keyBinds[hold.direction]) then
if section.altAnim or hold.altAnim then
characters.dad:PlayAnimation("sing"..directions[hold.direction].."-alt")
else
characters.dad:PlayAnimation("sing"..directions[hold.direction])
end
hold:destroy()
holdNotes[index] = nil
elseif hold.position - elapsed < -150 then
hold:destroy()
miss:stop()
miss:play()
characters.bf:PlayAnimation("sing"..directions[hold.direction].."miss")
holdNotes[index] = nil
ratings.miss = ratings.miss + 1
end
end
end
end
zoom = myMath.lerp(zoom, 1, .05)
fps = 1000 / dt
@ -324,16 +347,30 @@ local function state(songName, songDifficulty)
characters.dad.stagePosition = myTypes.Vector2(stage.opponent[1], stage.opponent[2])
conductor.stepCrochet = conductor:calculateCrochet(chart.bpm)/4
for index, section in next, chart.notes do
for index, note in next, section.sectionNotes do
local newNote = myTypes.note(note, section.mustHitSection)
unspawnedNotes[#unspawnedNotes+1] = newNote
-- if note[3] > 0 then
-- local length = note[3] / conductor.stepCrochet
-- for i = 0, length - 1, .1 do
-- local newHold = myTypes.note({note[1] + i * conductor.stepCrochet, note[2], note[3], note[4]}, section.mustHitSection, true)
-- unspawnedHoldNotes[#unspawnedHoldNotes+1] = newHold
-- end
-- local newHold = myTypes.note({note[1] + length * conductor.stepCrochet, note[2], note[3], note[4]}, section.mustHitSection, true, true)
-- unspawnedHoldNotes[#unspawnedHoldNotes+1] = newHold
-- end
-- not yet
end
end
for i = 0, 3 do
local receptor = myTypes.Sprite("sprites/NOTE_assets.png", "sprites/NOTE_assets.json")
receptor:PlayAnimation("arrow"..directions[i+1], 25, false)
local receptor = myTypes.Rect("sprites/NOTE_assets.png", "sprites/NOTE_assets.json")
receptor:Frame("arrow"..directions[i+1], 0)
receptor.position = myTypes.Vector2(600 + (79* i), settings.Downscroll and 0 or 430)
@ -346,7 +383,7 @@ local function state(songName, songDifficulty)
local receptor = myTypes.Rect("sprites/NOTE_assets.png", "sprites/NOTE_assets.json")
receptor:Frame("arrow"..directions[i+1], 0)
receptor.position = myTypes.Vector2(20 + 79 * i, settings.Downscroll and 0 or 430)
receptor.position = myTypes.Vector2(50 + 79 * i, settings.Downscroll and 0 or 430)
receptor.ui = true -- So it doesnt move with the camera.
end

View File

@ -10,7 +10,7 @@ local sprites = {
"red"
}
function module.note(raw, mustHitSection)
function module.note(raw, mustHitSection, hold, holdEnd)
local newNote = setmetatable({
position = raw[1],
@ -19,7 +19,9 @@ function module.note(raw, mustHitSection)
direction = raw[2] <= 3 and raw[2] + 1 or raw[2] - 3,
spawned = false,
sprite = nil, -- For unspawned notes
altAnim = raw[4] == "Alt"
altAnim = raw[4] == "Alt",
hold = hold,
last = holdEnd
}, NoteClass)
return newNote
@ -30,7 +32,9 @@ function NoteClass:spawn()
self.sprite = sprite
sprite:Frame(sprites[self.direction], 0)
local spriteFrame = self.hold and (self.holdEnd and sprites[self.direction].." hold end" or sprites[self.direction].." hold piece") or sprites[self.direction]
sprite:Frame(spriteFrame, 0)
sprite.ui = true -- so it doesnt move with the camera

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 766 KiB

After

Width:  |  Height:  |  Size: 696 KiB

View File

@ -3,12 +3,13 @@ local myTypes = require("modules.types")
return {
onCreate = function(song)
local back = myTypes.Image("images/stage/stageback.png")
back.position = myTypes.Vector2(-1000, 50)
back.position = myTypes.Vector2(-800, 50)
local front = myTypes.Image("images/stage/stagefront.png")
front.position = myTypes.Vector2(-900, 1000)
local curtains = myTypes.Image("images/stage/stagecurtains.png")
curtains.position = myTypes.Vector2(-1000, 50)
curtains.position = myTypes.Vector2(-1150, 50)
curtains.modifier = 1.3
end
}