Updated Release Archive. Fixed Mage-killer prereqs. Removed old LETO & ConvoCC related files. Added organized spell scroll store. Fixed Gloura spellbook. Various TLK fixes. Reorganized Repo. Removed invalid user folders. Added DocGen back in.
181 lines
4.3 KiB
Plaintext
181 lines
4.3 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: NPC event wrapper include
|
|
//:: inc_prc_npc
|
|
//:://////////////////////////////////////////////
|
|
/** @file
|
|
Wrapper functions for getters used in module
|
|
events. Used to make the PRC evaluations
|
|
happening in events to work for NPCs, too.
|
|
|
|
Event currently supported:
|
|
OnEquip
|
|
OnUnequip
|
|
OnDeath
|
|
OnRest
|
|
|
|
*/
|
|
//:://////////////////////////////////////////////
|
|
//:://////////////////////////////////////////////
|
|
|
|
|
|
//////////////////////////////////////////////////
|
|
/* Function prototypes */
|
|
//////////////////////////////////////////////////
|
|
|
|
/**
|
|
* A heartbeat function for NPCs. Checks if their equipped items have changed.
|
|
* Simulates OnEquip / OnUnEquip firing
|
|
* Since this should be fired from an NPCs hearbeat, OBJECT_SELF is assumed to
|
|
* be the NPC.
|
|
*/
|
|
void DoEquipTest();
|
|
|
|
|
|
/* On(Un)Equip wrappers */
|
|
|
|
/**
|
|
* Wrapper for GetPCItemLastEquipped
|
|
*/
|
|
object GetItemLastEquipped();
|
|
|
|
/**
|
|
* Wrapper for GetPCItemLastEquippedBy
|
|
*/
|
|
object GetItemLastEquippedBy();
|
|
|
|
/**
|
|
* Wrapper for GetItemLastUnequipped
|
|
*/
|
|
object GetItemLastUnequipped();
|
|
|
|
/**
|
|
* Wrapper for GetPCItemLastUnequippedBy
|
|
*/
|
|
object GetItemLastUnequippedBy();
|
|
|
|
|
|
/* OnDeath wrappers */
|
|
|
|
/**
|
|
* Wrapper for GetLastHostileActor and GetLastKiller
|
|
*/
|
|
object MyGetLastKiller();
|
|
|
|
/**
|
|
* Wrapper for GetLastPlayerDied
|
|
*/
|
|
object GetLastBeingDied();
|
|
|
|
|
|
/* OnRest wrapper */
|
|
|
|
/**
|
|
* Wrapper for GetLastPCRested
|
|
*/
|
|
object GetLastBeingRested();
|
|
|
|
/**
|
|
* Wrapper for GetLastRestEventType
|
|
*/
|
|
int MyGetLastRestEventType();
|
|
|
|
//////////////////////////////////////////////////
|
|
/* Function defintions */
|
|
//////////////////////////////////////////////////
|
|
|
|
object GetItemLastEquippedBy()
|
|
{
|
|
if(GetModule() == OBJECT_SELF || GetIsPC(OBJECT_SELF)) // prc_inc_function runs the class scripts on the PC instead of the module
|
|
return GetPCItemLastEquippedBy();
|
|
else
|
|
return OBJECT_SELF;
|
|
}
|
|
|
|
object GetItemLastUnequippedBy()
|
|
{
|
|
if(GetModule() == OBJECT_SELF || GetIsPC(OBJECT_SELF))
|
|
return GetPCItemLastUnequippedBy();
|
|
else
|
|
return OBJECT_SELF;
|
|
}
|
|
|
|
object GetItemLastEquipped()
|
|
{
|
|
if(GetModule() == OBJECT_SELF || GetIsPC(OBJECT_SELF))
|
|
return GetPCItemLastEquipped();
|
|
else
|
|
return GetLocalObject(OBJECT_SELF, "oLastEquipped");
|
|
}
|
|
|
|
object GetItemLastUnequipped()
|
|
{
|
|
if(GetModule() == OBJECT_SELF || GetIsPC(OBJECT_SELF))
|
|
return GetPCItemLastUnequipped();
|
|
else
|
|
return GetLocalObject(OBJECT_SELF, "oLastUnequipped");
|
|
}
|
|
|
|
void DoEquipTest()
|
|
{
|
|
int i;
|
|
object oTest;
|
|
object oItem;
|
|
for(i=1; i<NUM_INVENTORY_SLOTS;i++)
|
|
{
|
|
oItem = GetItemInSlot(i, OBJECT_SELF);
|
|
oTest = GetLocalObject(OBJECT_SELF, "oSlotItem"+IntToString(i));
|
|
if(oTest != oItem)
|
|
{
|
|
if(GetIsObjectValid(oItem))
|
|
{
|
|
SetLocalObject(OBJECT_SELF, "oLastEquipped", oItem);
|
|
ExecuteScript("prc_equip", OBJECT_SELF);
|
|
}
|
|
if(GetIsObjectValid(oTest))
|
|
{
|
|
SetLocalObject(OBJECT_SELF, "oLastUnequipped", oTest);
|
|
ExecuteScript("prc_unequip", OBJECT_SELF);
|
|
}
|
|
SetLocalObject(OBJECT_SELF, "oSlotItem"+IntToString(i), oItem);
|
|
// to avoid lag, only run this on 1 item per HB
|
|
// so we abort this now and prc_npc_hb will run it again in 6 seconds
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
object MyGetLastKiller(){
|
|
if(GetModule() == OBJECT_SELF || GetIsPC(OBJECT_SELF))
|
|
return GetLastHostileActor();
|
|
else
|
|
return GetLastKiller();
|
|
}
|
|
|
|
object GetLastBeingDied(){
|
|
if(GetModule() == OBJECT_SELF || GetIsPC(OBJECT_SELF))
|
|
return GetLastPlayerDied();
|
|
else
|
|
return OBJECT_SELF;
|
|
}
|
|
|
|
|
|
object GetLastBeingRested(){
|
|
if(GetModule() == OBJECT_SELF || GetIsPC(OBJECT_SELF))
|
|
{
|
|
// Account for the PRCForceRest() wrapper
|
|
if(GetLocalInt(OBJECT_SELF, "PRC_ForceRested"))
|
|
return OBJECT_SELF;
|
|
else
|
|
return GetLastPCRested();
|
|
}
|
|
else
|
|
return OBJECT_SELF;
|
|
}
|
|
|
|
int MyGetLastRestEventType(){
|
|
if(GetModule() == OBJECT_SELF || GetIsPC(OBJECT_SELF))
|
|
return GetLastRestEventType();
|
|
else
|
|
return GetLocalInt(OBJECT_SELF, "prc_rest_eventtype");
|
|
} |