public Int32 ScriptMain([In] object[] ScriptParameters, [In] Int32 DefaultReturnCode)
{
// Decode parameters.
uint oPC = (uint)ScriptParameters[0];
int nAction = (int)ScriptParameters[1];
// Get PID.
int nCID = GetLocalInt(oPC, "ACR_CID");
// Make sure the PC has a hide.
uint oHide = GetItemPossessedBy(oPC, "acr_pchide");
if (GetIsObjectValid(oHide) == CLRScriptBase.FALSE)
{
oHide = GetItemInSlot(CLRScriptBase.INVENTORY_SLOT_CARMOUR, oPC);
if (GetIsObjectValid(oHide) == CLRScriptBase.FALSE || GetResRef( oHide ) != "acr_pchide")
{
oHide = CreateItemOnObject("acr_pchide", oPC, 1, "acr_pchide", CLRScriptBase.FALSE);
}
}
// Remake the hide.
bool bRetState;
if (m_HideMap.ContainsKey(nCID))
{
bRetState = m_HideMap[nCID].clear(this);
}
else
{
m_HideMap.Add(nCID, new PCHide(oPC, oHide));
bRetState = m_HideMap[nCID].recalculate(this);
}
if (bRetState == false)
{
m_HideMap.Remove(nCID);
}
return 0;
}