generated from Jaysyn/ModuleTemplate
Initial commit
Initial commit
This commit is contained in:
110
_module/nss/uth__inc_resting.nss
Normal file
110
_module/nss/uth__inc_resting.nss
Normal file
@@ -0,0 +1,110 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// File Name : uth__inc_resting
|
||||
// Created: March 18th, 2005
|
||||
// Creator: Uthoroc
|
||||
// Function: Creates functions to handle additional resting options (wandering
|
||||
// monsters, etc.)
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
#include "uth__inc_time"
|
||||
|
||||
// INTERFACE
|
||||
//------------------------------------------------------------------------------
|
||||
// Constants
|
||||
|
||||
// Sets the time period in hours, after which number of rests is reset
|
||||
const int THAIN_REST_PERIOD = 8;
|
||||
// Default number of rests a char may do
|
||||
const int THAIN_RESTS_PER_PERIOD = 4;
|
||||
const string LOC_STRING_RESTS_LEFT = "nRestsLeft";
|
||||
const string LOC_STRING_START_PERIOD = "nStartOfRestPeriod";
|
||||
|
||||
// Functions
|
||||
|
||||
// Remove All Item Buffs from a Resting Player regardless who cast the spells
|
||||
void RemoveItemBuffs(object oPC);
|
||||
// Sets the current time as start of the rest period (in game minutes)
|
||||
void SetStartOfRestPeriod(object oPC);
|
||||
// Gets the start time of the current rest period (in game minutes)
|
||||
int GetStartOfRestPeriod(object oPC);
|
||||
// Sets how many times PC can still rest in the current rest period
|
||||
void SetNumberOfRestsLeft(object oPC, int nNumberOfRests);
|
||||
// Checks how many times PC can still rest in the current rest period
|
||||
int GetNumberOfRestsLeft(object oPC);
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// IMPLEMENTATION
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
void RemoveItemBuffs(object oPC)
|
||||
{
|
||||
object oItem;
|
||||
effect eEffect;
|
||||
int iSlotCounter;
|
||||
int bEffectRemoved;
|
||||
|
||||
// cycle through all Equipment Slots
|
||||
for(iSlotCounter = 0; iSlotCounter <= NUM_INVENTORY_SLOTS; iSlotCounter ++)
|
||||
{
|
||||
oItem = GetItemInSlot(iSlotCounter, oPC);
|
||||
// check through all effects on the item
|
||||
eEffect = GetFirstEffect(oItem);
|
||||
while (GetIsEffectValid(eEffect))
|
||||
{
|
||||
// if it is a temporary effect, remove it
|
||||
if(GetEffectDurationType(eEffect) == DURATION_TYPE_TEMPORARY)
|
||||
{
|
||||
RemoveEffect(oItem, eEffect);
|
||||
bEffectRemoved = 1;
|
||||
}
|
||||
eEffect = GetNextEffect(oItem);
|
||||
}
|
||||
}
|
||||
|
||||
// Notify the player if any effect was removed
|
||||
if(bEffectRemoved != 0)
|
||||
SendMessageToPC(oPC, "As you rest the magic cast upon your equipment fades.");
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
void SetStartOfRestPeriod(object oPC)
|
||||
{
|
||||
SetLocalInt(oPC, LOC_STRING_START_PERIOD, GetTimeInMinutes());
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
int GetStartOfRestPeriod(object oPC)
|
||||
{
|
||||
return GetLocalInt(oPC, LOC_STRING_START_PERIOD);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
void SetNumberOfRestsLeft(object oPC, int nNumberOfRests)
|
||||
{
|
||||
SetLocalInt(oPC, LOC_STRING_RESTS_LEFT, nNumberOfRests);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
int GetNumberOfRestsLeft(object oPC)
|
||||
{
|
||||
int nFirstRestTime = GetStartOfRestPeriod(oPC);
|
||||
int nCurrentTime = GetTimeInMinutes();
|
||||
|
||||
// Has time period passed after first rest of PC ?
|
||||
if((nCurrentTime - nFirstRestTime) > (THAIN_REST_PERIOD * THAIN_MINUTES_PER_HOUR))
|
||||
// then reset number fo rests to base
|
||||
SetNumberOfRestsLeft(oPC, THAIN_RESTS_PER_PERIOD);
|
||||
|
||||
return GetLocalInt(oPC, LOC_STRING_RESTS_LEFT);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user