128 lines
5.7 KiB
Plaintext
128 lines
5.7 KiB
Plaintext
//
|
|
// NESS V8.0
|
|
// Spawn Disturbed Corpse
|
|
//
|
|
// Brought into the NESS distribution for Version 8.0 and beyond. Original
|
|
// header below. This file has been modified from its original form.
|
|
//
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
// // //
|
|
// _kb_ondist_loot // VERSION 1.1 //
|
|
// // //
|
|
// by Keron Blackfeld on 07/17/2002 ////////////////////////////
|
|
// //
|
|
// email Questions and Comments to: keron@broadswordgaming.com or catch me //
|
|
// in Bioware's NWN Community - Builder's NWN Scripting Forum //
|
|
// //
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// This is an OnDisturbed Script to go with my _kb_loot_corpse script for //
|
|
// LOOTABLE MONSTER/NPC CORPSES. If you were using my _kb_ohb_lootable, be //
|
|
// sure to remove that script from the onHeartbeat of your lootable, the //
|
|
// "invis_corpse_obj" placeable. //
|
|
// //
|
|
// PLACE THIS SCRIPT IN THE ONDISTURBED EVENT OF YOUR "invis_corpse_obj" //
|
|
// BLUEPRINT. This script checks the inventory of OBJECT_SELF, and when it //
|
|
// is empty, it checks the LocalInt to see if the now empty corpse should //
|
|
// be Destroyed along with the Lootable Corpse Object. This script will also //
|
|
// checks to see if it should clear its own inventory prior to fading in //
|
|
// order to prevent a lootbag from appearing. If the inventory is NOT empty, //
|
|
// it checks to see if the ARMOUR is removed from itself, and if so, it //
|
|
// destroys the Original Armour on the corpse. //
|
|
// //
|
|
// The _kb_loot_corpse script must have this line: //
|
|
// int nKeepEmpties = FALSE; //
|
|
// in order for the Empty Corpse to Destroy itself in this script. //
|
|
// //
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
//
|
|
// ALFA NESS
|
|
// Spawn : Loot Corpse Disturbed Script v1.2
|
|
//
|
|
//
|
|
// Do NOT Modify this File
|
|
// See 'spawn__readme' for Instructions
|
|
//
|
|
|
|
#include "spawn_functions"
|
|
|
|
/*******************************************
|
|
** Here is our main script, which is **
|
|
** fired if the Inventory is disturbed. **
|
|
** It then checks to see if it needs to **
|
|
** either clean up the corpse or Destroy **
|
|
** the original suit of armor still on **
|
|
** the corpse. **
|
|
*******************************************/
|
|
void main()
|
|
{
|
|
//** Get all of our required information
|
|
|
|
//Get item that was disturbed to trigger event
|
|
object oInvDisturbed = GetInventoryDisturbItem();
|
|
|
|
//Get type of inventory disturbance
|
|
int nInvDistType = GetInventoryDisturbType();
|
|
|
|
// Get Values set by spawn_corpse_dth at creation
|
|
object oHostCorpse = GetLocalObject(OBJECT_SELF, "HostBody");
|
|
object oOrigArmor = GetLocalObject(OBJECT_SELF, "OrigArmor");
|
|
object oLootArmor = GetLocalObject(OBJECT_SELF, "LootArmor");
|
|
object oOrigRgtWpn = GetLocalObject(OBJECT_SELF, "OrigRgtWpn");
|
|
object oLootRgtWpn = GetLocalObject(OBJECT_SELF, "LootRgtWpn");
|
|
object oOrigLftWpn = GetLocalObject(OBJECT_SELF, "OrigLftWpn");
|
|
object oLootLftWpn = GetLocalObject(OBJECT_SELF, "LootLftWpn");
|
|
|
|
object oPC = GetLastDisturbed();
|
|
AssignCommand(oPC, ActionPlayAnimation(ANIMATION_LOOPING_GET_LOW, 1.0f, 1.2f));
|
|
|
|
object oHasInventory = GetFirstItemInInventory(OBJECT_SELF); //Check for inventory
|
|
if (oHasInventory == OBJECT_INVALID) //If no inventory found
|
|
{
|
|
/*******************************************
|
|
** Delete empty. **
|
|
*******************************************/
|
|
NESS_CleanCorpse(oHostCorpse);
|
|
AssignCommand(oHostCorpse,SetIsDestroyable(TRUE,FALSE,FALSE)); //Set actual corpse to destroyable
|
|
DestroyObject(oHostCorpse); //Delete the actual Creature Corpse
|
|
|
|
DelayCommand(1.0f,DestroyObject(OBJECT_SELF)); //Delete Lootable Object (Self)
|
|
|
|
}
|
|
|
|
else
|
|
{
|
|
/*******************************************
|
|
** If not empty, check to see if armor, **
|
|
** left or right weapons have been **
|
|
** removed from corpse. **
|
|
*******************************************/
|
|
if (nInvDistType == INVENTORY_DISTURB_TYPE_REMOVED)
|
|
{
|
|
if (oInvDisturbed == oLootArmor)
|
|
{
|
|
/*******************************************
|
|
** The Armor is gone - destroy original **
|
|
** armor still showing on corpse. **
|
|
*******************************************/
|
|
DestroyObject(oOrigArmor);
|
|
}
|
|
|
|
// We don't do these for now, as the unequip animations look too
|
|
// damn silly
|
|
//else if (oInvDisturbed == oLootRgtWpn)
|
|
//{
|
|
// DestroyObject(oOrigRgtWpn);
|
|
//}
|
|
|
|
//else if (oInvDisturbed == oLootLftWpn)
|
|
//{
|
|
// DestroyObject(oOrigLftWpn);
|
|
//}
|
|
}
|
|
}
|
|
|
|
}
|