Updated Release Archive. Fixed Mage-killer prereqs. Removed old LETO & ConvoCC related files. Added organized spell scroll store. Fixed Gloura spellbook. Various TLK fixes. Reorganized Repo. Removed invalid user folders. Added DocGen back in.
67 lines
2.1 KiB
Plaintext
67 lines
2.1 KiB
Plaintext
/*:://////////////////////////////////////////////
|
|
//:: Name Floating Disk Heartbeat
|
|
//:: FileName PHS_S_FloatDiskC
|
|
//:://////////////////////////////////////////////
|
|
//:: Spell Effects Applied / Notes
|
|
//:://////////////////////////////////////////////
|
|
This is the heartbeat script.
|
|
|
|
It checks weight allowances, and what weight it has. Drops things until
|
|
it has under the weight limit.
|
|
|
|
Wieght limit is 100lbs/level.
|
|
|
|
GetWeight returns 10ths of pounds, so we'd normally divide by 10 to get the
|
|
real lbs value. Its set to know it is 10ths of pounds, however, and caster
|
|
limit is 1000/level for this purpose.
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Jasperre
|
|
//::////////////////////////////////////////////*/
|
|
|
|
#include "PHS_INC_SPELLS"
|
|
|
|
void main()
|
|
{
|
|
// Declare major variables
|
|
object oSelf = OBJECT_SELF;
|
|
object oCaster = GetLocalObject(oSelf, "PHS_MASTER");
|
|
|
|
// check if master is valid and we havn't been dispelled!
|
|
if(!GetIsObjectValid(oCaster) || GetDistanceToObject(oCaster) > 8.0 ||
|
|
!GetHasSpellEffect(PHS_SPELL_FLOATING_DISK))
|
|
{
|
|
// This means they are in the same area, and too far away, or not
|
|
// valid, or been displled.
|
|
SetPlotFlag(oSelf, FALSE);
|
|
DestroyObject(oSelf);
|
|
return;
|
|
}
|
|
|
|
// Get weight allowance
|
|
int nWeight = GetWeight();
|
|
int nLimit = GetLocalInt(oSelf, "PHS_WEIGHT_LIMIT");
|
|
|
|
// Drop things
|
|
if(nWeight > nLimit)
|
|
{
|
|
FloatingTextStringOnCreature("A Floating disk is holding too much", oCaster, FALSE);
|
|
// Drop the first things until we get under nLimit.
|
|
object oItem = GetFirstItemInInventory(oSelf);
|
|
while(GetIsObjectValid(oItem) && nWeight > nLimit)
|
|
{
|
|
// Make us drop it.
|
|
nWeight -= GetWeight(oItem);
|
|
CopyItem(oItem, OBJECT_INVALID, TRUE);
|
|
SetPlotFlag(oItem, FALSE);
|
|
DestroyObject(oItem);
|
|
|
|
// Next item
|
|
oItem = GetNextItemInInventory(oSelf);
|
|
}
|
|
}
|
|
|
|
// Move to casters location - 5ft away, however (say, 2 meters)
|
|
ClearAllActions();
|
|
ActionMoveToObject(oCaster, FALSE, 2.0);
|
|
}
|