//Script Name: gc_add_save
//////////////////////////////////////////
//Created By: Genisys (Guile)
//Created On:   8/30/08
/////////////////////////////////////////
/*
This script goes in the ActionTaken
Event of a Conversation line, it will
Add AC to the item we are looking at
which an item the PC possessoses has
in it..
*/
////////////////////////////////////////
#include "x2_inc_itemprop"


//Main Script
void main()
{
object oPC = GetPCSpeaker();
int nSlot = GetLocalInt(oPC, "CRAFT_SLOT");
object oCraft = GetItemInSlot(nSlot ,oPC);
int nCost = GetLocalInt(oPC, "CRAFT_PAYMENT");
effect eEffect;

if (!GetIsObjectValid(oCraft))
{
 FloatingTextStringOnCreature("Your not wearing the item!!", oPC, FALSE);
 AssignCommand(oPC, ClearAllActions());
 return;
}

if(GetGold(oPC)<nCost)
{
FloatingTextStringOnCreature("You do not have enough gold!", oPC, FALSE);
AssignCommand(oPC, ClearAllActions()); //End the conversation!
return;
}

else
{
//Take the cost to craft..
TakeGoldFromCreature(nCost, oPC, TRUE);
eEffect = EffectVisualEffect(VFX_IMP_HOLY_AID);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect, oPC, 0.0f);
FloatingTextStringOnCreature("Your item has been crafted.", oPC, FALSE);
}

//Determine how much AC we are adding..
int nType = GetLocalInt(oPC, "CRAFT_SAVE");
int nBonus = GetLocalInt(oPC, "CRAFT_REGEN_TOTAL");

//What we are adding is AC
itemproperty ipAddAC;


if(nType != IP_CONST_SAVEVS_UNIVERSAL)
{
int nR;

if(nType == SAVING_THROW_FORT)
nR = IP_CONST_SAVEBASETYPE_FORTITUDE;
else if(nType == SAVING_THROW_REFLEX)
nR = IP_CONST_SAVEBASETYPE_REFLEX;
else if(nType == SAVING_THROW_WILL)
nR = IP_CONST_SAVEBASETYPE_WILL;

ipAddAC = ItemPropertyBonusSavingThrow(nR, nBonus);

//If you want to remove the existing first...
//IPRemoveMatchingItemProperties(oCraft, ITEM_PROPERTY_SAVING_THROW_BONUS, DURATION_TYPE_PERMANENT, nR);
//IPRemoveMatchingItemProperties(oCraft, ITEM_PROPERTY_SAVING_THROW_BONUS, DURATION_TYPE_PERMANENT, -1);

//AddItemProperty(DURATION_TYPE_PERMANENT, ipAddAC, oCraft);

IPSafeAddItemProperty(oCraft, ipAddAC, 0.0f, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, FALSE);
}

else if(nType == IP_CONST_SAVEVS_UNIVERSAL)
{

ipAddAC = ItemPropertyBonusSavingThrowVsX(nType, nBonus);

//Disabled...
//Remove ALL Fort / Reflex / Will Saves
//IPRemoveMatchingItemProperties(oCraft, ITEM_PROPERTY_SAVING_THROW_BONUS_SPECIFIC, DURATION_TYPE_PERMANENT, -1);

//Remove ALL Universal Saves as well..
//IPRemoveMatchingItemProperties(oCraft, ITEM_PROPERTY_SAVING_THROW_BONUS, DURATION_TYPE_PERMANENT, -1);

//Add the saving bonus, replacing all exact matching similar properties!
IPSafeAddItemProperty(oCraft, ipAddAC, 0.0f, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, FALSE);

}


//We don't want to delete this intergal because we can change it later..
//DeleteLocalInt(oPC, "CRAFT_TYPE");

}