ff_u_pc_pl10

Add Player Tool 10 on PC skin.

Variables

ENABLE__FF_U_PC_PL10: (string) (opt-in) Set to “Y” on module to enable.

Source code

// @code

#include "ff_i_core"

#include "x2_inc_itemprop"


const string ENABLE__FF_U_PC_PL10 = "ENABLE__FF_U_PC_PL10";


// -----------------------------------------------------------------------------

void SetProperties(object oPC)
{
  object oSkin = GetItemInSlot(INVENTORY_SLOT_CARMOUR, oPC);
  if (!GetIsObjectValid(oSkin))
  {
    LogError(GetPCInfo(oPC) + " has no skin/hide equipped");
    return;
  }

  itemproperty ip = ItemPropertyBonusFeat(IP_CONST_FEAT_PLAYER_TOOL_10);
  if (IPGetItemHasProperty(oSkin, ip, -1))
    return;

  IPSafeAddItemProperty(oSkin, ip, 0.0f, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, TRUE, TRUE);
}


// -----------------------------------------------------------------------------

void OnToolActivate();
void OnToolActivate()
{
  object oObject = GetSpellTargetObject();
  if (!GetIsObjectValid(oObject))
    return;

  SetIdentified(oObject, TRUE);
  if (GetHasInventory(oObject))
    IdentifyInventory(oObject);

  NWNX_Util_RawPrint("");
  NWNX_Util_RawPrint(GetName(oObject));
  NWNX_Util_RawPrint(". " + GetObjectTypeString(oObject));
  NWNX_Util_RawPrint(". tag: " + GetTag(oObject) + ", resref: " + GetResRef(oObject));
  if (GetGoldPieceValue(oObject))
    NWNX_Util_RawPrint(". cost: " + IntToString(GetGoldPieceValue(oObject)));
  LogLocalVars(oObject, ". ");
  NWNX_Util_RawPrint("");

}

// =============================================================================

void main()
{
  if (!GetIsDebug())
    return;

  if (!GetModuleFlag(ENABLE__FF_U_PC_PL10, FALSE))
    return;

  string sEvent = GetCurrentEvent();
  if (sEvent == ON_REGISTER)
  {
    NWNX_Util_SetResourceOverride(RESTYPE_NCS, "x3_pl_tool10", RemoveExtension(__FILE__));
    SubscribeToEvent(ON_DEFAULT_PC_SKIN_EQUIPPED, __FILE__);
  }
  else if (sEvent == ON_DEFAULT_PC_SKIN_EQUIPPED)
    SetProperties(OBJECT_SELF);
  else if (sEvent == "" && GetCurrentEventScript() == 0)
    OnToolActivate();
}