UW2_PRC8/_module/nss/ac_druidtool.nss
Jaysyn904 5197ad9a4d Initial upload
Initial upload
2023-09-25 20:24:01 -04:00

222 lines
6.4 KiB
Plaintext

//Created by Genisys 5/4/08
//Updated 2/14/09 (Found bugs!!)
//This OnActivateItem script works off the resref name of the items equipped.
//It allows those polymorphed who die to unequip all items and equip them again
//with just the use of this item. (Believe me I know how frustrating that is!)
#include "x2_inc_switches"
//PROTOTYPE DECLARED
void EquipAllUnequipedItems(object oTarget);
void main ()
{
//Declare All Major Variables
object oPC;
oPC = GetItemActivator();
object oItem1, oItem2, oItem3, oItem4, oItem5, oItem6, oItem7, oItem8,
oItem9, oItem11, oItem12;
AssignCommand(oPC, ClearAllActions());
//Add this code to bypass my weapon swapping script..
SetLocalInt(oPC, "SWAPPING", 1);
DelayCommand(10.0, SetLocalInt(oPC, "SWAPPING", 0));
if ((GetItemInSlot(INVENTORY_SLOT_NECK, oPC) != OBJECT_INVALID))
{
oItem1 = GetItemInSlot(INVENTORY_SLOT_NECK, oPC);
SetLocalInt(oItem1, "NECK", 1);
AssignCommand(oPC, ActionUnequipItem(GetItemInSlot(INVENTORY_SLOT_NECK, oPC)));
}
if ((GetItemInSlot(INVENTORY_SLOT_BELT, oPC) != OBJECT_INVALID))
{
oItem2 = GetItemInSlot(INVENTORY_SLOT_BELT, oPC);
SetLocalInt(oItem2, "BELT", 1);
AssignCommand(oPC, ActionUnequipItem(GetItemInSlot(INVENTORY_SLOT_BELT, oPC)));
}
if ((GetItemInSlot(INVENTORY_SLOT_BOOTS, oPC) != OBJECT_INVALID))
{
oItem3 = GetItemInSlot(INVENTORY_SLOT_BOOTS, oPC);
SetLocalInt(oItem3, "BOOTS", 1);
AssignCommand(oPC, ActionUnequipItem(GetItemInSlot(INVENTORY_SLOT_BOOTS, oPC)));
}
if ((GetItemInSlot(INVENTORY_SLOT_CHEST, oPC) != OBJECT_INVALID))
{
oItem4 = GetItemInSlot(INVENTORY_SLOT_CHEST, oPC);
SetLocalInt(oItem4, "CHEST", 1);
AssignCommand(oPC, ActionUnequipItem(GetItemInSlot(INVENTORY_SLOT_CHEST, oPC)));
}
if ((GetItemInSlot(INVENTORY_SLOT_CLOAK, oPC) != OBJECT_INVALID))
{
oItem5 = GetItemInSlot(INVENTORY_SLOT_CLOAK, oPC);
SetLocalInt(oItem5, "CLOAK", 1);
AssignCommand(oPC, ActionUnequipItem(GetItemInSlot(INVENTORY_SLOT_CLOAK, oPC)));
}
if ((GetItemInSlot(INVENTORY_SLOT_HEAD, oPC) != OBJECT_INVALID))
{
oItem6 = GetItemInSlot(INVENTORY_SLOT_HEAD, oPC);
SetLocalInt(oItem6, "HEAD", 1);
AssignCommand(oPC, ActionUnequipItem(GetItemInSlot(INVENTORY_SLOT_HEAD, oPC)));
}
if ((GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC) != OBJECT_INVALID))
{
oItem7 = GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC);
SetLocalInt(oItem7, "L_HAND", 1);
AssignCommand(oPC, ActionUnequipItem(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC)));
}
if ((GetItemInSlot(INVENTORY_SLOT_LEFTRING, oPC) != OBJECT_INVALID))
{
oItem8 = GetItemInSlot(INVENTORY_SLOT_LEFTRING, oPC);
SetLocalInt(oItem8, "L_RING", 1);
AssignCommand(oPC, ActionUnequipItem(GetItemInSlot(INVENTORY_SLOT_LEFTRING, oPC)));
}
if ((GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC) != OBJECT_INVALID))
{
oItem9 = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC);
SetLocalInt(oItem9, "R_HAND", 1);
AssignCommand(oPC, ActionUnequipItem(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC)));
}
if ((GetItemInSlot(INVENTORY_SLOT_RIGHTRING, oPC) != OBJECT_INVALID))
{
oItem11 = GetItemInSlot(INVENTORY_SLOT_RIGHTRING, oPC);
SetLocalInt(oItem11, "R_RING", 1);
AssignCommand(oPC, ActionUnequipItem(GetItemInSlot(INVENTORY_SLOT_RIGHTRING, oPC)));
}
if ((GetItemInSlot(INVENTORY_SLOT_ARMS, oPC) != OBJECT_INVALID))
{
oItem12 = GetItemInSlot(INVENTORY_SLOT_ARMS, oPC);
SetLocalInt(oItem12, "ARMS", 1);
AssignCommand(oPC, ActionUnequipItem(GetItemInSlot(INVENTORY_SLOT_ARMS, oPC)));
}
//Finally, have the PC equip all of the items after a delay..
DelayCommand(1.5, EquipAllUnequipedItems(oPC));
//Main Script End
}
//////////////////////////////////////////////////////////////
//PROTOTYPE DEFINED
void EquipAllUnequipedItems(object oTarget)
{
object oItem;
float fFloat = 0.5;
//Loop through and find each item which was unequiped..
//Then assign the PC the action to equip it.
//Then reset the variable to 0
oItem = GetFirstItemInInventory(oTarget);
while(GetIsObjectValid(oItem))
{
//Increment the float time by 0.1 second each time we loop
fFloat += 0.1;
if(GetLocalInt(oItem, "NECK") == 1)
{
DelayCommand(fFloat, AssignCommand(oTarget, ActionEquipItem(oItem, INVENTORY_SLOT_NECK)));
SetLocalInt(oItem, "NECK", 0);
}
else if(GetLocalInt(oItem, "HEAD") == 1)
{
DelayCommand(fFloat, AssignCommand(oTarget, ActionEquipItem(oItem, INVENTORY_SLOT_HEAD)));
SetLocalInt(oItem, "HEAD", 0);
}
else if(GetLocalInt(oItem, "CLOAK") == 1)
{
DelayCommand(fFloat, AssignCommand(oTarget, ActionEquipItem(oItem, INVENTORY_SLOT_CLOAK)));
SetLocalInt(oItem, "CLOAK", 0);
}
else if(GetLocalInt(oItem, "ARMS") == 1)
{
DelayCommand(fFloat, AssignCommand(oTarget, ActionEquipItem(oItem, INVENTORY_SLOT_ARMS)));
SetLocalInt(oItem, "ARMS", 0);
}
else if(GetLocalInt(oItem, "BELT") == 1)
{
DelayCommand(fFloat, AssignCommand(oTarget, ActionEquipItem(oItem, INVENTORY_SLOT_BELT)));
SetLocalInt(oItem, "BELT", 0);
}
else if(GetLocalInt(oItem, "BOOTS") == 1)
{
DelayCommand(fFloat, AssignCommand(oTarget, ActionEquipItem(oItem, INVENTORY_SLOT_BOOTS)));
SetLocalInt(oItem, "BOOTS", 0);
}
else if(GetLocalInt(oItem, "CHEST") == 1)
{
DelayCommand(fFloat, AssignCommand(oTarget, ActionEquipItem(oItem, INVENTORY_SLOT_CHEST)));
SetLocalInt(oItem, "CHEST", 0);
}
//NOTE: Right hand must go before left hand!!
else if(GetLocalInt(oItem, "R_HAND") == 1)
{
DelayCommand(fFloat, AssignCommand(oTarget, ActionEquipItem(oItem, INVENTORY_SLOT_RIGHTHAND)));
SetLocalInt(oItem, "R_HAND", 0);
}
else if(GetLocalInt(oItem, "R_RING") == 1)
{
DelayCommand(fFloat, AssignCommand(oTarget, ActionEquipItem(oItem, INVENTORY_SLOT_RIGHTRING)));
SetLocalInt(oItem, "R_RING", 0);
}
//NOTE: Left hand must go after right hand!
else if(GetLocalInt(oItem, "L_HAND") == 1)
{
DelayCommand(fFloat, AssignCommand(oTarget, ActionEquipItem(oItem, INVENTORY_SLOT_LEFTHAND)));
SetLocalInt(oItem, "L_HAND", 0);
}
else if(GetLocalInt(oItem, "L_RING") == 1)
{
DelayCommand(fFloat, AssignCommand(oTarget, ActionEquipItem(oItem, INVENTORY_SLOT_LEFTRING)));
SetLocalInt(oItem, "L_RING", 0);
}
else
{
//Do nothing :)
}
oItem = GetNextItemInInventory(oTarget);
}
//Protoype End
}