106 lines
2.6 KiB
Plaintext
106 lines
2.6 KiB
Plaintext
|
|
|
|
|
|
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();
|
|
}
|
|
}
|