#include "prc_alterations" #include "prc_class_const" void ChooseWeapon(object oPC, object oWeapon) { string sName = GetName(oWeapon); SetLocalInt(oPC, "HAS_CHOSEN_WEAPON", 2); SetLocalInt(oWeapon, "CHOSEN_WEAPON", 2); SetLocalObject(oPC, "CHOSEN_WEAPON", oWeapon); if (GetPlotFlag(oWeapon) == FALSE) { SetLocalInt(oWeapon, "CHOSEN_WEAPON_PLOT", TRUE); SetPlotFlag(oWeapon, TRUE); } SendMessageToPC(oPC, "You have chosen "+sName+" to be your chosen weapon."); AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyVisualEffect(ITEM_VISUAL_HOLY), oWeapon, 0.0); DelayCommand(0.1, ExecuteScript("prc_arcduel", oPC)); // reevaluate things so the weapon bonus is applied. } void UnchooseWeapon(object oPC) { object oWeapon = GetLocalObject(oPC, "CHOSEN_WEAPON"); string sName = GetName(oWeapon); DeleteLocalInt(oWeapon, "CHOSEN_WEAPON"); if (GetLocalInt(oWeapon, "CHOSEN_WEAPON_PLOT")) { DeleteLocalInt(oWeapon, "CHOSEN_WEAPON_PLOT"); SetPlotFlag(oWeapon, FALSE); } SendMessageToPC(oPC, sName+" is no longer your chosen weapon."); RemoveSpecificProperty(oWeapon, ITEM_PROPERTY_VISUALEFFECT); } void main() { object oWeapon = PRCGetSpellTargetObject(); object oPC = OBJECT_SELF; int iChosen = GetLocalInt(oPC, "HAS_CHOSEN_WEAPON"); if (iChosen == 2) { if (oWeapon == GetLocalObject(oPC, "CHOSEN_WEAPON")) { SendMessageToPC(oPC, "That weapon is already your chosen weapon."); return; } SendMessageToPC(oPC, "You begin to bond with the new weapon. It will be your chosen weapon in 20 turns."); DelayCommand(TurnsToSeconds(20)+0.0, UnchooseWeapon(oPC)); DelayCommand(TurnsToSeconds(20)+0.1, ChooseWeapon(oPC, oWeapon)); } else { ChooseWeapon(oPC, oWeapon); } }