NWScript:
void main()
{
object oPC = GetLastUsedBy();
object oDoor = GetObjectByTag("trapdoor_tag_here");
int nDoorState = GetLocalInt(oDoor, "Opened");
object oDrop = GetWaypointByTag("wp_destination_tag_here");
if (nDoorState == FALSE)
{
if (GetIsObjectValid(GetItemPossessedBy(oPC, "key_tag_here")))
{
AssignCommand(oPC, ActionPlayAnimation(ANIMATION_LOOPING_GET_LOW, 0.7f));
DelayCommand(1.0f, ActionPlayAnimation(ANIMATION_PLACEABLE_OPEN));
SetLocalInt(oDoor, "Opened", 1);
}
else
{
AssignCommand(oDoor, SpeakString("This trapdoor is locked and requires a key."));
}
}
else
{
AssignCommand (oPC,JumpToObject(oDrop));
PlayAnimation (ANIMATION_PLACEABLE_CLOSE);
SetLocalInt(oDoor, "Opened", 0);
}
}