PRC8/trunk/smp/smp_ail_disinteg.nss
Jaysyn904 1662218bb4 Initial upload.
Adding base PRC 4.19a files to repository.
2022-10-07 13:51:24 -04:00

68 lines
2.2 KiB
Plaintext

/*:://////////////////////////////////////////////
//:: Spell Name Disintegrate : Destory NPC.
//:: Spell FileName SMP_AIL_Disinteg
//:://////////////////////////////////////////////
//:: Spell Effects Applied / Notes
//:://////////////////////////////////////////////
Executed from SMP_DisintegrateDamage(), using ExecuteScript after a 0.1
second delay on any NPC who should have died.
Only NPC's are destroyed utterly by the ray (using cutseen invsibility,
and damage, then destruction of body).
Objects of the NPC's are placed randomly around (if droppable).
Only affects destroyable things. Damage is in magical. Should bypass all
reductions. (I hope!)
The second script does the destroying of NPCs, as it is much easier to
ExecuteScript rather then assign command (which won't work on a dead person!)
It will:
- Set destroyable status (OBJECT_SELF)
- Create a dust thingy, move inventory.
- Destroy self.
//:://////////////////////////////////////////////
//:: Created By: Jasperre
//::////////////////////////////////////////////*/
#include "SMP_INC_SPELLS"
void main()
{
// Check if we are dead!
if(!GetIsDead(OBJECT_SELF)) return;
// Declare, and stop
location lSelf = GetLocation(OBJECT_SELF);
ClearAllActions();
SetIsDestroyable(FALSE, FALSE, FALSE);
// Apply cutseen invisibility
ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectCutsceneGhost(), OBJECT_SELF);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectVisualEffect(VFX_DUR_CUTSCENE_INVISIBILITY), OBJECT_SELF);
// We create a new dust thing
object oDust = CreateObject(OBJECT_TYPE_PLACEABLE, "SMP_dust", lSelf);
// Copy inventory
object oToCopy = GetFirstItemInInventory();
while(GetIsObjectValid(oToCopy))
{
// Droppable?
if(GetDroppableFlag(oToCopy))
{
// + Copy vars, when copied across.
CopyItem(oToCopy, oDust, TRUE);
DelayCommand(0.0, DestroyObject(oToCopy));
}
oToCopy = GetNextItemInInventory();
}
// Re-destroyable
SetIsDestroyable(TRUE, FALSE, FALSE);
// Destroy self
DelayCommand(0.1, DestroyObject(OBJECT_SELF));
}