Initial upload
Initial upload.
This commit is contained in:
233
_module/nss/fxw_inc.nss
Normal file
233
_module/nss/fxw_inc.nss
Normal file
@@ -0,0 +1,233 @@
|
||||
//////////////////////////////////
|
||||
/// Script: fxw_inc
|
||||
/// Purpose: include file for a Wand of FX
|
||||
/// Authors: Jhenne (tallonzek@hotmail.com)
|
||||
/// Dopple (dopple@why-bother-me.com)
|
||||
//////////////////////////////////
|
||||
// function for OnActivateItem
|
||||
|
||||
object oDM = GetLastSpeaker();
|
||||
object oMyTarget = GetLocalObject(oDM, "FXWandTarget");
|
||||
location lTargetLoc = GetLocalLocation(oDM, "FXWandLoc");
|
||||
int nRandom;
|
||||
float fRandom;
|
||||
|
||||
void FXWand_Firestorm()
|
||||
{
|
||||
|
||||
// FireStorm Effect
|
||||
|
||||
location lDMLoc = GetLocation ( oDM);
|
||||
|
||||
// tell the DM object to rain fire and destruction
|
||||
AssignCommand ( oDM, ApplyEffectAtLocation ( DURATION_TYPE_INSTANT, EffectVisualEffect ( VFX_FNF_METEOR_SWARM), lTargetLoc));
|
||||
AssignCommand ( oDM, DelayCommand (1.0, ApplyEffectAtLocation ( DURATION_TYPE_INSTANT, EffectVisualEffect (VFX_FNF_SCREEN_SHAKE), lTargetLoc)));
|
||||
|
||||
// create some fires
|
||||
object oTargetArea = GetArea(oDM);
|
||||
int nXPos, nYPos, nCount;
|
||||
for(nCount = 0; nCount < 15; nCount++)
|
||||
{
|
||||
nXPos = Random(30) - 15;
|
||||
nYPos = Random(30) - 15;
|
||||
|
||||
vector vNewVector = GetPosition(oDM);
|
||||
vNewVector.x += nXPos;
|
||||
vNewVector.y += nYPos;
|
||||
|
||||
location lFireLoc = Location(oTargetArea, vNewVector, 0.0);
|
||||
object oFire = CreateObject ( OBJECT_TYPE_PLACEABLE, "plc_flamelarge", lFireLoc, FALSE);
|
||||
object oDust = CreateObject ( OBJECT_TYPE_PLACEABLE, "plc_dustplume", lFireLoc, FALSE);
|
||||
DelayCommand ( 10.0, DestroyObject ( oFire));
|
||||
DelayCommand ( 14.0, DestroyObject ( oDust));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void FXWand_Earthquake()
|
||||
{
|
||||
// Earthquake Effect by Jhenne, 06/29/02
|
||||
// declare variables used for targetting and commands.
|
||||
location lDMLoc = GetLocation ( oDM);
|
||||
|
||||
// tell the DM object to shake the screen
|
||||
AssignCommand( oDM, ApplyEffectAtLocation ( DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), lTargetLoc));
|
||||
AssignCommand ( oDM, DelayCommand( 2.8, ApplyEffectAtLocation ( DURATION_TYPE_INSTANT, EffectVisualEffect ( VFX_FNF_SCREEN_BUMP), lTargetLoc)));
|
||||
AssignCommand ( oDM, DelayCommand( 3.0, ApplyEffectAtLocation ( DURATION_TYPE_INSTANT, EffectVisualEffect ( VFX_FNF_SCREEN_SHAKE), lTargetLoc)));
|
||||
AssignCommand ( oDM, DelayCommand( 4.5, ApplyEffectAtLocation ( DURATION_TYPE_INSTANT, EffectVisualEffect ( VFX_FNF_SCREEN_BUMP), lTargetLoc)));
|
||||
AssignCommand ( oDM, DelayCommand( 5.8, ApplyEffectAtLocation ( DURATION_TYPE_INSTANT, EffectVisualEffect ( VFX_FNF_SCREEN_BUMP), lTargetLoc)));
|
||||
// tell the DM object to play an earthquake sound
|
||||
AssignCommand ( oDM, PlaySound ("as_cv_boomdist1"));
|
||||
AssignCommand ( oDM, DelayCommand ( 2.0, PlaySound ("as_wt_thunderds3")));
|
||||
AssignCommand ( oDM, DelayCommand ( 4.0, PlaySound ("as_cv_boomdist1")));
|
||||
// create a dust plume at the DM and clicking location
|
||||
object oTargetArea = GetArea(oDM);
|
||||
int nXPos, nYPos, nCount;
|
||||
for(nCount = 0; nCount < 15; nCount++)
|
||||
{
|
||||
nXPos = Random(30) - 15;
|
||||
nYPos = Random(30) - 15;
|
||||
|
||||
vector vNewVector = GetPosition(oDM);
|
||||
vNewVector.x += nXPos;
|
||||
vNewVector.y += nYPos;
|
||||
|
||||
location lDustLoc = Location(oTargetArea, vNewVector, 0.0);
|
||||
object oDust = CreateObject ( OBJECT_TYPE_PLACEABLE, "plc_dustplume", lDustLoc, FALSE);
|
||||
DelayCommand ( 4.0, DestroyObject ( oDust));
|
||||
}
|
||||
}
|
||||
|
||||
void FXWand_EarthquakeDamage()
|
||||
{
|
||||
// Earthquake Effect by Jhenne, 06/29/02
|
||||
// declare variables used for targetting and commands.
|
||||
location lDMLoc = GetLocation ( oDM);
|
||||
|
||||
// tell the DM object to shake the screen
|
||||
AssignCommand( oDM, ApplyEffectAtLocation ( DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), lTargetLoc));
|
||||
AssignCommand ( oDM, DelayCommand( 2.8, ApplyEffectAtLocation ( DURATION_TYPE_INSTANT, EffectVisualEffect ( VFX_FNF_SCREEN_BUMP), lTargetLoc)));
|
||||
AssignCommand ( oDM, DelayCommand( 3.0, ApplyEffectAtLocation ( DURATION_TYPE_INSTANT, EffectVisualEffect ( VFX_FNF_SCREEN_SHAKE), lTargetLoc)));
|
||||
AssignCommand ( oDM, DelayCommand( 4.5, ApplyEffectAtLocation ( DURATION_TYPE_INSTANT, EffectVisualEffect ( VFX_FNF_SCREEN_BUMP), lTargetLoc)));
|
||||
AssignCommand ( oDM, DelayCommand( 5.8, ApplyEffectAtLocation ( DURATION_TYPE_INSTANT, EffectVisualEffect ( VFX_FNF_SCREEN_BUMP), lTargetLoc)));
|
||||
// tell the DM object to play an earthquake sound
|
||||
AssignCommand ( oDM, PlaySound ("as_cv_boomdist1"));
|
||||
AssignCommand ( oDM, DelayCommand ( 2.0, PlaySound ("as_wt_thunderds3")));
|
||||
AssignCommand ( oDM, DelayCommand ( 4.0, PlaySound ("as_cv_boomdist1")));
|
||||
object oTargetArea = GetArea(oDM);
|
||||
|
||||
object oKnockdownTarget = GetFirstObjectInShape(SHAPE_CUBE, 15.0, lDMLoc, OBJECT_TYPE_CREATURE);
|
||||
while(GetIsObjectValid(oKnockdownTarget))
|
||||
{
|
||||
if (GetIsDM(oKnockdownTarget) == FALSE)
|
||||
{
|
||||
if (GetSkillRank ( SKILL_DISCIPLINE, oKnockdownTarget) <= 9)
|
||||
{
|
||||
nRandom=d6();
|
||||
fRandom=IntToFloat(nRandom);
|
||||
DelayCommand(fRandom, AssignCommand ( oKnockdownTarget, ApplyEffectToObject (DURATION_TYPE_TEMPORARY, EffectKnockdown(), oKnockdownTarget, 6.0)));
|
||||
DelayCommand(fRandom, AssignCommand ( oKnockdownTarget, ApplyEffectToObject (DURATION_TYPE_INSTANT, EffectDamage(d20(), DAMAGE_TYPE_MAGICAL, DAMAGE_POWER_PLUS_FIVE), oKnockdownTarget)));
|
||||
}
|
||||
}
|
||||
oKnockdownTarget = GetNextObjectInShape(SHAPE_CUBE, 15.0, lDMLoc, OBJECT_TYPE_CREATURE);
|
||||
}
|
||||
|
||||
//Create dust plumes in random locations around the DM
|
||||
int nXPos, nYPos, nCount;
|
||||
for(nCount = 0; nCount < 15; nCount++)
|
||||
{
|
||||
nXPos = Random(30) - 15;
|
||||
nYPos = Random(30) - 15;
|
||||
|
||||
vector vNewVector = GetPosition(oDM);
|
||||
vNewVector.x += nXPos;
|
||||
vNewVector.y += nYPos;
|
||||
|
||||
location lDustLoc = Location(oTargetArea, vNewVector, 0.0);
|
||||
object oDust = CreateObject ( OBJECT_TYPE_PLACEABLE, "plc_dustplume", lDustLoc, FALSE);
|
||||
DelayCommand ( 4.0, DestroyObject ( oDust));
|
||||
}
|
||||
}
|
||||
|
||||
void FXWand_AppearEvil()
|
||||
{
|
||||
location lTarget = GetLocation( oDM);
|
||||
|
||||
AssignCommand( oDM, ApplyEffectAtLocation ( DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SUMMON_GATE), lTarget));
|
||||
}
|
||||
|
||||
void FXWand_AppearGood()
|
||||
{
|
||||
location lTarget = GetLocation( oDM);
|
||||
|
||||
AssignCommand( oDM, ApplyEffectAtLocation ( DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SUMMON_CELESTIAL), lTarget));
|
||||
}
|
||||
|
||||
void FXWand_SummonEvil()
|
||||
{
|
||||
location lTarget = GetLocation( oDM);
|
||||
|
||||
AssignCommand( oDM, DelayCommand( 5.0, ApplyEffectAtLocation ( DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SUMMON_GATE), lTargetLoc)));
|
||||
}
|
||||
|
||||
|
||||
void FXWand_SummonGood()
|
||||
{
|
||||
location lTarget = GetLocation( oDM);
|
||||
|
||||
AssignCommand( oDM, DelayCommand( 5.0, ApplyEffectAtLocation ( DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SUMMON_CELESTIAL), lTargetLoc)));
|
||||
}
|
||||
|
||||
void FXWand_DelayedSummon()
|
||||
{
|
||||
|
||||
AssignCommand ( oDM, DelayCommand ( 5.0, ApplyEffectAtLocation ( DURATION_TYPE_INSTANT, EffectVisualEffect ( VFX_FNF_SUMMON_MONSTER_3), lTargetLoc )));
|
||||
}
|
||||
|
||||
void FXWand_WolfHowl()
|
||||
{
|
||||
// Wolves Howling by Jhenne, 06/29/02
|
||||
|
||||
// get a random number and tell the DM object to play the matching sound.
|
||||
switch (Random(4))
|
||||
{
|
||||
case 0: AssignCommand ( oDM, PlaySound("as_an_wolfhowl1"));
|
||||
break;
|
||||
case 1: AssignCommand ( oDM, PlaySound("as_an_wolfhowl2"));
|
||||
break;
|
||||
case 2: AssignCommand ( oDM, PlaySound("as_an_wolveshwl1"));
|
||||
break;
|
||||
case 3: AssignCommand ( oDM, PlaySound("as_an_wolveshow2"));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void FXWand_Lightning()
|
||||
{
|
||||
// Lightning Strike by Jhenne. 06/29/02
|
||||
|
||||
// tell the DM object to create a Lightning visual effect at targetted location
|
||||
AssignCommand( oDM, ApplyEffectAtLocation ( DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_LIGHTNING_M), lTargetLoc));
|
||||
// tell the DM object to play a thunderclap
|
||||
AssignCommand ( oDM, PlaySound ("as_wt_thundercl3"));
|
||||
// create a scorch mark where the lightning hit
|
||||
object oScorch = CreateObject ( OBJECT_TYPE_PLACEABLE, "plc_weathmark", lTargetLoc, FALSE);
|
||||
object oTargetArea = GetArea(oDM);
|
||||
int nXPos, nYPos, nCount;
|
||||
for(nCount = 0; nCount < 5; nCount++)
|
||||
{
|
||||
nXPos = Random(10) - 5;
|
||||
nYPos = Random(10) - 5;
|
||||
|
||||
vector vNewVector = GetPositionFromLocation(lTargetLoc);
|
||||
vNewVector.x += nXPos;
|
||||
vNewVector.y += nYPos;
|
||||
|
||||
location lNewLoc = Location(oTargetArea, vNewVector, 0.0);
|
||||
AssignCommand( oDM, ApplyEffectAtLocation ( DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_LIGHTNING_S), lNewLoc));
|
||||
}
|
||||
DelayCommand ( 20.0, DestroyObject ( oScorch));
|
||||
}
|
||||
|
||||
void FXWand_WomanScream()
|
||||
{
|
||||
// Woman's Scream by Jhenne, 06/29/02
|
||||
|
||||
// get a random number and tell the DM object to play the matching sound.
|
||||
switch (Random(7))
|
||||
{
|
||||
case 0: AssignCommand ( oDM, PlaySound("as_pl_screamf1"));
|
||||
break;
|
||||
case 1: AssignCommand ( oDM, PlaySound("as_pl_screamf2"));
|
||||
break;
|
||||
case 2: AssignCommand ( oDM, PlaySound("as_pl_screamf3"));
|
||||
break;
|
||||
case 3: AssignCommand ( oDM, PlaySound("as_pl_screamf4"));
|
||||
break;
|
||||
case 4: AssignCommand ( oDM, PlaySound("as_pl_screamf5"));
|
||||
break;
|
||||
case 5: AssignCommand ( oDM, PlaySound("as_pl_screamf6"));
|
||||
break;
|
||||
case 6: AssignCommand (oDM, PlaySound("as_pl_skriekf2"));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user