PWE_PRC8/_module/nss/ats_forge_use.nss
Jaysyn904 ee1dc35889 Initial Commit
Initial Commit
2025-04-03 10:29:41 -04:00

88 lines
3.1 KiB
Plaintext

/****************************************************
Forge OnUsed Script
ats_forge_use
Last Updated: August 20, 2002
***Ambrosia Tradeskill System***
Created by Mojo(Allen Sun)
This script goes on the forge's OnUsed trigger.
It locks the forge if the forge is already
being used.
****************************************************/
#include "ats_inc_common"
void main()
{
object oLastUser = GetLastUsedBy();
object oCurrentUser = GetLocalObject(OBJECT_SELF, "ats_current_user");
string sCurrentUserName = GetLocalString(OBJECT_SELF, "ats_current_username");
int iTimesUsed = GetLocalInt(OBJECT_SELF, "ats_onused");
if(oCurrentUser != oLastUser && GetLocked(OBJECT_SELF) == TRUE && GetIsObjectValid(oCurrentUser) == TRUE
&& GetDistanceBetween(OBJECT_SELF, oCurrentUser) < 3.0)
{
//Case: Player tries to open a forge while it is already opened by
// another player
DEBUG_PrintString("Forge is locked and " + GetName(oLastUser) + " is trying to open it");
FloatingTextStringOnCreature("The forge is already in use.", oLastUser, FALSE);
return;
}
else
++iTimesUsed;
if(iTimesUsed == 1)
{ /*
if(sCurrentUserName == "")
{
// Case: Forge is opened for the first time.
// Do Nothing
}
else if(GetIsObjectValid(oCurrentUser) == FALSE || GetDistanceBetween(OBJECT_SELF, oCurrentUser) >= 5.0)
{
SetLocked(OBJECT_SELF, FALSE);
iTimesUsed = 0;
SetLocalObject(OBJECT_SELF, "ats_current_user", OBJECT_INVALID);
SetLocalString(OBJECT_SELF, "ats_current_username", "");
} */
//Case: Forge was not in use and has now been opened
DEBUG_PrintString("Forge was not in use and has now been opened by " + GetName(oLastUser));
SetLocalObject(OBJECT_SELF, "ats_current_user", oLastUser);
SetLocalString(OBJECT_SELF, "ats_current_username", GetName(oLastUser));
SetLocked(OBJECT_SELF, TRUE);
SetLocalInt(OBJECT_SELF, "ats_onused", iTimesUsed );
}
else if(iTimesUsed == 2)
{
if(GetLocked(OBJECT_SELF) == TRUE &&
(GetIsObjectValid(oCurrentUser) == FALSE ||
GetDistanceBetween(OBJECT_SELF, oCurrentUser) >= 3.0))
{
// Case: Forge was bugged and is being reset
DEBUG_PrintString("Forge was bugged and is being reset");
SetLocked(OBJECT_SELF, FALSE);
SetLocalObject(OBJECT_SELF, "ats_current_user", OBJECT_INVALID);
SetLocalString(OBJECT_SELF, "ats_current_username", "");
FloatingTextStringOnCreature("The forge has been reset. Please try again.", oLastUser, FALSE);
}
else
{
// Case: Forge has been validly closed
DEBUG_PrintString(" Forge has been validly closed by " + GetName(oLastUser));
SetLocked(OBJECT_SELF, FALSE);
ClearAllActions();
ActionStartConversation( oLastUser, "", TRUE);
}
SetLocalInt(OBJECT_SELF, "ats_onused", 0 );
}
}