Changed folder name.
Changed folder name.
This commit is contained in:
105
_module/nss/afx_area_exit.nss
Normal file
105
_module/nss/afx_area_exit.nss
Normal file
@@ -0,0 +1,105 @@
|
||||
|
||||
|
||||
|
||||
void TrashObject(object oObject)
|
||||
|
||||
{
|
||||
/* search and destroy contents of body bag's, others just destroy */
|
||||
if (GetObjectType(oObject) == OBJECT_TYPE_PLACEABLE) {
|
||||
|
||||
object oItem = GetFirstItemInInventory(oObject);
|
||||
|
||||
/* recursively trash all items inside container */
|
||||
while (GetIsObjectValid(oItem))
|
||||
{
|
||||
TrashObject(oItem);
|
||||
|
||||
oItem = GetNextItemInInventory(oObject);
|
||||
}
|
||||
}
|
||||
|
||||
DestroyObject(oObject);
|
||||
}
|
||||
|
||||
|
||||
|
||||
#include "afx_sfunc"
|
||||
|
||||
void main()
|
||||
{
|
||||
/* only execute for PC's entering an area */
|
||||
if(!GetIsPC(GetExitingObject()) ) {
|
||||
return; }
|
||||
|
||||
|
||||
|
||||
|
||||
object oPC = GetExitingObject();
|
||||
// First check to see if the ExitingObject is a PC or not
|
||||
if(GetIsPC(oPC) == TRUE) {
|
||||
afx_remove_effects(oPC,OBJECT_SELF);
|
||||
}
|
||||
if (!GetIsPC(oPC))
|
||||
return;
|
||||
// Start up the loop, setting oPC now to the first PC
|
||||
oPC = GetFirstPC();
|
||||
// Continue looping until there are no more PCs left
|
||||
while (oPC != OBJECT_INVALID)
|
||||
{
|
||||
// Check the Area against the Area of the current PC
|
||||
// If they are the same, exit the function, as we do not need to
|
||||
// check anymore PCs
|
||||
if (OBJECT_SELF == GetArea(oPC))
|
||||
return;
|
||||
// If not, continue to the next PC
|
||||
else oPC = GetNextPC();
|
||||
}
|
||||
|
||||
// If we've made it this far, we know that there aren't any PCs in the area
|
||||
// Set oObject to the first object in the Area
|
||||
object oObject = GetFirstObjectInArea(OBJECT_SELF);
|
||||
// Continue looping until there are no more objects left
|
||||
while (oObject != OBJECT_INVALID)
|
||||
{
|
||||
// Test to see if oObject is a creature spawned from an encounter
|
||||
// If so, destroy the object
|
||||
if (GetIsEncounterCreature(oObject))
|
||||
DestroyObject(oObject);
|
||||
// Move on to the next object
|
||||
oObject = GetNextObjectInArea(OBJECT_SELF);
|
||||
|
||||
/* only execute for PC's entering an area */
|
||||
}
|
||||
object oItem = GetFirstObjectInArea();
|
||||
|
||||
while (GetIsObjectValid(oItem))
|
||||
{
|
||||
|
||||
int iObjectType = GetObjectType(oItem);
|
||||
|
||||
switch (iObjectType) {
|
||||
case OBJECT_TYPE_PLACEABLE:
|
||||
|
||||
/* monster drop containers are tagged placeables */
|
||||
|
||||
|
||||
if (GetTag(oItem) != "BodyBag") {
|
||||
break; }
|
||||
/* note: no break here, allow fall-through */
|
||||
|
||||
case OBJECT_TYPE_ITEM:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
TrashObject(oItem); } /* destruct time has passed, trash the object */
|
||||
|
||||
/* note: no action if destruct time set but not passed */
|
||||
|
||||
|
||||
|
||||
|
||||
oItem = GetNextObjectInArea();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user