MMD_PRC8/_module/nss/nw_ch_aca.nss

47 lines
1.7 KiB
Plaintext
Raw Normal View History

/*//////////////////////////////////////////////////////////////////////////////
Script: nw_ch_aca
Programmer: Philos
////////////////////////////////////////////////////////////////////////////////
Associate OnRested event script;
Fires when the creature attempts to rest via ActionRest or a PC rests.
*///////////////////////////////////////////////////////////////////////////////
#include "0i_menus"
void ai_UpdateAssociateWidget(object oMaster, object oAssociate, int nUIToken)
{
if(nUIToken) NuiDestroy(oMaster, nUIToken);
ai_CreateWidgetNUI(oMaster, oAssociate);
if(oMaster != oAssociate)
{
nUIToken = NuiFindWindow(oMaster, "pc" + AI_WIDGET_NUI);
if(nUIToken)
{
NuiDestroy(oMaster, nUIToken);
ai_CreateWidgetNUI(oMaster, oMaster);
}
}
}
void main()
{
object oAssociate = OBJECT_SELF;
ai_ClearCreatureActions();
ai_OnRested(oAssociate);
object oMaster = GetMaster(oAssociate);
if(ai_GetIsCharacter(oMaster) && AI_HENCHMAN_WIDGET)
{
int nLevel = ai_GetCharacterLevels(oAssociate);
float fDelay = StringToFloat(Get2DAString("restduration", "DURATION", nLevel));
fDelay = (fDelay / 1000.0f) + 6.0f;
// Update widget for spell widget.
string sAssociateType = ai_GetAssociateType(oMaster, oAssociate);
int nUIToken = NuiFindWindow(oMaster, sAssociateType + AI_WIDGET_NUI);
if(nUIToken) DelayCommand(fDelay, ai_UpdateAssociateWidget(oMaster, oAssociate, nUIToken));
else
{
if(!ai_GetWidgetButton(oMaster, BTN_WIDGET_OFF, oAssociate, sAssociateType))
{
DelayCommand(fDelay, ai_UpdateAssociateWidget(oMaster, oAssociate, 0));
}
}
}
}