#include "craft_inc"
#include "horse_include"
#include "prc_class_const"

void ApplyAdditionalHP(object oPC, int iAmount, float fDuration)
{
    effect eHP;
    eHP=GetFirstEffect(oPC);
    while(GetIsEffectValid(eHP))
    {
        if(GetEffectType(eHP)==EFFECT_TYPE_TEMPORARY_HITPOINTS)
        {
            RemoveEffect(oPC, eHP);
            SendMessageToPC(oPC, "Removing Existing HP Buff");
        }
        eHP=GetNextEffect(oPC);
    }

    eHP=EffectTemporaryHitpoints(iAmount);
    ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eHP, oPC, fDuration);
    eHP=EffectVisualEffect(VFX_IMP_HOLY_AID);
    ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eHP, oPC, fDuration);
}

void main()
{
    object oItem = GetItemActivated();
    object oActivator = GetItemActivator();
    object oPC = GetItemActivator();
    object oTarget=GetItemActivatedTarget();
    location lActivator = GetLocation(oActivator);
    string sItemTag = GetTag(oItem);
    string sItemTag2 = GetResRef(oTarget);

    location lTarget = GetLocation(oTarget);
    int iSkill = GetSkillRank(SKILL_PERFORM, oPC); //Skill Modifier for ranks in perform
    int iRoll = d20(); //Skill Roll
    int iTotal = iRoll + iSkill; //DC Check
    string sTotal = IntToString(iTotal);
    effect eSong = EffectVisualEffect(VFX_DUR_BARD_SONG);
    GPA_OnActivate(oPC,oItem);

    ExecuteScript(GetTag(GetItemActivated()), OBJECT_SELF);
	
	int iBardic = GetLevelByClass(CLASS_TYPE_BARD, oPC) 
				+ GetLevelByClass(CLASS_TYPE_DIRGESINGER, oPC) 
				+ GetLevelByClass(CLASS_TYPE_DRAGONSONG_LYRIST, oPC) 
				+ GetLevelByClass(CLASS_TYPE_SUBLIME_CHORD, oPC) 
				+ GetLevelByClass(CLASS_TYPE_VIRTUOSO, oPC); 
				
    if (sItemTag == "em_bindstone")
    {
    ExecuteScript("em_onitmactvt", oPC);
    }

    if (sItemTag == "DyeKit")
    {
    AssignCommand(oPC, ActionStartConversation(oPC, "dye_dyekit", TRUE));
    }
    if (sItemTag == "ULITEM_139")
    {
    AssignCommand(oPC, ActionStartConversation(oPC, "dye_dyekit", TRUE));
    }
    if (sItemTag == "ULITEM_191")
    {
    GiveXPToCreature(oPC, 200);
    ExecuteScript("wizlevel1", oPC);
    ExecuteScript("wizlevel1", oPC);
    ExecuteScript("wizlevel1", oPC);
    ExecuteScript("wizlevel1", oPC);
    }
    if (sItemTag == "ULITEM_192")
    {
    GiveXPToCreature(oPC, 250);
    ExecuteScript("wizlevel1", oPC);
    ExecuteScript("wizlevel2", oPC);
    ExecuteScript("wizlevel2", oPC);
    ExecuteScript("wizlevel2", oPC);
    ExecuteScript("wizlevel2", oPC);
    }
    if (sItemTag == "ULITEM_193")
    {
    GiveXPToCreature(oPC, 300);
    ExecuteScript("wizlevel1", oPC);
    ExecuteScript("wizlevel2", oPC);
    ExecuteScript("wizlevel3", oPC);
    ExecuteScript("wizlevel3", oPC);
    ExecuteScript("wizlevel3", oPC);
    ExecuteScript("wizlevel3", oPC);
    }
    if (sItemTag=="EXPBOOK")
    {
    GiveXPToCreature(oPC, 1000);
    effect eHP;
    eHP=EffectVisualEffect(VFX_IMP_DIVINE_STRIKE_HOLY);
    ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eHP, oPC, 0.0f);
    }
    if ((sItemTag=="ULITEM_111")||(sItemTag=="ULITEM_112")||(sItemTag=="ULITEM_113")||(sItemTag=="ULITEM_114")||(sItemTag=="ULITEM_115")||(sItemTag=="ULITEM_116")||(sItemTag=="ULITEM_117"))
    {
    GiveXPToCreature(oPC, 500);
    effect eHP;
    eHP=EffectVisualEffect(VFX_IMP_DIVINE_STRIKE_HOLY);
    ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eHP, oPC, 0.0f);
    }

    if (sItemTag=="hornofpaerun")
    {
    ExecuteScript("hornofpaerun", OBJECT_SELF);
    }
    if (sItemTag=="Gher2")
    {
    ExecuteScript("gherportal", OBJECT_SELF);
    }
    if (sItemTag=="ULITEM_127")
    {
    ExecuteScript("gherportal", OBJECT_SELF);
    }


    if (sItemTag=="ML1")
    {
        //get object that activated item
        object oActivator = GetItemActivator();

        // some speech (for debugging too)
        //AssignCommand(oActivator, SpeakString("Hi! I'm the sword."));

        //create TalkingSwordAvator object
        //ActionJumpToLocation and JumpToLocation don't seem to work with placeable objects...
        object oSwordAvatar = CreateObject(OBJECT_TYPE_PLACEABLE, "talkingbeads", GetLocation(oActivator), FALSE);

        //for some reason if I swap oActvator and oSwordAvatar around it doesn't work.
        AssignCommand(oActivator, ActionStartConversation(oSwordAvatar, "", FALSE));

        //In the conversation script when the conversation ends, I destroy the object
    }


    if (sItemTag=="ML2")
    {
    AssignCommand(oPC, PlaySound("as_na_lavaburst1"));
    AssignCommand(oPC, ActionCastSpellAtObject(SPELL_GREATER_OWLS_WISDOM, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
    AssignCommand(oPC, ActionCastSpellAtObject(SPELL_CURE_LIGHT_WOUNDS, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
    ApplyAdditionalHP(oPC, 30, 3600.0);
    ActionStartConversation(oPC,"prayerbeads",TRUE);
    }
    if (sItemTag=="ML3")
    {
    AssignCommand(oPC, PlaySound("as_na_lavaburst1"));
    AssignCommand(oPC, ActionCastSpellAtObject(SPELL_GREATER_OWLS_WISDOM, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
    AssignCommand(oPC, ActionCastSpellAtObject(SPELL_CURE_MODERATE_WOUNDS, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
    ApplyAdditionalHP(oPC, 40, 3600.0);
    ActionStartConversation(oPC,"prayerbeads",TRUE);
    }
    if (sItemTag=="ML4")
    {
    AssignCommand(oPC, PlaySound("as_na_lavaburst1"));
    AssignCommand(oPC, ActionCastSpellAtObject(SPELL_GREATER_OWLS_WISDOM, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
    AssignCommand(oPC, ActionCastSpellAtObject(SPELL_CURE_SERIOUS_WOUNDS, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
    ApplyAdditionalHP(oPC, 50, 3600.0);
    ActionStartConversation(oPC,"prayerbeads",TRUE);
    }
    if (sItemTag=="ML5")
    {
    AssignCommand(oPC, PlaySound("as_na_lavaburst1"));
    AssignCommand(oPC, ActionCastSpellAtObject(SPELL_GREATER_OWLS_WISDOM, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
    AssignCommand(oPC, ActionCastSpellAtObject(SPELL_CURE_CRITICAL_WOUNDS, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
    ApplyAdditionalHP(oPC, 60, 3600.0);
    ActionStartConversation(oPC,"prayerbeads",TRUE);
    }
    if (sItemTag=="ML6")
    {
    AssignCommand(oPC, PlaySound("as_na_lavaburst1"));
    AssignCommand(oPC, ActionCastSpellAtObject(SPELL_GREATER_OWLS_WISDOM, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
    AssignCommand(oPC, ActionCastSpellAtObject(SPELL_CURE_CRITICAL_WOUNDS, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
    ApplyAdditionalHP(oPC, 60, 3600.0);
    ActionStartConversation(oPC,"prayerbeads",TRUE);
    }
    if (sItemTag=="ML7")
    {
    AssignCommand(oPC, PlaySound("as_na_lavaburst1"));
    AssignCommand(oPC, ActionCastSpellAtObject(SPELL_GREATER_OWLS_WISDOM, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
    AssignCommand(oPC, ActionCastSpellAtObject(SPELL_CURE_CRITICAL_WOUNDS, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
    ApplyAdditionalHP(oPC, 80, 3600.0);
    ActionStartConversation(oPC,"prayerbeads",TRUE);
    }
    if (sItemTag=="ML8")
    {
    AssignCommand(oPC, PlaySound("as_na_lavaburst1"));
    AssignCommand(oPC, ActionCastSpellAtObject(SPELL_GREATER_OWLS_WISDOM, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
    AssignCommand(oPC, ActionCastSpellAtObject(SPELL_HEAL, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
    ApplyAdditionalHP(oPC, 100, 3600.0);
    ActionStartConversation(oPC,"prayerbeads",TRUE);
    }
    if (sItemTag=="ML9")
    {
    AssignCommand(oPC, PlaySound("as_na_lavaburst1"));
    AssignCommand(oPC, ActionCastSpellAtObject(SPELL_GREATER_OWLS_WISDOM, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
    AssignCommand(oPC, ActionCastSpellAtObject(SPELL_MASS_HEAL, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
    ApplyAdditionalHP(oPC, 200, 3600.0);
    ActionStartConversation(oPC,"prayerbeads",TRUE);
    }
    if (sItemTag=="MLavenger")
    {
    AssignCommand(oPC, PlaySound("as_na_lavaburst1"));
    AssignCommand(oPC, ActionCastSpellAtObject(SPELL_GREATER_OWLS_WISDOM, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
    AssignCommand(oPC, ActionCastSpellAtObject(SPELL_MASS_HEAL, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
    ApplyAdditionalHP(oPC, 200, 3600.0);
    ActionStartConversation(oPC,"prayerbeads",TRUE);
    }
    if (sItemTag=="HradicTome")
    {
    AssignCommand(oPC, PlaySound("as_na_lavaburst2"));
    AssignCommand(oPC, ActionCastSpellAtObject(SPELL_GREATER_STONESKIN, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
    AssignCommand(oPC, ActionCastSpellAtObject(SPELL_HEALING_CIRCLE, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
    }

    if (sItemTag=="LQ6")
    {
    ExecuteScript("hornofpaerun", OBJECT_SELF);
    }
    if (sItemTag=="KelObjectHigh183")
    {
    ExecuteScript("gaunt_sapph", OBJECT_SELF);
    }
    if (sItemTag=="KelObjectHigh184")
    {
    ExecuteScript("gaunt_ruby", OBJECT_SELF);
    }
    if (sItemTag=="KelObjectHigh185")
    {
    ExecuteScript("gaunt_emer", OBJECT_SELF);
    }
    if (sItemTag=="AshenEnt1")
    {
    ExecuteScript("entwater", OBJECT_SELF);
    }
    if (sItemTag=="KryxStaff")
    {
    ExecuteScript("kryxstaff2", OBJECT_SELF);
    }
    if (sItemTag=="ExplosiveKeg")
    {
    CreateObject(OBJECT_TYPE_PLACEABLE, "explosivekeg", lActivator);
    }
    if (sItemTag=="friedgal3")
    {
    CreateObject(OBJECT_TYPE_CREATURE, "summonedsloven", lActivator);
    CreateObject(OBJECT_TYPE_CREATURE, "summonedsloven", lActivator);
    CreateObject(OBJECT_TYPE_CREATURE, "summonedsloven", lActivator);
    CreateObject(OBJECT_TYPE_CREATURE, "summonedsloven", lActivator);
    CreateObject(OBJECT_TYPE_CREATURE, "summonedsloven", lActivator);
    }
    if (sItemTag=="ssrall0012")
    {
    ExecuteScript("underworldstaff", OBJECT_SELF);
    }
    if (sItemTag=="Qetesh2")
    {
        ApplyAdditionalHP(oPC, 1000, 3600.0);
    }
    if (sItemTag=="OL1")
    {
        ApplyAdditionalHP(oPC, 10, 3600.0);
    }
    if (sItemTag=="OL2")
    {
        ApplyAdditionalHP(oPC, 10, 3600.0);
    }
    if (sItemTag=="OL3")
    {
        ApplyAdditionalHP(oPC, 20, 3600.0);
    }
    if (sItemTag=="OL4")
    {
        ApplyAdditionalHP(oPC, 20, 3600.0);
    }
    if (sItemTag=="OL5")
    {
        ApplyAdditionalHP(oPC, 50, 3600.0);
    }
    if (sItemTag=="OL6")
    {
        ApplyAdditionalHP(oPC, 75, 3600.0);
    }
    if (sItemTag=="OL7")
    {
        ApplyAdditionalHP(oPC, 75, 3600.0);
    }
    if (sItemTag=="REDEMPTION")
    {
        ApplyAdditionalHP(oPC, 100, 3600.0);
    }
    if (sItemTag=="HP_ITEM_05")
    {
        ApplyAdditionalHP(oPC, 5, 3600.0);
    }
    if (sItemTag=="HP_ITEM_10")
    {
        ApplyAdditionalHP(oPC, 10, 3600.0);
    }
    if (sItemTag=="HP_ITEM_15")
    {
        ApplyAdditionalHP(oPC, 15, 3600.0);
    }
    if (sItemTag=="HP_ITEM_20")
    {
        ApplyAdditionalHP(oPC, 20, 3600.0);
    }
    if (sItemTag=="HeijanMist")
    {
        ApplyAdditionalHP(oPC, 20, 3600.0);
    }
    if (sItemTag=="WaeyBread")
    {
        ApplyAdditionalHP(oPC, 20, 3600.0);
    }
    if (sItemTag=="MilitiaRations")
    {
        ApplyAdditionalHP(oPC, 20, 3600.0);
    }
    if (sItemTag=="Chimay")
    {
        ApplyAdditionalHP(oPC, 200, 3600.0);
    }
    if (sItemTag=="AmanbrakulHoney")
    {
        ApplyAdditionalHP(oPC, 30, 3600.0);
    }
    if (sItemTag=="OpiumSyrup")
    {
        ApplyAdditionalHP(oPC, 35, 3600.0);
    }
    if (sItemTag=="MilitiaRations2")
    {
        ApplyAdditionalHP(oPC, 30, 3600.0);
    }
    if (sItemTag=="HurWhiskey")
    {
        ApplyAdditionalHP(oPC, 25, 3600.0);
    }
    if (sItemTag=="DracheBrau")
    {
        ApplyAdditionalHP(oPC, 20, 3600.0);
    }
    if (sItemTag=="ChurchBlessing")
    {
        ApplyAdditionalHP(oPC, 50, 3600.0);
    }
    if (sItemTag=="PearlBombDet")
    {
        ExecuteScript("pearlbombactivat", OBJECT_SELF);
    }
    if (sItemTag=="PearlBombKit")
    {
        ExecuteScript("pearlbomb", OBJECT_SELF);
    }
    if (sItemTag=="Garganibil3")
    {
        ApplyAdditionalHP(oPC, 40, 3600.0);
    }
    if (sItemTag=="HP_ITEM_40")
    {
        ApplyAdditionalHP(oPC, 40, 3600.0);
    }
    if (sItemTag=="HP_ITEM_50")
    {
        ApplyAdditionalHP(oPC, 50, 3600.0);
    }
    if (sItemTag=="HP_ITEM_75")
    {
        ApplyAdditionalHP(oPC, 75, 3600.0);
    }
    if (sItemTag=="Rath3")
    {
        ApplyAdditionalHP(oPC, 100, 3600.0);
    }
    if (sItemTag=="BL1")
    {
        AssignCommand(oPC, PlaySound("as_an_crynight1"));
        DelayCommand(3.0, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_CURE_LIGHT_WOUNDS, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
        DelayCommand(4.0, ApplyAdditionalHP(oPC, 40, 3600.0));
    }
    if (sItemTag=="BL2")
    {
        AssignCommand(oPC, PlaySound("as_an_crynight2"));
        DelayCommand(3.0, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_CURE_MODERATE_WOUNDS, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
        DelayCommand(4.0, ApplyAdditionalHP(oPC, 60, 3600.0));
    }
    if (sItemTag=="BL3")
    {
        AssignCommand(oPC, PlaySound("as_an_crynight2"));
        DelayCommand(3.0, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_CURE_SERIOUS_WOUNDS, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
        DelayCommand(4.0, ApplyAdditionalHP(oPC, 80, 3600.0));
    }

    string sHealers = GetStringRight(sItemTag, 10);
    if (sHealers=="HealersEye")
    {
    ExecuteScript("eyerez", oTarget);
    }

    if (sItemTag=="BL4")
    {
        AssignCommand(oPC, PlaySound("as_an_crynight4"));
        AssignCommand(oPC, ActionCastSpellAtObject(SPELL_BALAGARNSIRONHORN, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
        DelayCommand(3.0, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_CURE_CRITICAL_WOUNDS, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
        DelayCommand(4.0, ApplyAdditionalHP(oPC, 100, 3600.0));
    }
    if (sItemTag=="BL5")
    {
        AssignCommand(oPC, PlaySound("as_an_crynight3"));
        AssignCommand(oPC, ActionCastSpellAtObject(SPELL_BALAGARNSIRONHORN, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
        DelayCommand(3.0, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_HEAL, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
        DelayCommand(4.0, ApplyAdditionalHP(oPC, 150, 3600.0));
    }
    if (sItemTag=="thebutcher2")
    {
        AssignCommand(oPC, PlaySound("as_pl_cryingf3"));
        ExecuteScript("wallspike", oPC);
        object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, lTarget, TRUE, OBJECT_TYPE_CREATURE);
        while (GetIsObjectValid(oTarget))
        {
        ActionWait(0.5);
        ExecuteScript("suicidethentil", oTarget);
        oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, lTarget, TRUE, OBJECT_TYPE_CREATURE);
        }
    }

    if (sItemTag=="Eraiduln")
    {
        effect eAmulet1 = EffectVisualEffect(VFX_BEAM_BLACK);
        effect eAmulet2 = EffectVisualEffect(VFX_BEAM_CHAIN);
        DelayCommand(1.5, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eAmulet1, lActivator));
        DelayCommand(2.0, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eAmulet2, lActivator));
        AssignCommand(oPC, PlaySound("sim_shwngevil01"));
        DelayCommand(0.5, AssignCommand(oPC, PlaySound("c_shadow_bat1")));
        SendMessageToPC(oPC, "Baron Eraiduln is with you.");
        DelayCommand(2.0, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_HEAL, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
        DelayCommand(2.5, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_CIRCLE_OF_DEATH, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
        DelayCommand(3.0, ApplyAdditionalHP(oPC, 1000, 3600.0));
        DelayCommand(5.0, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_BLESS, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
        DelayCommand(7.0, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_GREATER_BULLS_STRENGTH, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
        DelayCommand(8.5, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_GREATER_CATS_GRACE, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
        DelayCommand(10.5, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_EPIC_MAGE_ARMOR, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
        DelayCommand(15.0, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_DARKVISION, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
        DelayCommand(20.5, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_GREATER_EAGLE_SPLENDOR, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
        DelayCommand(25.5, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_GHOSTLY_VISAGE, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
        DelayCommand(35.0, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_GREATER_FOXS_CUNNING, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
        DelayCommand(40.5, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_GREATER_OWLS_WISDOM, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
        DelayCommand(43.5, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_GREATER_STONESKIN, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
        DelayCommand(47.5, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_GHOSTLY_VISAGE, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
        DelayCommand(50.0, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_SHADOW_SHIELD, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
        DelayCommand(55.5, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_ROD_OF_WONDER, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
        DelayCommand(56.5, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_ROD_OF_WONDER, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
        DelayCommand(57.5, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_ROD_OF_WONDER, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
        DelayCommand(58.5, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_ROD_OF_WONDER, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
        DelayCommand(59.5, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_ROD_OF_WONDER, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
        DelayCommand(60.0, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_HEAL, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
    }
    if (sItemTag=="TomeofAmon")
    {
        effect eAmulet = EffectVisualEffect(VFX_IMP_PULSE_HOLY);
        DelayCommand(3.0, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eAmulet, lActivator));
        AssignCommand(oPC, PlaySound("as_wt_thundercl3"));
        SendMessageToPC(oPC, "Amon's grace is bestowed upon you.");
        DelayCommand(3.0, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_HASTE, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
        DelayCommand(3.0, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_HEAL, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
        DelayCommand(3.0, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_HOLY_AURA, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
        DelayCommand(4.0, ApplyAdditionalHP(oPC, 800, 3600.0));
    }
    if (sItemTag=="IL9")
    {
        effect eAmulet = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE);
        DelayCommand(3.0, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eAmulet, lActivator));
        AssignCommand(oPC, PlaySound("as_an_wolfhowl2"));
        SendMessageToPC(oPC, "The spirit of the wolf fills you.");
        DelayCommand(3.0, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_HASTE, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
        DelayCommand(3.0, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_HEAL, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
        DelayCommand(4.0, ApplyAdditionalHP(oPC, 500, 3600.0));
    }
    if (sItemTag=="LootRation1")
    {
        ApplyAdditionalHP(oPC, 20, 3600.0);
    }
    if (sItemTag=="LootRation2")
    {
        ApplyAdditionalHP(oPC, 30, 3600.0);
    }
    if (sItemTag=="LootRation3")
    {
        ApplyAdditionalHP(oPC, 40, 3600.0);
    }
    if (sItemTag=="SeaRations")
    {
        ApplyAdditionalHP(oPC, 40, 3600.0);
    }
    if (sItemTag=="ConstableSupply")
    {
        ApplyAdditionalHP(oPC, 40, 3600.0);
        AssignCommand(oPC, ActionCastSpellAtObject(SPELL_BLESS, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
        AssignCommand(oPC, ActionCastSpellAtObject(SPELL_HASTE, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
    }
    if (sItemTag=="LootRation4")
    {
        ApplyAdditionalHP(oPC, 50, 3600.0);
    }
    if (sItemTag=="LootRation5")
    {
        ApplyAdditionalHP(oPC, 100, 3600.0);
    }
    if (sItemTag=="WytalinGeneralsSword")
    {
        ExecuteScript("set_wytalin", oPC);
    }
    if (sItemTag=="IantakGeneralsSword")
    {
        ExecuteScript("set_iantak", oPC);
    }
    if (sItemTag=="GhulumGeneralsSword")
    {
        ExecuteScript("set_ghulum", oPC);
    }
    if (sItemTag=="StaffofMithangard")
    {
        ExecuteScript("staffofmith", oPC);
    }

   //CRAFTING BOOKS
   if(GetTag(oItem)=="BakingCraft")
   {
        int smithNumber = GetCampaignInt(GZ_AMON_CRAFT, "GZ_DB_BAKING!", oPC);
        FloatingTextStringOnCreature("Your Baking Skill is  " + IntToString(smithNumber),oPC);
   }

   if(GetTag(oItem)=="CraftBook")
   {
        int woodNumber = GetCampaignInt(GZ_AMON_CRAFT, "GZ_BD_WOODCRAFT!", oPC);
        FloatingTextStringOnCreature("Your Wood Crafting Skill is  " + IntToString(woodNumber),oPC);
   }

    if(GetTag(oItem)=="SmeltingCraftBook")
   {
        int smithNumber = GetCampaignInt(GZ_AMON_CRAFT, "GZ_DB_SMELTING!", oPC);
        FloatingTextStringOnCreature("Your smelting Skill is  " + IntToString(smithNumber),oPC);
   }

    if(GetTag(oItem)=="SmithingCraftBook")
   {
        int smithNumber = GetCampaignInt(GZ_AMON_CRAFT, "GZ_DB_SMITHING!", oPC);
        FloatingTextStringOnCreature("Your smithing Skill is  " + IntToString(smithNumber),oPC);
   }

   if (sItemTag=="mc_it_quickslot")
   {
   ExecuteScript("mc_it_quickslot", OBJECT_SELF);
   }
   if (GetTag(oItem)=="BardsLuteofPlay")
   {
    AssignCommand(oPC, ActionStartConversation(oPC, "bards_music", TRUE));
    return;
   }
   //CRAFT ITEMS
   if(GetTag(oItem)=="CraftKnife")
   {
     AssignCommand(oPC, ActionStartConversation(oPC, "tr_woodcraft", TRUE));
      return;
   }
   if(GetTag(oItem)=="BriarPipe")
   {
    ExecuteScript("briarpipe", oPC);
   }
   if(GetTag(oItem)=="AmonDT01")
   {
    ExecuteScript("create_amonkey", oPC);
   }
   if(GetTag(oItem)=="AL9")
   {
    ExecuteScript("amonsblessing", oPC);
   }
   if(GetTag(oItem)=="StaffofStorms")
   {
    ExecuteScript("staffofstorms2", oPC);
   }
   if(GetTag(oItem)=="SummonStaff1")
   {
    ExecuteScript("staffsummon1", oPC);
   }
   if(GetTag(oItem)=="SummonStaff2")
   {
    ExecuteScript("staffsummon2", oPC);
   }

   if(GetTag(oItem)=="KeltriaItemDeleteWand")
   {
     if (GetStringLeft(sItemTag2, 9) == "kelobject")
        {
            DestroyObject(oTarget);
        }
   }
 if(GetTag(oItem)== "Drum")
    {
    /* int iBard = GetLevelByClass(CLASS_TYPE_BARD, oPC); */
    if (iBardic >0)
        {
        if (iTotal >= 20) //DC for using a Drum is 15
            {
            int i;
            int done;
            effect eHaste;
            object oGroup;
            effect eCast = EffectVisualEffect(VFX_IMP_HASTE);
            FloatingTextStringOnCreature("*Bard Song Success*", oPC, TRUE);
            SendMessageToPC(oPC, "Skill Roll: " + sTotal + ". Target DC 15");
            eHaste = EffectHaste();
            ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSong, oPC, 18.0);
            ApplyEffectToObject(DURATION_TYPE_INSTANT, eCast, oPC);
            ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eHaste, oPC, 18.0);
            for (i = 0; i < 6 && !done; i++)    //Apply Bardsong to up to 6 faction members (PCs) within 30 meters
                {
                oGroup = GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_FRIEND, oPC, i);
                if ( oGroup != OBJECT_INVALID && (GetDistanceBetween(oPC, oGroup) <= 30.0) )
                    {
                    ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eHaste, oGroup, 18.0);
                    ApplyEffectToObject(DURATION_TYPE_INSTANT, eCast, oGroup);
                    }
                else
                    {
                    done = TRUE;
                    }
                }
            }
        else
            {
            FloatingTextStringOnCreature("*Bard Song Failure*", oPC, TRUE);
            SendMessageToPC(oPC, "Skill Roll: " + sTotal + ". Target DC 15");
            }
        }
    else
        {
        AssignCommand(oPC, ActionSpeakString("Only a bard has the experience to use this item properly."));
        }
    }

   if(GetTag(oItem)=="Mandolin")
    {
    /* int iBard = GetLevelByClass(CLASS_TYPE_BARD, oPC); */
    if (iBardic > 0)
        {
        if (iTotal >= 20)  //DC for using a Mandolin is 15
            {
            int i;
            int done;
            effect eRegen;
            object oGroup;
            effect eCast = EffectVisualEffect(VFX_IMP_HEALING_G);
            FloatingTextStringOnCreature("*Bard Song Success*", oPC, TRUE);
            SendMessageToPC(oPC, "Skill Roll: " + sTotal + ". Target DC 15");
            eRegen = EffectRegenerate(1, 3.0);
            ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSong, oPC, 18.0);
            ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eRegen, oPC, 18.0);
            ApplyEffectToObject(DURATION_TYPE_INSTANT, eCast, oPC);
            for (i = 0; i < 6 && !done; i++)    //Apply Bardsong to up to 6 faction members (PCs) within 30 meters
                {
                oGroup = GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_FRIEND, oPC, i);
                if ( oGroup != OBJECT_INVALID && (GetDistanceBetween(oPC, oGroup) <= 30.0) )
                    {
                    ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eRegen, oGroup, 18.0);
                    ApplyEffectToObject(DURATION_TYPE_INSTANT, eCast, oGroup);
                    }
                else
                    {
                    done = TRUE;
                    }
                }

            }
        else
            {
            FloatingTextStringOnCreature("*Bard Song Failure*", oPC, TRUE);
            SendMessageToPC(oPC, "Skill Roll: " + sTotal + ". Target DC 15");
            }
        }
    else
        {
        AssignCommand(oPC, ActionSpeakString("Only a bard has the experience to use this item properly."));
        }
    }

   if(GetTag(oItem)=="Pipes")
    {
    /* int iBard = GetLevelByClass(CLASS_TYPE_BARD, oPC); */
    if (iBardic > 0)
        {
        if (iTotal >=20) //DC for using Pipes is 18
            {
            int i;
            int done;
            effect eInvis;
            object oGroup;
            FloatingTextStringOnCreature("*Bard Song Success*", oPC, TRUE);
            SendMessageToPC(oPC, "Skill Roll: " + sTotal + ". Target DC 18");
            eInvis = EffectInvisibility(INVISIBILITY_TYPE_NORMAL);
            ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSong, oPC, 18.0);
            ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eInvis, oPC, 18.0);
            for (i = 0; i < 6 && !done; i++)    //Apply Bardsong to up to 6 faction members (PCs) within 30 meters
                {
                oGroup = GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_FRIEND, oPC, i);
                if ( oGroup != OBJECT_INVALID && (GetDistanceBetween(oPC, oGroup) <= 30.0) )
                    ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eInvis, oGroup, 18.0);
                else
                    done = TRUE;
                }
            }
        else
            {
            FloatingTextStringOnCreature("*Bard Song Failure*", oPC, TRUE);
            SendMessageToPC(oPC, "Skill Roll: " + sTotal + ". Target DC 18");
            }
        }
    else
        {
        AssignCommand(oPC, ActionSpeakString("Only a bard has the experience to use this item properly."));
        }
    }

   if(GetTag(oItem)=="Horn")
    {
    /* int iBard = GetLevelByClass(CLASS_TYPE_BARD, oPC); */
    if (iBardic > 0)
        {
        if (iTotal >=20) //DC for using a Horn is 18
            {
            int i;
            int done;
            effect eShield;
            object oGroup;
            effect eCast = EffectVisualEffect(VFX_IMP_AC_BONUS);
            FloatingTextStringOnCreature("*Bard Song Success*", oPC, TRUE);
            SendMessageToPC(oPC, "Skill Roll: " + sTotal + ". Target DC 18");
            eShield = EffectDamageShield(1, DAMAGE_BONUS_1d10, DAMAGE_TYPE_SONIC);
            ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSong, oPC, 18.0);
            ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eShield, oPC, 18.0);
            ApplyEffectToObject(DURATION_TYPE_INSTANT, eCast, oPC);
            for (i = 0; i < 6 && !done; i++)    //Apply Bardsong to up to 6 faction members (PCs) within 30 meters
                {
                oGroup = GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_FRIEND, oPC, i);
                if ( oGroup != OBJECT_INVALID && (GetDistanceBetween(oPC, oGroup) <= 30.0) )
                    {
                    ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eShield, oGroup, 18.0);
                    ApplyEffectToObject(DURATION_TYPE_INSTANT, eCast, oGroup);
                    }
                else
                    {
                    done = TRUE;
                    }
                }
            }
        else
            {
            FloatingTextStringOnCreature("*Bard Song Failure*", oPC, TRUE);
            SendMessageToPC(oPC, "Skill Roll: " + sTotal + ". Target DC 18");
            }
        }
    else
        {
        AssignCommand(oPC, ActionSpeakString("Only a bard has the experience to use this item properly."));
        }
    }

   if(GetTag(oItem)=="Harp")
    {
    /* int iBard = GetLevelByClass(CLASS_TYPE_BARD, oPC); */
    if (iBardic > 0)
        {
        if (iTotal >=20) //DC for using a Harp is 21
            {
            int i;
            int done;
            effect eSpell;
            object oGroup;
            effect eCast = EffectVisualEffect(VFX_IMP_GLOBE_USE);
            FloatingTextStringOnCreature("*Bard Song Success*", oPC, TRUE);
            SendMessageToPC(oPC, "Skill Roll: " + sTotal + ". Target DC 21");
            eSpell = EffectSpellImmunity(SPELL_ALL_SPELLS);
            ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSong, oPC, 18.0);
            ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSpell, oPC, 18.0);
            ApplyEffectToObject(DURATION_TYPE_INSTANT, eCast, oPC);
            for (i = 0; i < 6 && !done; i++)    //Apply Bardsong to up to 6 faction members (PCs) within 30 meters
                {
                oGroup = GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_FRIEND, oPC, i);
                if ( oGroup != OBJECT_INVALID && (GetDistanceBetween(oPC, oGroup) <= 30.0) )
                    {
                    ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSpell, oGroup, 18.0);
                    ApplyEffectToObject(DURATION_TYPE_INSTANT, eCast, oGroup);
                    }
                else
                    {
                    done = TRUE;
                    }
                }
            }
        else
            {
            FloatingTextStringOnCreature("*Bard Song Failure*", oPC, TRUE);
            SendMessageToPC(oPC, "Skill Roll: " + sTotal + ". Target DC 21");
            }
        }
    else
        {
        AssignCommand(oPC, ActionSpeakString("Only a bard has the experience to use this item properly."));
        }
    }
}