RATDOG/_module/nss/spawn_dist_corps.nss
Jaysyn904 ae152d0814 Added BESIE, MS Moneclature
Added BESIE, Markshire's Nomeclature & started initial setup for commoners in Baleas.
2021-09-01 23:42:36 -04:00

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);
//}
}
}
}