//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_ 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)); } } }