generated from Jaysyn/ModuleTemplate
73 lines
3.0 KiB
Plaintext
73 lines
3.0 KiB
Plaintext
// HCR v3.2.0 -
|
|
//::////////////////////////////////////////////////////////////////////////////
|
|
//:: FileName: HC_Inc_DropBag
|
|
//::////////////////////////////////////////////////////////////////////////////
|
|
/*
|
|
|
|
*/
|
|
//::////////////////////////////////////////////////////////////////////////////
|
|
#include "HC_Id"
|
|
#include "HC_Inc_PWDB_Func"
|
|
//::////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
// * FUNCTION PROTOTYPES
|
|
|
|
|
|
// Drop bag based on lDiedHere location and oPC facing.
|
|
object DropBag(location lDiedHere, object oPC);
|
|
|
|
|
|
// * FUNCTION DEFINITIONS
|
|
|
|
|
|
//::////////////////////////////////////////////////////////////////////////////
|
|
object DropBag(location lDiedHere, object oPC)
|
|
{
|
|
// Generate New Facing.
|
|
float fRandom = IntToFloat(d20());
|
|
float fDither = (45.0 + fRandom);
|
|
float fFacing = GetFacing(oPC);
|
|
fFacing += fDither;
|
|
if (fFacing > 360.0)
|
|
{ fFacing = 720.0 - fFacing; }
|
|
if (fFacing < 0.0)
|
|
{ fFacing = 360.0 + fFacing; }
|
|
|
|
// Generate New Position.
|
|
float fNewX;
|
|
float fNewY;
|
|
float fNewZ;
|
|
vector vCorpseLoc = GetPositionFromLocation(lDiedHere);
|
|
float fDistance = -0.8;
|
|
if ((fFacing > 0.0) && (fFacing < 90.0))
|
|
{ fNewX = vCorpseLoc.x + ((cos(fFacing))*fDistance); fNewY = vCorpseLoc.y + ((sin(fFacing))*fDistance); fNewZ = vCorpseLoc.z; }
|
|
else if ((fFacing > 90.0f) && (fFacing < 180.0f))
|
|
{ fNewX = vCorpseLoc.x - ((cos(180.0f - fFacing))*fDistance); fNewY = vCorpseLoc.y + ((sin(180.0f - fFacing))*fDistance); fNewZ = vCorpseLoc.z; }
|
|
else if ((fFacing > 180.0f) && (fFacing < 270.0f))
|
|
{ fNewX = vCorpseLoc.x - ((cos(fFacing - 180.0f))*fDistance); fNewY = vCorpseLoc.y - ((sin(fFacing - 180.0f))*fDistance); fNewZ = vCorpseLoc.z; }
|
|
else if ((fFacing > 270.0f) && (fFacing < 360.0f))
|
|
{ fNewX = vCorpseLoc.x + ((cos(360.0f - fFacing))*fDistance); fNewY = vCorpseLoc.y - ((sin(360.0f - fFacing))*fDistance); fNewZ = vCorpseLoc.z; }
|
|
else if (fFacing == 0.0f)
|
|
{ fNewX = vCorpseLoc.x + fDistance; fNewY = vCorpseLoc.y; fNewZ = vCorpseLoc.z; }
|
|
else if (fFacing == 90.0f)
|
|
{ fNewX = vCorpseLoc.x + 0.2; fNewY = vCorpseLoc.y + fDistance; fNewZ = vCorpseLoc.z; }
|
|
else if (fFacing == 180.0f)
|
|
{ fNewX = vCorpseLoc.x - fDistance; fNewY = vCorpseLoc.y + 0.2; fNewZ = vCorpseLoc.z; }
|
|
else if (fFacing == 270.0f)
|
|
{ fNewX = vCorpseLoc.x + 0.2; fNewY = vCorpseLoc.y - fDistance; fNewZ = vCorpseLoc.z; }
|
|
vector vNewFinal = Vector(fNewX, fNewY, fNewZ);
|
|
|
|
// Generate New Location.
|
|
location lDropBag = Location(GetArea(oPC), vNewFinal, fFacing);
|
|
|
|
// Use the new location to create the drop bag, set the locals also.
|
|
string sID = GetsID(oPC);
|
|
object oDropBag = CreateObject(OBJECT_TYPE_PLACEABLE, "DyingCorpse", lDropBag, FALSE, "DropBag" + sID);
|
|
SetLocalObject(oPC, "DROPBAG", oDropBag);
|
|
SetLocalString(oDropBag, "Pkey", sID);
|
|
return oDropBag;
|
|
}
|
|
//::////////////////////////////////////////////////////////////////////////////
|
|
//void main(){}
|