/* s_nodrop_drop - "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::OnUnAcquireItem. s_unacquireitem, 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 = GetModuleItemLost(); if (GetIsPC(OBJECT_SELF)) { string sItemName = GetName(oItem); object oPossessor = GetItemPossessor(oItem); switch (GetObjectType(oPossessor)) { case OBJECT_TYPE_CREATURE: //Debug("Bartered with a PC or taken by an NPC"); break; /* no action, PC will give it back in OnAcquireItem */ case OBJECT_TYPE_STORE: //Debug("Sold to a merchant"); ActionTakeItem(oItem, oPossessor); SendMessageToPC(OBJECT_SELF, "The "+ sItemName + " mysteriously reappears in your pack!"); break; case OBJECT_TYPE_PLACEABLE: //Debug("Placed into a container"); ActionTakeItem(oItem, oPossessor); SendMessageToPC(OBJECT_SELF, "The "+ sItemName + " mysteriously reappears in your pack!"); break; default: if (GetIsObjectValid(GetAreaFromLocation(GetLocation(oItem)))) { //Debug("Dropped on the ground"); ActionDoCommand(SetCommandable(FALSE, OBJECT_SELF)); ActionSpeakString("Oops, I dropped something!"); ActionMoveToObject(oItem, TRUE); ActionPickUpItem(oItem); ActionDoCommand(SetCommandable(TRUE, OBJECT_SELF)); } else { //Debug("In barter window"); /* no action, PC will give it back in OnAcquireItem */ } } /* switch */ } /* if GetIsPC() */ } /* main() */