GammaAge/_module/nss/sei_drop.nss
Jaysyn904 b927d0faf8 File re-organization.
File re-organization.  Added module builder & hak builder.
2021-09-16 10:15:32 -04:00

76 lines
2.2 KiB
Plaintext

//
// NWDrop
//
// Script for when a character drops an item.
// Place in the OnUnAcquireItem module event.
//
// (c) Shir'le E. Illios, 2002 (shirle@drowwanderer.com)
//
////////////////////////////////////////////////////////
// Script to place an item on the ground in front of a character.
// ARGUMENTS:
// a_oCharacter - The character dropping the item.
// a_oItem - The inventory item being dropped.
// a_sNewItem - ResRef of the new item to place.
//
void SEI_PlaceItem( object a_oCharacter, object a_oItem, string a_sNewItem )
{
// Get information on where we want the object.
location lCharLocation = GetLocation( a_oCharacter );
object oArea = GetAreaFromLocation( lCharLocation );
vector vPosition = GetPositionFromLocation( lCharLocation );
float fFacing = GetFacingFromLocation( lCharLocation );
// Face away from the character.
fFacing += 180.0f;
// SEI_TODO: Change position to slightly in front of character.
// Create the new location to place the object.
location lPlace = Location( oArea, vPosition, fFacing );
// First destroy the inventory item.
DestroyObject( a_oItem );
// And create the new object.
CreateObject( OBJECT_TYPE_PLACEABLE, a_sNewItem, lPlace );
} // End SEI_PlaceItem
void main()
{
// Get te item that was lost.
object oItem = GetModuleItemLost();
// Get the character who lost the item.
object oChar = GetModuleItemLostBy();
// SEI_Note: There seems to be a bug in GetModuleItemLostBy(), which
// returns the lost object, not the lost character holding the
// object. But strangely enough GetEnteringObject does return the
// character. Done like this for backwards compatibility if
// BioWare ever fixes the bug.
if( oChar == oItem )
{
oChar = GetEnteringObject();
}
// Check if the dropped item is a chair.
if( GetTag( oItem ) == "Chair" )
{
SEI_PlaceItem( oChar, oItem, "movechair" );
}
// Check if the dropped item is a stool.
else if( GetTag( oItem ) == "Stool" )
{
SEI_PlaceItem( oChar, oItem, "movestool" );
}
} // End main