Amon_PRC8/_module/nss/explosivekeg2.nss
Jaysyn904 c5cffc37af Initial Commit
Initial Commit [v1.01]
2025-04-03 19:00:46 -04:00

53 lines
2.0 KiB
Plaintext

void main()
{
object oCaster = OBJECT_SELF;
float fDelay;
effect eExplode = EffectVisualEffect(VFX_FNF_FIREBALL);
effect eShock = EffectVisualEffect(VFX_IMP_PULSE_FIRE);
effect eWash = EffectVisualEffect(VFX_FNF_FIRESTORM);
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M);
effect eShk = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
effect eDam;
location lTarget = GetLocation(OBJECT_SELF);
int bdam = d20(20) + 200;
int pdam = d20(20) + 200;
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode, lTarget);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eShk, lTarget);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eShock, lTarget);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eWash, lTarget);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eShk, lTarget);
object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE);
while (GetIsObjectValid(oTarget))
{
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(pdam, DAMAGE_TYPE_PIERCING), oTarget, 0.0f);
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(bdam, DAMAGE_TYPE_FIRE), oTarget, 0.0f);
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, lTarget, TRUE, OBJECT_TYPE_CREATURE);
}
//radius of the explosion check
float nRadius = 20.0;
// Only scan for creature objects, ignoring WPs, etc.
object oTarget2 = GetFirstObjectInShape(SHAPE_SPHERE,nRadius,lTarget,TRUE,OBJECT_TYPE_PLACEABLE);
while( oTarget2 != OBJECT_INVALID )
{
string sItemTag = GetTag(oTarget2);
if (sItemTag=="QuestVault")
{
DestroyObject(oTarget2);
}
if (sItemTag=="QuestVault2")
{
DestroyObject(oTarget2);
}
oTarget2 = GetNextObjectInShape(SHAPE_SPHERE,nRadius,lTarget,TRUE,OBJECT_TYPE_PLACEABLE);
}
DestroyObject(OBJECT_SELF);
ActionDoCommand(PlaySound("zep_explosion"));
}