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"); } }