Jaysyn904 0f13e6c538 Initial module commit
Initial module commit.
2021-08-29 23:34:48 -04:00

330 lines
17 KiB
Plaintext

//::///////////////////////////////////////////////
//:: Fireworks Finale
//:: g_fireworksfinal
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
This is called by g_fireworks after so many fireworks have been shot. This is a
heavily scripted event. If you don't know what to do don't mess with it.
If you do edit it make sure you always use DelayCommand with the varible
"fTimeDelay" Make sure you increase "fTimeDelay" or everything will happen at
the same time.
*/
//:://////////////////////////////////////////////
//:: Created By: Jay Clark
//:: Created On: August 31, 2004
//:://////////////////////////////////////////////
void main()
{
object oSource = GetObjectByTag("FireworksSource");
object oArea = GetArea(oSource);
object oTarget;
string sTag;
effect eMissile = EffectVisualEffect(VFX_IMP_MIRV);
effect eDam = EffectDamage(1);
effect eFire = EffectVisualEffect(VFX_COM_HIT_FIRE);
//Single Targets to use later On!
//These can be used by you to make other patterns for the finale
object oSTarget1 = GetObjectByTag("FireworksSTarget1");
object oSTarget2 = GetObjectByTag("FireworksSTarget2");
object oSTarget3 = GetObjectByTag("FireworksSTarget3");
object oSTarget4 = GetObjectByTag("FireworksSTarget4");
object oSTarget5 = GetObjectByTag("FireworksSTarget5");
object oSTarget6 = GetObjectByTag("FireworksSTarget6");
object oSTarget7 = GetObjectByTag("FireworksSTarget7");
object oSTarget8 = GetObjectByTag("FireworksSTarget8");
object oSTarget9 = GetObjectByTag("FireworksSTarget9");
object oSTarget10 = GetObjectByTag("FireworksSTarget10");
object oSTarget11 = GetObjectByTag("FireworksSTarget11");
object oSTarget12 = GetObjectByTag("FireworksSTarget12");
object oMTarget = GetObjectByTag("FireworksMTarget3");
object oMTarget1 = GetObjectByTag("FireworksMTarget1");
object oMTarget2 = GetObjectByTag("FireworksMTarget2");
object oLTarget = GetObjectByTag("FireworksLTarget3");
object oLTarget1 = GetObjectByTag("FireworksLTarget1");
object oLTarget2 = GetObjectByTag("FireworksLTarget2");
int EffectNum;
int EffectNum1;
int i;
float fTimeDelay = 1.0;
float fDist, fDelay;
SetLocalInt(oSource,"NewMedFire",FALSE);
SetLocalInt(oSource,"NEWFIREWORK",FALSE);
SetLocalInt(oSource,"NOSPAWN",TRUE);
//Counter Clockwise with Howl
DelayCommand(fTimeDelay,SetLocalInt(oSource,"SmallFireWorks",3));; //Howl Circle
for(i=1;i<13;i++)
{
sTag = "FireworksSTarget" + IntToString(i);
oTarget = GetObjectByTag(sTag);
fDist = GetDistanceBetween(oSource, oTarget);
fDelay = fDist/(3.0 * log(fDist) + 2.0);
fDelay += fTimeDelay;
DelayCommand(fTimeDelay,ApplyEffectToObject(DURATION_TYPE_INSTANT, eFire, oSource));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
DelayCommand(fTimeDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eMissile, oTarget));
fTimeDelay += 0.5;
fDelay += fTimeDelay;
}
fTimeDelay += 3.0;
//Clockwise with dispel
DelayCommand(fTimeDelay,SetLocalInt(oSource,"SmallFireWorks",2)); //Dispel
for(i=12;i>0;i--)
{
sTag = "FireworksSTarget" + IntToString(i);
oTarget = GetObjectByTag(sTag);
fDist = GetDistanceBetween(oSource, oTarget);
fDelay = fDist/(3.0 * log(fDist) + 2.0);
fDelay += fTimeDelay;
DelayCommand(fTimeDelay,ApplyEffectToObject(DURATION_TYPE_INSTANT, eFire, oSource));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
DelayCommand(fTimeDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eMissile, oTarget));
fTimeDelay += 0.5;
fDelay += fTimeDelay;
}
fTimeDelay += 3.0;
//Order fire with Electric Burst
DelayCommand(fTimeDelay,SetLocalInt(oSource,"SmallFireWorks",9));
for(i=1;i<7;i++)
{
sTag = "FireworksSTarget" + IntToString(i);
oTarget = GetObjectByTag(sTag);
fDist = GetDistanceBetween(oSource, oTarget);
fDelay = fDist/(3.0 * log(fDist) + 2.0);
fDelay += fTimeDelay;
DelayCommand(fTimeDelay,ApplyEffectToObject(DURATION_TYPE_INSTANT, eFire, oSource));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
DelayCommand(fTimeDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eMissile, oTarget));
fTimeDelay += 0.5;
fDelay += fTimeDelay;
sTag = "FireworksSTarget" + IntToString(i+6);
oTarget = GetObjectByTag(sTag);
fDist = GetDistanceBetween(oSource, oTarget);
fDelay = fDist/(3.0 * log(fDist) + 2.0);
fDelay += fTimeDelay;
DelayCommand(fTimeDelay,ApplyEffectToObject(DURATION_TYPE_INSTANT, eFire, oSource));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
DelayCommand(fTimeDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eMissile, oTarget));
fTimeDelay += 0.5;
fDelay += fTimeDelay;
}
for(i=7;i<13;i++)
{
sTag = "FireworksSTarget" + IntToString(i);
oTarget = GetObjectByTag(sTag);
fDist = GetDistanceBetween(oSource, oTarget);
fDelay = fDist/(3.0 * log(fDist) + 2.0);
fDelay += fTimeDelay;
DelayCommand(fTimeDelay,ApplyEffectToObject(DURATION_TYPE_INSTANT, eFire, oSource));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
DelayCommand(fTimeDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eMissile, oTarget));
fTimeDelay += 0.5;
fDelay += fTimeDelay;
sTag = "FireworksSTarget" + IntToString(i-6);
oTarget = GetObjectByTag(sTag);
fDist = GetDistanceBetween(oSource, oTarget);
fDelay = fDist/(3.0 * log(fDist) + 2.0);
fDelay += fTimeDelay;
DelayCommand(fTimeDelay,ApplyEffectToObject(DURATION_TYPE_INSTANT, eFire, oSource));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
DelayCommand(fTimeDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eMissile, oTarget));
fTimeDelay += 0.5;
fDelay += fTimeDelay;
}
fTimeDelay += 3.0;
//Fire Medium Firework off followed by a Large shortly after
fDist = GetDistanceBetween(oSource, oMTarget);
fDelay = fDist/(3.0 * log(fDist) + 2.0);
fDelay += fTimeDelay;
DelayCommand(fTimeDelay,ApplyEffectToObject(DURATION_TYPE_INSTANT, eFire, oSource));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oMTarget));
DelayCommand(fTimeDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eMissile, oMTarget));
fTimeDelay += 3.0;
fDist = GetDistanceBetween(oSource, oLTarget);
fDelay = fDist/(3.0 * log(fDist) + 2.0);
fDelay += fTimeDelay;
DelayCommand(fTimeDelay,ApplyEffectToObject(DURATION_TYPE_INSTANT, eFire, oSource));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oLTarget));
DelayCommand(fTimeDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eMissile, oLTarget));
//Odd smalls go off with unused effects
fTimeDelay += 10.0;
EffectNum = 13;
fDist = GetDistanceBetween(oSource, oSTarget1);
fDelay = fDist/(3.0 * log(fDist) + 2.0);
fDelay += fTimeDelay;
DelayCommand(fTimeDelay,ApplyEffectToObject(DURATION_TYPE_INSTANT, eFire, oSource));
DelayCommand(fTimeDelay,ApplyEffectToObject(DURATION_TYPE_INSTANT, eMissile, oSTarget1));
DelayCommand(fDelay,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_FIREBALL),oSTarget1));
DelayCommand(fDelay+0.5,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(EffectNum),oSTarget1));
fDist = GetDistanceBetween(oSource, oSTarget3);
fDelay = fDist/(3.0 * log(fDist) + 2.0);
fDelay += fTimeDelay;
DelayCommand(fTimeDelay,ApplyEffectToObject(DURATION_TYPE_INSTANT, eFire, oSource));
DelayCommand(fTimeDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eMissile, oSTarget3));
DelayCommand(fDelay,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_FIREBALL),oSTarget3));
DelayCommand(fDelay+0.5,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(EffectNum),oSTarget3));
fDist = GetDistanceBetween(oSource, oSTarget5);
fDelay = fDist/(3.0 * log(fDist) + 2.0);
fDelay += fTimeDelay;
DelayCommand(fTimeDelay,ApplyEffectToObject(DURATION_TYPE_INSTANT, eFire, oSource));
DelayCommand(fTimeDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eMissile, oSTarget5));
DelayCommand(fDelay,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_FIREBALL),oSTarget5));
DelayCommand(fDelay+0.5,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(EffectNum),oSTarget5));
fDist = GetDistanceBetween(oSource, oSTarget7);
fDelay = fDist/(3.0 * log(fDist) + 2.0);
fDelay += fTimeDelay;
DelayCommand(fTimeDelay,ApplyEffectToObject(DURATION_TYPE_INSTANT, eFire, oSource));
DelayCommand(fTimeDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eMissile, oSTarget7));
DelayCommand(fDelay,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_FIREBALL),oSTarget7));
DelayCommand(fDelay+0.5,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(EffectNum),oSTarget7));
fDist = GetDistanceBetween(oSource, oSTarget9);
fDelay = fDist/(3.0 * log(fDist) + 2.0);
fDelay += fTimeDelay;
DelayCommand(fTimeDelay,ApplyEffectToObject(DURATION_TYPE_INSTANT, eFire, oSource));
DelayCommand(fTimeDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eMissile, oSTarget9));
DelayCommand(fDelay,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_FIREBALL),oSTarget9));
DelayCommand(fDelay+0.5,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(EffectNum),oSTarget9));
fDist = GetDistanceBetween(oSource, oSTarget11);
fDelay = fDist/(3.0 * log(fDist) + 2.0);
fDelay += fTimeDelay;
DelayCommand(fTimeDelay,ApplyEffectToObject(DURATION_TYPE_INSTANT, eFire, oSource));
DelayCommand(fTimeDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eMissile, oSTarget11));
DelayCommand(fDelay,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_FIREBALL),oSTarget11));
DelayCommand(fDelay+0.5,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(EffectNum),oSTarget11));
//Even Small go off now
fTimeDelay += 2.0;
EffectNum1 = 13;
fDist = GetDistanceBetween(oSource, oSTarget2);
fDelay = fDist/(3.0 * log(fDist) + 2.0);
fDelay += fTimeDelay;
DelayCommand(fTimeDelay,ApplyEffectToObject(DURATION_TYPE_INSTANT, eFire, oSource));
DelayCommand(fTimeDelay,ApplyEffectToObject(DURATION_TYPE_INSTANT, eMissile, oSTarget2));
DelayCommand(fDelay,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_FIREBALL),oSTarget2));
DelayCommand(fDelay+0.5,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(EffectNum1),oSTarget2));
fDist = GetDistanceBetween(oSource, oSTarget4);
fDelay = fDist/(3.0 * log(fDist) + 2.0);
fDelay += fTimeDelay;
DelayCommand(fTimeDelay,ApplyEffectToObject(DURATION_TYPE_INSTANT, eFire, oSource));
DelayCommand(fTimeDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eMissile, oSTarget4));
DelayCommand(fDelay,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_FIREBALL),oSTarget4));
DelayCommand(fDelay+0.5,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(EffectNum1),oSTarget4));
fDist = GetDistanceBetween(oSource, oSTarget6);
fDelay = fDist/(3.0 * log(fDist) + 2.0);
fDelay += fTimeDelay;
DelayCommand(fTimeDelay,ApplyEffectToObject(DURATION_TYPE_INSTANT, eFire, oSource));
DelayCommand(fTimeDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eMissile, oSTarget6));
DelayCommand(fDelay,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_FIREBALL),oSTarget6));
DelayCommand(fDelay+0.5,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(EffectNum1),oSTarget6));
fDist = GetDistanceBetween(oSource, oSTarget8);
fDelay = fDist/(3.0 * log(fDist) + 2.0);
fDelay += fTimeDelay;
DelayCommand(fTimeDelay,ApplyEffectToObject(DURATION_TYPE_INSTANT, eFire, oSource));
DelayCommand(fTimeDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eMissile, oSTarget8));
DelayCommand(fDelay,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_FIREBALL),oSTarget8));
DelayCommand(fDelay+0.5,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(EffectNum1),oSTarget8));
fDist = GetDistanceBetween(oSource, oSTarget10);
fDelay = fDist/(3.0 * log(fDist) + 2.0);
fDelay += fTimeDelay;
DelayCommand(fTimeDelay,ApplyEffectToObject(DURATION_TYPE_INSTANT, eFire, oSource));
DelayCommand(fTimeDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eMissile, oSTarget10));
DelayCommand(fDelay,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_FIREBALL),oSTarget10));
DelayCommand(fDelay+0.5,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(EffectNum1),oSTarget10));
fDist = GetDistanceBetween(oSource, oSTarget12);
fDelay = fDist/(3.0 * log(fDist) + 2.0);
fDelay += fTimeDelay;
DelayCommand(fTimeDelay,ApplyEffectToObject(DURATION_TYPE_INSTANT, eFire, oSource));
DelayCommand(fTimeDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eMissile, oSTarget12));
DelayCommand(fDelay,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_FIREBALL),oSTarget12));
DelayCommand(fDelay+0.5,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(EffectNum1),oSTarget12));
//Put some Rapid shot Random Mediums here
for(i=1;i<11;i++)
{
fDist = GetDistanceBetween(oSource, oMTarget);
fDelay = fDist/(3.0 * log(fDist) + 2.0);
fDelay += fTimeDelay;
DelayCommand(fTimeDelay,ApplyEffectToObject(DURATION_TYPE_INSTANT, eFire, oSource));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oMTarget));
DelayCommand(fTimeDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eMissile, oMTarget));
fTimeDelay += 2.5;
}
//GRAND ENDING!
fTimeDelay += 6.0;
//Grand Ending here Weird without darkness with a dragon flight to a big explosion.
fDist = GetDistanceBetween(oSource, oLTarget);
fDelay = fDist/(3.0 * log(fDist) + 2.0);
fDelay += fTimeDelay;
DelayCommand(fTimeDelay,ApplyEffectToObject(DURATION_TYPE_INSTANT, eFire, oSource));
DelayCommand(fTimeDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eMissile, oLTarget));
DelayCommand(fDelay,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_FIREBALL),oLTarget));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(323), oLTarget));
fTimeDelay = fDelay + 1.0;
DelayCommand(fTimeDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(488), oLTarget));
fTimeDelay += 5.0;
DelayCommand(fTimeDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(464), oLTarget));
fTimeDelay += 4.0;
DelayCommand(fTimeDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(477), oLTarget));
for(i=1;i<13;i++)
{
sTag = "FireworksSTarget" + IntToString(i);
oTarget = GetObjectByTag(sTag);
fDist = GetDistanceBetween(oSource, oTarget);
fDelay = fDist/(3.0 * log(fDist) + 2.0);
fDelay += fTimeDelay;
DelayCommand(fTimeDelay,ApplyEffectToObject(DURATION_TYPE_INSTANT, eFire, oSource));
DelayCommand(fTimeDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eMissile, oTarget));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(193), oTarget));
DelayCommand(fDelay+0.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(407), oTarget));
DelayCommand(fDelay+1.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(459), oTarget));
}
fTimeDelay += 5.0;
//Stop the Music
DelayCommand(fTimeDelay,MusicBattleStop(oArea));
//Turn TileLights back on
DelayCommand(fTimeDelay,ExecuteScript("g_lightson",oTarget));
//Clean up all the targets
fTimeDelay += 5.0;
DestroyObject(oSTarget1,fTimeDelay);
DestroyObject(oSTarget2,fTimeDelay);
DestroyObject(oSTarget3,fTimeDelay);
DestroyObject(oSTarget4,fTimeDelay);
DestroyObject(oSTarget5,fTimeDelay);
DestroyObject(oSTarget6,fTimeDelay);
DestroyObject(oSTarget7,fTimeDelay);
DestroyObject(oSTarget8,fTimeDelay);
DestroyObject(oSTarget9,fTimeDelay);
DestroyObject(oSTarget10,fTimeDelay);
DestroyObject(oSTarget11,fTimeDelay);
DestroyObject(oSTarget1,fTimeDelay);
DestroyObject(oMTarget,fTimeDelay);
DestroyObject(oMTarget2,fTimeDelay);
DestroyObject(oMTarget,fTimeDelay);
DestroyObject(oLTarget1,fTimeDelay);
DestroyObject(oLTarget,fTimeDelay);
DestroyObject(oLTarget,fTimeDelay);
//Allow for another show to start
DelayCommand(fTimeDelay,SetLocalInt(oArea,"FIREWORKSHOW",FALSE));
}