MMD_PRC8/_module/nss/plo_townport_use.nss
Jaysyn904 adeff59f82 Initial commit
Initial commit.
2024-08-02 23:18:00 -04:00

72 lines
2.1 KiB
Plaintext

////////////////////////////////////////////////////////////////////////////////
// Placeable Object Event: OnUse
////////////////////////////////////////////////////////////////////////////////
void main()
{
object oPCPortalUser = GetLastUsedBy();
//----------------------------------------------------------------------------
if (GetTag(GetArea(oPCPortalUser)) == "area4_999")
{
if (!IsInConversation(OBJECT_SELF))
{
// dialog box init
// define custom tokens as player names (9000 == oPCPortalUser)
// and store all current destination portals on the oPCPortalUser object
object oPC = GetFirstPC();
int nToken = 9001;
while (GetIsObjectValid(oPC))
{
// check if oPC has an active town portal
object oTownPortal = GetLocalObject(oPC,"TownPortal");
if (GetIsObjectValid(oTownPortal))
{
if (oPC == oPCPortalUser) // set oPCPortalUser to the first position
{
SetCustomToken(9000,GetName(oPC));
SetLocalObject(oPCPortalUser,"9000",oTownPortal);
}
else
{
SetCustomToken(nToken,GetName(oPC));
SetLocalObject(oPCPortalUser,IntToString(nToken),oTownPortal);
nToken++;
}
}
oPC = GetNextPC();
}
// hint: token 9000 could be unused
// this means oPCPortalUser does not have a portal
SetLocalInt(oPCPortalUser,"TokenMax",nToken-1);
SetLocalInt(oPCPortalUser,"TokenCounter",9000);
// activate the dialog box
ActionStartConversation(oPCPortalUser,"",TRUE);
}
else
{
SendMessageToPC(oPCPortalUser,"The town portal is in use.");
}
}
//----------------------------------------------------------------------------
else
{
// teleport to Tristram
object oTownPortal = GetLocalObject(GetModule(),"TownPortal");
if (GetIsObjectValid(oTownPortal)) // this should always be TRUE
{
AssignCommand(oPCPortalUser,JumpToObject(oTownPortal));
}
}
//----------------------------------------------------------------------------
}