Alangara_PRC8/_module/nss/zep_openclose.nss
Jaysyn904 86feb9ca6f Initial commit
Initial commit.
2024-06-05 21:21:06 -04:00

95 lines
3.2 KiB
Plaintext

//::///////////////////////////////////////////////
//:: ZEP_OPENCLOSE.nss
//:: Copyright (c) 2001 Bioware Corp.
//:: Modified by Dan Heidel 1/14/04 for CEP
//:://////////////////////////////////////////////
/*
This function goes in the OnUse function of an
openable placeable or door. Do not use for
placeables which have an inventory, only for those
where clicking should trigger the open/close anim
without opening up an inventory. Eg: sarcophagii,
grandfather clock and iron maiden. If you wish for
these items to have an inventory make a copy of the
placeable with this function removed and the 'has
inventory' box checked.
No local variables are needed if the placeable is
not a door.
If the placeable is a door, CEP_L_GATEBLOCK is a
local string containing the blueprint resref of the
gateblock corresponding to the particular door.
A gateblock is an invisible placeable with a walkmesh
of the size, shape and orientation of the door. In
the case of CEP Door 01-11, there is a corresponding
Gateblock 01-11. Therefore, for Door01, the CEP_L_GATEBLOCK
should be gateblock001 - the resref for Gateblock 01.
When the door is closed, a gateblock placeable is created
so that the door is impassable. When the door is opened,
the gateblock is destroyed so the gate is passable.
GateBlock is a local object that stores the gateblock
being used by a particular door. No user intervention is
needed other than to not create a local variable with the same
name.
In addition, zep_doorspawn must be placed in the heartbeat
function of the door and zep_doorkill must be placed in the
OnDestruct function of the door.
*/
//:://////////////////////////////////////////////
//:: Created By: Brent
//:: Created On: January 2002
//:: Modified by: Dan Heidel 1-21-04 for CEP
//:://////////////////////////////////////////////
#include "zep_inc_scrptdlg"
void main()
{
string sGateBlock = GetLocalString(OBJECT_SELF, "CEP_L_GATEBLOCK");
location lSelfLoc = GetLocation(OBJECT_SELF);
int nIsOpen = GetIsOpen(OBJECT_SELF);
if (GetLocked(OBJECT_SELF) == 1){
//FloatingTextStringOnCreature("Locked", OBJECT_SELF);
string sLockedMSG = GetStringByStrRef(nZEPDoorLocked,GENDER_MALE);
SpeakString(sLockedMSG);
return;
}
//if the object is locked, it cannot be opened or closed
if (sGateBlock == ""){ // if the item is not a door
if (nIsOpen == 0)
{
PlayAnimation(ANIMATION_PLACEABLE_OPEN);
}
else
{
PlayAnimation(ANIMATION_PLACEABLE_CLOSE);
}
return;
}
if (nIsOpen == 0) //if the item is a door
{
object oSelf = OBJECT_SELF;
PlayAnimation(ANIMATION_PLACEABLE_OPEN);
if (GetLocalObject(oSelf, "GateBlock")!= OBJECT_INVALID)
{
DestroyObject(GetLocalObject(oSelf, "GateBlock"));
SetLocalObject(oSelf, "GateBlock", OBJECT_INVALID);
}
}
else
{
object oSelf = OBJECT_SELF;
PlayAnimation(ANIMATION_PLACEABLE_CLOSE);
SetLocalObject(oSelf, "GateBlock", CreateObject(OBJECT_TYPE_PLACEABLE, sGateBlock, lSelfLoc));
}
}