WoR_PRC8/_module/nss/tele_handler_e.nss
Jaysyn904 b5e28e52f4 Initial commit
Initial commit [1.18]
2025-04-03 11:49:34 -04:00

87 lines
3.3 KiB
Plaintext

//::////////////////////////////////////////////////////////////////////////////
//::
//:: Script Name: tele_handler_e
//::
//:: Use: This script is used as a teleportation system handler whereas the
//:: player will be teleported to multiple places defined by the variable on
//:: the placeable used to teleport the player. This eliminates the need for
//:: a custom teleportation script for each teleportation. This script is based
//:: on conversational teleportation, there is another script "teleport_handler"
//:: based on teleportation from an OnUsed event from a placeable, etc. This
//:: script is based on player OnEnter event, "tele_handler_c" is based on
//:: GetPCSpeaker event.
//::
//:: Created By: Birdman076
//::
//:: Created On: July 27, 2009
//::
//:: Note: This script will check for a variable defined on the trigger used
//:: to teleport the player to a waypoint. If the variable is not defined on
//:: the placeable nothing will happen. This will only work for a player, not a
//:: whole party.
//::
//::////////////////////////////////////////////////////////////////////////////
string sSayThis;
int iTalkVolume = TALKVOLUME_TALK;
int iTalkFlag = 0;
#include "nw_i0_tool"
location lTarget;
object oTarget;
//Put this script on conversation
void main()
{
object oPC = GetEnteringObject();
//check to make sure we are a player
if (!GetIsPC(oPC)) return;
//Start of 1st set of conditions.
//This first set of conditions will do the following: check for an integer stored
//On the placeable in question. It will then get the waypoint by tag which we have
//created and placed in the area we wish to send the player. It will verify it is valid
//if it is valid we will then clear all actions of the player and jump them to the
//location with some visual effects, in this case the "unsummon" effect.
if (GetLocalInt(OBJECT_SELF, "UNDER_WP2_TELE")== 1)
{
oTarget = GetWaypointByTag("UNDER_WP2");
lTarget = GetLocation(oTarget);
if (GetAreaFromLocation(lTarget)==OBJECT_INVALID) return;
AssignCommand(oPC, ClearAllActions());
AssignCommand(oPC, PlaySound("as_mg_telepout1"));
DelayCommand(1.0, AssignCommand(oPC, ActionJumpToLocation(lTarget)));
//End 1st set of conditions
//Start 2nd set of conditions same template as 1st
}
else if (GetLocalInt(OBJECT_SELF, "SOMEVAR")== 1)
{
if (GetNearestObjectByTag("TAER_PRLCHPRT", OBJECT_SELF) == OBJECT_INVALID){
if((!HasItem(GetEnteringObject(), "TAER_CRUWL")) == FALSE){
object oItemToTake = GetItemPossessedBy(GetEnteringObject(), "TAER_CRUWL");
DestroyObject(oItemToTake);
DestroyObject(oItemToTake);
DestroyObject(oItemToTake);
object oTarget = GetObjectByTag("LCPORTCRT");
object oPC = GetEnteringObject();
AssignCommand(oPC, ClearAllActions(TRUE));
AssignCommand(oPC, PlaySound("as_mg_telepout1"));
CreateObject(OBJECT_TYPE_PLACEABLE, "lichportalz", GetLocation(oTarget), TRUE);
}
else {
object oPC = GetEnteringObject();
sSayThis = "I sense great power here. I wonder how I can release it?";
AssignCommand(oPC, ClearAllActions(TRUE));
AssignCommand(oPC, ActionSpeakString(sSayThis, iTalkVolume));}}
else {
object oItemToTake = GetItemPossessedBy(GetEnteringObject(), "TAER_CRUWL");
DestroyObject(oItemToTake);
DestroyObject(oItemToTake);
DestroyObject(oItemToTake);}
//End 2nd set of conditions
}
}