/* s_nodrop_pickup - "No Drop" items (from EQ) This script prevents a PC from attempting to drop, barter, sell or place items designated as "No Drop" To use: 1) Incorporate this script into Module::OnAcquireItem. s_acquireitem, included with this package, is an example 2) Update the list of Tags in GetIsNoDrop() (in i_tagtests) to include the items you designate as No-Drop Author: Scott Thorne E-mail: Thornex2@wans.net Updated: Sept 01, 2002 */ //#include "i_tagtests" void main() { object oItem = GetModuleItemAcquired(); string sItemName = GetName(oItem); object oOwner = GetLocalObject(oItem, "ND_OWNER"); string sOwnerName = GetName(oOwner); //object oPossessor = GetItemPossessor(oItem); string sPossessorName = GetName(OBJECT_SELF); if (!GetIsPC(oOwner)) { if (GetIsPC(OBJECT_SELF)) { //Debug("Branding no-drop item " + sItemName + " to " + sPossessorName); SetLocalObject(oItem, "ND_OWNER", OBJECT_SELF); } else { //Debug("No-drop item " + sItemName + " picked up by NPC " + sPossessorName); DeleteLocalObject(oItem, "ND_OWNER"); /* Clear ownership */ } } else { if (sOwnerName != sPossessorName) { if (GetIsPC(OBJECT_SELF)) { //Debug("PC returning no-drop item " + sItemName + ", belongs to " + sOwnerName); ActionDoCommand(SetCommandable(FALSE)); ActionDoCommand(ClearAllActions()); ActionJumpToObject(oOwner); ActionGiveItem(oItem, oOwner); ActionDoCommand(SetCommandable(TRUE)); SendMessageToPC(OBJECT_SELF, "The " + sItemName + " mysteriously vanishes from your pack!"); } else { //Debug("NPC took no-drop item"); DeleteLocalObject(oItem, "ND_OWNER"); /* Clear ownership */ } } else { //Debug("Re-acquiring own no-drop item " + sItemName); /* No action, re-acquiring own item */ } } /* if */ } /* main() */