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

52 lines
2.6 KiB
Plaintext

void main()
{
object oPC = GetItemActivator();
object oTarget = GetItemActivatedTarget();
location lLocation = GetLocation(oPC);
if (GetLevelByClass(CLASS_TYPE_WIZARD, oPC) >= 10)
{
if (GetTag(oTarget) == "BlackDiamond" || GetTag(oTarget) == "Ruby" || GetTag(oTarget) == "Sapphire" || GetTag(oTarget) == "Emerald" || GetTag(oTarget) == "Diamond"|| GetTag(oTarget) == "Citrine" || GetTag(oTarget) == "Iolite" || GetTag(oTarget) == "Pearl" || GetTag(oTarget) == "Peridot")
{
effect eEffect1 = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
effect eEffect2 = EffectVisualEffect(VFX_IMP_DUST_EXPLOSION);
effect eEffect3 = EffectVisualEffect(VFX_FNF_SUMMON_CELESTIAL);
effect eEffect4 = EffectVisualEffect(VFX_IMP_GREASE);
effect eEffect5 = EffectVisualEffect(VFX_IMP_LIGHTNING_M);
effect eEffect6 = EffectVisualEffect(VFX_IMP_TORNADO);
effect eEffect7 = EffectVisualEffect(VFX_FNF_IMPLOSION);
CreateObject(OBJECT_TYPE_PLACEABLE, GetTag(oTarget), lLocation, TRUE);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eEffect1, lLocation);
DelayCommand(1.0, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eEffect2, lLocation));
DelayCommand(2.0, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eEffect1, lLocation));
DelayCommand(3.0, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eEffect4, lLocation));
DelayCommand(4.0, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eEffect3, lLocation));
DelayCommand(5.0, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eEffect6, lLocation));
DelayCommand(6.0, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eEffect7, lLocation));
DelayCommand(7.0, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eEffect1, lLocation));
DelayCommand(8.0, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eEffect5, lLocation));
DelayCommand(8.0, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eEffect2, lLocation));
object oItemToTake1;
oItemToTake1 = GetItemPossessedBy(oPC, GetTag(oTarget));
//get the quantity stacked of a valid object, will be a positive integer if valid
// if the object is a stack, then reduce the quantity
// else just destroy the single item
if (GetItemStackSize(oItemToTake1) > 1) {
SetItemStackSize(oItemToTake1, GetItemStackSize(oItemToTake1)-1);
} else {
DestroyObject(oItemToTake1);
}
}
}
else
{
SendMessageToPC(oPC, "Only a Wizard of 10 seasons may use the Staff of Mithangard");
}
}