Updated AMS marker feats. Removed arcane & divine marker feats. Updated Dread Necromancer for epic progression. Updated weapon baseitem models. Updated new weapons for crafting & npc equip. Updated prefix. Updated release archive.
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");
|
|
} |