#include "prc_feat_const"
#include "prc_class_const"
#include "prc_spell_const"
#include "prc_alterations"

void Discorp(object oPC,int iEquip)
{
  object oItem ;

  if (iEquip==2)
  {
     oItem=GetItemInSlot(INVENTORY_SLOT_CHEST,oPC);
     if ( GetLocalInt(oItem,"ShaDiscorp")) return;

        AddItemProperty(DURATION_TYPE_TEMPORARY,ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER,1),oItem,9999.0);
        SetLocalInt(oItem,"ShaDiscorp",1);
  }
  else if (iEquip==1)
  {
      oItem=GetItemLastUnequipped();
      if (!GetLocalInt(oItem,"ShaDiscorp")) return;
         RemoveSpecificProperty(oItem,ITEM_PROPERTY_ONHITCASTSPELL,IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER,0,1,"",-1,DURATION_TYPE_TEMPORARY);
      DeleteLocalInt(oItem,"ShaDiscorp");
  }
   else
  {
     oItem=GetItemInSlot(INVENTORY_SLOT_CHEST,oPC);
     if ( !GetLocalInt(oItem,"ShaDiscorp"))
     {
       AddItemProperty(DURATION_TYPE_TEMPORARY,ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER,1),oItem,9999.0);
       SetLocalInt(oItem,"ShaDiscorp",1);
     }
  }


}


void main()
{

     //Declare main variables.
    object oPC = OBJECT_SELF;
    object oSkin = GetPCSkin(oPC);

    int bDiscor= GetHasFeat(FEAT_SHADOWDISCOPOR, oPC) ? 1 : 0;

    if (GetLocalInt(oPC,"ONENTER")) return;
    if (bDiscor>0)   Discorp(oPC,GetLocalInt(oPC,"ONEQUIP"));


}