PRC8/nwn/nwnprc/trunk/scripts/prc_maze_en_trig.nss
Jaysyn904 6ec137a24e Updated AMS marker feats
Updated AMS marker feats.  Removed arcane & divine marker feats.  Updated Dread Necromancer for epic progression. Updated weapon baseitem models.  Updated new weapons for crafting & npc equip.
 Updated prefix.  Updated release archive.
2024-02-11 14:01:05 -05:00

69 lines
2.4 KiB
Plaintext

//::///////////////////////////////////////////////
//:: Maze area entry trigger onenter
//:: prc_maze_en_trig
//:://////////////////////////////////////////////
/** @file
This script is used with the Maze spell's maze
area movement control triggers. It determines
the directions the PC can go and randomly
selects one. If possible, it avoids moving
to the same direction the PC came from.
The directions possible are stored as bit flags
on a local integer called "directions" on the
trigger.
The non-preferred direction is stored as
local integer "PRC_Maze_Direction" on the creature.
@author Ornedan
@date Created - 2005.10.6
*/
//:://////////////////////////////////////////////
//:://////////////////////////////////////////////
#include "prc_alterations"
#include "spinc_maze"
void main()
{if(DEBUG) DoDebug("prc_maze_en_trig running");
object oCreature = GetEnteringObject();
int nDirection = GetLocalInt(OBJECT_SELF, "directions"); // Assume that entries have only one exit direction
// On triggerings other than the first, behave as a normal directing trigger
if(GetLocalInt(oCreature, "PRC_Maze_EntryDone"))
{
GoDirection(oCreature, nDirection);
return;
}
// Set the marker
SetLocalInt(oCreature, "PRC_Maze_EntryDone", TRUE);
// Store old commandability and set it to true
SetLocalInt(oCreature, "PRC_Maze_EnteringCommandability", GetCommandable(oCreature));
SetCommandable(TRUE, oCreature);
// Enter cutscene mode
SetCutsceneMode(oCreature, TRUE);
// Start the escape HB for everyone
AssignCommand(oCreature, MazeEscapeHB(oCreature, 100)); // Start the HB with full 10 mins (100 rounds)left
// Is it an NPC? If so, just send it on it's way
if(!GetIsPC(oCreature))
{
GoDirection(oCreature, nDirection);
}
// For PCs, start a conversation where they can determine whether they attempt escape or not
else
{
StartDynamicConversation("prc_maze_convo", oCreature, DYNCONV_EXIT_NOT_ALLOWED, TRUE, TRUE, oCreature);
SetLocalInt(oCreature, "PRC_Maze_PC_Waiting", TRUE);
SetLocalInt(oCreature, "PRC_Maze_EntryHour", GetTimeHour());
SetLocalInt(oCreature, "PRC_Maze_EntryMinute", GetTimeMinute());
SetLocalInt(oCreature, "PRC_Maze_EntrySecond", GetTimeSecond());
SetLocalInt(oCreature, "PRC_Maze_Entry_Direction", nDirection);
}
}