Initial Commit
Initial Commit
This commit is contained in:
109
_module/nss/henchmanmng_else.nss
Normal file
109
_module/nss/henchmanmng_else.nss
Normal file
@@ -0,0 +1,109 @@
|
||||
//::///////////////////////////////////////////////
|
||||
//:: FileName henchmanmng_else
|
||||
//:://////////////////////////////////////////////
|
||||
//:: This script will cause the henchman to give the PC all their non-armor
|
||||
//:: possessions within a bag of holding. The PC will arrange the
|
||||
//:: possessions, and then use dialog to give the bag back to the
|
||||
//:: henchman.
|
||||
//:://////////////////////////////////////////////
|
||||
//:: Created By: Pausanias
|
||||
//:://////////////////////////////////////////////
|
||||
|
||||
#include "hench_i0_ident"
|
||||
|
||||
#include "hench_i0_generic"
|
||||
|
||||
void main()
|
||||
{
|
||||
object oItem, oBag;
|
||||
int i;
|
||||
|
||||
// Set the variables
|
||||
// This variable is checked for in dialogue. HenchmanInv = 1
|
||||
// means that the PC has the Henchman's inventory.
|
||||
SetLocalInt(OBJECT_SELF, "HenchmanInv", 1);
|
||||
|
||||
// Give the PC a bag of holding or other container.
|
||||
ExecuteScript("henchbagtype",OBJECT_SELF);
|
||||
string sBagTag = GetLocalString(OBJECT_SELF,"ContainerType");
|
||||
if (GetStringLength(sBagTag) < 2) sBagTag = "NW_IT_CONTAIN006";
|
||||
|
||||
oBag = CreateItemOnObject(sBagTag,GetPCSpeaker(),1);
|
||||
|
||||
// If PC is low-level, the bag sometimes wont' identify for some reason.
|
||||
SetIdentified(oBag,TRUE);
|
||||
|
||||
// The script henchmanequip will have to refer to this bag, so create
|
||||
// a pointer to it.
|
||||
SetLocalObject(OBJECT_SELF,"HenchBag",oBag);
|
||||
|
||||
// First go through the backpack.
|
||||
|
||||
int iMaxGPIdentify = HenchGetMaxGPToIdentify();
|
||||
oItem = GetFirstItemInInventory(OBJECT_SELF);
|
||||
|
||||
while (oItem != OBJECT_INVALID)
|
||||
{
|
||||
switch (GetBaseItemType(oItem))
|
||||
{
|
||||
case BASE_ITEM_ARMOR:
|
||||
case BASE_ITEM_CLOAK:
|
||||
case BASE_ITEM_BOOTS:
|
||||
case BASE_ITEM_HELMET:
|
||||
case BASE_ITEM_SMALLSHIELD:
|
||||
case BASE_ITEM_LARGESHIELD:
|
||||
case BASE_ITEM_TOWERSHIELD:
|
||||
break;
|
||||
case BASE_ITEM_DAGGER:
|
||||
// prevent pixie dagger from being given up
|
||||
if (!GetDroppableFlag(oItem))
|
||||
{
|
||||
break;
|
||||
}
|
||||
default:
|
||||
HenchIdentifyItem(oItem, iMaxGPIdentify);
|
||||
DelayCommand(0.2, ActionGiveItem(oItem, oBag));
|
||||
break;
|
||||
}
|
||||
oItem = GetNextItemInInventory(OBJECT_SELF);
|
||||
}
|
||||
|
||||
// Next go through all the equipped items. DO NOT transfer creature
|
||||
// items to the PC!
|
||||
ClearAllActions();
|
||||
|
||||
for(i = 0; i < NUM_INVENTORY_SLOTS; ++i)
|
||||
{
|
||||
oItem = GetItemInSlot(i,OBJECT_SELF);
|
||||
if (oItem != OBJECT_INVALID)
|
||||
{
|
||||
switch (GetBaseItemType(oItem))
|
||||
{
|
||||
case BASE_ITEM_ARMOR:
|
||||
case BASE_ITEM_CLOAK:
|
||||
case BASE_ITEM_BOOTS:
|
||||
case BASE_ITEM_CREATUREITEM:
|
||||
case BASE_ITEM_CBLUDGWEAPON:
|
||||
case BASE_ITEM_CSLASHWEAPON:
|
||||
case BASE_ITEM_CSLSHPRCWEAP:
|
||||
case BASE_ITEM_CPIERCWEAPON:
|
||||
case BASE_ITEM_HELMET:
|
||||
case BASE_ITEM_SMALLSHIELD:
|
||||
case BASE_ITEM_LARGESHIELD:
|
||||
case BASE_ITEM_TOWERSHIELD:
|
||||
break;
|
||||
case BASE_ITEM_DAGGER:
|
||||
// prevent pixie dagger from being given up
|
||||
if (!GetDroppableFlag(oItem))
|
||||
{
|
||||
break;
|
||||
}
|
||||
default:
|
||||
SetIdentified(oItem, TRUE);
|
||||
DelayCommand(0.2, ActionGiveItem(oItem, oBag));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user