Health, healthicons, death

This commit is contained in:
entar 2025-06-05 14:13:47 +07:00
parent 3a1478fb47
commit f1752bdaf1
83 changed files with 122825 additions and 414 deletions

View File

@ -41,15 +41,15 @@
350
],
"healthicon": "bf",
"flip_x": true,
"flip_x": false,
"healthbar_colors": [
49,
176,
209
],
"camera_position": [
0,
0
700,
-300
],
"sing_duration": 4,
"scale": 1

View File

@ -1,97 +1,20 @@
{
"animations": [
{
"offsets": [
-5,
0
],
"loop": false,
"offsets": [
-15,
-54
],
"anim": "singDOWN",
"fps": 24,
"name": "BF NOTE DOWN",
"indices": []
},
{
"loop": false,
"offsets": [
7,
19
],
"anim": "singLEFTmiss",
"fps": 24,
"name": "BF NOTE LEFT MISS",
"indices": []
},
{
"loop": false,
"offsets": [
-15,
-19
],
"anim": "singDOWNmiss",
"fps": 24,
"name": "BF NOTE DOWN MISS",
"indices": []
},
{
"loop": false,
"offsets": [
-46,
27
],
"anim": "singUPmiss",
"fps": 24,
"name": "BF NOTE UP MISS",
"indices": []
},
{
"loop": false,
"offsets": [
-44,
22
],
"anim": "singRIGHTmiss",
"fps": 24,
"name": "BF NOTE RIGHT MISS",
"indices": []
},
{
"loop": false,
"offsets": [
11,
10
],
"anim": "firstDeath",
"fps": 24,
"name": "BF dies",
"indices": []
},
{
"loop": true,
"offsets": [
11,
4
],
"anim": "deathLoop",
"fps": 24,
"name": "BF Dead Loop",
"indices": []
},
{
"loop": false,
"offsets": [
11,
68
],
"anim": "deathConfirm",
"fps": 24,
"name": "BF Dead confirm",
"indices": []
"anim": "idle",
"indices": [],
"name": "BF idle dance"
},
{
"offsets": [
7,
-8
46,
1
],
"loop": false,
"fps": 24,
@ -101,8 +24,30 @@
},
{
"offsets": [
-50,
-6
-31,
-40
],
"loop": false,
"fps": 24,
"anim": "singDOWN",
"indices": [],
"name": "BF NOTE DOWN"
},
{
"offsets": [
-68,
57
],
"loop": false,
"fps": 24,
"anim": "singUP",
"indices": [],
"name": "BF NOTE UP"
},
{
"offsets": [
-67,
3
],
"loop": false,
"fps": 24,
@ -111,63 +56,151 @@
"name": "BF NOTE RIGHT"
},
{
"loop": false,
"offsets": [
-43,
28
],
"anim": "singUP",
"fps": 24,
"name": "BF NOTE UP",
"indices": []
},
{
"loop": false,
"offsets": [
-2,
6
],
"anim": "hey",
"fps": 24,
"name": "BF HEY",
"indices": []
},
{
"loop": true,
"offsets": [
-5,
1
],
"anim": "scared",
"fps": 24,
"name": "BF idle shaking",
"indices": []
},
{
"loop": false,
"offsets": [
-5,
0
],
"anim": "idle",
"fps": 24,
"name": "BF idle dance",
"indices": []
},
{
"offsets": [
-4,
7
41,
23
],
"loop": false,
"fps": 24,
"anim": "Laugh",
"anim": "singLEFTmiss",
"indices": [],
"name": "BF Laugh"
"name": "BF NOTE LEFT MISS"
},
{
"offsets": [
-26,
-8
],
"loop": false,
"fps": 24,
"anim": "singDOWNmiss",
"indices": [],
"name": "BF NOTE DOWN MISS"
},
{
"offsets": [
-55,
52
],
"loop": false,
"fps": 24,
"anim": "singUPmiss",
"indices": [],
"name": "BF NOTE UP MISS"
},
{
"offsets": [
-61,
29
],
"loop": false,
"fps": 24,
"anim": "singRIGHTmiss",
"indices": [],
"name": "BF NOTE RIGHT MISS"
},
{
"offsets": [
-12,
25
],
"loop": false,
"fps": 24,
"anim": "hey",
"indices": [],
"name": "BF HEY"
},
{
"offsets": [
-6,
26
],
"loop": false,
"fps": 24,
"anim": "hurt",
"indices": [],
"name": "BF hit"
},
{
"offsets": [
-26,
5
],
"loop": true,
"fps": 24,
"anim": "scared",
"indices": [],
"name": "BF idle shaking"
},
{
"offsets": [
-3,
11
],
"loop": false,
"fps": 24,
"anim": "firstDeath",
"indices": [],
"name": "BF dies"
},
{
"offsets": [
-3,
5
],
"loop": true,
"fps": 24,
"anim": "deathLoop",
"indices": [],
"name": "BF Dead Loop"
},
{
"offsets": [
-3,
69
],
"loop": false,
"fps": 24,
"anim": "deathConfirm",
"indices": [],
"name": "BF Dead confirm"
},
{
"offsets": [
508,
250
],
"loop": false,
"fps": 24,
"anim": "attack",
"indices": [],
"name": "boyfriend attack"
},
{
"offsets": [
-50,
-33
],
"loop": false,
"fps": 24,
"anim": "pre-attack",
"indices": [],
"name": "bf pre attack"
},
{
"offsets": [
-14,
20
],
"indices": [],
"fps": 24,
"anim": "dodge",
"loop": false,
"name": "dodge UP"
}
],
"no_antialiasing": false,
"image": "sprites/characters/BOYFRIEND",
"image": "sprites/characters/BF_ZERO_INDIE_CROSS_OG",
"position": [
0,
350
@ -180,9 +213,9 @@
209
],
"camera_position": [
-500,
40
-400,
60
],
"sing_duration": 4,
"scale": 1
}
}

View File

@ -1,221 +0,0 @@
{
"animations": [
{
"offsets": [
-5,
0
],
"loop": false,
"fps": 24,
"anim": "idle",
"indices": [],
"name": "BF idle dance"
},
{
"offsets": [
46,
1
],
"loop": false,
"fps": 24,
"anim": "singLEFT",
"indices": [],
"name": "BF NOTE LEFT0"
},
{
"offsets": [
-31,
-40
],
"loop": false,
"fps": 24,
"anim": "singDOWN",
"indices": [],
"name": "BF NOTE DOWN0"
},
{
"offsets": [
-68,
57
],
"loop": false,
"fps": 24,
"anim": "singUP",
"indices": [],
"name": "BF NOTE UP0"
},
{
"offsets": [
-67,
3
],
"loop": false,
"fps": 24,
"anim": "singRIGHT",
"indices": [],
"name": "BF NOTE RIGHT0"
},
{
"offsets": [
41,
23
],
"loop": false,
"fps": 24,
"anim": "singLEFTmiss",
"indices": [],
"name": "BF NOTE LEFT MISS"
},
{
"offsets": [
-26,
-8
],
"loop": false,
"fps": 24,
"anim": "singDOWNmiss",
"indices": [],
"name": "BF NOTE DOWN MISS"
},
{
"offsets": [
-55,
52
],
"loop": false,
"fps": 24,
"anim": "singUPmiss",
"indices": [],
"name": "BF NOTE UP MISS"
},
{
"offsets": [
-61,
29
],
"loop": false,
"fps": 24,
"anim": "singRIGHTmiss",
"indices": [],
"name": "BF NOTE RIGHT MISS"
},
{
"offsets": [
-12,
25
],
"loop": false,
"fps": 24,
"anim": "hey",
"indices": [],
"name": "BF HEY"
},
{
"offsets": [
-6,
26
],
"loop": false,
"fps": 24,
"anim": "hurt",
"indices": [],
"name": "BF hit"
},
{
"offsets": [
-26,
5
],
"loop": true,
"fps": 24,
"anim": "scared",
"indices": [],
"name": "BF idle shaking"
},
{
"offsets": [
-3,
11
],
"loop": false,
"fps": 24,
"anim": "firstDeath",
"indices": [],
"name": "BF dies"
},
{
"offsets": [
-3,
5
],
"loop": true,
"fps": 24,
"anim": "deathLoop",
"indices": [],
"name": "BF Dead Loop"
},
{
"offsets": [
-3,
69
],
"loop": false,
"fps": 24,
"anim": "deathConfirm",
"indices": [],
"name": "BF Dead confirm"
},
{
"offsets": [
508,
250
],
"loop": false,
"fps": 24,
"anim": "attack",
"indices": [],
"name": "boyfriend attack"
},
{
"offsets": [
-50,
-33
],
"loop": false,
"fps": 24,
"anim": "pre-attack",
"indices": [],
"name": "bf pre attack"
},
{
"offsets": [
-14,
20
],
"indices": [],
"fps": 24,
"anim": "dodge",
"loop": false,
"name": "dodge UP"
}
],
"no_antialiasing": false,
"image": "sprites/characters/BF_ZERO_INDIE_CROSS_OG",
"position": [
0,
350
],
"healthicon": "bf",
"flip_x": true,
"healthbar_colors": [
49,
176,
209
],
"camera_position": [
0,
0
],
"sing_duration": 4,
"scale": 1
}

View File

@ -181,10 +181,10 @@
-2,
-17
],
"fps": 24,
"fps": 2,
"anim": "scared",
"indices": [],
"name": "GF FEAR"
"name": "GF FEAR "
}
],
"no_antialiasing": false,

View File

@ -101,7 +101,7 @@
0
],
"camera_position": [
-1000,
0,
0
],
"sing_duration": 4,

BIN
charts/2hot/.DS_Store vendored Normal file

Binary file not shown.

View File

@ -0,0 +1,44 @@
function onGameOverStart()
playSound("explode", 0.8)
makeAnimatedLuaSprite('explosion', 'explosionfrom_edd', -1600, -850);
addAnimationByPrefix('explosion', 'boom', 'TordBotBlowingUp', 18, false);
setProperty('explosion.angle', -90);
setProperty('explosion.alpha', 0);
addLuaSprite('explosion', true);
scaleObject('explosion', 2.5, 2.5);
cameraShake('camGame', 0.02, 0.5);
makeLuaSprite('bgd', 'BlackFlash', -1500, -1500)
scaleObject('bgd', 3, 3.5)
setObjectOrder('bgd', getObjectOrder('gfGroup') + 4)
addLuaSprite('bgd', false)
setProperty('explosion.alpha', 1);
objectPlayAnimation('explosion', 'boom', true);
playSound('shot1', 1)
runTimer('picoded', 1.5)
end
function onTimerCompleted(tag, loops, loopsleft)
if tag == 'picoded' then
playSound('cutscene/nene_laugh', 1)
end
if tag == 'picoded2' then
doTweenAlpha('fadebgdgone', 'bgd', 0, 4, 'linear');
end
end
-- crash prevention
function onUpdate() end
function onUpdatePost() end

4585
charts/2hot/2hot-easy.json Normal file

File diff suppressed because it is too large Load Diff

6886
charts/2hot/2hot-erect.json Normal file

File diff suppressed because it is too large Load Diff

6052
charts/2hot/2hot-hard.json Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

5045
charts/2hot/2hot.json Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,97 @@
-- RANK ONLY UP TILL 20, 0 MINIMUM, CHANGE THIS TO SUGGEST HOW HARD THE SONG IS, BY MARKEDAMAN
function onCreate()
if difficulty == 0 then -- easy
rank = 4
elseif difficulty == 1 then -- normal
rank = 6
elseif difficulty == 2 then -- hard
rank = 7
elseif difficulty == 3 then -- erect
rank = 0
elseif difficulty == 4 then -- nightmare
rank = 0
end
end
function onCreatePost()
if not hideHud then
if rank > 10 then
makeLuaSprite('star', 'star2', 1070, 590)
makeAnimatedLuaSprite('starFlame', 'starFlame', 1030, 440)
addAnimationByPrefix('starFlame', 'starFlame', 'fire loop full instance', 24, true)
setProperty('starFlame.alpha', 0)
scaleObject('starFlame', 1.5, 1.5)
setObjectCamera('starFlame', 'hud')
addLuaSprite('starFlame', true)
elseif rank <= 10 then
makeLuaSprite('star', 'star1', 1070, 590)
end
scaleObject('star', 0.9, 0.9)
setObjectCamera('star', 'hud')
setObjectOrder('star', getObjectOrder('starFlame') + 1)
setProperty('star.alpha', 0)
addLuaSprite('star')
makeLuaText('difficulty', ''.. rank ..'', 2230 , 0, 620)
setTextSize('difficulty', 37)
setTextFont('difficulty', 'combo.ttf')
setProperty('difficulty.alpha', 0)
addLuaText('difficulty', false)
setObjectOrder('difficulty', getObjectOrder('star') + 1)
if downscroll then
setProperty('difficulty.y', 70)
setProperty('star.y', 40)
setProperty('starFlame.y', -5)
setProperty('starFlame.angle', 190)
end
if rank > 10 then
setTextColor('difficulty', 'ffffff')
setTextBorder('difficulty', 2, '00AEFF')
elseif rank <= 10 then
setTextColor('difficulty', '000000')
setTextBorder('difficulty', 3, 'FFFFFF')
end
runTimer('ready', 0.5) -- star fade in
runTimer('wait', 8) -- star fade out
runTimer('wait2', 7.5) -- difficulty fade out
if rank > 10 then
runTimer('pausefire', 2) -- difficulty fade in
elseif rank <=10 then
runTimer('pause', 2)
end
end
end
function onTimerCompleted(tag)
if not hideHud then
if tag == 'ready' then
doTweenAlpha('hi', 'star', 1, 0.5,'linear')
end
if tag == 'wait' then
doTweenAlpha('gone', 'star', 0, 0.5,'linear')
doTweenAlpha('fireout', 'starFlame', 0, 0.5,'linear')
end
if tag == 'wait2' then
doTweenAlpha('bye', 'difficulty', 0, 0.5,'linear')
end
if tag == 'pause' then
doTweenAlpha('hi2', 'difficulty', 1, 0.5,'linear')
end
if tag == 'pausefire' then
setProperty('difficulty.alpha', 1)
setProperty('starFlame.alpha', 1)
playSound('light', 0.7)
end
end
end

6
charts/2hot/combo.lua Normal file
View File

@ -0,0 +1,6 @@
function goodNoteHit()
if getProperty('combo') == 100 or getProperty('combo') == 200 then
characterPlayAnim('gf', 'combo100', true);
setProperty('gf.specialAnim', true);
end
end

1871
charts/2hot/events.json Normal file

File diff suppressed because it is too large Load Diff

351
charts/2hot/rainshader.lua Normal file
View File

@ -0,0 +1,351 @@
local rainSize1 = 1
local rainSize2 = 1
local rainSize3 = 1
local rainSize4 = 1
local rainSize5 = 1
local rainSize6 = 1
local rainSize7 = 1
local rainSize8 = 1
local rainSize9 = 1
local rainSize10 = 1
local rainSize11 = 1
local rainSize12 = 1
local rainSize13 = 1
local rainSize14 = 1
local rainSize15 = 1
local rainSize16 = 1
local rainSize17 = 1
local rainSize18 = 1
local rainSize19 = 1
local rainSize20 = 1
local rainDensity = 0
function onCreate()
if not lowQuality then
makeLuaSprite('rain1', 'empty', 0, -100);
makeGraphic('rain1', 1, 1, '90eeff');
setObjectCamera('rain1', 'hud');
setProperty('rain1.alpha', 0.2);
addLuaSprite('rain1', false);
setProperty('rain1.angle', 8);
makeLuaSprite('rain2', 'empty', 0, -100);
makeGraphic('rain2', 1, 1, '90eeff');
setObjectCamera('rain2', 'hud');
setProperty('rain2.alpha', 0.2);
addLuaSprite('rain2', false);
setProperty('rain2.angle', 8);
makeLuaSprite('rain3', 'empty', 0, -100);
makeGraphic('rain3', 1, 1, '90eeff');
setObjectCamera('rain3', 'hud');
setProperty('rain3.alpha', 0.2);
addLuaSprite('rain3', false);
setProperty('rain3.angle', 8);
makeLuaSprite('rain4', 'empty', 0, -100);
makeGraphic('rain4', 1, 1, '90eeff');
setObjectCamera('rain4', 'hud');
setProperty('rain4.alpha', 0.2);
addLuaSprite('rain4', false);
setProperty('rain4.angle', 8);
makeLuaSprite('rain5', 'empty', 0, -100);
makeGraphic('rain5', 1, 1, '90eeff');
setObjectCamera('rain5', 'hud');
setProperty('rain5.alpha', 0.2);
addLuaSprite('rain5', false);
setProperty('rain5.angle', 8);
makeLuaSprite('rain6', 'empty', 0, -100);
makeGraphic('rain6', 1, 1, '90eeff');
setObjectCamera('rain6', 'hud');
setProperty('rain6.alpha', 0.2);
addLuaSprite('rain6', false);
setProperty('rain6.angle', 8);
makeLuaSprite('rain7', 'empty', 0, -100);
makeGraphic('rain7', 1, 1, '90eeff');
setObjectCamera('rain7', 'hud');
setProperty('rain7.alpha', 0.2);
addLuaSprite('rain7', false);
setProperty('rain7.angle', 8);
makeLuaSprite('rain8', 'empty', 0, -100);
makeGraphic('rain8', 1, 1, '90eeff');
setObjectCamera('rain8', 'hud');
setProperty('rain8.alpha', 0.2);
addLuaSprite('rain8', false);
setProperty('rain8.angle', 8);
makeLuaSprite('rain9', 'empty', 0, -100);
makeGraphic('rain9', 1, 1, '90eeff');
setObjectCamera('rain9', 'hud');
setProperty('rain9.alpha', 0.2);
addLuaSprite('rain9', false);
setProperty('rain9.angle', 8);
makeLuaSprite('rain10', 'empty', 0, -100);
makeGraphic('rain10', 1, 1, '90eeff');
setObjectCamera('rain10', 'hud');
setProperty('rain10.alpha', 0.2);
addLuaSprite('rain10', false);
setProperty('rain10.angle', 8);
makeLuaSprite('rain11', 'empty', 0, -100);
makeGraphic('rain11', 1, 1, '90eeff');
setObjectCamera('rain11', 'hud');
setProperty('rain11.alpha', 0.2);
addLuaSprite('rain11', false);
setProperty('rain11.angle', 8);
makeLuaSprite('rain12', 'empty', 0, -100);
makeGraphic('rain12', 1, 1, '90eeff');
setObjectCamera('rain12', 'hud');
setProperty('rain12.alpha', 0.2);
addLuaSprite('rain12', false);
setProperty('rain12.angle', 8);
makeLuaSprite('rain13', 'empty', 0, -100);
makeGraphic('rain13', 1, 1, '90eeff');
setObjectCamera('rain13', 'hud');
setProperty('rain13.alpha', 0.2);
addLuaSprite('rain13', false);
setProperty('rain13.angle', 8);
makeLuaSprite('rain14', 'empty', 0, -100);
makeGraphic('rain14', 1, 1, '90eeff');
setObjectCamera('rain14', 'hud');
setProperty('rain14.alpha', 0.2);
addLuaSprite('rain14', false);
setProperty('rain14.angle', 8);
makeLuaSprite('rain15', 'empty', 0, -100);
makeGraphic('rain15', 1, 1, '90eeff');
setObjectCamera('rain15', 'hud');
setProperty('rain15.alpha', 0.2);
addLuaSprite('rain15', false);
setProperty('rain15.angle', 8);
makeLuaSprite('rain16', 'empty', 0, -100);
makeGraphic('rain16', 1, 1, '90eeff');
setObjectCamera('rain16', 'hud');
setProperty('rain16.alpha', 0.2);
addLuaSprite('rain16', false);
setProperty('rain16.angle', 8);
makeLuaSprite('rain17', 'empty', 0, -100);
makeGraphic('rain17', 1, 1, '90eeff');
setObjectCamera('rain17', 'hud');
setProperty('rain17.alpha', 0.2);
addLuaSprite('rain17', false);
setProperty('rain17.angle', 8);
makeLuaSprite('rain18', 'empty', 0, -100);
makeGraphic('rain18', 1, 1, '90eeff');
setObjectCamera('rain18', 'hud');
setProperty('rain18.alpha', 0.2);
addLuaSprite('rain18', false);
setProperty('rain18.angle', 8);
makeLuaSprite('rain19', 'empty', 0, -100);
makeGraphic('rain19', 1, 1, '90eeff');
setObjectCamera('rain19', 'hud');
setProperty('rain19.alpha', 0.2);
addLuaSprite('rain19', false);
setProperty('rain19.angle', 8);
makeLuaSprite('rain20', 'empty', 0, -100);
makeGraphic('rain20', 1, 1, '90eeff');
setObjectCamera('rain20', 'hud');
setProperty('rain20.alpha', 0.2);
addLuaSprite('rain20', false);
setProperty('rain20.angle', 8);
end
end
function onStepHit()
if not lowQuality then
rainDensity = getProperty("songPercent")
rainSize1 = getRandomInt(3, 8)
rainSize2 = getRandomInt(3, 8)
rainSize3 = getRandomInt(3, 8)
rainSize4 = getRandomInt(3, 8)
rainSize5 = getRandomInt(3, 8)
rainSize6 = getRandomInt(3, 8)
rainSize7 = getRandomInt(3, 8)
rainSize8 = getRandomInt(3, 8)
rainSize9 = getRandomInt(3, 8)
rainSize10 = getRandomInt(3, 8)
rainSize11 = getRandomInt(3, 8)
rainSize12 = getRandomInt(3, 8)
rainSize13 = getRandomInt(3, 8)
rainSize14 = getRandomInt(3, 8)
rainSize15 = getRandomInt(3, 8)
rainSize16 = getRandomInt(3, 8)
rainSize17 = getRandomInt(3, 8)
rainSize18 = getRandomInt(3, 8)
rainSize19 = getRandomInt(3, 8)
rainSize20 = getRandomInt(3, 8)
setProperty('rain1.scale.x', rainSize1);
setProperty('rain2.scale.x', rainSize2);
setProperty('rain3.scale.x', rainSize3);
setProperty('rain4.scale.x', rainSize4);
setProperty('rain5.scale.x', rainSize5);
setProperty('rain6.scale.x', rainSize6);
setProperty('rain7.scale.x', rainSize7);
setProperty('rain8.scale.x', rainSize8);
setProperty('rain9.scale.x', rainSize9);
setProperty('rain10.scale.x', rainSize10);
setProperty('rain11.scale.x', rainSize11);
setProperty('rain12.scale.x', rainSize12);
setProperty('rain13.scale.x', rainSize13);
setProperty('rain14.scale.x', rainSize14);
setProperty('rain15.scale.x', rainSize15);
setProperty('rain16.scale.x', rainSize16);
setProperty('rain17.scale.x', rainSize17);
setProperty('rain18.scale.x', rainSize18);
setProperty('rain19.scale.x', rainSize19);
setProperty('rain20.scale.x', rainSize20);
setProperty('rain1.scale.y', rainSize1*30);
setProperty('rain2.scale.y', rainSize2*30);
setProperty('rain3.scale.y', rainSize3*30);
setProperty('rain4.scale.y', rainSize4*30);
setProperty('rain5.scale.y', rainSize5*30);
setProperty('rain6.scale.y', rainSize6*30);
setProperty('rain7.scale.y', rainSize7*30);
setProperty('rain8.scale.y', rainSize8*30);
setProperty('rain9.scale.y', rainSize9*30);
setProperty('rain10.scale.y', rainSize10*30);
setProperty('rain11.scale.y', rainSize11*30);
setProperty('rain12.scale.y', rainSize12*30);
setProperty('rain13.scale.y', rainSize13*30);
setProperty('rain14.scale.y', rainSize14*30);
setProperty('rain15.scale.y', rainSize15*30);
setProperty('rain16.scale.y', rainSize16*30);
setProperty('rain17.scale.y', rainSize17*30);
setProperty('rain18.scale.y', rainSize18*30);
setProperty('rain19.scale.y', rainSize19*30);
setProperty('rain20.scale.y', rainSize20*30);
if curStep %10 == 0 and rainDensity >= 0 then
setProperty('rain1.x', getRandomInt(1, 1301)-1);
setProperty('rain1.y', -150);
doTweenX('rain1X', 'rain1', getProperty('rain1.x')-150, 0.3);
doTweenY('rain1Y', 'rain1', 900, 0.3);
end
if curStep %10 == 5 and rainDensity >= 0 then
setProperty('rain2.x', getRandomInt(1, 1301)-1);
setProperty('rain2.y', -150);
doTweenX('rain2X', 'rain2', getProperty('rain2.x')-150, 0.3);
doTweenY('rain2Y', 'rain2', 900, 0.3);
end
if curStep %10 == 3 and rainDensity >= 0 then
setProperty('rain3.x', getRandomInt(1, 1301)-1);
setProperty('rain3.y', -150);
doTweenX('rain3X', 'rain3', getProperty('rain3.x')-150, 0.3);
doTweenY('rain3Y', 'rain3', 900, 0);
end
if curStep %10 == 9 and rainDensity >= 0 then
setProperty('rain4.x', getRandomInt(1, 1301)-1);
setProperty('rain4.y', -150);
doTweenX('rain4X', 'rain4', getProperty('rain4.x')-150, 0.3);
doTweenY('rain4Y', 'rain4', 900, 0.3);
end
if curStep %10 == 7 and rainDensity >= 0 then
setProperty('rain5.x', getRandomInt(1, 1301)-1);
setProperty('rain5.y', -150);
doTweenX('rain5X', 'rain5', getProperty('rain5.x')-150, 0.3);
doTweenY('rain5Y', 'rain5', 900, 0.3);
end
if curStep %10 == 2 and rainDensity >= 0 then
setProperty('rain6.x', getRandomInt(1, 1301)-1);
setProperty('rain6.y', -150);
doTweenX('rain6X', 'rain6', getProperty('rain6.x')-150, 0.3);
doTweenY('rain6Y', 'rain6', 900, 0.3);
end
if curStep %10 == 4 and rainDensity >= 0 then
setProperty('rain7.x', getRandomInt(1, 1301)-1);
setProperty('rain7.y', -150);
doTweenX('rain7X', 'rain7', getProperty('rain7.x')-150, 0.3);
doTweenY('rain7Y', 'rain7', 900, 0.3);
end
if curStep %10 == 6 and rainDensity >= 0 then
setProperty('rain8.x', getRandomInt(1, 1301)-1);
setProperty('rain8.y', -150);
doTweenX('rain8X', 'rain8', getProperty('rain8.x')-150, 0.3);
doTweenY('rain8Y', 'rain8', 900, 0.3);
end
if curStep %10 == 8 and rainDensity >= 0 then
setProperty('rain9.x', getRandomInt(1, 1301)-1);
setProperty('rain9.y', -150);
doTweenX('rain9X', 'rain9', getProperty('rain9.x')-150, 0.3);
doTweenY('rain9Y', 'rain9', 900, 0.3);
end
if curStep %10 == 9 and rainDensity >= 0 then
setProperty('rain10.x', getRandomInt(1, 1301)-1);
setProperty('rain10.y', -150);
doTweenX('rain10X', 'rain10', getProperty('rain10.x')-150, 0.3);
doTweenY('rain10Y', 'rain10', 900, 0.3);
end
if curStep %10 == 0 and rainDensity >= 0.1 then
setProperty('rain11.x', getRandomInt(1, 1301)-1);
setProperty('rain11.y', -150);
doTweenX('rain11X', 'rain11', getProperty('rain11.x')-150, 0.3);
doTweenY('rain11Y', 'rain11', 900, 0.3);
end
if curStep %10 == 5 and rainDensity >= 0.2 then
setProperty('rain12.x', getRandomInt(1, 1301)-1);
setProperty('rain12.y', -150);
doTweenX('rain12X', 'rain12', getProperty('rain12.x')-150, 0.3);
doTweenY('rain12Y', 'rain12', 900, 0.3);
end
if curStep %10 == 3 and rainDensity >= 0.3 then
setProperty('rain13.x', getRandomInt(1, 1301)-1);
setProperty('rain13.y', -150);
doTweenX('rain13X', 'rain13', getProperty('rain13.x')-150, 0.3);
doTweenY('rain13Y', 'rain13', 900, 0.3);
end
if curStep %10 == 9 and rainDensity >= 0.4 then
setProperty('rain14.x', getRandomInt(1, 1301)-1);
setProperty('rain14.y', -150);
doTweenX('rain14X', 'rain14', getProperty('rain14.x')-150, 0.3);
doTweenY('rain14Y', 'rain14', 900, 0.3);
end
if curStep %10 == 7 and rainDensity >= 0.5 then
setProperty('rain15.x', getRandomInt(1, 1301)-1);
setProperty('rain15.y', -150);
doTweenX('rain15X', 'rain15', getProperty('rain15.x')-150, 0.3);
doTweenY('rain15Y', 'rain15', 900, 0.3);
end
if curStep %10 == 2 and rainDensity >= 0.6 then
setProperty('rain16.x', getRandomInt(1, 1301)-1);
setProperty('rain16.y', -150);
doTweenX('rain16X', 'rain16', getProperty('rain16.x')-150, 0.3);
doTweenY('rain16Y', 'rain16', 900, 0.3);
end
if curStep %10 == 4 and rainDensity >= 0.7 then
setProperty('rain17.x', getRandomInt(1, 1301)-1);
setProperty('rain17.y', -150);
doTweenX('rain17X', 'rain17', getProperty('rain17.x')-150, 0.3);
doTweenY('rain17Y', 'rain17', 900, 0.3);
end
if curStep %10 == 6 and rainDensity >= 0.8 then
setProperty('rain18.x', getRandomInt(1, 1301)-1);
setProperty('rain18.y', -150);
doTweenX('rain18X', 'rain18', getProperty('rain18.x')-150, 0.3);
doTweenY('rain18Y', 'rain18', 900, 0.3);
end
if curStep %10 == 8 and rainDensity >= 0.9 then
setProperty('rain19.x', getRandomInt(1, 1301)-1);
setProperty('rain19.y', -150);
doTweenX('rain19X', 'rain19', getProperty('rain19.x')-150, 0.3);
doTweenY('rain19Y', 'rain19', 900, 0.3);
end
if curStep %10 == 9 and rainDensity >= 1 then
setProperty('rain20.x', getRandomInt(1, 1301)-1);
setProperty('rain20.y', -150);
doTweenX('rain20X', 'rain20', getProperty('rain20.x')-150, 0.3);
doTweenY('rain20Y', 'rain20', 900, 0.3);
end
end
end

154
charts/2hot/script.lua Normal file
View File

@ -0,0 +1,154 @@
function onCreate()
precacheImage('explosionfrom_edd')
precacheSound("explode")
setPropertyFromClass('GameOverSubstate', 'characterName', 'pico-dead')
setPropertyFromClass('GameOverSubstate', 'deathSoundName', 'Shoot_1')
setPropertyFromClass('GameOverSubstate', 'loopSoundName', 'gameplay/gameover/gameOver-pico')
setPropertyFromClass('GameOverSubstate', 'endSoundName', 'gameplay/gameover/gameOverEnd-pico')
setPropertyFromClass('PauseSubState', 'songName', 'breakfast-pico/breakfast-pico')
makeLuaSprite('cutsceneCrutchBlack', 'empty', 0, 0);
makeGraphic('cutsceneCrutchBlack', 3000, 2000, '000000');
setObjectCamera('cutsceneCrutchBlack', 'other');
makeLuaSprite('shootBlack', 'empty', 0, 0);
makeGraphic('shootBlack', 3000, 2000, '000000');
setProperty('shootBlack.alpha', 0);
makeAnimatedLuaSprite('reloadEffect', 'characters/Pico_Playable', 1980, 755);
addAnimationByPrefix('reloadEffect', 'cock', 'Pico Reload', 24, false);
setProperty('reloadEffect.alpha', 0);
makeLuaSprite('reloadEffectScale', 'empty', 1, 1);
setProperty('reloadEffectScale.alpha', 0);
makeAnimatedLuaSprite('spraypaintExplosionEZ', 'spraypaintExplosionEZ', 1600, 400);
addAnimationByPrefix('spraypaintExplosionEZ', 'explosion', 'explosion round 1 short', 24, false);
setProperty('spraypaintExplosionEZ.flipX', false);
scaleObject('spraypaintExplosionEZ', 1, 1);
setScrollFactor('spraypaintExplosionEZ', 1, 1);
setProperty('spraypaintExplosionEZ.alpha', 0);
addLuaSprite('shootBlack', false);
addLuaSprite('reloadEffect', true);
addLuaSprite('spraypaintExplosionEZ', true);
end
function onUpdate()
setProperty('reloadEffect.scale.x', getProperty('reloadEffectScale.x'))
setProperty('reloadEffect.scale.y', getProperty('reloadEffectScale.x'))
end
function onSongStart()
setProperty('spraypaintExplosionEZ.alpha', 1);
setProperty('Spraycan2.alpha', 1);
end
local isGameOver = false
local darnellAnim = false
local picoAnim = false
local bullet = 0
local reload = false
--[[function onGameOver()
runTimer('gameOverStart', 91/24);
isGameOver = true
end
function onTimerCompleted(tag, loops, loopsLeft)
if tag == 'gameOverStart' and picoAnim then
runHaxeCode([[
boyfriend.playAnim('deathLoop');
]]--)
--end
--end
function opponentNoteHit(id, direction, noteType, isSustainNote)
if direction == 1 and darnellAnim then
playAnim('dad', 'lightCan', false);
setProperty('dad.specialAnim', true);
end
if direction == 2 and darnellAnim then
playAnim('dad', 'kickCan', false);
setProperty('dad.specialAnim', true);
playAnim('Spraycan1', 'start', false);
setProperty('Spraycan1.alpha', 1);
end
if direction == 3 and darnellAnim then
playAnim('dad', 'kneeCan', false);
playAnim('Spraycan1', 'start1', false);
setProperty('dad.specialAnim', true);
end
end
function goodNoteHit(id, direction, noteType, isSustainNote)
if direction == 1 and picoAnim then
reload = true
bullet = bullet +1
playAnim('boyfriend', 'cock', false);
playAnim('reloadEffect', 'cock', false);
setProperty('boyfriend.specialAnim', true);
setProperty('reloadEffectScale.x', 1)
doTweenX('reloadEffectScale', 'reloadEffectScale', 1.1, 0.3, 'linear')
setProperty('reloadEffect.alpha', 0.5);
doTweenAlpha('reloadEffect', 'reloadEffect', 0, 0.3, 'linear')
playSound('Gun_Prep', 1);
makeAnimatedLuaSprite('PicoBullet'..bullet, 'PicoBullet', 2150, 850);
addAnimationByPrefix('PicoBullet'..bullet, 'Bullet', 'Bullet', 24, false);
addAnimationByPrefix('PicoBullet'..bullet, 'Pop', 'Pop', 24, false);
playAnim('PicoBullet'..bullet, 'Pop', false);
scaleObject('PicoBullet'..bullet, 1, 1);
setScrollFactor('PicoBullet'..bullet, 1, 1);
addLuaSprite('PicoBullet'..bullet, false);
end
if direction == 0 and picoAnim and reload then
reload = false
playAnim('boyfriend', 'shoot', false);
setProperty('boyfriend.specialAnim', true);
playAnim('Spraycan1', 'shooted', false);
playAnim('Spraycan2', 'i', false);
setProperty('Spraycan1.alpha', 0);
playSound('shot'..getRandomInt(1,3), 1);
setProperty('shootBlack.alpha', 1);
doTweenAlpha('shootBlack', 'shootBlack', 0, 1, 'linear')
elseif direction == 0 and picoAnim and not reload then
health = getProperty('health')
playAnim('boyfriend', 'CanHit', false);
setProperty('boyfriend.specialAnim', true);
playAnim('Spraycan1', 'missed', false);
setProperty('Spraycan1.alpha', 0);
playAnim('spraypaintExplosionEZ', 'explosion', false);
setProperty('health', health -0.5);
playSound('Pico_Bonk', 1);
end
end
function noteMiss(id, direction, noteType, isSustainNote)
if direction == 0 and picoAnim then
reload = false
health = getProperty('health')
playAnim('boyfriend', 'CanHit', false);
setProperty('boyfriend.specialAnim', true);
playAnim('Spraycan1', 'missed', false);
setProperty('Spraycan1.alpha', 0);
playAnim('spraypaintExplosionEZ', 'explosion', false);
setProperty('health', health -0.5);
playSound('Pico_Bonk', 1);
end
end
function onStepHit()
if curStep >= 108 and curStep <= 126 or curStep >= 492 and curStep <= 510 or curStep >= 620 and curStep <= 638 or curStep >= 972 and curStep <= 990 or curStep >= 1036 and curStep <= 1054 or curStep >= 1420 and curStep <= 1438 then
darnellAnim = true
else
darnellAnim = false
end
if curStep >= 119 and curStep <= 126 or curStep >= 503 and curStep <= 510 or curStep >= 631 and curStep <= 638 or curStep >= 983 and curStep <= 990 or curStep >= 1047 and curStep <= 1054 or curStep >= 1431 and curStep <= 1438 then
picoAnim = true
else
picoAnim = false
end
if curStep == 126 or curStep == 510 or curStep == 638 or curStep == 990 or curStep == 1054 or curStep == 1438 then
doTweenX('PicoBulletTweenX'..bullet, 'PicoBullet'..bullet, 2149 +getRandomInt(1,51), 0.5, 'cubeOut')
end
end

BIN
charts/blazin/.DS_Store vendored Normal file

Binary file not shown.

View File

@ -0,0 +1,98 @@
-- RANK ONLY UP TILL 20, 0 MINIMUM, CHANGE THIS TO SUGGEST HOW HARD THE SONG IS, BY MARKEDAMAN
function onCreate()
if difficulty == 0 then -- easy
rank = 3
elseif difficulty == 1 then -- normal
rank = 5
elseif difficulty == 2 then -- hard
rank = 6
elseif difficulty == 3 then -- erect
rank = 0
elseif difficulty == 4 then -- nightmare
rank = 0
end
end
function onCreatePost()
if not hideHud then
if rank > 10 then
makeLuaSprite('star', 'star2', 1070, 590)
makeAnimatedLuaSprite('starFlame', 'starFlame', 1030, 440)
addAnimationByPrefix('starFlame', 'starFlame', 'fire loop full instance', 24, true)
setProperty('starFlame.alpha', 0)
scaleObject('starFlame', 1.5, 1.5)
setObjectCamera('starFlame', 'hud')
addLuaSprite('starFlame', true)
elseif rank <= 10 then
makeLuaSprite('star', 'star1', 1070, 590)
end
scaleObject('star', 0.9, 0.9)
setObjectCamera('star', 'hud')
setObjectOrder('star', getObjectOrder('starFlame') + 1)
setProperty('star.alpha', 0)
addLuaSprite('star')
makeLuaText('difficulty', ''.. rank ..'', 2230 , 0, 620)
setTextSize('difficulty', 37)
setTextFont('difficulty', 'combo.ttf')
setProperty('difficulty.alpha', 0)
addLuaText('difficulty', false)
setObjectOrder('difficulty', getObjectOrder('star') + 1)
if downscroll then
setProperty('difficulty.y', 70)
setProperty('star.y', 40)
setProperty('starFlame.y', -5)
setProperty('starFlame.angle', 190)
end
if rank > 10 then
setTextColor('difficulty', 'ffffff')
setTextBorder('difficulty', 2, '00AEFF')
elseif rank <= 10 then
setTextColor('difficulty', '000000')
setTextBorder('difficulty', 3, 'FFFFFF')
end
runTimer('ready', 0.5) -- star fade in
runTimer('wait', 8) -- star fade out
runTimer('wait2', 7.5) -- difficulty fade out
if rank > 10 then
runTimer('pausefire', 2) -- difficulty fade in
elseif rank <=10 then
runTimer('pause', 2)
end
end
end
function onTimerCompleted(tag)
if not hideHud then
if tag == 'ready' then
doTweenAlpha('hi', 'star', 1, 0.5,'linear')
end
if tag == 'wait' then
doTweenAlpha('gone', 'star', 0, 0.5,'linear')
doTweenAlpha('fireout', 'starFlame', 0, 0.5,'linear')
end
if tag == 'wait2' then
doTweenAlpha('bye', 'difficulty', 0, 0.5,'linear')
end
if tag == 'pause' then
doTweenAlpha('hi2', 'difficulty', 1, 0.5,'linear')
end
if tag == 'pausefire' then
setProperty('difficulty.alpha', 1)
setProperty('starFlame.alpha', 1)
playSound('light', 0.7)
end
end
end

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

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,20 @@
function onStartCountdown()
if not allowCountdown and isStoryMode and not seenCutscene then --Block the first countdown
startVideo('2hotCutscene');
seenCutscene = true
allowCountdown = true;
return Function_Stop;
end
return Function_Continue;
end
function onEndSong()
if isStoryMode and not seenCutscene1 then
startVideo('blazinCutscene')
seenCutscene1 = true
return Function_Stop
end
return Function_Continue
end

13
charts/blazin/drain.lua Normal file
View File

@ -0,0 +1,13 @@
function opponentNoteHit()
if not hideHud then
health = getProperty('health')
setProperty('health', health -0.1);
end
if hideHud then
health = getProperty('health')
if getProperty('health') > 0.02264 then
setProperty('health', health- 0.02263);
end
end
end

26
charts/blazin/events.json Normal file
View File

@ -0,0 +1,26 @@
{
"song": {
"events": [
[
8000,
[
[
"Alt Idle Animation",
"bf",
"-alt"
]
]
],
[
8083.33333333333,
[
[
"Alt Idle Animation",
"dad",
"-alt"
]
]
]
]
}
}

View File

@ -0,0 +1,351 @@
local rainSize1 = 1
local rainSize2 = 1
local rainSize3 = 1
local rainSize4 = 1
local rainSize5 = 1
local rainSize6 = 1
local rainSize7 = 1
local rainSize8 = 1
local rainSize9 = 1
local rainSize10 = 1
local rainSize11 = 1
local rainSize12 = 1
local rainSize13 = 1
local rainSize14 = 1
local rainSize15 = 1
local rainSize16 = 1
local rainSize17 = 1
local rainSize18 = 1
local rainSize19 = 1
local rainSize20 = 1
local rainDensity = 0
function onCreate()
if not lowQuality then
makeLuaSprite('rain1', 'empty', 0, -100);
makeGraphic('rain1', 1, 1, '90eeff');
setObjectCamera('rain1', 'hud');
setProperty('rain1.alpha', 0.2);
addLuaSprite('rain1', false);
setProperty('rain1.angle', 8);
makeLuaSprite('rain2', 'empty', 0, -100);
makeGraphic('rain2', 1, 1, '90eeff');
setObjectCamera('rain2', 'hud');
setProperty('rain2.alpha', 0.2);
addLuaSprite('rain2', false);
setProperty('rain2.angle', 8);
makeLuaSprite('rain3', 'empty', 0, -100);
makeGraphic('rain3', 1, 1, '90eeff');
setObjectCamera('rain3', 'hud');
setProperty('rain3.alpha', 0.2);
addLuaSprite('rain3', false);
setProperty('rain3.angle', 8);
makeLuaSprite('rain4', 'empty', 0, -100);
makeGraphic('rain4', 1, 1, '90eeff');
setObjectCamera('rain4', 'hud');
setProperty('rain4.alpha', 0.2);
addLuaSprite('rain4', false);
setProperty('rain4.angle', 8);
makeLuaSprite('rain5', 'empty', 0, -100);
makeGraphic('rain5', 1, 1, '90eeff');
setObjectCamera('rain5', 'hud');
setProperty('rain5.alpha', 0.2);
addLuaSprite('rain5', false);
setProperty('rain5.angle', 8);
makeLuaSprite('rain6', 'empty', 0, -100);
makeGraphic('rain6', 1, 1, '90eeff');
setObjectCamera('rain6', 'hud');
setProperty('rain6.alpha', 0.2);
addLuaSprite('rain6', false);
setProperty('rain6.angle', 8);
makeLuaSprite('rain7', 'empty', 0, -100);
makeGraphic('rain7', 1, 1, '90eeff');
setObjectCamera('rain7', 'hud');
setProperty('rain7.alpha', 0.2);
addLuaSprite('rain7', false);
setProperty('rain7.angle', 8);
makeLuaSprite('rain8', 'empty', 0, -100);
makeGraphic('rain8', 1, 1, '90eeff');
setObjectCamera('rain8', 'hud');
setProperty('rain8.alpha', 0.2);
addLuaSprite('rain8', false);
setProperty('rain8.angle', 8);
makeLuaSprite('rain9', 'empty', 0, -100);
makeGraphic('rain9', 1, 1, '90eeff');
setObjectCamera('rain9', 'hud');
setProperty('rain9.alpha', 0.2);
addLuaSprite('rain9', false);
setProperty('rain9.angle', 8);
makeLuaSprite('rain10', 'empty', 0, -100);
makeGraphic('rain10', 1, 1, '90eeff');
setObjectCamera('rain10', 'hud');
setProperty('rain10.alpha', 0.2);
addLuaSprite('rain10', false);
setProperty('rain10.angle', 8);
makeLuaSprite('rain11', 'empty', 0, -100);
makeGraphic('rain11', 1, 1, '90eeff');
setObjectCamera('rain11', 'hud');
setProperty('rain11.alpha', 0.2);
addLuaSprite('rain11', false);
setProperty('rain11.angle', 8);
makeLuaSprite('rain12', 'empty', 0, -100);
makeGraphic('rain12', 1, 1, '90eeff');
setObjectCamera('rain12', 'hud');
setProperty('rain12.alpha', 0.2);
addLuaSprite('rain12', false);
setProperty('rain12.angle', 8);
makeLuaSprite('rain13', 'empty', 0, -100);
makeGraphic('rain13', 1, 1, '90eeff');
setObjectCamera('rain13', 'hud');
setProperty('rain13.alpha', 0.2);
addLuaSprite('rain13', false);
setProperty('rain13.angle', 8);
makeLuaSprite('rain14', 'empty', 0, -100);
makeGraphic('rain14', 1, 1, '90eeff');
setObjectCamera('rain14', 'hud');
setProperty('rain14.alpha', 0.2);
addLuaSprite('rain14', false);
setProperty('rain14.angle', 8);
makeLuaSprite('rain15', 'empty', 0, -100);
makeGraphic('rain15', 1, 1, '90eeff');
setObjectCamera('rain15', 'hud');
setProperty('rain15.alpha', 0.2);
addLuaSprite('rain15', false);
setProperty('rain15.angle', 8);
makeLuaSprite('rain16', 'empty', 0, -100);
makeGraphic('rain16', 1, 1, '90eeff');
setObjectCamera('rain16', 'hud');
setProperty('rain16.alpha', 0.2);
addLuaSprite('rain16', false);
setProperty('rain16.angle', 8);
makeLuaSprite('rain17', 'empty', 0, -100);
makeGraphic('rain17', 1, 1, '90eeff');
setObjectCamera('rain17', 'hud');
setProperty('rain17.alpha', 0.2);
addLuaSprite('rain17', false);
setProperty('rain17.angle', 8);
makeLuaSprite('rain18', 'empty', 0, -100);
makeGraphic('rain18', 1, 1, '90eeff');
setObjectCamera('rain18', 'hud');
setProperty('rain18.alpha', 0.2);
addLuaSprite('rain18', false);
setProperty('rain18.angle', 8);
makeLuaSprite('rain19', 'empty', 0, -100);
makeGraphic('rain19', 1, 1, '90eeff');
setObjectCamera('rain19', 'hud');
setProperty('rain19.alpha', 0.2);
addLuaSprite('rain19', false);
setProperty('rain19.angle', 8);
makeLuaSprite('rain20', 'empty', 0, -100);
makeGraphic('rain20', 1, 1, '90eeff');
setObjectCamera('rain20', 'hud');
setProperty('rain20.alpha', 0.2);
addLuaSprite('rain20', false);
setProperty('rain20.angle', 8);
end
end
function onStepHit()
if not lowQuality then
rainDensity = getProperty("songPercent")
rainSize1 = getRandomInt(3, 8)
rainSize2 = getRandomInt(3, 8)
rainSize3 = getRandomInt(3, 8)
rainSize4 = getRandomInt(3, 8)
rainSize5 = getRandomInt(3, 8)
rainSize6 = getRandomInt(3, 8)
rainSize7 = getRandomInt(3, 8)
rainSize8 = getRandomInt(3, 8)
rainSize9 = getRandomInt(3, 8)
rainSize10 = getRandomInt(3, 8)
rainSize11 = getRandomInt(3, 8)
rainSize12 = getRandomInt(3, 8)
rainSize13 = getRandomInt(3, 8)
rainSize14 = getRandomInt(3, 8)
rainSize15 = getRandomInt(3, 8)
rainSize16 = getRandomInt(3, 8)
rainSize17 = getRandomInt(3, 8)
rainSize18 = getRandomInt(3, 8)
rainSize19 = getRandomInt(3, 8)
rainSize20 = getRandomInt(3, 8)
setProperty('rain1.scale.x', rainSize1);
setProperty('rain2.scale.x', rainSize2);
setProperty('rain3.scale.x', rainSize3);
setProperty('rain4.scale.x', rainSize4);
setProperty('rain5.scale.x', rainSize5);
setProperty('rain6.scale.x', rainSize6);
setProperty('rain7.scale.x', rainSize7);
setProperty('rain8.scale.x', rainSize8);
setProperty('rain9.scale.x', rainSize9);
setProperty('rain10.scale.x', rainSize10);
setProperty('rain11.scale.x', rainSize11);
setProperty('rain12.scale.x', rainSize12);
setProperty('rain13.scale.x', rainSize13);
setProperty('rain14.scale.x', rainSize14);
setProperty('rain15.scale.x', rainSize15);
setProperty('rain16.scale.x', rainSize16);
setProperty('rain17.scale.x', rainSize17);
setProperty('rain18.scale.x', rainSize18);
setProperty('rain19.scale.x', rainSize19);
setProperty('rain20.scale.x', rainSize20);
setProperty('rain1.scale.y', rainSize1*30);
setProperty('rain2.scale.y', rainSize2*30);
setProperty('rain3.scale.y', rainSize3*30);
setProperty('rain4.scale.y', rainSize4*30);
setProperty('rain5.scale.y', rainSize5*30);
setProperty('rain6.scale.y', rainSize6*30);
setProperty('rain7.scale.y', rainSize7*30);
setProperty('rain8.scale.y', rainSize8*30);
setProperty('rain9.scale.y', rainSize9*30);
setProperty('rain10.scale.y', rainSize10*30);
setProperty('rain11.scale.y', rainSize11*30);
setProperty('rain12.scale.y', rainSize12*30);
setProperty('rain13.scale.y', rainSize13*30);
setProperty('rain14.scale.y', rainSize14*30);
setProperty('rain15.scale.y', rainSize15*30);
setProperty('rain16.scale.y', rainSize16*30);
setProperty('rain17.scale.y', rainSize17*30);
setProperty('rain18.scale.y', rainSize18*30);
setProperty('rain19.scale.y', rainSize19*30);
setProperty('rain20.scale.y', rainSize20*30);
if curStep %10 == 0 and rainDensity >= 0 then
setProperty('rain1.x', getRandomInt(1, 1301)-1);
setProperty('rain1.y', -150);
doTweenX('rain1X', 'rain1', getProperty('rain1.x')-150, 0.3);
doTweenY('rain1Y', 'rain1', 900, 0.3);
end
if curStep %10 == 5 and rainDensity >= 0 then
setProperty('rain2.x', getRandomInt(1, 1301)-1);
setProperty('rain2.y', -150);
doTweenX('rain2X', 'rain2', getProperty('rain2.x')-150, 0.3);
doTweenY('rain2Y', 'rain2', 900, 0.3);
end
if curStep %10 == 3 and rainDensity >= 0 then
setProperty('rain3.x', getRandomInt(1, 1301)-1);
setProperty('rain3.y', -150);
doTweenX('rain3X', 'rain3', getProperty('rain3.x')-150, 0.3);
doTweenY('rain3Y', 'rain3', 900, 0);
end
if curStep %10 == 9 and rainDensity >= 0 then
setProperty('rain4.x', getRandomInt(1, 1301)-1);
setProperty('rain4.y', -150);
doTweenX('rain4X', 'rain4', getProperty('rain4.x')-150, 0.3);
doTweenY('rain4Y', 'rain4', 900, 0.3);
end
if curStep %10 == 7 and rainDensity >= 0 then
setProperty('rain5.x', getRandomInt(1, 1301)-1);
setProperty('rain5.y', -150);
doTweenX('rain5X', 'rain5', getProperty('rain5.x')-150, 0.3);
doTweenY('rain5Y', 'rain5', 900, 0.3);
end
if curStep %10 == 2 and rainDensity >= 0 then
setProperty('rain6.x', getRandomInt(1, 1301)-1);
setProperty('rain6.y', -150);
doTweenX('rain6X', 'rain6', getProperty('rain6.x')-150, 0.3);
doTweenY('rain6Y', 'rain6', 900, 0.3);
end
if curStep %10 == 4 and rainDensity >= 0 then
setProperty('rain7.x', getRandomInt(1, 1301)-1);
setProperty('rain7.y', -150);
doTweenX('rain7X', 'rain7', getProperty('rain7.x')-150, 0.3);
doTweenY('rain7Y', 'rain7', 900, 0.3);
end
if curStep %10 == 6 and rainDensity >= 0 then
setProperty('rain8.x', getRandomInt(1, 1301)-1);
setProperty('rain8.y', -150);
doTweenX('rain8X', 'rain8', getProperty('rain8.x')-150, 0.3);
doTweenY('rain8Y', 'rain8', 900, 0.3);
end
if curStep %10 == 8 and rainDensity >= 0 then
setProperty('rain9.x', getRandomInt(1, 1301)-1);
setProperty('rain9.y', -150);
doTweenX('rain9X', 'rain9', getProperty('rain9.x')-150, 0.3);
doTweenY('rain9Y', 'rain9', 900, 0.3);
end
if curStep %10 == 9 and rainDensity >= 0 then
setProperty('rain10.x', getRandomInt(1, 1301)-1);
setProperty('rain10.y', -150);
doTweenX('rain10X', 'rain10', getProperty('rain10.x')-150, 0.3);
doTweenY('rain10Y', 'rain10', 900, 0.3);
end
if curStep %10 == 0 and rainDensity >= 0.1 then
setProperty('rain11.x', getRandomInt(1, 1301)-1);
setProperty('rain11.y', -150);
doTweenX('rain11X', 'rain11', getProperty('rain11.x')-150, 0.3);
doTweenY('rain11Y', 'rain11', 900, 0.3);
end
if curStep %10 == 5 and rainDensity >= 0.2 then
setProperty('rain12.x', getRandomInt(1, 1301)-1);
setProperty('rain12.y', -150);
doTweenX('rain12X', 'rain12', getProperty('rain12.x')-150, 0.3);
doTweenY('rain12Y', 'rain12', 900, 0.3);
end
if curStep %10 == 3 and rainDensity >= 0.3 then
setProperty('rain13.x', getRandomInt(1, 1301)-1);
setProperty('rain13.y', -150);
doTweenX('rain13X', 'rain13', getProperty('rain13.x')-150, 0.3);
doTweenY('rain13Y', 'rain13', 900, 0.3);
end
if curStep %10 == 9 and rainDensity >= 0.4 then
setProperty('rain14.x', getRandomInt(1, 1301)-1);
setProperty('rain14.y', -150);
doTweenX('rain14X', 'rain14', getProperty('rain14.x')-150, 0.3);
doTweenY('rain14Y', 'rain14', 900, 0.3);
end
if curStep %10 == 7 and rainDensity >= 0.5 then
setProperty('rain15.x', getRandomInt(1, 1301)-1);
setProperty('rain15.y', -150);
doTweenX('rain15X', 'rain15', getProperty('rain15.x')-150, 0.3);
doTweenY('rain15Y', 'rain15', 900, 0.3);
end
if curStep %10 == 2 and rainDensity >= 0.6 then
setProperty('rain16.x', getRandomInt(1, 1301)-1);
setProperty('rain16.y', -150);
doTweenX('rain16X', 'rain16', getProperty('rain16.x')-150, 0.3);
doTweenY('rain16Y', 'rain16', 900, 0.3);
end
if curStep %10 == 4 and rainDensity >= 0.7 then
setProperty('rain17.x', getRandomInt(1, 1301)-1);
setProperty('rain17.y', -150);
doTweenX('rain17X', 'rain17', getProperty('rain17.x')-150, 0.3);
doTweenY('rain17Y', 'rain17', 900, 0.3);
end
if curStep %10 == 6 and rainDensity >= 0.8 then
setProperty('rain18.x', getRandomInt(1, 1301)-1);
setProperty('rain18.y', -150);
doTweenX('rain18X', 'rain18', getProperty('rain18.x')-150, 0.3);
doTweenY('rain18Y', 'rain18', 900, 0.3);
end
if curStep %10 == 8 and rainDensity >= 0.9 then
setProperty('rain19.x', getRandomInt(1, 1301)-1);
setProperty('rain19.y', -150);
doTweenX('rain19X', 'rain19', getProperty('rain19.x')-150, 0.3);
doTweenY('rain19Y', 'rain19', 900, 0.3);
end
if curStep %10 == 9 and rainDensity >= 1 then
setProperty('rain20.x', getRandomInt(1, 1301)-1);
setProperty('rain20.y', -150);
doTweenX('rain20X', 'rain20', getProperty('rain20.x')-150, 0.3);
doTweenY('rain20Y', 'rain20', 900, 0.3);
end
end
end

26
charts/blazin/script.lua Normal file
View File

@ -0,0 +1,26 @@
function onCreate()
setPropertyFromClass('GameOverSubstate', 'characterName', 'pico-dead')
setPropertyFromClass('GameOverSubstate', 'deathSoundName', 'gameplay/gameover/fnf_loss_sfx-pico-gutpunch')
setPropertyFromClass('GameOverSubstate', 'loopSoundName', 'gameplay/gameover/gameOver-pico')
setPropertyFromClass('GameOverSubstate', 'endSoundName', 'gameplay/gameover/gameOverEnd-pico')
setPropertyFromClass('PauseSubState', 'songName', 'breakfast-pico/breakfast-pico')
for i = 0,3 do
setPropertyFromGroup('strumLineNotes',i,'x', -830)
end
triggerEvent('Camera Follow Pos', 320, 300)
end
function onUpdate()
noteTweenX("NoteMove1", 0, -150, 0.01, cubeInOut)
noteTweenX("NoteMove2", 1, -150, 0.01, cubeInOut)
noteTweenX("NoteMove3", 2, -150, 0.01, cubeInOut)
noteTweenX("NoteMove4", 3, -150, 0.01, cubeInOut)
noteTweenX("NoteMove5", 4, 412, 0.01, cubeInOut)
noteTweenX("NoteMove6", 5, 524, 0.01, cubeInOut)
noteTweenX("NoteMove7", 6, 636, 0.01, cubeInOut)
noteTweenX("NoteMove8", 7, 748, 0.01, cubeInOut)
end

BIN
charts/darnell/.DS_Store vendored Normal file

Binary file not shown.

View File

@ -0,0 +1,97 @@
-- RANK ONLY UP TILL 20, 0 MINIMUM, CHANGE THIS TO SUGGEST HOW HARD THE SONG IS, BY MARKEDAMAN
function onCreate()
if difficulty == 0 then -- easy
rank = 4
elseif difficulty == 1 then -- normal
rank = 5
elseif difficulty == 2 then -- hard
rank = 6
elseif difficulty == 3 then -- erect
rank = 0
elseif difficulty == 4 then -- nightmare
rank = 0
end
end
function onCreatePost()
if not hideHud then
if rank > 10 then
makeLuaSprite('star', 'star2', 1070, 590)
makeAnimatedLuaSprite('starFlame', 'starFlame', 1030, 440)
addAnimationByPrefix('starFlame', 'starFlame', 'fire loop full instance', 24, true)
setProperty('starFlame.alpha', 0)
scaleObject('starFlame', 1.5, 1.5)
setObjectCamera('starFlame', 'hud')
addLuaSprite('starFlame', true)
elseif rank <= 10 then
makeLuaSprite('star', 'star1', 1070, 590)
end
scaleObject('star', 0.9, 0.9)
setObjectCamera('star', 'hud')
setObjectOrder('star', getObjectOrder('starFlame') + 1)
setProperty('star.alpha', 0)
addLuaSprite('star')
makeLuaText('difficulty', ''.. rank ..'', 2230 , 0, 620)
setTextSize('difficulty', 37)
setTextFont('difficulty', 'combo.ttf')
setProperty('difficulty.alpha', 0)
addLuaText('difficulty', false)
setObjectOrder('difficulty', getObjectOrder('star') + 1)
if downscroll then
setProperty('difficulty.y', 70)
setProperty('star.y', 40)
setProperty('starFlame.y', -5)
setProperty('starFlame.angle', 190)
end
if rank > 10 then
setTextColor('difficulty', 'ffffff')
setTextBorder('difficulty', 2, '00AEFF')
elseif rank <= 10 then
setTextColor('difficulty', '000000')
setTextBorder('difficulty', 3, 'FFFFFF')
end
runTimer('ready', 0.5) -- star fade in
runTimer('wait', 8) -- star fade out
runTimer('wait2', 7.5) -- difficulty fade out
if rank > 10 then
runTimer('pausefire', 2) -- difficulty fade in
elseif rank <=10 then
runTimer('pause', 2)
end
end
end
function onTimerCompleted(tag)
if not hideHud then
if tag == 'ready' then
doTweenAlpha('hi', 'star', 1, 0.5,'linear')
end
if tag == 'wait' then
doTweenAlpha('gone', 'star', 0, 0.5,'linear')
doTweenAlpha('fireout', 'starFlame', 0, 0.5,'linear')
end
if tag == 'wait2' then
doTweenAlpha('bye', 'difficulty', 0, 0.5,'linear')
end
if tag == 'pause' then
doTweenAlpha('hi2', 'difficulty', 1, 0.5,'linear')
end
if tag == 'pausefire' then
setProperty('difficulty.alpha', 1)
setProperty('starFlame.alpha', 1)
playSound('light', 0.7)
end
end
end

6
charts/darnell/combo.lua Normal file
View File

@ -0,0 +1,6 @@
function goodNoteHit()
if getProperty('combo') == 100 or getProperty('combo') == 200 then
characterPlayAnim('gf', 'combo100', true);
setProperty('gf.specialAnim', true);
end
end

188
charts/darnell/cutscene.lua Normal file
View File

@ -0,0 +1,188 @@
local cutscene = true
local neneIdle = true
local video = true
local cutscene1 = true
function onCreate()
setPropertyFromClass('GameOverSubstate', 'characterName', 'pico-dead')
setPropertyFromClass('GameOverSubstate', 'deathSoundName', 'fnf_loss_sfx-pico')
setPropertyFromClass('GameOverSubstate', 'loopSoundName', 'gameplay/gameover/gameOver-pico')
setPropertyFromClass('GameOverSubstate', 'endSoundName', 'gameplay/gameover/gameOverEnd-pico')
setPropertyFromClass('PauseSubState', 'songName', 'breakfast-pico/breakfast-pico')
makeAnimatedLuaSprite('PicoBullet', 'PicoBullet', 2100, 850);
addAnimationByPrefix('PicoBullet', 'Pop', 'Pop', 24, false);
setProperty('PicoBullet.flipX', false);
scaleObject('PicoBullet', 1, 1);
setScrollFactor('PicoBullet', 1, 1);
setProperty('PicoBullet.alpha', 1);
makeAnimatedLuaSprite('spraypaintExplosionEZ', 'spraypaintExplosionEZ', 1000, 150);
addAnimationByPrefix('spraypaintExplosionEZ', 'explosion', 'explosion round 1 short', 24, false);
setProperty('spraypaintExplosionEZ.flipX', false);
scaleObject('spraypaintExplosionEZ', 1, 1);
setScrollFactor('spraypaintExplosionEZ', 1, 1);
setProperty('spraypaintExplosionEZ.alpha', 0);
addLuaSprite('spraypaintExplosionEZ', true);
makeLuaSprite('cutsceneShootBlack', 'empty', 0, 0);
makeGraphic('cutsceneShootBlack', 3000, 2000, '000000');
setProperty('cutsceneShootBlack.alpha', 0);
addLuaSprite('cutsceneShootBlack', false);
makeLuaSprite('cutsceneOpenBlack', 'empty', 0, 0);
makeGraphic('cutsceneOpenBlack', 1280, 720, '000000');
setObjectCamera('cutsceneOpenBlack', 'other');
setProperty('cutsceneOpenBlack.alpha', 1);
makeLuaText('cutText', '[SPACE] to Start', 300, 500, 700)
setTextSize('cutText', 17);
setTextFont('cutText', 'vcr2.ttf')
addLuaText('cutText')
if isStoryMode then
setProperty('skipText.visible', false)
end
if not isStoryMode then
setProperty('cutText.visible', false)
end
if cutscene and isStoryMode and not seenCutscene then
addLuaSprite('cutsceneOpenBlack', true);
else
triggerEvent("Change Character", 'bf', 'pico-playable')
end
end
function onUpdate()
if getPropertyFromClass('flixel.FlxG', 'keys.justPressed.SPACE') and isStoryMode and cutscene1 or getPropertyFromClass('flixel.FlxG', 'keys.justPressed.ENTER') and cutscene1 and isStoryMode then
runTimer('videoWait', 2);
setProperty('cutText.visible', false)
cutscene1 = false
return Function_Continue;
end
end
function onStartCountdown()
if isStoryMode then
if cutscene and not seenCutscene then
doTweenAlpha('GUItween', 'camHUD', 0, 0.1, 'linear');
triggerEvent('Camera Follow Pos', 1500, 900)
if video then
startVideo('darnellCutscene');
runTimer('video', 87); --86
video = false
end
return Function_Stop;
end
if not cutscene then
doTweenAlpha('GUItween', 'camHUD', 1, 0.5, 'linear');
playAnim('boyfriend', 'return', false);
runHaxeCode([[
var cameraTwn:FlxTween;
cameraTwn = FlxTween.tween(FlxG.camera, {zoom: 0.77}, 2, {ease: FlxEase.sineInOut, onComplete:
function (twn:FlxTween) {
cameraTwn = null;
}
});
]])
return Function_Continue;
end
end
end
function onTimerCompleted(tag, loops, loopsLeft)
if tag == 'video' and cutscene then
triggerEvent('Camera Follow Pos', 1500, 900)
runTimer('videoWait', 2);
end
if tag == 'videoWait' and cutscene then
playMusic('darnellCanCutscene/darnellCanCutscene', 1, false)
doTweenAlpha('GUItween', 'camHUD', 0, 0.1, 'linear');
triggerEvent('Camera Follow Pos', 1500, 900)
runTimer('startSong', 9.2);
runTimer('darnellAnim1', 4.2);
runTimer('cameraTween', 1);
runTimer('neneIdle1', 0.6);
playAnim('gf', 'danceRight', false);
playAnim('boyfriend', 'pissed', false);
doTweenAlpha('cutsceneOpenBlack', 'cutsceneOpenBlack', 0, 1, 'linear')
runHaxeCode([[
FlxG.camera.zoom = 0.7
]])
end
if tag == 'cameraTween' and cutscene and isStoryMode then
triggerEvent('Camera Follow Pos', 1500, 900)
runHaxeCode([[
var cameraTwn:FlxTween;
cameraTwn = FlxTween.tween(FlxG.camera, {zoom: 0.7}, 3, {ease: FlxEase.sineInOut, onComplete:
function (twn:FlxTween) {
cameraTwn = null;
}
});
]])
end
if tag == 'neneIdle1' and cutscene and neneIdle == true then
playAnim('gf', 'danceLeft', false);
runTimer('neneIdle2', 0.6);
end
if tag == 'neneIdle2' and cutscene and neneIdle == true then
playAnim('gf', 'danceRight', false);
runTimer('neneIdle1', 0.6);
end
if tag == 'darnellAnim1' and cutscene then
playAnim('dad', 'lightCan', false);
playSound('Darnell_Lighter', 1)
runTimer('picoAnim1', 1);
end
if tag == 'picoAnim1' and cutscene then
triggerEvent('Camera Follow Pos', 1700, 900)
setProperty('cutText.visible', false)
playAnim('boyfriend', 'cock', false);
playSound('Gun_Prep', 1)
addLuaSprite('PicoBullet', true);
runTimer('darnellAnim2', 0.3);
end
if tag == 'darnellAnim2' and cutscene then
playAnim('dad', 'kickCan', false);
playSound('Kick_Can_UP', 1)
playAnim('cutsceneSpraycan', 'i', false);
setProperty('cutsceneSpraycan.alpha', 1);
runTimer('darnellAnim3', 0.3);
end
if tag == 'darnellAnim3' and cutscene then
playAnim('dad', 'kneeCan', false);
playSound('Kick_Can_FORWARD', 1)
runTimer('picoAnim2', 0.3);
end
if tag == 'picoAnim2' and cutscene then
triggerEvent('Camera Follow Pos', 1500, 900)
setProperty('spraypaintExplosionEZ.alpha', 1);
playAnim('spraypaintExplosionEZ', 'explosion', true);
playAnim('boyfriend', 'shoot');
setProperty('cutsceneShootBlack.alpha', 1);
doTweenAlpha('cutsceneShootBlack', 'cutsceneShootBlack', 0, 1, 'linear')
playAnim('boyfriend', 'return', false);
playSound('shot'..getRandomInt(1, 3), 1)
runTimer('cutsceneLaugh', 0.5);
runTimer('picoReturn', (1/24)*139);
end
if tag == 'cutsceneLaugh' and cutscene then
neneIdle = false
playAnim('dad', 'laughCutscene', false);
playAnim('gf', 'laughCutscene', false);
playSound('cutscene/darnell_laugh', 1)
playSound('cutscene/nene_laugh', 1)
end
if tag == 'startSong' and cutscene then
cutscene = false
doTweenAlpha('GUItween', 'camHUD', 1, 0.5, 'linear');
setProperty('skipText.visible', true)
startCountdown()
end
if tag == 'picoReturn' then
triggerEvent("Change Character", 'bf', 'pico-playable')
doTweenAlpha('GUItween', 'camHUD', 1, 0.5, 'linear');
end
end

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

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

616
charts/darnell/events.json Normal file
View File

@ -0,0 +1,616 @@
{
"song": {
"events": [
[
0,
[
[
"Camera Follow Pos",
"",
""
]
]
],
[
3000,
[
[
"Change Character",
"bf",
"pico-playable"
]
]
],
[
36387.0967741936,
[
[
"Play Animation",
"laugh",
"dad"
]
]
],
[
36580.6451612903,
[
[
"Play Animation",
"laugh",
"dad"
]
]
],
[
36774.1935483871,
[
[
"Play Animation",
"laugh",
"dad"
]
]
],
[
36967.7419354839,
[
[
"Play Animation",
"laugh",
"dad"
]
]
],
[
48774.1935483871,
[
[
"Play Animation",
"laugh",
"dad"
]
]
],
[
48967.7419354839,
[
[
"Play Animation",
"laugh",
"dad"
]
]
],
[
49161.2903225807,
[
[
"Play Animation",
"laugh",
"dad"
]
]
],
[
49354.8387096774,
[
[
"Play Animation",
"laugh",
"dad"
]
]
],
[
61935.4838709678,
[
[
"Add Camera Zoom",
"",
"0.04"
]
]
],
[
62322.5806451613,
[
[
"Add Camera Zoom",
"",
"0.04"
]
]
],
[
62903.2258064517,
[
[
"Add Camera Zoom",
"",
"0.04"
]
]
],
[
63096.7741935484,
[
[
"Add Camera Zoom",
"",
"0.04"
]
]
],
[
63870.9677419355,
[
[
"Add Camera Zoom",
"",
"0.04"
]
]
],
[
64451.6129032259,
[
[
"Add Camera Zoom",
"",
"0.04"
]
]
],
[
64838.7096774194,
[
[
"Add Camera Zoom",
"",
"0.04"
]
]
],
[
64935.4838709678,
[
[
"Add Camera Zoom",
"",
"0.04"
]
]
],
[
65419.3548387097,
[
[
"Add Camera Zoom",
"",
"0.04"
]
]
],
[
66000.0000000001,
[
[
"Add Camera Zoom",
"",
"0.04"
]
]
],
[
66193.5483870968,
[
[
"Add Camera Zoom",
"",
"0.04"
]
]
],
[
66967.7419354839,
[
[
"Add Camera Zoom",
"",
"0.04"
]
]
],
[
67354.8387096775,
[
[
"Add Camera Zoom",
"",
"0.04"
]
]
],
[
67548.3870967743,
[
[
"Add Camera Zoom",
"",
"0.04"
]
]
],
[
68129.0322580646,
[
[
"Add Camera Zoom",
"",
"0.04"
]
]
],
[
68903.2258064517,
[
[
"Add Camera Zoom",
"",
"0.04"
]
]
],
[
69290.3225806452,
[
[
"Add Camera Zoom",
"",
"0.04"
]
]
],
[
70064.5161290323,
[
[
"Add Camera Zoom",
"",
"0.04"
]
]
],
[
70451.6129032259,
[
[
"Add Camera Zoom",
"",
"0.04"
]
]
],
[
70645.1612903226,
[
[
"Add Camera Zoom",
"",
"0.04"
]
]
],
[
71032.2580645162,
[
[
"Add Camera Zoom",
"",
"0.04"
]
]
],
[
71225.806451613,
[
[
"Add Camera Zoom",
"",
"0.04"
]
]
],
[
72000.0000000001,
[
[
"Add Camera Zoom",
"",
"0.04"
]
]
],
[
72387.0967741936,
[
[
"Add Camera Zoom",
"",
"0.04"
]
]
],
[
73161.2903225807,
[
[
"Add Camera Zoom",
"",
"0.04"
]
]
],
[
74322.5806451614,
[
[
"Add Camera Zoom",
"",
"0.04"
]
]
],
[
85935.4838709678,
[
[
"Play Animation",
"laugh",
"dad"
]
]
],
[
86129.0322580646,
[
[
"Play Animation",
"laugh",
"dad"
]
]
],
[
86322.5806451614,
[
[
"Play Animation",
"laugh",
"dad"
]
]
],
[
86516.1290322582,
[
[
"Play Animation",
"laugh",
"dad"
]
]
],
[
98322.5806451614,
[
[
"Play Animation",
"laugh",
"dad"
]
]
],
[
98516.1290322582,
[
[
"Play Animation",
"laugh",
"dad"
]
]
],
[
98709.677419355,
[
[
"Play Animation",
"laugh",
"dad"
]
]
],
[
98903.2258064518,
[
[
"Play Animation",
"laugh",
"dad"
]
]
],
[
111483.870967742,
[
[
"Add Camera Zoom",
"",
"0.04"
]
]
],
[
112645.161290323,
[
[
"Add Camera Zoom",
"",
"0.04"
]
]
],
[
113419.35483871,
[
[
"Add Camera Zoom",
"",
"0.04"
]
]
],
[
114000,
[
[
"Add Camera Zoom",
"",
"0.04"
]
]
],
[
114387.096774194,
[
[
"Add Camera Zoom",
"",
"0.04"
]
]
],
[
114580.64516129,
[
[
"Add Camera Zoom",
"",
"0.04"
]
]
],
[
115741.935483871,
[
[
"Add Camera Zoom",
"",
"0.04"
]
]
],
[
116516.129032258,
[
[
"Add Camera Zoom",
"",
"0.04"
]
]
],
[
117096.774193549,
[
[
"Add Camera Zoom",
"",
"0.04"
]
]
],
[
117677.419354839,
[
[
"Add Camera Zoom",
"",
"0.04"
]
]
],
[
118838.70967742,
[
[
"Add Camera Zoom",
"",
"0.04"
]
]
],
[
119612.903225807,
[
[
"Add Camera Zoom",
"",
"0.04"
]
]
],
[
120193.548387097,
[
[
"Add Camera Zoom",
"",
"0.04"
]
]
],
[
120774.193548387,
[
[
"Add Camera Zoom",
"",
"0.04"
]
]
],
[
121935.483870968,
[
[
"Add Camera Zoom",
"",
"0.04"
]
]
],
[
122709.677419355,
[
[
"Add Camera Zoom",
"",
"0.04"
]
]
],
[
123870.967741936,
[
[
"Add Camera Zoom",
"",
"0.04"
]
]
]
]
}
}

View File

@ -0,0 +1,351 @@
local rainSize1 = 1
local rainSize2 = 1
local rainSize3 = 1
local rainSize4 = 1
local rainSize5 = 1
local rainSize6 = 1
local rainSize7 = 1
local rainSize8 = 1
local rainSize9 = 1
local rainSize10 = 1
local rainSize11 = 1
local rainSize12 = 1
local rainSize13 = 1
local rainSize14 = 1
local rainSize15 = 1
local rainSize16 = 1
local rainSize17 = 1
local rainSize18 = 1
local rainSize19 = 1
local rainSize20 = 1
local rainDensity = 0
function onCreate()
if not lowQuality then
makeLuaSprite('rain1', 'empty', 0, -100);
makeGraphic('rain1', 1, 1, '90eeff');
setObjectCamera('rain1', 'hud');
setProperty('rain1.alpha', 0.2);
addLuaSprite('rain1', false);
setProperty('rain1.angle', 8);
makeLuaSprite('rain2', 'empty', 0, -100);
makeGraphic('rain2', 1, 1, '90eeff');
setObjectCamera('rain2', 'hud');
setProperty('rain2.alpha', 0.2);
addLuaSprite('rain2', false);
setProperty('rain2.angle', 8);
makeLuaSprite('rain3', 'empty', 0, -100);
makeGraphic('rain3', 1, 1, '90eeff');
setObjectCamera('rain3', 'hud');
setProperty('rain3.alpha', 0.2);
addLuaSprite('rain3', false);
setProperty('rain3.angle', 8);
makeLuaSprite('rain4', 'empty', 0, -100);
makeGraphic('rain4', 1, 1, '90eeff');
setObjectCamera('rain4', 'hud');
setProperty('rain4.alpha', 0.2);
addLuaSprite('rain4', false);
setProperty('rain4.angle', 8);
makeLuaSprite('rain5', 'empty', 0, -100);
makeGraphic('rain5', 1, 1, '90eeff');
setObjectCamera('rain5', 'hud');
setProperty('rain5.alpha', 0.2);
addLuaSprite('rain5', false);
setProperty('rain5.angle', 8);
makeLuaSprite('rain6', 'empty', 0, -100);
makeGraphic('rain6', 1, 1, '90eeff');
setObjectCamera('rain6', 'hud');
setProperty('rain6.alpha', 0.2);
addLuaSprite('rain6', false);
setProperty('rain6.angle', 8);
makeLuaSprite('rain7', 'empty', 0, -100);
makeGraphic('rain7', 1, 1, '90eeff');
setObjectCamera('rain7', 'hud');
setProperty('rain7.alpha', 0.2);
addLuaSprite('rain7', false);
setProperty('rain7.angle', 8);
makeLuaSprite('rain8', 'empty', 0, -100);
makeGraphic('rain8', 1, 1, '90eeff');
setObjectCamera('rain8', 'hud');
setProperty('rain8.alpha', 0.2);
addLuaSprite('rain8', false);
setProperty('rain8.angle', 8);
makeLuaSprite('rain9', 'empty', 0, -100);
makeGraphic('rain9', 1, 1, '90eeff');
setObjectCamera('rain9', 'hud');
setProperty('rain9.alpha', 0.2);
addLuaSprite('rain9', false);
setProperty('rain9.angle', 8);
makeLuaSprite('rain10', 'empty', 0, -100);
makeGraphic('rain10', 1, 1, '90eeff');
setObjectCamera('rain10', 'hud');
setProperty('rain10.alpha', 0.2);
addLuaSprite('rain10', false);
setProperty('rain10.angle', 8);
makeLuaSprite('rain11', 'empty', 0, -100);
makeGraphic('rain11', 1, 1, '90eeff');
setObjectCamera('rain11', 'hud');
setProperty('rain11.alpha', 0.2);
addLuaSprite('rain11', false);
setProperty('rain11.angle', 8);
makeLuaSprite('rain12', 'empty', 0, -100);
makeGraphic('rain12', 1, 1, '90eeff');
setObjectCamera('rain12', 'hud');
setProperty('rain12.alpha', 0.2);
addLuaSprite('rain12', false);
setProperty('rain12.angle', 8);
makeLuaSprite('rain13', 'empty', 0, -100);
makeGraphic('rain13', 1, 1, '90eeff');
setObjectCamera('rain13', 'hud');
setProperty('rain13.alpha', 0.2);
addLuaSprite('rain13', false);
setProperty('rain13.angle', 8);
makeLuaSprite('rain14', 'empty', 0, -100);
makeGraphic('rain14', 1, 1, '90eeff');
setObjectCamera('rain14', 'hud');
setProperty('rain14.alpha', 0.2);
addLuaSprite('rain14', false);
setProperty('rain14.angle', 8);
makeLuaSprite('rain15', 'empty', 0, -100);
makeGraphic('rain15', 1, 1, '90eeff');
setObjectCamera('rain15', 'hud');
setProperty('rain15.alpha', 0.2);
addLuaSprite('rain15', false);
setProperty('rain15.angle', 8);
makeLuaSprite('rain16', 'empty', 0, -100);
makeGraphic('rain16', 1, 1, '90eeff');
setObjectCamera('rain16', 'hud');
setProperty('rain16.alpha', 0.2);
addLuaSprite('rain16', false);
setProperty('rain16.angle', 8);
makeLuaSprite('rain17', 'empty', 0, -100);
makeGraphic('rain17', 1, 1, '90eeff');
setObjectCamera('rain17', 'hud');
setProperty('rain17.alpha', 0.2);
addLuaSprite('rain17', false);
setProperty('rain17.angle', 8);
makeLuaSprite('rain18', 'empty', 0, -100);
makeGraphic('rain18', 1, 1, '90eeff');
setObjectCamera('rain18', 'hud');
setProperty('rain18.alpha', 0.2);
addLuaSprite('rain18', false);
setProperty('rain18.angle', 8);
makeLuaSprite('rain19', 'empty', 0, -100);
makeGraphic('rain19', 1, 1, '90eeff');
setObjectCamera('rain19', 'hud');
setProperty('rain19.alpha', 0.2);
addLuaSprite('rain19', false);
setProperty('rain19.angle', 8);
makeLuaSprite('rain20', 'empty', 0, -100);
makeGraphic('rain20', 1, 1, '90eeff');
setObjectCamera('rain20', 'hud');
setProperty('rain20.alpha', 0.2);
addLuaSprite('rain20', false);
setProperty('rain20.angle', 8);
end
end
function onStepHit()
if not lowQuality then
rainDensity = getProperty("songPercent")
rainSize1 = getRandomInt(3, 8)
rainSize2 = getRandomInt(3, 8)
rainSize3 = getRandomInt(3, 8)
rainSize4 = getRandomInt(3, 8)
rainSize5 = getRandomInt(3, 8)
rainSize6 = getRandomInt(3, 8)
rainSize7 = getRandomInt(3, 8)
rainSize8 = getRandomInt(3, 8)
rainSize9 = getRandomInt(3, 8)
rainSize10 = getRandomInt(3, 8)
rainSize11 = getRandomInt(3, 8)
rainSize12 = getRandomInt(3, 8)
rainSize13 = getRandomInt(3, 8)
rainSize14 = getRandomInt(3, 8)
rainSize15 = getRandomInt(3, 8)
rainSize16 = getRandomInt(3, 8)
rainSize17 = getRandomInt(3, 8)
rainSize18 = getRandomInt(3, 8)
rainSize19 = getRandomInt(3, 8)
rainSize20 = getRandomInt(3, 8)
setProperty('rain1.scale.x', rainSize1);
setProperty('rain2.scale.x', rainSize2);
setProperty('rain3.scale.x', rainSize3);
setProperty('rain4.scale.x', rainSize4);
setProperty('rain5.scale.x', rainSize5);
setProperty('rain6.scale.x', rainSize6);
setProperty('rain7.scale.x', rainSize7);
setProperty('rain8.scale.x', rainSize8);
setProperty('rain9.scale.x', rainSize9);
setProperty('rain10.scale.x', rainSize10);
setProperty('rain11.scale.x', rainSize11);
setProperty('rain12.scale.x', rainSize12);
setProperty('rain13.scale.x', rainSize13);
setProperty('rain14.scale.x', rainSize14);
setProperty('rain15.scale.x', rainSize15);
setProperty('rain16.scale.x', rainSize16);
setProperty('rain17.scale.x', rainSize17);
setProperty('rain18.scale.x', rainSize18);
setProperty('rain19.scale.x', rainSize19);
setProperty('rain20.scale.x', rainSize20);
setProperty('rain1.scale.y', rainSize1*30);
setProperty('rain2.scale.y', rainSize2*30);
setProperty('rain3.scale.y', rainSize3*30);
setProperty('rain4.scale.y', rainSize4*30);
setProperty('rain5.scale.y', rainSize5*30);
setProperty('rain6.scale.y', rainSize6*30);
setProperty('rain7.scale.y', rainSize7*30);
setProperty('rain8.scale.y', rainSize8*30);
setProperty('rain9.scale.y', rainSize9*30);
setProperty('rain10.scale.y', rainSize10*30);
setProperty('rain11.scale.y', rainSize11*30);
setProperty('rain12.scale.y', rainSize12*30);
setProperty('rain13.scale.y', rainSize13*30);
setProperty('rain14.scale.y', rainSize14*30);
setProperty('rain15.scale.y', rainSize15*30);
setProperty('rain16.scale.y', rainSize16*30);
setProperty('rain17.scale.y', rainSize17*30);
setProperty('rain18.scale.y', rainSize18*30);
setProperty('rain19.scale.y', rainSize19*30);
setProperty('rain20.scale.y', rainSize20*30);
if curStep %10 == 0 and rainDensity >= 0 then
setProperty('rain1.x', getRandomInt(1, 1301)-1);
setProperty('rain1.y', -150);
doTweenX('rain1X', 'rain1', getProperty('rain1.x')-150, 0.3);
doTweenY('rain1Y', 'rain1', 900, 0.3);
end
if curStep %10 == 5 and rainDensity >= 0 then
setProperty('rain2.x', getRandomInt(1, 1301)-1);
setProperty('rain2.y', -150);
doTweenX('rain2X', 'rain2', getProperty('rain2.x')-150, 0.3);
doTweenY('rain2Y', 'rain2', 900, 0.3);
end
if curStep %10 == 3 and rainDensity >= 0 then
setProperty('rain3.x', getRandomInt(1, 1301)-1);
setProperty('rain3.y', -150);
doTweenX('rain3X', 'rain3', getProperty('rain3.x')-150, 0.3);
doTweenY('rain3Y', 'rain3', 900, 0);
end
if curStep %10 == 9 and rainDensity >= 0 then
setProperty('rain4.x', getRandomInt(1, 1301)-1);
setProperty('rain4.y', -150);
doTweenX('rain4X', 'rain4', getProperty('rain4.x')-150, 0.3);
doTweenY('rain4Y', 'rain4', 900, 0.3);
end
if curStep %10 == 7 and rainDensity >= 0 then
setProperty('rain5.x', getRandomInt(1, 1301)-1);
setProperty('rain5.y', -150);
doTweenX('rain5X', 'rain5', getProperty('rain5.x')-150, 0.3);
doTweenY('rain5Y', 'rain5', 900, 0.3);
end
if curStep %10 == 2 and rainDensity >= 0 then
setProperty('rain6.x', getRandomInt(1, 1301)-1);
setProperty('rain6.y', -150);
doTweenX('rain6X', 'rain6', getProperty('rain6.x')-150, 0.3);
doTweenY('rain6Y', 'rain6', 900, 0.3);
end
if curStep %10 == 4 and rainDensity >= 0 then
setProperty('rain7.x', getRandomInt(1, 1301)-1);
setProperty('rain7.y', -150);
doTweenX('rain7X', 'rain7', getProperty('rain7.x')-150, 0.3);
doTweenY('rain7Y', 'rain7', 900, 0.3);
end
if curStep %10 == 6 and rainDensity >= 0 then
setProperty('rain8.x', getRandomInt(1, 1301)-1);
setProperty('rain8.y', -150);
doTweenX('rain8X', 'rain8', getProperty('rain8.x')-150, 0.3);
doTweenY('rain8Y', 'rain8', 900, 0.3);
end
if curStep %10 == 8 and rainDensity >= 0 then
setProperty('rain9.x', getRandomInt(1, 1301)-1);
setProperty('rain9.y', -150);
doTweenX('rain9X', 'rain9', getProperty('rain9.x')-150, 0.3);
doTweenY('rain9Y', 'rain9', 900, 0.3);
end
if curStep %10 == 9 and rainDensity >= 0 then
setProperty('rain10.x', getRandomInt(1, 1301)-1);
setProperty('rain10.y', -150);
doTweenX('rain10X', 'rain10', getProperty('rain10.x')-150, 0.3);
doTweenY('rain10Y', 'rain10', 900, 0.3);
end
if curStep %10 == 0 and rainDensity >= 0.1 then
setProperty('rain11.x', getRandomInt(1, 1301)-1);
setProperty('rain11.y', -150);
doTweenX('rain11X', 'rain11', getProperty('rain11.x')-150, 0.3);
doTweenY('rain11Y', 'rain11', 900, 0.3);
end
if curStep %10 == 5 and rainDensity >= 0.2 then
setProperty('rain12.x', getRandomInt(1, 1301)-1);
setProperty('rain12.y', -150);
doTweenX('rain12X', 'rain12', getProperty('rain12.x')-150, 0.3);
doTweenY('rain12Y', 'rain12', 900, 0.3);
end
if curStep %10 == 3 and rainDensity >= 0.3 then
setProperty('rain13.x', getRandomInt(1, 1301)-1);
setProperty('rain13.y', -150);
doTweenX('rain13X', 'rain13', getProperty('rain13.x')-150, 0.3);
doTweenY('rain13Y', 'rain13', 900, 0.3);
end
if curStep %10 == 9 and rainDensity >= 0.4 then
setProperty('rain14.x', getRandomInt(1, 1301)-1);
setProperty('rain14.y', -150);
doTweenX('rain14X', 'rain14', getProperty('rain14.x')-150, 0.3);
doTweenY('rain14Y', 'rain14', 900, 0.3);
end
if curStep %10 == 7 and rainDensity >= 0.5 then
setProperty('rain15.x', getRandomInt(1, 1301)-1);
setProperty('rain15.y', -150);
doTweenX('rain15X', 'rain15', getProperty('rain15.x')-150, 0.3);
doTweenY('rain15Y', 'rain15', 900, 0.3);
end
if curStep %10 == 2 and rainDensity >= 0.6 then
setProperty('rain16.x', getRandomInt(1, 1301)-1);
setProperty('rain16.y', -150);
doTweenX('rain16X', 'rain16', getProperty('rain16.x')-150, 0.3);
doTweenY('rain16Y', 'rain16', 900, 0.3);
end
if curStep %10 == 4 and rainDensity >= 0.7 then
setProperty('rain17.x', getRandomInt(1, 1301)-1);
setProperty('rain17.y', -150);
doTweenX('rain17X', 'rain17', getProperty('rain17.x')-150, 0.3);
doTweenY('rain17Y', 'rain17', 900, 0.3);
end
if curStep %10 == 6 and rainDensity >= 0.8 then
setProperty('rain18.x', getRandomInt(1, 1301)-1);
setProperty('rain18.y', -150);
doTweenX('rain18X', 'rain18', getProperty('rain18.x')-150, 0.3);
doTweenY('rain18Y', 'rain18', 900, 0.3);
end
if curStep %10 == 8 and rainDensity >= 0.9 then
setProperty('rain19.x', getRandomInt(1, 1301)-1);
setProperty('rain19.y', -150);
doTweenX('rain19X', 'rain19', getProperty('rain19.x')-150, 0.3);
doTweenY('rain19Y', 'rain19', 900, 0.3);
end
if curStep %10 == 9 and rainDensity >= 1 then
setProperty('rain20.x', getRandomInt(1, 1301)-1);
setProperty('rain20.y', -150);
doTweenX('rain20X', 'rain20', getProperty('rain20.x')-150, 0.3);
doTweenY('rain20Y', 'rain20', 900, 0.3);
end
end
end

View File

@ -0,0 +1,9 @@
function onCreate()
setPropertyFromClass('GameOverSubstate', 'characterName', 'pico-dead')
setPropertyFromClass('GameOverSubstate', 'deathSoundName', 'fnf_loss_sfx-pico')
setPropertyFromClass('GameOverSubstate', 'loopSoundName', 'gameplay/gameover/gameOver-pico')
setPropertyFromClass('GameOverSubstate', 'endSoundName', 'gameplay/gameover/gameOverEnd-pico')
setPropertyFromClass('PauseSubState', 'songName', 'breakfast-pico/breakfast-pico')
characterPlayAnim('boyfriend', 'pissed', true);
setProperty('boyfriend.specialAnim', true);
end

View File

@ -0,0 +1,98 @@
-- RANK ONLY UP TILL 20, 0 MINIMUM, CHANGE THIS TO SUGGEST HOW HARD THE SONG IS, BY MARKEDAMAN
function onCreate()
if difficulty == 0 then -- easy
rank = 5
elseif difficulty == 1 then -- normal
rank = 6
elseif difficulty == 2 then -- hard
rank = 7
elseif difficulty == 3 then -- erect
rank = 0
elseif difficulty == 4 then -- nightmare
rank = 0
end
end
function onCreatePost()
if not hideHud then
if rank > 10 then
makeLuaSprite('star', 'star2', 1070, 590)
makeAnimatedLuaSprite('starFlame', 'starFlame', 1030, 440)
addAnimationByPrefix('starFlame', 'starFlame', 'fire loop full instance', 24, true)
setProperty('starFlame.alpha', 0)
scaleObject('starFlame', 1.5, 1.5)
setObjectCamera('starFlame', 'hud')
addLuaSprite('starFlame', true)
elseif rank <= 10 then
makeLuaSprite('star', 'star1', 1070, 590)
end
scaleObject('star', 0.9, 0.9)
setObjectCamera('star', 'hud')
setObjectOrder('star', getObjectOrder('starFlame') + 1)
setProperty('star.alpha', 0)
addLuaSprite('star')
makeLuaText('difficulty', ''.. rank ..'', 2230 , 0, 620)
setObjectOrder('difficulty', getObjectOrder('star') + 1)
setTextSize('difficulty', 37)
setTextFont('difficulty', 'combo.ttf')
setProperty('difficulty.alpha', 0)
addLuaText('difficulty', false)
setObjectOrder('difficulty', getObjectOrder('star') + 1)
if downscroll then
setProperty('difficulty.y', 70)
setProperty('star.y', 40)
setProperty('starFlame.y', -5)
setProperty('starFlame.angle', 190)
end
if rank > 10 then
setTextColor('difficulty', 'ffffff')
setTextBorder('difficulty', 2, '00AEFF')
elseif rank <= 10 then
setTextColor('difficulty', '000000')
setTextBorder('difficulty', 3, 'FFFFFF')
end
runTimer('ready', 0.5) -- star fade in
runTimer('wait', 8) -- star fade out
runTimer('wait2', 7.5) -- difficulty fade out
if rank > 10 then
runTimer('pausefire', 2) -- difficulty fade in
elseif rank <=10 then
runTimer('pause', 2)
end
end
end
function onTimerCompleted(tag)
if not hideHud then
if tag == 'ready' then
doTweenAlpha('hi', 'star', 1, 0.5,'linear')
end
if tag == 'wait' then
doTweenAlpha('gone', 'star', 0, 0.5,'linear')
doTweenAlpha('fireout', 'starFlame', 0, 0.5,'linear')
end
if tag == 'wait2' then
doTweenAlpha('bye', 'difficulty', 0, 0.5,'linear')
end
if tag == 'pause' then
doTweenAlpha('hi2', 'difficulty', 1, 0.5,'linear')
end
if tag == 'pausefire' then
setProperty('difficulty.alpha', 1)
setProperty('starFlame.alpha', 1)
playSound('light', 0.7)
end
end
end

6
charts/lit-up/combo.lua Normal file
View File

@ -0,0 +1,6 @@
function goodNoteHit()
if getProperty('combo') == 100 or getProperty('combo') == 200 then
characterPlayAnim('gf', 'combo100', true);
setProperty('gf.specialAnim', true);
end
end

446
charts/lit-up/events.json Normal file
View File

@ -0,0 +1,446 @@
{
"song": {
"events": [
[
21818.1818181818,
[
[
"Set Cam Zoom",
"0.85",
""
],
[
"Lit Up Vignette",
"1",
""
]
]
],
[
26590.9090909091,
[
[
"Lit Up Vignette",
"",
"1"
]
]
],
[
26931.8181818182,
[
[
"Lit Up Vignette",
"",
"1"
]
]
],
[
31363.6363636364,
[
[
"Lit Up Vignette",
"",
"1"
],
[
"Set Cam Zoom",
"0.95",
"1"
]
]
],
[
31704.5454545455,
[
[
"Lit Up Vignette",
"",
"1"
]
]
],
[
32045.4545454545,
[
[
"Lit Up Vignette",
"",
"1"
]
]
],
[
32386.3636363636,
[
[
"Lit Up Vignette",
"",
"2"
]
]
],
[
32727.2727272727,
[
[
"Set Cam Zoom",
"0.7",
""
],
[
"Add Camera Zoom",
"",
""
],
[
"Lit Up Vignette",
"0",
""
]
]
],
[
33579.5454545455,
[
[
"Add Camera Zoom",
"",
""
]
]
],
[
34943.1818181818,
[
[
"Add Camera Zoom",
"",
""
]
]
],
[
36306.8181818182,
[
[
"Add Camera Zoom",
"",
""
]
]
],
[
37670.4545454545,
[
[
"Add Camera Zoom",
"",
""
]
]
],
[
39034.0909090909,
[
[
"Add Camera Zoom",
"",
""
]
]
],
[
40397.7272727273,
[
[
"Add Camera Zoom",
"",
""
]
]
],
[
41761.3636363636,
[
[
"Add Camera Zoom",
"",
""
]
]
],
[
43125,
[
[
"Add Camera Zoom",
"",
""
]
]
],
[
44488.6363636364,
[
[
"Add Camera Zoom",
"",
""
]
]
],
[
45852.2727272727,
[
[
"Add Camera Zoom",
"",
""
]
]
],
[
47215.9090909091,
[
[
"Add Camera Zoom",
"",
""
]
]
],
[
48579.5454545455,
[
[
"Add Camera Zoom",
"",
""
]
]
],
[
49943.1818181818,
[
[
"Add Camera Zoom",
"",
""
]
]
],
[
51306.8181818182,
[
[
"Add Camera Zoom",
"",
""
]
]
],
[
52670.4545454545,
[
[
"Add Camera Zoom",
"",
""
]
]
],
[
54545.4545454545,
[
[
"Set Cam Zoom",
"0.85",
""
]
]
],
[
76363.6363636363,
[
[
"Set Cam Zoom",
"0.7",
""
]
]
],
[
77215.9090909091,
[
[
"Add Camera Zoom",
"",
""
]
]
],
[
78579.5454545454,
[
[
"Add Camera Zoom",
"",
""
]
]
],
[
79943.1818181818,
[
[
"Add Camera Zoom",
"",
""
]
]
],
[
81306.8181818182,
[
[
"Add Camera Zoom",
"",
""
]
]
],
[
82670.4545454545,
[
[
"Add Camera Zoom",
"",
""
]
]
],
[
84034.0909090909,
[
[
"Add Camera Zoom",
"",
""
]
]
],
[
85397.7272727273,
[
[
"Add Camera Zoom",
"",
""
]
]
],
[
86761.3636363636,
[
[
"Add Camera Zoom",
"",
""
]
]
],
[
88125,
[
[
"Add Camera Zoom",
"",
""
]
]
],
[
89488.6363636364,
[
[
"Add Camera Zoom",
"",
""
]
]
],
[
90852.2727272727,
[
[
"Add Camera Zoom",
"",
""
]
]
],
[
92215.9090909091,
[
[
"Add Camera Zoom",
"",
""
]
]
],
[
93579.5454545454,
[
[
"Add Camera Zoom",
"",
""
]
]
],
[
94943.1818181818,
[
[
"Add Camera Zoom",
"",
""
]
]
],
[
96306.8181818182,
[
[
"Add Camera Zoom",
"",
""
]
]
],
[
98181.8181818182,
[
[
"Set Cam Zoom",
"0.85",
""
]
]
],
[
109090.909090909,
[
[
"Set Cam Zoom",
"0.7",
"2"
]
]
]
]
}
}

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

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,351 @@
local rainSize1 = 1
local rainSize2 = 1
local rainSize3 = 1
local rainSize4 = 1
local rainSize5 = 1
local rainSize6 = 1
local rainSize7 = 1
local rainSize8 = 1
local rainSize9 = 1
local rainSize10 = 1
local rainSize11 = 1
local rainSize12 = 1
local rainSize13 = 1
local rainSize14 = 1
local rainSize15 = 1
local rainSize16 = 1
local rainSize17 = 1
local rainSize18 = 1
local rainSize19 = 1
local rainSize20 = 1
local rainDensity = 0
function onCreate()
if not lowQuality then
makeLuaSprite('rain1', 'empty', 0, -100);
makeGraphic('rain1', 1, 1, '90eeff');
setObjectCamera('rain1', 'hud');
setProperty('rain1.alpha', 0.2);
addLuaSprite('rain1', false);
setProperty('rain1.angle', 8);
makeLuaSprite('rain2', 'empty', 0, -100);
makeGraphic('rain2', 1, 1, '90eeff');
setObjectCamera('rain2', 'hud');
setProperty('rain2.alpha', 0.2);
addLuaSprite('rain2', false);
setProperty('rain2.angle', 8);
makeLuaSprite('rain3', 'empty', 0, -100);
makeGraphic('rain3', 1, 1, '90eeff');
setObjectCamera('rain3', 'hud');
setProperty('rain3.alpha', 0.2);
addLuaSprite('rain3', false);
setProperty('rain3.angle', 8);
makeLuaSprite('rain4', 'empty', 0, -100);
makeGraphic('rain4', 1, 1, '90eeff');
setObjectCamera('rain4', 'hud');
setProperty('rain4.alpha', 0.2);
addLuaSprite('rain4', false);
setProperty('rain4.angle', 8);
makeLuaSprite('rain5', 'empty', 0, -100);
makeGraphic('rain5', 1, 1, '90eeff');
setObjectCamera('rain5', 'hud');
setProperty('rain5.alpha', 0.2);
addLuaSprite('rain5', false);
setProperty('rain5.angle', 8);
makeLuaSprite('rain6', 'empty', 0, -100);
makeGraphic('rain6', 1, 1, '90eeff');
setObjectCamera('rain6', 'hud');
setProperty('rain6.alpha', 0.2);
addLuaSprite('rain6', false);
setProperty('rain6.angle', 8);
makeLuaSprite('rain7', 'empty', 0, -100);
makeGraphic('rain7', 1, 1, '90eeff');
setObjectCamera('rain7', 'hud');
setProperty('rain7.alpha', 0.2);
addLuaSprite('rain7', false);
setProperty('rain7.angle', 8);
makeLuaSprite('rain8', 'empty', 0, -100);
makeGraphic('rain8', 1, 1, '90eeff');
setObjectCamera('rain8', 'hud');
setProperty('rain8.alpha', 0.2);
addLuaSprite('rain8', false);
setProperty('rain8.angle', 8);
makeLuaSprite('rain9', 'empty', 0, -100);
makeGraphic('rain9', 1, 1, '90eeff');
setObjectCamera('rain9', 'hud');
setProperty('rain9.alpha', 0.2);
addLuaSprite('rain9', false);
setProperty('rain9.angle', 8);
makeLuaSprite('rain10', 'empty', 0, -100);
makeGraphic('rain10', 1, 1, '90eeff');
setObjectCamera('rain10', 'hud');
setProperty('rain10.alpha', 0.2);
addLuaSprite('rain10', false);
setProperty('rain10.angle', 8);
makeLuaSprite('rain11', 'empty', 0, -100);
makeGraphic('rain11', 1, 1, '90eeff');
setObjectCamera('rain11', 'hud');
setProperty('rain11.alpha', 0.2);
addLuaSprite('rain11', false);
setProperty('rain11.angle', 8);
makeLuaSprite('rain12', 'empty', 0, -100);
makeGraphic('rain12', 1, 1, '90eeff');
setObjectCamera('rain12', 'hud');
setProperty('rain12.alpha', 0.2);
addLuaSprite('rain12', false);
setProperty('rain12.angle', 8);
makeLuaSprite('rain13', 'empty', 0, -100);
makeGraphic('rain13', 1, 1, '90eeff');
setObjectCamera('rain13', 'hud');
setProperty('rain13.alpha', 0.2);
addLuaSprite('rain13', false);
setProperty('rain13.angle', 8);
makeLuaSprite('rain14', 'empty', 0, -100);
makeGraphic('rain14', 1, 1, '90eeff');
setObjectCamera('rain14', 'hud');
setProperty('rain14.alpha', 0.2);
addLuaSprite('rain14', false);
setProperty('rain14.angle', 8);
makeLuaSprite('rain15', 'empty', 0, -100);
makeGraphic('rain15', 1, 1, '90eeff');
setObjectCamera('rain15', 'hud');
setProperty('rain15.alpha', 0.2);
addLuaSprite('rain15', false);
setProperty('rain15.angle', 8);
makeLuaSprite('rain16', 'empty', 0, -100);
makeGraphic('rain16', 1, 1, '90eeff');
setObjectCamera('rain16', 'hud');
setProperty('rain16.alpha', 0.2);
addLuaSprite('rain16', false);
setProperty('rain16.angle', 8);
makeLuaSprite('rain17', 'empty', 0, -100);
makeGraphic('rain17', 1, 1, '90eeff');
setObjectCamera('rain17', 'hud');
setProperty('rain17.alpha', 0.2);
addLuaSprite('rain17', false);
setProperty('rain17.angle', 8);
makeLuaSprite('rain18', 'empty', 0, -100);
makeGraphic('rain18', 1, 1, '90eeff');
setObjectCamera('rain18', 'hud');
setProperty('rain18.alpha', 0.2);
addLuaSprite('rain18', false);
setProperty('rain18.angle', 8);
makeLuaSprite('rain19', 'empty', 0, -100);
makeGraphic('rain19', 1, 1, '90eeff');
setObjectCamera('rain19', 'hud');
setProperty('rain19.alpha', 0.2);
addLuaSprite('rain19', false);
setProperty('rain19.angle', 8);
makeLuaSprite('rain20', 'empty', 0, -100);
makeGraphic('rain20', 1, 1, '90eeff');
setObjectCamera('rain20', 'hud');
setProperty('rain20.alpha', 0.2);
addLuaSprite('rain20', false);
setProperty('rain20.angle', 8);
end
end
function onStepHit()
if not lowQuality then
rainDensity = getProperty("songPercent")
rainSize1 = getRandomInt(3, 8)
rainSize2 = getRandomInt(3, 8)
rainSize3 = getRandomInt(3, 8)
rainSize4 = getRandomInt(3, 8)
rainSize5 = getRandomInt(3, 8)
rainSize6 = getRandomInt(3, 8)
rainSize7 = getRandomInt(3, 8)
rainSize8 = getRandomInt(3, 8)
rainSize9 = getRandomInt(3, 8)
rainSize10 = getRandomInt(3, 8)
rainSize11 = getRandomInt(3, 8)
rainSize12 = getRandomInt(3, 8)
rainSize13 = getRandomInt(3, 8)
rainSize14 = getRandomInt(3, 8)
rainSize15 = getRandomInt(3, 8)
rainSize16 = getRandomInt(3, 8)
rainSize17 = getRandomInt(3, 8)
rainSize18 = getRandomInt(3, 8)
rainSize19 = getRandomInt(3, 8)
rainSize20 = getRandomInt(3, 8)
setProperty('rain1.scale.x', rainSize1);
setProperty('rain2.scale.x', rainSize2);
setProperty('rain3.scale.x', rainSize3);
setProperty('rain4.scale.x', rainSize4);
setProperty('rain5.scale.x', rainSize5);
setProperty('rain6.scale.x', rainSize6);
setProperty('rain7.scale.x', rainSize7);
setProperty('rain8.scale.x', rainSize8);
setProperty('rain9.scale.x', rainSize9);
setProperty('rain10.scale.x', rainSize10);
setProperty('rain11.scale.x', rainSize11);
setProperty('rain12.scale.x', rainSize12);
setProperty('rain13.scale.x', rainSize13);
setProperty('rain14.scale.x', rainSize14);
setProperty('rain15.scale.x', rainSize15);
setProperty('rain16.scale.x', rainSize16);
setProperty('rain17.scale.x', rainSize17);
setProperty('rain18.scale.x', rainSize18);
setProperty('rain19.scale.x', rainSize19);
setProperty('rain20.scale.x', rainSize20);
setProperty('rain1.scale.y', rainSize1*30);
setProperty('rain2.scale.y', rainSize2*30);
setProperty('rain3.scale.y', rainSize3*30);
setProperty('rain4.scale.y', rainSize4*30);
setProperty('rain5.scale.y', rainSize5*30);
setProperty('rain6.scale.y', rainSize6*30);
setProperty('rain7.scale.y', rainSize7*30);
setProperty('rain8.scale.y', rainSize8*30);
setProperty('rain9.scale.y', rainSize9*30);
setProperty('rain10.scale.y', rainSize10*30);
setProperty('rain11.scale.y', rainSize11*30);
setProperty('rain12.scale.y', rainSize12*30);
setProperty('rain13.scale.y', rainSize13*30);
setProperty('rain14.scale.y', rainSize14*30);
setProperty('rain15.scale.y', rainSize15*30);
setProperty('rain16.scale.y', rainSize16*30);
setProperty('rain17.scale.y', rainSize17*30);
setProperty('rain18.scale.y', rainSize18*30);
setProperty('rain19.scale.y', rainSize19*30);
setProperty('rain20.scale.y', rainSize20*30);
if curStep %10 == 0 and rainDensity >= 0 then
setProperty('rain1.x', getRandomInt(1, 1301)-1);
setProperty('rain1.y', -150);
doTweenX('rain1X', 'rain1', getProperty('rain1.x')-150, 0.3);
doTweenY('rain1Y', 'rain1', 900, 0.3);
end
if curStep %10 == 5 and rainDensity >= 0 then
setProperty('rain2.x', getRandomInt(1, 1301)-1);
setProperty('rain2.y', -150);
doTweenX('rain2X', 'rain2', getProperty('rain2.x')-150, 0.3);
doTweenY('rain2Y', 'rain2', 900, 0.3);
end
if curStep %10 == 3 and rainDensity >= 0 then
setProperty('rain3.x', getRandomInt(1, 1301)-1);
setProperty('rain3.y', -150);
doTweenX('rain3X', 'rain3', getProperty('rain3.x')-150, 0.3);
doTweenY('rain3Y', 'rain3', 900, 0);
end
if curStep %10 == 9 and rainDensity >= 0 then
setProperty('rain4.x', getRandomInt(1, 1301)-1);
setProperty('rain4.y', -150);
doTweenX('rain4X', 'rain4', getProperty('rain4.x')-150, 0.3);
doTweenY('rain4Y', 'rain4', 900, 0.3);
end
if curStep %10 == 7 and rainDensity >= 0 then
setProperty('rain5.x', getRandomInt(1, 1301)-1);
setProperty('rain5.y', -150);
doTweenX('rain5X', 'rain5', getProperty('rain5.x')-150, 0.3);
doTweenY('rain5Y', 'rain5', 900, 0.3);
end
if curStep %10 == 2 and rainDensity >= 0 then
setProperty('rain6.x', getRandomInt(1, 1301)-1);
setProperty('rain6.y', -150);
doTweenX('rain6X', 'rain6', getProperty('rain6.x')-150, 0.3);
doTweenY('rain6Y', 'rain6', 900, 0.3);
end
if curStep %10 == 4 and rainDensity >= 0 then
setProperty('rain7.x', getRandomInt(1, 1301)-1);
setProperty('rain7.y', -150);
doTweenX('rain7X', 'rain7', getProperty('rain7.x')-150, 0.3);
doTweenY('rain7Y', 'rain7', 900, 0.3);
end
if curStep %10 == 6 and rainDensity >= 0 then
setProperty('rain8.x', getRandomInt(1, 1301)-1);
setProperty('rain8.y', -150);
doTweenX('rain8X', 'rain8', getProperty('rain8.x')-150, 0.3);
doTweenY('rain8Y', 'rain8', 900, 0.3);
end
if curStep %10 == 8 and rainDensity >= 0 then
setProperty('rain9.x', getRandomInt(1, 1301)-1);
setProperty('rain9.y', -150);
doTweenX('rain9X', 'rain9', getProperty('rain9.x')-150, 0.3);
doTweenY('rain9Y', 'rain9', 900, 0.3);
end
if curStep %10 == 9 and rainDensity >= 0 then
setProperty('rain10.x', getRandomInt(1, 1301)-1);
setProperty('rain10.y', -150);
doTweenX('rain10X', 'rain10', getProperty('rain10.x')-150, 0.3);
doTweenY('rain10Y', 'rain10', 900, 0.3);
end
if curStep %10 == 0 and rainDensity >= 0.1 then
setProperty('rain11.x', getRandomInt(1, 1301)-1);
setProperty('rain11.y', -150);
doTweenX('rain11X', 'rain11', getProperty('rain11.x')-150, 0.3);
doTweenY('rain11Y', 'rain11', 900, 0.3);
end
if curStep %10 == 5 and rainDensity >= 0.2 then
setProperty('rain12.x', getRandomInt(1, 1301)-1);
setProperty('rain12.y', -150);
doTweenX('rain12X', 'rain12', getProperty('rain12.x')-150, 0.3);
doTweenY('rain12Y', 'rain12', 900, 0.3);
end
if curStep %10 == 3 and rainDensity >= 0.3 then
setProperty('rain13.x', getRandomInt(1, 1301)-1);
setProperty('rain13.y', -150);
doTweenX('rain13X', 'rain13', getProperty('rain13.x')-150, 0.3);
doTweenY('rain13Y', 'rain13', 900, 0.3);
end
if curStep %10 == 9 and rainDensity >= 0.4 then
setProperty('rain14.x', getRandomInt(1, 1301)-1);
setProperty('rain14.y', -150);
doTweenX('rain14X', 'rain14', getProperty('rain14.x')-150, 0.3);
doTweenY('rain14Y', 'rain14', 900, 0.3);
end
if curStep %10 == 7 and rainDensity >= 0.5 then
setProperty('rain15.x', getRandomInt(1, 1301)-1);
setProperty('rain15.y', -150);
doTweenX('rain15X', 'rain15', getProperty('rain15.x')-150, 0.3);
doTweenY('rain15Y', 'rain15', 900, 0.3);
end
if curStep %10 == 2 and rainDensity >= 0.6 then
setProperty('rain16.x', getRandomInt(1, 1301)-1);
setProperty('rain16.y', -150);
doTweenX('rain16X', 'rain16', getProperty('rain16.x')-150, 0.3);
doTweenY('rain16Y', 'rain16', 900, 0.3);
end
if curStep %10 == 4 and rainDensity >= 0.7 then
setProperty('rain17.x', getRandomInt(1, 1301)-1);
setProperty('rain17.y', -150);
doTweenX('rain17X', 'rain17', getProperty('rain17.x')-150, 0.3);
doTweenY('rain17Y', 'rain17', 900, 0.3);
end
if curStep %10 == 6 and rainDensity >= 0.8 then
setProperty('rain18.x', getRandomInt(1, 1301)-1);
setProperty('rain18.y', -150);
doTweenX('rain18X', 'rain18', getProperty('rain18.x')-150, 0.3);
doTweenY('rain18Y', 'rain18', 900, 0.3);
end
if curStep %10 == 8 and rainDensity >= 0.9 then
setProperty('rain19.x', getRandomInt(1, 1301)-1);
setProperty('rain19.y', -150);
doTweenX('rain19X', 'rain19', getProperty('rain19.x')-150, 0.3);
doTweenY('rain19Y', 'rain19', 900, 0.3);
end
if curStep %10 == 9 and rainDensity >= 1 then
setProperty('rain20.x', getRandomInt(1, 1301)-1);
setProperty('rain20.y', -150);
doTweenX('rain20X', 'rain20', getProperty('rain20.x')-150, 0.3);
doTweenY('rain20Y', 'rain20', 900, 0.3);
end
end
end

7
charts/lit-up/script.lua Normal file
View File

@ -0,0 +1,7 @@
function onCreate()
setPropertyFromClass('GameOverSubstate', 'characterName', 'pico-dead')
setPropertyFromClass('GameOverSubstate', 'deathSoundName', 'fnf_loss_sfx-pico')
setPropertyFromClass('GameOverSubstate', 'loopSoundName', 'gameplay/gameover/gameOver-pico')
setPropertyFromClass('GameOverSubstate', 'endSoundName', 'gameplay/gameover/gameOverEnd-pico')
setPropertyFromClass('PauseSubState', 'songName', 'breakfast-pico/breakfast-pico')
end

View File

@ -2223,7 +2223,7 @@
"song": "South",
"validScore": true,
"needsVoices": true,
"stage": "stage",
"stage": "spooky",
"speed": 2.2,
"bpm": 165
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

BIN
images/icons/icon-bf.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
images/icons/icon-bfgf.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

BIN
images/icons/icon-dad.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
images/icons/icon-face.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

BIN
images/icons/icon-gf.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
images/icons/icon-mom.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
images/icons/icon-pico.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

View File

@ -64,19 +64,30 @@ function love.draw()
end
end
function run()
curState = state(curSong.name, curDiff)
curState.quit = function()
curState = nil
stateLoaded = false
myTypes.destroyAllSprites()
end
curState.restart = function()
curState = nil
stateLoaded = false
myTypes.destroyAllSprites()
run()
end
curState.load()
end
function love.keypressed(key, un, is)
if curState and stateLoaded then
curState.keypressed(key, un, is)
else
elseif not curState then
if not gettingKey then
if key == "return" then
curState = state(curSong.name, curDiff)
curState.quit = function()
curState = nil
stateLoaded = false
myTypes.destroyAllSprites()
end
curState.load()
run()
elseif key == "down" then
curIndex, curSong = next(songs, curIndex)
if not curSong then

View File

@ -30,6 +30,9 @@ local function state(songName, songDifficulty)
local speed = chart.speed and chart.speed / 3 or 0.5
local miss = love.audio.newSource("sounds/missnote1.ogg", "static")
local loss = love.audio.newSource("sounds/fnf_loss_sfx.ogg", "static")
local gameOver = love.audio.newSource("sounds/gameOver.ogg", "stream")
local gameOverEnd = love.audio.newSource("sounds/gameOverEnd.ogg", "static")
conductor:setBpm(chart.bpm)
conductor:mapBpmChanges(chart)
@ -57,6 +60,8 @@ local function state(songName, songDifficulty)
local characters = {}
local icons = {}
local settings = {}
local ratings = {
@ -114,20 +119,6 @@ local function state(songName, songDifficulty)
["singRIGHT-alt"] = myTypes.Vector2(-20, 0)
}
local pressed = {
false,
false,
false,
false,
false
}
local holded = {
false,
false,
false,
false
}
local font = love.graphics.newFont("fonts/Phantomuff.ttf", 15)
local biggerFont = love.graphics.newFont("fonts/Phantomuff.ttf", 30)
@ -142,9 +133,61 @@ local function state(songName, songDifficulty)
local pauseTime = 0 -- the global amount of time the song has been paused
local pauseStart = 0 -- the start of the latest pause (for pauseTime calculation)
local health = 1 -- 0 to 2, 1 starters
local dead = false
local deadBF
local restart = false
local function quit()
if restart then return end
playing = false
if modules then
for index, module in next, modules do
if module.onClose then
module.onClose()
end
end
end
modules = nil
if not dead then
inst:stop()
inst:release()
inst = nil
if chart.needsVoices then
voices:stop()
voices:release()
voices = nil
end
miss:stop()
miss:release()
else
loss:stop()
gameOver:stop()
gameOverEnd:stop()
end
state.quit()
end
local function die()
dead = true
playing = false
if modules then
for index, module in next, modules do
if module.onClose then
module.onClose()
end
end
end
modules = nil
inst:stop()
inst:release()
inst = nil
@ -158,7 +201,12 @@ local function state(songName, songDifficulty)
miss:stop()
miss:release()
state.quit()
myTypes.destroyAllSprites()
deadBF = myTypes.character(string.format("%s-dead", chart.player1))
deadBF:PlayAnimation("firstDeath")
loss:play()
end
local function checkNote(dir)
@ -182,13 +230,42 @@ local function state(songName, songDifficulty)
ratings[rating.rating] = ratings[rating.rating] + 1
characters.bf:PlayAnimation("sing"..directions[closestNote.direction])
closestNote.pressed = true
health = health + closestNote.hitHealth
notes[closestIndex] = nil
closestNote:destroy()
end
end
function state.update(dt)
if not playing then return end
if not playing then
if dead then
myTypes.cameraTarget = deadBF.stageCamera
if not restart then
if deadBF and deadBF.sprite.ended then
deadBF:PlayAnimation("deathLoop")
end
if loss and not loss:isPlaying() and not gameOverEnd:isPlaying() and not gameOver:isPlaying() then
gameOver:play()
end
else
if not gameOverEnd:isPlaying() then
deadBF = nil
loss:release()
loss = nil
gameOverEnd:release()
gameOverEnd = nil
gameOver:release()
gameOver = nil
state.restart()
end
end
myTypes.updateSprites(dt)
end
return
end
-- playing isn't supposed to work like "paused", it's there to keep the game from working during loading
if paused then goto continue end -- if paused then skip this cycle
@ -289,6 +366,7 @@ local function state(songName, songDifficulty)
characters.bf:PlayAnimation("sing"..directions[note.direction].."miss")
notes[index] = nil
ratings.miss = ratings.miss + 1
health = health - note.missHealth
end
else
note.sprite.position = myTypes.Vector2(50 + 79 * (note.direction - 1), settings.Downscroll and 430 - (note.position-elapsed) * speed or (note.position - elapsed) * speed)
@ -325,6 +403,7 @@ local function state(songName, songDifficulty)
end
hold:destroy()
holdNotes[index] = nil
health = health + hold.hitHealth * 0.1
elseif hold.position - elapsed < -150 then
hold:destroy()
miss:stop()
@ -332,6 +411,7 @@ local function state(songName, songDifficulty)
characters.bf:PlayAnimation("sing"..directions[hold.direction].."miss")
holdNotes[index] = nil
ratings.miss = ratings.miss + 1
health = health - hold.missHealth * 0.1
end
end
else
@ -357,16 +437,28 @@ local function state(songName, songDifficulty)
end
end
if inst and not inst:isPlaying() then
quit()
end
for index, splash in next, splashes do
if splash.animation and splash.ended then
splash:StopAnimation()
end
end
for index, module in next, modules do
if module.onUpdate then
module.onUpdate(dt)
end
end
if health <= 0 then
die()
elseif health > 2 then
health = 2
end
if inst and not inst:isPlaying() then
quit()
end
::continue::
end
@ -378,8 +470,6 @@ local function state(songName, songDifficulty)
love.graphics.clear()
love.graphics.circle("fill", 960, 59, 50000)
myTypes.drawSprites()
love.graphics.setCanvas()
@ -389,6 +479,27 @@ local function state(songName, songDifficulty)
love.graphics.print({{0,0,0,1}, string.format("FPS: %s \nVolume: %s", love.timer.getFPS(), volume)}, font)
love.graphics.print({{0,0,0,1}, string.format("Sick: %s \nGood: %s \nBad: %s \nShit: %s \nMiss: %s", ratings.sick, ratings.good, ratings.bad, ratings.shit, ratings.miss)}, biggerFont, 0, 100)
-- HEALTH BAR
if playing then
love.graphics.setColor(255,0,0)
love.graphics.rectangle("fill", 440, settings.Downscroll and 30 or 690, 400, 15)
love.graphics.setColor(0,255,0)
love.graphics.rectangle("fill", 840 - health * 200, settings.Downscroll and 30 or 690, health * 200, 15)
love.graphics.setColor(0,0,0)
love.graphics.rectangle("line", 440, settings.Downscroll and 30 or 690, 400, 15)
love.graphics.setColor(255,255,255)
love.graphics.draw(icons.bf.image, health > .2 and icons.bf.alive or icons.bf.dead, 960 - health * 200, settings.Downscroll and 0 or 720, 0, -1, 1)
if characters.dad then
love.graphics.draw(icons.dad.image, health < 1.8 and icons.dad.alive or icons.dad.dead, 715 - health * 200, settings.Downscroll and 0 or 720)
end
end
-- HEALTH BAR
end
love.window.setMode(1280, 720, { fullscreen = false , resizable = false})
@ -431,11 +542,15 @@ local function state(songName, songDifficulty)
characters.bf = myTypes.character(chart.player1)
characters.bf.stagePosition = myTypes.Vector2(stage.boyfriend[1], stage.boyfriend[2])
characters.bf:PlayAnimation("idle")
local image = love.graphics.newImage(string.format("images/icons/icon-%s.png", characters.bf.icon))
icons.bf = {image = image, alive = love.graphics.newQuad(0,0, 150, 150, image), dead = love.graphics.newQuad(150, 0, 150, 150, image)}
if chart.player2 ~= "none" then -- you can have no player2 but always player1
characters.dad = myTypes.character(chart.player2)
characters.dad.stagePosition = myTypes.Vector2(stage.opponent[1], stage.opponent[2])
characters.dad:PlayAnimation("idle")
local image = love.graphics.newImage(string.format("images/icons/icon-%s.png", characters.dad.icon))
icons.dad = {image = image, alive = love.graphics.newQuad(0,0, 150, 150, image), dead = love.graphics.newQuad(150, 0, 150, 150, image)}
end
conductor.stepCrochet = conductor:calculateCrochet(chart.bpm)/4
@ -506,7 +621,8 @@ local function state(songName, songDifficulty)
beat=beat,
volume=volume,
ratings=ratings,
keyBinds=keyBinds
keyBinds=keyBinds,
zoom=zoom
}
setfenv(func, newEnv)
end
@ -522,7 +638,6 @@ local function state(songName, songDifficulty)
end --waiting till the song actually plays.
elapsed = 0
actualElapsed = 0
playing = true
@ -531,20 +646,28 @@ local function state(songName, songDifficulty)
function state.keypressed(key, un, is)
if key == "space" then
paused = not paused
if playing then
paused = not paused
if paused then
inst:pause()
if chart.needsVoices then
voices:pause()
if paused then
inst:pause()
if chart.needsVoices then
voices:pause()
end
pauseStart = socket.gettime() * 1000
else
inst:play()
if chart.needsVoices then
voices:play()
end
pauseTime = pauseTime + (socket.gettime() * 1000 - pauseStart)
end
pauseStart = socket.gettime() * 1000
else
inst:play()
if chart.needsVoices then
voices:play()
end
pauseTime = pauseTime + (socket.gettime() * 1000 - pauseStart)
elseif dead then
gameOverEnd:play()
gameOver:stop()
loss:stop()
restart = true
deadBF:PlayAnimation("deathConfirm")
end
elseif key == "escape" then
quit()

View File

@ -55,6 +55,7 @@ function module.character(name)
flipX = parsed.flip_x,
beats = parsed.beats or 4,
animation = "idle",
icon = parsed.healthicon,
}, CharacterClass)
for index, alias in next, parsed.animations do
@ -64,7 +65,7 @@ function module.character(name)
if newCharacter.animInfo["idle"] then
newCharacter:PlayAnimation("idle")
else
elseif newCharacter.animInfo["danceLeft"] then
newCharacter:PlayAnimation("danceLeft")
end

View File

@ -21,7 +21,9 @@ function module.note(raw, mustHitSection, hold, holdEnd)
sprite = nil, -- For unspawned notes
altAnim = raw[4] == "Alt",
hold = hold,
last = holdEnd
last = holdEnd,
hitHealth = 0.02,
missHealth = 0.1
}, NoteClass)
return newNote

BIN
sounds/fnf_loss_sfx.ogg Normal file

Binary file not shown.

BIN
sounds/gameOver.ogg Normal file

Binary file not shown.

BIN
sounds/gameOverEnd.ogg Normal file

Binary file not shown.

BIN
sounds/spooky/thunder_1.ogg Normal file

Binary file not shown.

BIN
sounds/spooky/thunder_2.ogg Normal file

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,248 @@
{
"TextureAtlas": {
"SubTexture": [
{
"_name": "halloweem bg0000",
"_x": "0",
"_y": "0",
"_width": "2114",
"_height": "1075"
},
{
"_name": "halloweem bg lightning strike0000",
"_x": "2124",
"_y": "0",
"_width": "2114",
"_height": "1075",
"_frameX": "0",
"_frameY": "0",
"_frameWidth": "2114",
"_frameHeight": "1090"
},
{
"_name": "halloweem bg lightning strike0001",
"_x": "4248",
"_y": "0",
"_width": "2114",
"_height": "1000",
"_frameX": "0",
"_frameY": "0",
"_frameWidth": "2114",
"_frameHeight": "1090"
},
{
"_name": "halloweem bg lightning strike0002",
"_x": "0",
"_y": "1085",
"_width": "2114",
"_height": "1090"
},
{
"_name": "halloweem bg lightning strike0003",
"_x": "2124",
"_y": "1085",
"_width": "2114",
"_height": "1081",
"_frameX": "0",
"_frameY": "0",
"_frameWidth": "2114",
"_frameHeight": "1090"
},
{
"_name": "halloweem bg lightning strike0004",
"_x": "4248",
"_y": "1085",
"_width": "2114",
"_height": "1081",
"_frameX": "0",
"_frameY": "0",
"_frameWidth": "2114",
"_frameHeight": "1090"
},
{
"_name": "halloweem bg lightning strike0005",
"_x": "4248",
"_y": "1085",
"_width": "2114",
"_height": "1081",
"_frameX": "0",
"_frameY": "0",
"_frameWidth": "2114",
"_frameHeight": "1090"
},
{
"_name": "halloweem bg lightning strike0006",
"_x": "0",
"_y": "2185",
"_width": "2114",
"_height": "1081",
"_frameX": "0",
"_frameY": "0",
"_frameWidth": "2114",
"_frameHeight": "1090"
},
{
"_name": "halloweem bg lightning strike0007",
"_x": "2124",
"_y": "2185",
"_width": "2114",
"_height": "1081",
"_frameX": "0",
"_frameY": "0",
"_frameWidth": "2114",
"_frameHeight": "1090"
},
{
"_name": "halloweem bg lightning strike0008",
"_x": "4248",
"_y": "2185",
"_width": "2114",
"_height": "1080",
"_frameX": "0",
"_frameY": "0",
"_frameWidth": "2114",
"_frameHeight": "1090"
},
{
"_name": "halloweem bg lightning strike0009",
"_x": "0",
"_y": "3276",
"_width": "2114",
"_height": "1080",
"_frameX": "0",
"_frameY": "0",
"_frameWidth": "2114",
"_frameHeight": "1090"
},
{
"_name": "halloweem bg lightning strike0010",
"_x": "2124",
"_y": "3276",
"_width": "2114",
"_height": "1080",
"_frameX": "0",
"_frameY": "0",
"_frameWidth": "2114",
"_frameHeight": "1090"
},
{
"_name": "halloweem bg lightning strike0011",
"_x": "4248",
"_y": "3276",
"_width": "2114",
"_height": "1080",
"_frameX": "0",
"_frameY": "0",
"_frameWidth": "2114",
"_frameHeight": "1090"
},
{
"_name": "halloweem bg lightning strike0012",
"_x": "0",
"_y": "4366",
"_width": "2114",
"_height": "1080",
"_frameX": "0",
"_frameY": "0",
"_frameWidth": "2114",
"_frameHeight": "1090"
},
{
"_name": "halloweem bg lightning strike0013",
"_x": "2124",
"_y": "4366",
"_width": "2114",
"_height": "1080",
"_frameX": "0",
"_frameY": "0",
"_frameWidth": "2114",
"_frameHeight": "1090"
},
{
"_name": "halloweem bg lightning strike0014",
"_x": "4248",
"_y": "4366",
"_width": "2114",
"_height": "1080",
"_frameX": "0",
"_frameY": "0",
"_frameWidth": "2114",
"_frameHeight": "1090"
},
{
"_name": "halloweem bg lightning strike0015",
"_x": "0",
"_y": "5456",
"_width": "2114",
"_height": "1079",
"_frameX": "0",
"_frameY": "0",
"_frameWidth": "2114",
"_frameHeight": "1090"
},
{
"_name": "halloweem bg lightning strike0016",
"_x": "2124",
"_y": "5456",
"_width": "2114",
"_height": "1079",
"_frameX": "0",
"_frameY": "0",
"_frameWidth": "2114",
"_frameHeight": "1090"
},
{
"_name": "halloweem bg lightning strike0017",
"_x": "4248",
"_y": "5456",
"_width": "2114",
"_height": "1079",
"_frameX": "0",
"_frameY": "0",
"_frameWidth": "2114",
"_frameHeight": "1090"
},
{
"_name": "halloweem bg lightning strike0018",
"_x": "0",
"_y": "6545",
"_width": "2114",
"_height": "1079",
"_frameX": "0",
"_frameY": "0",
"_frameWidth": "2114",
"_frameHeight": "1090"
},
{
"_name": "halloweem bg lightning strike0019",
"_x": "2124",
"_y": "6545",
"_width": "2114",
"_height": "1078",
"_frameX": "0",
"_frameY": "0",
"_frameWidth": "2114",
"_frameHeight": "1090"
},
{
"_name": "halloweem bg lightning strike0020",
"_x": "4248",
"_y": "6545",
"_width": "2114",
"_height": "1078",
"_frameX": "0",
"_frameY": "0",
"_frameWidth": "2114",
"_frameHeight": "1090"
},
{
"_name": "halloweem bg lightning strike0029",
"_x": "0",
"_y": "0",
"_width": "2114",
"_height": "1075"
}
],
"_imagePath": "halloween_bg.png"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 MiB

15
stages/spooky.json Normal file
View File

@ -0,0 +1,15 @@
{
"directory": "",
"defaultZoom": 1,
"isPixelStage": false,
"boyfriend": [989.5, -400],
"girlfriend": [330, -400],
"opponent": [382, -400],
"hide_girlfriend": false,
"camera_boyfriend": [350, -500],
"camera_opponent": [300, 500],
"camera_girlfriend": [0, -500],
"camera_speed": 1
}

50
stages/spooky.lua Normal file
View File

@ -0,0 +1,50 @@
local myTypes = require("modules.types")
local lightningCountdown = love.math.random(15, 20) --holy fuck
local mansion
local sounds
return {
onCreate = function(song)
mansion = myTypes.Sprite("sprites/spooky/halloween_bg.png", "sprites/spooky/halloween_bg.json")
mansion.resize = myTypes.Vector2(2,2)
mansion:PlayAnimation("halloweem bg", 1, false)
mansion.position = myTypes.Vector2(-400, -200)
for index, anim in next, mansion.quads do
for index, quad in next, anim do
quad.resize = myTypes.Vector2(1.4,1.4)
end
end
sounds = {love.audio.newSource("sounds/spooky/thunder_1.ogg", "static"), love.audio.newSource("sounds/spooky/thunder_2.ogg", "static")}
end,
onBeat = function(beat)
lightningCountdown = lightningCountdown - 1
if lightningCountdown == 0 then
mansion:PlayAnimation("halloweem bg lightning strike", 24, false)
game.characters.bf:PlayAnimation("scared")
game.characters.gf:PlayAnimation("scared")
lightningCountdown = love.math.random(15, 20)
local sound = sounds[math.random(1, 2)]
sound:stop()
sound:play()
end
end,
onUpdate = function()
if mansion.animation ~= "halloweem bg" and mansion.ended then
mansion:PlayAnimation("halloweem bg", 1, false)
end
end,
onClose = function()
for index, sound in next, sounds do
sound:stop()
sound:release()
sound = nil
end
end
}