Files
HeroesStone_PRC8/_module/nss/js_util_onrest.nss
Jaysyn904 1eefc84201 Initial Commit
Initial Commit.
2025-09-14 15:40:46 -04:00

49 lines
1.7 KiB
Plaintext

void main()
{
object oPlayer = GetLastPCRested();
if (GetLastRestEventType() == REST_EVENTTYPE_REST_STARTED)
{
effect eSleep = EffectVisualEffect(VFX_IMP_SLEEP);
int iLastHourRest = GetLocalInt(oPlayer, "LastHourRest");
int iLastDayRest = GetLocalInt(oPlayer, "LastDayRest");
int iLastYearRest = GetLocalInt(oPlayer, "LastYearRest");
int iLastMonthRest = GetLocalInt(oPlayer, "LastMonthRest");
int iHour = GetTimeHour();
int iDay = GetCalendarDay();
int iYear = GetCalendarYear();
int iMonth = GetCalendarMonth();
int iHowLong = 0;
int iSum = iLastHourRest + iLastDayRest + iLastYearRest + iLastMonthRest;
if (iLastYearRest != iYear)
iMonth = iMonth + 12;
if (iLastMonthRest != iMonth)
iDay = iDay + 28;
if (iDay != iLastDayRest)
iHour = iHour + 24 * (iDay - iLastDayRest);
iHowLong = iHour - iLastHourRest;
if ((iHowLong < 8) && (iSum != 0))
{
AssignCommand(oPlayer, ClearAllActions());
string msg = "You may rest again in " + IntToString(8-iHowLong) + " hours.";
SendMessageToPC(oPlayer, msg);
}
else
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSleep, oPlayer, 7.0);
DelayCommand(9.0, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSleep, oPlayer, 7.0));
}
}
else if (GetLastRestEventType() == REST_EVENTTYPE_REST_FINISHED)
{
SetLocalInt(oPlayer, "LastHourRest", GetTimeHour());
SetLocalInt(oPlayer, "LastDayRest", GetCalendarDay());
SetLocalInt(oPlayer, "LastMonthRest", GetCalendarMonth());
SetLocalInt(oPlayer, "LastYearRest", GetCalendarYear());
}
}