101 lines
3.3 KiB
Plaintext
101 lines
3.3 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: FileName henchmanmng_arm
|
|
//:://////////////////////////////////////////////
|
|
//:: This script will cause the henchman to give the PC all their
|
|
//:: armor 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 "NW_I0_GENERIC"
|
|
void main()
|
|
{
|
|
object oItem, oBag, oClothing;
|
|
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);
|
|
SetAssociateState(NW_ASC_IS_BUSY,TRUE);
|
|
|
|
// Give the PC a bag of holding or other container.
|
|
SetLocalString(OBJECT_SELF,"ContainerType","NW_IT_CONTAIN001");
|
|
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);
|
|
|
|
ClearAllActions();
|
|
|
|
// First go through the backpack.
|
|
|
|
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:
|
|
DelayCommand(0.2,ActionGiveItem(oItem,oBag));
|
|
break;
|
|
|
|
default: break;
|
|
}
|
|
|
|
oItem = GetNextItemInInventory(OBJECT_SELF);
|
|
}
|
|
|
|
// Next go through all the equipped items. DO NOT transfer creature
|
|
// items to the PC!
|
|
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_HELMET:
|
|
case BASE_ITEM_SMALLSHIELD:
|
|
case BASE_ITEM_LARGESHIELD:
|
|
case BASE_ITEM_TOWERSHIELD:
|
|
DelayCommand(0.2,ActionGiveItem(oItem,oBag));
|
|
break;
|
|
|
|
default: break;
|
|
}
|
|
}
|
|
|
|
// Now for some decency: we don't want the henchman to stand there
|
|
// all naked (do we????), so we create a nice monk's outfit.
|
|
|
|
string sClothing = GetLocalString(OBJECT_SELF, "sClothing");
|
|
//SendMessageToPC(GetPCSpeaker(), "Clothing is " +sClothing);
|
|
if(sClothing != "")
|
|
{
|
|
oClothing = CreateItemOnObject(sClothing,OBJECT_SELF,1);
|
|
}
|
|
else
|
|
{
|
|
oClothing = CreateItemOnObject("NW_CLOTH016",OBJECT_SELF,1);
|
|
}
|
|
DelayCommand(0.2,ActionEquipItem(oClothing,INVENTORY_SLOT_CHEST));
|
|
|
|
// This will later be destroyed by the script henchmanequip, so
|
|
// create a pointer to it.
|
|
SetLocalObject(OBJECT_SELF,"Decency",oClothing);
|
|
SetAssociateState(NW_ASC_IS_BUSY,FALSE);
|
|
}
|