82 lines
3.2 KiB
Plaintext
82 lines
3.2 KiB
Plaintext
#include "ar_inc_wow"
|
|
|
|
|
|
void ARCleanPCLocalVar(object oPC);
|
|
void main()
|
|
{
|
|
//Get the player that is resting/rested
|
|
object oPlayer = GetLastPCRested();
|
|
//Get that players name
|
|
string sPlayerName = GetName(oPlayer);
|
|
//determine whether they are done resting or just starting resting
|
|
int nLastRestType = GetLastRestEventType();
|
|
//Determine if they are resting at a bed or campsite
|
|
int bBedOrCamp = GetIsObjectValid(GetLocalObject(oPlayer, "inbed"));
|
|
|
|
//They are just now trying to rest
|
|
if(nLastRestType == REST_EVENTTYPE_REST_STARTED)
|
|
{
|
|
//If they are trying to sleep at a bed or campsite
|
|
if(bBedOrCamp)
|
|
{
|
|
// Restore 2e Psionic PSPs
|
|
ExecuteScript("lib_psionrest", GetLastPCRested());
|
|
// Run Database script
|
|
ExecuteScript("ar_db_onrest",oPlayer);
|
|
//Create a snoring effect
|
|
effect eSnore = EffectVisualEffect(VFX_IMP_SLEEP);
|
|
//Apply this to the player
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSnore, oPlayer, 7.0);
|
|
ScanItems(oPlayer,FALSE);
|
|
//Apply a delayed snore????
|
|
DelayCommand(7.0, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSnore, oPlayer, 7.0));
|
|
//Set a variable to FALSE so they aren't beaten and robbed when they come back
|
|
SetLocalInt(oPlayer, "bExitPenalty", FALSE);
|
|
//Tell the player it's safe to log out
|
|
FloatingTextStringOnCreature("It is now safe for " + sPlayerName + " to log out.", oPlayer, FALSE);
|
|
ExportSingleCharacter(oPlayer);
|
|
|
|
|
|
|
|
}
|
|
else //They are trying to sleep without a bed or campsite
|
|
{
|
|
//Clear all the players actions
|
|
AssignCommand(oPlayer, ClearAllActions());
|
|
//Tell them they connot sleep without a bed or campsite
|
|
FloatingTextStringOnCreature(sPlayerName + " cannot rest here. You must find a bed or a campsite.", oPlayer, FALSE);
|
|
}
|
|
}
|
|
//They just got done resting or they canceled it
|
|
else if(nLastRestType == REST_EVENTTYPE_REST_FINISHED || nLastRestType == REST_EVENTTYPE_REST_CANCELLED)
|
|
{
|
|
if(bBedOrCamp)
|
|
{
|
|
//Delete the varible that they are in bed
|
|
DeleteLocalObject(oPlayer, "inbed");
|
|
//Tell them they can no longer log out and be safe
|
|
DelayCommand(25.0, FloatingTextStringOnCreature("It is no longer safe for "+ sPlayerName + " to log out.", oPlayer, FALSE));
|
|
//Set the varible so they will be beaten and robbed if they leave
|
|
DelayCommand(30.0, SetLocalInt(oPlayer, "bExitPenalty", TRUE));
|
|
}
|
|
}
|
|
if(GetLastRestEventType()==REST_EVENTTYPE_REST_FINISHED)
|
|
{
|
|
ARCleanPCLocalVar(GetLastPCRested());
|
|
ScanItems(GetLastPCRested(),FALSE);
|
|
}
|
|
}
|
|
|
|
void ARCleanPCLocalVar(object oPC)
|
|
{
|
|
DeleteLocalObject(oPC, "BackLashAOE");
|
|
DeleteLocalObject(oPC,"AR_CONSERVE_CASTER");
|
|
DeleteLocalInt(oPC, "BackLash");
|
|
DeleteLocalInt(oPC, "BackLashDice");
|
|
DeleteLocalInt(oPC,"AR_CONSERVE");
|
|
DeleteLocalInt(oPC,"AR_CONSERVE_DC");
|
|
SetLocalInt(oPC,"TaintedAuraActive",0);
|
|
DelayCommand(90.0f, SetLocalInt(oPC, "TSTimer", 0));
|
|
|
|
}
|