function onStepHit()
    if curStep == 166 then
      addCamSpeed(1.5)
    end
    if curStep == 232 then
      addCamSpeed(-1.5)
    end
    if curStep == 264 then
      addCamSpeed(1.5)
    end    
    if curStep == 296 then
      addCamSpeed(-1.5)
    end
    if curStep == 332 then
      addCamSpeed(1.5)
    end
    if curStep == 536 then
      cameraSetTarget('dad')
    end
    if curStep == 552 then
      cameraSetTarget('dad')
    end
    if curStep == 568 then
			cameraSetTarget('boyfriend')
    end
    if curStep == 584 then
			cameraSetTarget('boyfriend')
    end
    if curStep == 600 then
			cameraSetTarget('boyfriend')
    end
    if curStep == 616 then
			cameraSetTarget('boyfriend')
    end
    if curStep == 632 then
      cameraSetTarget('dad')
    end
    if curStep == 648 then
      cameraSetTarget('dad')
    end
    if curStep == 664 then
      cameraSetTarget('dad')
    end
    if curStep == 680 then
      cameraSetTarget('dad')
    end    
    if curStep == 696 then
      cameraSetTarget('dad')
    end
    if curStep == 710 then
      cameraSetTarget('dad')
    end
    if curStep == 799 then
      setProperty('gf.visible', true)
      setProperty('ShDD.visible', true)
    end
    if curStep == 1464 then
			cameraSetTarget('boyfriend')
    end
end

function addCamSpeed(value)
	setProperty('cameraSpeed', getProperty('cameraSpeed') + value)
end

function onStartCountdown()
    setProperty('gf.visible', false)

    return Function_Continue
end

function opponentNoteHit(id, noteData, noteType, isSustainNote) --credit to Unholywanderer04 for this part (https://gamebanana.com/questions/25022)
		if noteData == 0 then
			characterPlayAnim('gf','singLEFT', true)
		end
		if noteData == 1 then
			characterPlayAnim('gf','singDOWN', true)
		end
		if noteData == 2 then
			characterPlayAnim('gf','singUP', true)
		end
		if noteData == 3 then
			characterPlayAnim('gf','singRIGHT', true)
		end
end

function onUpdate() --stoled from a dusttale psych port (https://gamebanana.com/mods/373314)
	local currentBeat = (getSongPosition() / 500) * (bpm / 110);
	for i = 0, getProperty('playerStrums.length') do
		setPropertyFromGroup('playerStrums', i, 'y', defaultPlayerStrumY0 + 10 * math.cos(currentBeat + i * 5.25) * math.pi);
	end
	for i = 0, getProperty('opponentStrums.length') do
		setPropertyFromGroup('opponentStrums', i, 'y', defaultOpponentStrumY0 + 10 * math.cos(currentBeat + i * 5.25) * math.pi);
	end
end