#include "prc_x2_itemprop" #include "prc_inc_racial" void DoShapechange(object oPC, int newShape); //Script whipped up by El to allow druids to use their wild shape feat //to transform into more creatures than the basic, hum-drum five that //Bioware gave us void DoShapechange(object oPC, int nPoly) { effect ePoly = SupernaturalEffect( EffectPolymorph(nPoly) ); //Edited to be a Supernatural effect so a druid can keep the shape through resting //====================================COPIED FROM NW_S2_WILDSHAPE=======================// //Fire cast spell at event for the specified target SignalEvent(OBJECT_SELF, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_WILD_SHAPE, FALSE)); int bWeapon = StringToInt(Get2DAString("polymorph","MergeW",nPoly)) == 1; int bArmor = StringToInt(Get2DAString("polymorph","MergeA",nPoly)) == 1; int bItems = StringToInt(Get2DAString("polymorph","MergeI",nPoly)) == 1; object oWeaponOld = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,OBJECT_SELF); object oArmorOld = GetItemInSlot(INVENTORY_SLOT_CHEST,OBJECT_SELF); object oRing1Old = GetItemInSlot(INVENTORY_SLOT_LEFTRING,OBJECT_SELF); object oRing2Old = GetItemInSlot(INVENTORY_SLOT_RIGHTRING,OBJECT_SELF); object oAmuletOld = GetItemInSlot(INVENTORY_SLOT_NECK,OBJECT_SELF); object oCloakOld = GetItemInSlot(INVENTORY_SLOT_CLOAK,OBJECT_SELF); object oBootsOld = GetItemInSlot(INVENTORY_SLOT_BOOTS,OBJECT_SELF); object oBeltOld = GetItemInSlot(INVENTORY_SLOT_BELT,OBJECT_SELF); object oHelmetOld = GetItemInSlot(INVENTORY_SLOT_HEAD,OBJECT_SELF); object oShield = GetItemInSlot(INVENTORY_SLOT_LEFTHAND,OBJECT_SELF); if (GetIsObjectValid(oShield)) { if (GetBaseItemType(oShield) !=BASE_ITEM_LARGESHIELD && GetBaseItemType(oShield) !=BASE_ITEM_SMALLSHIELD && GetBaseItemType(oShield) !=BASE_ITEM_TOWERSHIELD) { oShield = OBJECT_INVALID; } } //Apply the VFX impact and effects ClearAllActions(); // prevents an exploit ePoly = ExtraordinaryEffect( ePoly ); ApplyEffectToObject(DURATION_TYPE_PERMANENT, ePoly, OBJECT_SELF); int apfx = MyPRCGetRacialType(OBJECT_SELF); switch(apfx) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_KNOCK), OBJECT_SELF ); SpeakString("Become another person . . .", TALKVOLUME_WHISPER); break; case 8: case 9: case 17: ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_POLYMORPH), OBJECT_SELF); break; case 7: case 19: case 20: case 23: case 24: ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SUMMON_UNDEAD), OBJECT_SELF); break; default: ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_GAS_EXPLOSION_EVIL), OBJECT_SELF); break; } object oWeaponNew = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,OBJECT_SELF); object oArmorNew = GetItemInSlot(INVENTORY_SLOT_CARMOUR,OBJECT_SELF); if (bWeapon) { IPWildShapeCopyItemProperties(oWeaponOld,oWeaponNew, TRUE); } if (bArmor ) { IPWildShapeCopyItemProperties(oShield,oArmorNew); IPWildShapeCopyItemProperties(oHelmetOld,oArmorNew); IPWildShapeCopyItemProperties(oArmorOld,oArmorNew); } if (bItems ) { IPWildShapeCopyItemProperties(oRing1Old,oArmorNew); IPWildShapeCopyItemProperties(oRing2Old,oArmorNew); IPWildShapeCopyItemProperties(oAmuletOld,oArmorNew); IPWildShapeCopyItemProperties(oCloakOld,oArmorNew); IPWildShapeCopyItemProperties(oBootsOld,oArmorNew); IPWildShapeCopyItemProperties(oBeltOld,oArmorNew); } //============================END OF COPY=====================================// }//DoShapechange