I was trying to make a script called from a conversation where the PC and the party’s whole equipment is being transefered to a chest while they get imprisoned. As it is, a few of the companions will have items that are “cursed” (not really cursed, but they have a curse flag as to not be able to remove them) and those I don’t want transfered to the chest. I haven’t tested this script yet, but at least it compiles. I based this script on one that I found on the NWN Scripts Archive:
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Script by Astaroth. Modified by andgalf.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void main()
{
object oInvItem;
object oPC = GetFirstPC();
object oChest = GetObjectByTag("u_chest");
// Only clear inventory if we haven't already done it before
if (GetLocalInt(oPC, "CLEAR_INV_PC") == 0)
{
oInvItem = GetFirstItemInInventory(oPC);
while (oInvItem != OBJECT_INVALID)
{
CopyItem(oInvItem,oChest,TRUE);
oInvItem = GetNextItemInInventory(oPC);
}
// Since GetNextItemInInvetory() seems to not return equipped items,
// we need to manually remove them one by one.
if ( OBJECT_INVALID != (oInvItem = GetItemInSlot(INVENTORY_SLOT_ARMS, oPC)) )
CopyItem(oInvItem,oChest,TRUE);
DestroyObject(oInvItem,0.5,FALSE);
if ( OBJECT_INVALID != (oInvItem = GetItemInSlot(INVENTORY_SLOT_ARROWS, oPC)) )
CopyItem(oInvItem,oChest,TRUE);
DestroyObject(oInvItem,0.5,FALSE);
if ( OBJECT_INVALID != (oInvItem = GetItemInSlot(INVENTORY_SLOT_BELT, oPC)) )
CopyItem(oInvItem,oChest,TRUE);
DestroyObject(oInvItem,0.5,FALSE);
if ( OBJECT_INVALID != (oInvItem = GetItemInSlot(INVENTORY_SLOT_BOLTS, oPC)) )
CopyItem(oInvItem,oChest,TRUE);
DestroyObject(oInvItem,0.5,FALSE);
if ( OBJECT_INVALID != (oInvItem = GetItemInSlot(INVENTORY_SLOT_BOOTS, oPC)) )
CopyItem(oInvItem,oChest,TRUE);
DestroyObject(oInvItem,0.5,FALSE);
if ( OBJECT_INVALID != (oInvItem = GetItemInSlot(INVENTORY_SLOT_BULLETS, oPC)) )
CopyItem(oInvItem,oChest,TRUE);
DestroyObject(oInvItem,0.5,FALSE);
if ( OBJECT_INVALID != (oInvItem = GetItemInSlot(INVENTORY_SLOT_CARMOUR, oPC)) )
CopyItem(oInvItem,oChest,TRUE);
DestroyObject(oInvItem,0.5,FALSE);
if ( OBJECT_INVALID != (oInvItem = GetItemInSlot(INVENTORY_SLOT_CHEST, oPC)) )
CopyItem(oInvItem,oChest,TRUE);
DestroyObject(oInvItem,0.5,FALSE);
if ( OBJECT_INVALID != (oInvItem = GetItemInSlot(INVENTORY_SLOT_CLOAK, oPC)) )
CopyItem(oInvItem,oChest,TRUE);
DestroyObject(oInvItem,0.5,FALSE);
if ( OBJECT_INVALID != (oInvItem = GetItemInSlot(INVENTORY_SLOT_CWEAPON_B, oPC)) )
CopyItem(oInvItem,oChest,TRUE);
DestroyObject(oInvItem,0.5,FALSE);
if ( OBJECT_INVALID != (oInvItem = GetItemInSlot(INVENTORY_SLOT_CWEAPON_L, oPC)) )
CopyItem(oInvItem,oChest,TRUE);
DestroyObject(oInvItem,0.5,FALSE);
if ( OBJECT_INVALID != (oInvItem = GetItemInSlot(INVENTORY_SLOT_CWEAPON_R, oPC)) )
CopyItem(oInvItem,oChest,TRUE);
DestroyObject(oInvItem,0.5,FALSE);
if ( OBJECT_INVALID != (oInvItem = GetItemInSlot(INVENTORY_SLOT_HEAD, oPC)) )
CopyItem(oInvItem,oChest,TRUE);
DestroyObject(oInvItem,0.5,FALSE);
if ( OBJECT_INVALID != (oInvItem = GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)) )
CopyItem(oInvItem,oChest,TRUE);
DestroyObject(oInvItem,0.5,FALSE);
if ( OBJECT_INVALID != (oInvItem = GetItemInSlot(INVENTORY_SLOT_LEFTRING, oPC)) )
CopyItem(oInvItem,oChest,TRUE);
DestroyObject(oInvItem,0.5,FALSE);
if ( OBJECT_INVALID != (oInvItem = GetItemInSlot(INVENTORY_SLOT_NECK, oPC)) )
CopyItem(oInvItem,oChest,TRUE);
DestroyObject(oInvItem,0.5,FALSE);
if ( OBJECT_INVALID != (oInvItem = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)) )
CopyItem(oInvItem,oChest,TRUE);
DestroyObject(oInvItem,0.5,FALSE);
if ( OBJECT_INVALID != (oInvItem = GetItemInSlot(INVENTORY_SLOT_RIGHTRING, oPC)) )
CopyItem(oInvItem,oChest,TRUE);
DestroyObject(oInvItem,0.5,FALSE);
SetLocalInt(oPC, "CLEAR_INV_PC", 1);
}
if(GetGlobalInt("CLEAR_INV_COMPANIONS") == 0)
{
object oFM = GetFirstFactionMember(oPC, FALSE);
while(GetIsObjectValid(oFM))
{
object oInvItemFM = GetFirstItemInInventory(oFM);
while (oInvItem != OBJECT_INVALID && !GetItemCursedFlag(oInvItem))
{
CopyItem(oInvItem,oChest,TRUE);
DestroyObject(oInvItem,0.5,FALSE);
oInvItem = GetNextItemInInventory(oFM);
}
// Since GetNextItemInInvetory() seems to not return equipped items,
// we need to manually remove them one by one.
if ( OBJECT_INVALID != (oInvItem = GetItemInSlot(INVENTORY_SLOT_ARMS, oFM)) && !GetItemCursedFlag(oInvItem) )
CopyItem(oInvItem,oChest,TRUE);
DestroyObject(oInvItem,0.5,FALSE);
if ( OBJECT_INVALID != (oInvItem = GetItemInSlot(INVENTORY_SLOT_ARROWS, oFM)) && !GetItemCursedFlag(oInvItem) )
CopyItem(oInvItem,oChest,TRUE);
DestroyObject(oInvItem,0.5,FALSE);
if ( OBJECT_INVALID != (oInvItem = GetItemInSlot(INVENTORY_SLOT_BELT, oFM)) && !GetItemCursedFlag(oInvItem) )
CopyItem(oInvItem,oChest,TRUE);
DestroyObject(oInvItem,0.5,FALSE);
if ( OBJECT_INVALID != (oInvItem = GetItemInSlot(INVENTORY_SLOT_BOLTS, oFM)) && !GetItemCursedFlag(oInvItem) )
CopyItem(oInvItem,oChest,TRUE);
DestroyObject(oInvItem,0.5,FALSE);
if ( OBJECT_INVALID != (oInvItem = GetItemInSlot(INVENTORY_SLOT_BOOTS, oFM)) && !GetItemCursedFlag(oInvItem) )
CopyItem(oInvItem,oChest,TRUE);
DestroyObject(oInvItem,0.5,FALSE);
if ( OBJECT_INVALID != (oInvItem = GetItemInSlot(INVENTORY_SLOT_BULLETS, oFM)) && !GetItemCursedFlag(oInvItem) )
CopyItem(oInvItem,oChest,TRUE);
DestroyObject(oInvItem,0.5,FALSE);
if ( OBJECT_INVALID != (oInvItem = GetItemInSlot(INVENTORY_SLOT_CARMOUR, oFM)) && !GetItemCursedFlag(oInvItem) )
CopyItem(oInvItem,oChest,TRUE);
DestroyObject(oInvItem,0.5,FALSE);
if ( OBJECT_INVALID != (oInvItem = GetItemInSlot(INVENTORY_SLOT_CHEST, oFM)) && !GetItemCursedFlag(oInvItem) )
CopyItem(oInvItem,oChest,TRUE);
DestroyObject(oInvItem,0.5,FALSE);
if ( OBJECT_INVALID != (oInvItem = GetItemInSlot(INVENTORY_SLOT_CLOAK, oFM)) && !GetItemCursedFlag(oInvItem) )
CopyItem(oInvItem,oChest,TRUE);
DestroyObject(oInvItem,0.5,FALSE);
if ( OBJECT_INVALID != (oInvItem = GetItemInSlot(INVENTORY_SLOT_CWEAPON_B, oFM)) && !GetItemCursedFlag(oInvItem) )
CopyItem(oInvItem,oChest,TRUE);
DestroyObject(oInvItem,0.5,FALSE);
if ( OBJECT_INVALID != (oInvItem = GetItemInSlot(INVENTORY_SLOT_CWEAPON_L, oFM)) && !GetItemCursedFlag(oInvItem) )
CopyItem(oInvItem,oChest,TRUE);
DestroyObject(oInvItem,0.5,FALSE);
if ( OBJECT_INVALID != (oInvItem = GetItemInSlot(INVENTORY_SLOT_CWEAPON_R, oFM)) && !GetItemCursedFlag(oInvItem) )
CopyItem(oInvItem,oChest,TRUE);
DestroyObject(oInvItem,0.5,FALSE);
if ( OBJECT_INVALID != (oInvItem = GetItemInSlot(INVENTORY_SLOT_HEAD, oFM)) && !GetItemCursedFlag(oInvItem) )
CopyItem(oInvItem,oChest,TRUE);
DestroyObject(oInvItem,0.5,FALSE);
if ( OBJECT_INVALID != (oInvItem = GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oFM)) && !GetItemCursedFlag(oInvItem) )
CopyItem(oInvItem,oChest,TRUE);
DestroyObject(oInvItem,0.5,FALSE);
if ( OBJECT_INVALID != (oInvItem = GetItemInSlot(INVENTORY_SLOT_LEFTRING, oFM)) && !GetItemCursedFlag(oInvItem) )
CopyItem(oInvItem,oChest,TRUE);
DestroyObject(oInvItem,0.5,FALSE);
if ( OBJECT_INVALID != (oInvItem = GetItemInSlot(INVENTORY_SLOT_NECK, oFM)) && !GetItemCursedFlag(oInvItem) )
CopyItem(oInvItem,oChest,TRUE);
DestroyObject(oInvItem,0.5,FALSE);
if ( OBJECT_INVALID != (oInvItem = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oFM)) && !GetItemCursedFlag(oInvItem) )
CopyItem(oInvItem,oChest,TRUE);
DestroyObject(oInvItem,0.5,FALSE);
if ( OBJECT_INVALID != (oInvItem = GetItemInSlot(INVENTORY_SLOT_RIGHTRING, oFM)) && !GetItemCursedFlag(oInvItem) )
CopyItem(oInvItem,oChest,TRUE);
DestroyObject(oInvItem,0.5,FALSE);
SetGlobalInt("CLEAR_INV_COMPANIONS", 1);
oFM = GetNextFactionMember(oPC, FALSE);
}
}
}