#include "jump_include"
#include "jump_inc_pattern"

void Jump_CookieCrumbleTrail(int iInterval, float fDelay = 0.05, float fExplosionDelay = 0.5, float fCookieDuration = 2.0);
void Jump_CookieCrumbleTrail(int iInterval, float fDelay = 0.05, float fExplosionDelay = 0.5, float fCookieDuration = 2.0)
{
    float fDistanceLocal = GetDistanceBetweenLocations(lPC, lTarget);
    float fSkip = fDistanceLocal / IntToFloat(iInterval);
    float fDSkip = 0.0;
    float fIncrement = 0.0;
    float fFacing = GetFacing(oPC);
    location lDrop;

    int i;
    for (i = 0; i < iInterval; i++)
    {
        fIncrement += fSkip;
        fDSkip += fDelay;

        // Random offset for fun cookie scatter!
        float fOffsetX = frand() * 1.5 - 0.75; // Between -0.75 and +0.75
        float fOffsetY = frand() * 1.5 - 0.75;

        vector vBase = GetPositionFromLocation(GenerateNewLocationFromLocation(lPC, fIncrement, fFacing, 0.0));
        vector vCookie = Vector(vBase.x + fOffsetX, vBase.y + fOffsetY, vBase.z);

        lDrop = Location(oArea, vCookie, fFacing);

        // Spawn cookie
        DelayCommand(fDSkip, Jump_SpawnPlaceable("cas_cookieplc", lDrop, fCookieDuration));

        // Crumble sparkle VFX
        DelayCommand(fDSkip + fExplosionDelay, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_SPARKS_PARRY), lDrop));
    }
}


#include "jump_include"
#include "jump_inc_pattern"

void main()
{
    float fDelay = 1.0;
    int bTurnToTarget = TRUE;

    if (ActivateJumper(fDelay, bTurnToTarget))
    {
        int iInterval = 10;

        Jump_CookieCrumbleTrail(iInterval, 0.05, 0.5, 2.0);
    }
}
