//::///////////////////////////////////////////////
//:: Firework Wand
//:: g_missile.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
This script is called from g_firework_wand script. This does all the hard work.
It needs to be called like this for timing reasons.

And items that will shoot a firework in the sky above the PCs head and do a small
firework. Give it to you players for some fun.
*/
//:://////////////////////////////////////////////
//:: Created By: Jay Clark
//:: Created On: August 31, 2004
//:://////////////////////////////////////////////

void main()
{
    object oPC = OBJECT_SELF;
    object oArea = GetArea(oPC);
    location lNewLoc;
    vector vPC,vNewVec;
    float x,y,z,face;
    //Make SmallFireTarget over PCs head
    vPC = GetPosition(oPC);
    x = vPC.x;
    y = vPC.y;
    z = vPC.z;
    z += 7.5;
    face = GetFacing(oPC);
    vNewVec = Vector(x,y,z);
    lNewLoc = Location(oArea,vNewVec,face);
    object oTarget = CreateObject(OBJECT_TYPE_PLACEABLE,"wandfireworktarg",lNewLoc);
    effect eMissile = EffectVisualEffect(181); //233 is Fire Arrow
    effect eDam = EffectDamage(1);
    effect eExplode = EffectVisualEffect(VFX_FNF_FIREBALL);
    float fDist, fDelay, fTimeDelay;
    fTimeDelay = 0.0;
    fDist = GetDistanceBetween(oPC, oTarget);
    fDelay = fDist/(3.0 * log(fDist) + 2.0);
    fDelay += fTimeDelay;
    DelayCommand(fTimeDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eMissile, oTarget));
    DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
    DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eExplode, oTarget));
    DestroyObject(oTarget,fDelay+2.0);
}