176 lines
5.0 KiB
Plaintext
176 lines
5.0 KiB
Plaintext
//dmw_activate
|
|
|
|
// ** This script goes in the OnItemActivation event of your Module
|
|
// ** Properties. It checks to see if the item used is a DM Helper
|
|
// ** And if so, and the user isnt a DM, destroys it, otherwise it
|
|
// ** Starts the DM Helper working. "dmw_inc" contains the actual
|
|
// ** code that controls the Helpers effects. If you update anything
|
|
// ** in it, you must recompile the calling dmw_<name> script to make
|
|
// ** the change take effect.
|
|
|
|
void main()
|
|
{
|
|
object oItem=GetItemActivated();
|
|
object oActivator=GetItemActivator();
|
|
|
|
object oUser = GetItemActivator();
|
|
object oTarget = GetItemActivatedTarget();
|
|
string sRef = GetResRef (oItem);
|
|
|
|
if (sRef == "dmextension")
|
|
{
|
|
|
|
if (!GetIsDM (oUser))
|
|
DestroyObject (oItem);
|
|
|
|
if (GetIsDM (oUser))
|
|
{
|
|
|
|
SetLocalObject (oUser, "ITEM_TARGET", oTarget);
|
|
AssignCommand (oUser, ClearAllActions());
|
|
AssignCommand (oUser, ActionStartConversation (oUser, "dmextension", TRUE));
|
|
|
|
}
|
|
}
|
|
if(GetTag(oItem)=="SoT")
|
|
{
|
|
AssignCommand(oActivator, ActionStartConversation(oActivator, "SoTravel", TRUE));
|
|
return;
|
|
}
|
|
|
|
if(GetTag(oItem)=="DMsHelper")
|
|
{
|
|
// Test to make sure the activator is a DM, or is a DM
|
|
// controlling a creature.
|
|
if(GetIsDM(oActivator) != TRUE)
|
|
{
|
|
object oTest = GetFirstPC();
|
|
string sTestName = GetPCPlayerName(oActivator);
|
|
int nFound = FALSE;
|
|
while (GetIsObjectValid(oTest) && (! nFound))
|
|
{
|
|
if (GetPCPlayerName(oTest) == sTestName)
|
|
{
|
|
if(GetIsDM(oTest))
|
|
{
|
|
nFound = TRUE;
|
|
}
|
|
else
|
|
{
|
|
DestroyObject(oItem);
|
|
SendMessageToPC(oActivator,"You are mortal and this is not yours!");
|
|
return;
|
|
}
|
|
}
|
|
oTest=GetNextPC();
|
|
}
|
|
}
|
|
// get the wand's activator and target, put target info into local vars on activator
|
|
object oMyActivator = GetItemActivator();
|
|
object oMyTarget = GetItemActivatedTarget();
|
|
SetLocalObject(oMyActivator, "dmwandtarget", oMyTarget);
|
|
location lMyLoc = GetItemActivatedTargetLocation();
|
|
SetLocalLocation(oMyActivator, "dmwandloc", lMyLoc);
|
|
|
|
//Make the activator start a conversation with itself
|
|
AssignCommand(oMyActivator, ActionStartConversation(oMyActivator, "dmwand", TRUE));
|
|
return;
|
|
}
|
|
|
|
if(GetTag(oItem)=="AutoFollow")
|
|
{
|
|
object oTarget = GetItemActivatedTarget();
|
|
|
|
if(GetIsObjectValid(oTarget))
|
|
{
|
|
AssignCommand ( oActivator, ActionForceFollowObject(oTarget));
|
|
}
|
|
return;
|
|
}
|
|
|
|
if(GetTag(oItem)=="WandOfFX")
|
|
{
|
|
|
|
// get the wand's activator and target, put target info into local vars on activator
|
|
object oDM = GetItemActivator();
|
|
object oMyTarget = GetItemActivatedTarget();
|
|
SetLocalObject(oDM, "FXWandTarget", oMyTarget);
|
|
location lTargetLoc = GetItemActivatedTargetLocation();
|
|
SetLocalLocation(oDM, "FXWandLoc", lTargetLoc);
|
|
|
|
object oTest=GetFirstPC();
|
|
string sTestName = GetPCPlayerName(oDM);
|
|
// Test to make sure the activator is a DM, or is a DM
|
|
// controlling a creature.
|
|
|
|
if(GetIsDM(oDM) != TRUE)
|
|
{
|
|
object oTest = GetFirstPC();
|
|
string sTestName = GetPCPlayerName(oDM);
|
|
int nFound = FALSE;
|
|
while (GetIsObjectValid(oTest) && (! nFound))
|
|
{
|
|
if (GetPCPlayerName(oTest) == sTestName)
|
|
{
|
|
if(GetIsDM(oTest))
|
|
{
|
|
nFound = TRUE;
|
|
}
|
|
else
|
|
{
|
|
DestroyObject(oItem);
|
|
SendMessageToPC(oDM,"You are mortal and this is not yours!");
|
|
return;
|
|
}
|
|
}
|
|
oTest=GetNextPC();
|
|
}
|
|
}
|
|
|
|
//Make the activator start a conversation with itself
|
|
AssignCommand(oDM, ActionStartConversation(oDM, "fxwand", TRUE));
|
|
return;
|
|
|
|
}
|
|
if(GetTag(oItem)=="EmoteWand")
|
|
{
|
|
AssignCommand(oActivator, ActionStartConversation(oActivator, "emotewand", TRUE));
|
|
return;
|
|
}
|
|
if (GetTag (oItem) == "WAND_DISASTERS")
|
|
{
|
|
|
|
int nDM = GetIsDM (oUser);
|
|
if (nDM)
|
|
AssignCommand (oUser, ActionStartConversation (oUser, "cf_wand_natdis", TRUE));
|
|
else
|
|
DestroyObject (oItem);
|
|
|
|
}
|
|
|
|
if(GetTag(oItem)=="bookofkehaar")
|
|
{
|
|
object oBook=GetItemActivated();
|
|
|
|
object oPC=GetItemActivator();
|
|
object o1=GetLocalObject(oBook, "LS_PAGE1");
|
|
object o2=GetLocalObject(oBook, "LS_PAGE2");
|
|
object o3=GetLocalObject(oBook, "LS_PAGE3");
|
|
|
|
if (o1==oBook && o2==oBook && o3==oBook) SendMessageToPC(oPC, "Using that item now does nothing");
|
|
|
|
else if (GetIsInCombat(oPC)) SendMessageToPC(oPC, "Can't use that during combat.");
|
|
|
|
else
|
|
{
|
|
|
|
//AssignCommand(oPC, ClearAllActions());
|
|
|
|
AssignCommand(oPC, ActionStartConversation(oPC, "ls_bookconv", TRUE));
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
|