diff --git a/.gitignore b/.gitignore index 4c5ded7a..1f5c5892 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,5 @@ _module/poa.mod *.mod *.mod +*.hak +_haks/output/poa_dev.md5 diff --git a/_haks/output/poa_dev.hak b/_haks/output/poa_dev.hak deleted file mode 100644 index 03e5aeb2..00000000 Binary files a/_haks/output/poa_dev.hak and /dev/null differ diff --git a/_haks/output/poa_dev.md5 b/_haks/output/poa_dev.md5 deleted file mode 100644 index e117e641..00000000 --- a/_haks/output/poa_dev.md5 +++ /dev/null @@ -1 +0,0 @@ -470c8aa2ec6da2fb021692e5bf508f39 \ No newline at end of file diff --git a/_haks/poa_dev/nw_s1_aurafear.ncs b/_haks/poa_dev/nw_s1_aurafear.ncs index 104b632d..f6cfd5ac 100644 Binary files a/_haks/poa_dev/nw_s1_aurafear.ncs and b/_haks/poa_dev/nw_s1_aurafear.ncs differ diff --git a/_haks/poa_dev/nw_s1_aurafear.nss b/_haks/poa_dev/nw_s1_aurafear.nss index de8f8aa3..52750544 100644 --- a/_haks/poa_dev/nw_s1_aurafear.nss +++ b/_haks/poa_dev/nw_s1_aurafear.nss @@ -13,8 +13,19 @@ //:: Created On: May 25, 2001 //::////////////////////////////////////////////// +// Modified 2004/01/30 (Brian Greinke) +// Added disable/reenable support +#include "prc_alterations" + void main() { + //first, look to see if effect is already activated + if ( GetHasSpellEffect(SPELLABILITY_AURA_FEAR, OBJECT_SELF) ) + { + PRCRemoveSpellEffects( SPELLABILITY_AURA_FEAR, OBJECT_SELF, OBJECT_SELF ); + return; + } + object oCaster = OBJECT_SELF; if(GetLocalInt(GetArea(OBJECT_SELF), "NOCAST")==2 && !GetIsDM(oCaster)) { diff --git a/_haks/poa_dev/nw_s1_barbrage.ncs b/_haks/poa_dev/nw_s1_barbrage.ncs deleted file mode 100644 index 4f4b0ce2..00000000 Binary files a/_haks/poa_dev/nw_s1_barbrage.ncs and /dev/null differ diff --git a/_haks/poa_dev/nw_s2_bardsong.ncs b/_haks/poa_dev/nw_s2_bardsong.ncs deleted file mode 100644 index 7bcc0476..00000000 Binary files a/_haks/poa_dev/nw_s2_bardsong.ncs and /dev/null differ diff --git a/_haks/poa_dev/nw_s2_elemshape.ncs b/_haks/poa_dev/nw_s2_elemshape.ncs index b364ac81..cbc44263 100644 Binary files a/_haks/poa_dev/nw_s2_elemshape.ncs and b/_haks/poa_dev/nw_s2_elemshape.ncs differ diff --git a/_haks/poa_dev/nw_s2_elemshape.nss b/_haks/poa_dev/nw_s2_elemshape.nss index 6c71d2a6..321ad246 100644 --- a/_haks/poa_dev/nw_s2_elemshape.nss +++ b/_haks/poa_dev/nw_s2_elemshape.nss @@ -10,21 +10,36 @@ //:: Created By: Preston Watamaniuk //:: Created On: Jan 22, 2002 //::////////////////////////////////////////////// -//:: Modified By: Iznoghoud - January 19 2004 -/* -What this script changes: -Allows druid elemental shapes to get stacking item properties carried over correctly -just like shifters. -See Iznoghoud's x2_s2_gwildshp script for an in-detail description. -Added fix for a Bioware Bug: Druids now get elder wildshapes at level 20 and above, -not just when exactly level 20. -*/ +//:: Modified By: Deva Winblood +//:: Modified Date: January 15th-16th, 2008 //::////////////////////////////////////////////// +/* + Modified to insure no shapeshifting spells are castable upon + mounted targets. This prevents problems that can occur due + to dismounting after shape shifting, or other issues that can + occur due to preserved appearances getting out of synch. + + This can additional check can be disabled by setting the variable + X3_NO_SHAPESHIFT_SPELL_CHECK to 1 on the module object. If this + variable is set then this script will function as it did prior to + this modification. + +*/ + +//#include "x3_inc_horse" +#include "prc_alterations" +#include "pnp_shft_poly" + +void elemental_shape_shift(object oPC, int nShape) + +{ + string sResRef = Get2DACache("prc_polymorph", "ResRef", nShape); + StoreCurrentAppearanceAsTrueAppearance(oPC, TRUE); + ShiftIntoResRef(oPC, SHIFTER_TYPE_DRUID, sResRef, TRUE); +} -#include "ws_inc_shifter" void main() { - if(GetLocalInt(GetArea(OBJECT_SELF), "NOCAST")==2 && !GetIsDM(OBJECT_SELF)) { @@ -34,18 +49,32 @@ if(GetLocalInt(GetArea(OBJECT_SELF), "NOCAST")==2 && !GetIsDM(OBJECT_SELF)) } //Declare major variables int nSpell = GetSpellId(); - object oTarget = GetSpellTargetObject(); + object oTarget = PRCGetSpellTargetObject(); effect eVis = EffectVisualEffect(VFX_IMP_POLYMORPH); effect ePoly; int nPoly; - int nMetaMagic = GetMetaMagicFeat(); - int nDuration = GetCasterLevel(OBJECT_SELF); + int nDuration = GetLevelByClass(CLASS_TYPE_DRUID) + + GetLevelByClass(CLASS_TYPE_ARCANE_HIEROPHANT); int bElder = FALSE; - //Enter Metamagic conditions - if (nMetaMagic == METAMAGIC_EXTEND) + if (!GetLocalInt(GetModule(),"X3_NO_SHAPESHIFT_SPELL_CHECK")) + { // check to see if abort due to being mounted + if (PRCHorseGetIsMounted(oTarget)) + { // abort + if (GetIsPC(oTarget)) FloatingTextStrRefOnCreature(111982,oTarget,FALSE); + return; + } // abort + } // check to see if abort due to being mounted + + //this command will make shore that polymorph plays nice with the shifter + ShifterCheck(OBJECT_SELF); + + int nShape = GetPersistantLocalInt(OBJECT_SELF, PRC_PNP_SHIFTING + IntToString(nSpell)); + if(nShape > 0) { - nDuration = nDuration *2; //Duration is +100% + elemental_shape_shift(OBJECT_SELF, nShape); + return; } + if(GetLevelByClass(CLASS_TYPE_DRUID) >= 20) { bElder = TRUE; @@ -89,241 +118,246 @@ if(GetLocalInt(GetArea(OBJECT_SELF), "NOCAST")==2 && !GetIsDM(OBJECT_SELF)) nPoly = POLYMORPH_TYPE_ELDER_AIR_ELEMENTAL; } } - - int bWeapon; - int bArmor; - int bItems; - int bCopyGlovesToClaws = FALSE; - - bWeapon = StringToInt(Get2DAString("polymorph","MergeW",nPoly)) == 1; - - if ( WS_ALWAYS_COPY_ARMOR_PROPS ) - bArmor = TRUE; - else - bArmor = StringToInt(Get2DAString("polymorph","MergeA",nPoly)) == 1; - - if ( WS_ALWAYS_COPY_ITEM_PROPS ) - bItems = TRUE; - else - bItems = StringToInt(Get2DAString("polymorph","MergeI",nPoly)) == 1; - - // Send message to PC about which items get merged to this form - string sMerge; - sMerge = "Merged: "; // <c~��>: This is a color code that makes the text behind it sort of light blue. - if(bArmor) sMerge += "<caz�>Armor, Helmet, Shield"; - if(bItems) sMerge += ",</c> <ca�a>Rings, Amulet, Cloak, Boots, Belt, Bracers"; - if( bWeapon || WS_COPY_WEAPON_PROPS_TO_UNARMED == 1 ) - sMerge += ",</c> <c�AA>Weapon"; - else if ( WS_COPY_WEAPON_PROPS_TO_UNARMED == 2 ) - sMerge += ",</c> <c�AA>Gloves to unarmed attacks"; - else if (WS_COPY_WEAPON_PROPS_TO_UNARMED == 3 ) - sMerge += ",</c> <c�AA>Weapon (if you had one equipped) or gloves to unarmed attacks"; - else - sMerge += ",</c> <c�AA>No weapon or gloves to unarmed attacks"; - SendMessageToPC(oTarget,sMerge + ".</c>"); - - // Store which items should transfer to this polymorph type. (For exportallchar scripts) - SetLocalInt(oTarget, "GW_PolyID", nPoly); - SetLocalInt(oTarget, "GW_bWeapon", bWeapon ); - SetLocalInt(oTarget, "GW_bArmor", bArmor ); - SetLocalInt(oTarget, "GW_bItems", bItems ); - - //-------------------------------------------------------------------------- - // Store the old objects so we can access them after the character has - // changed into his new form - //-------------------------------------------------------------------------- - object oWeaponOld; - object oArmorOld; - object oRing1Old ; - object oRing2Old; - object oAmuletOld; - object oCloakOld ; - object oBootsOld ; - object oBeltOld ; - object oHelmetOld; - object oShield ; - object oBracerOld; - object oHideOld; - //Assume the normal shape doesn't have a creature skin object. - //If using a subracesystem or something else that places a skin on the normal shape - //another condition is needed to decide whether or not to store current items. - //One way could be to scan all effects to see whether one is a polymorph effect. - int nPolyed = GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_CARMOUR,OBJECT_SELF)); - // If there is a creature armor see if it is a creature hide put - // on the unpolymorphed player by scanning for a polymorph effect. - if ( nPolyed ) - nPolyed = ( ScanForPolymorphEffect(OBJECT_SELF) != -2 ); - if(! nPolyed) - { - //if not polymorphed get items worn and store on player. - oWeaponOld = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,OBJECT_SELF); - oArmorOld = GetItemInSlot(INVENTORY_SLOT_CHEST,OBJECT_SELF); - oRing1Old = GetItemInSlot(INVENTORY_SLOT_LEFTRING,OBJECT_SELF); - oRing2Old = GetItemInSlot(INVENTORY_SLOT_RIGHTRING,OBJECT_SELF); - oAmuletOld = GetItemInSlot(INVENTORY_SLOT_NECK,OBJECT_SELF); - oCloakOld = GetItemInSlot(INVENTORY_SLOT_CLOAK,OBJECT_SELF); - oBootsOld = GetItemInSlot(INVENTORY_SLOT_BOOTS,OBJECT_SELF); - oBeltOld = GetItemInSlot(INVENTORY_SLOT_BELT,OBJECT_SELF); - oHelmetOld = GetItemInSlot(INVENTORY_SLOT_HEAD,OBJECT_SELF); - oShield = GetItemInSlot(INVENTORY_SLOT_LEFTHAND,OBJECT_SELF); - oBracerOld = GetItemInSlot(INVENTORY_SLOT_ARMS,OBJECT_SELF); - oHideOld = GetItemInSlot(INVENTORY_SLOT_CARMOUR,OBJECT_SELF); - SetLocalObject(OBJECT_SELF,"GW_OldWeapon",oWeaponOld); - SetLocalObject(OBJECT_SELF,"GW_OldArmor",oArmorOld); - SetLocalObject(OBJECT_SELF,"GW_OldRing1",oRing1Old); - SetLocalObject(OBJECT_SELF,"GW_OldRing2",oRing2Old); - SetLocalObject(OBJECT_SELF,"GW_OldAmulet",oAmuletOld); - SetLocalObject(OBJECT_SELF,"GW_OldCloak",oCloakOld); - SetLocalObject(OBJECT_SELF,"GW_OldBoots",oBootsOld); - SetLocalObject(OBJECT_SELF,"GW_OldBelt",oBeltOld); - SetLocalObject(OBJECT_SELF,"GW_OldHelmet",oHelmetOld); - SetLocalObject(OBJECT_SELF,"GW_OldBracer",oBracerOld); - SetLocalObject(OBJECT_SELF,"GW_OldHide",oHideOld); - if (GetIsObjectValid(oShield)) - { - if (GetBaseItemType(oShield) !=BASE_ITEM_LARGESHIELD && - GetBaseItemType(oShield) !=BASE_ITEM_SMALLSHIELD && - GetBaseItemType(oShield) !=BASE_ITEM_TOWERSHIELD) - { - oShield = OBJECT_INVALID; - } - } - SetLocalObject(OBJECT_SELF,"GW_OldShield",oShield); - - } - else - { - //if already polymorphed use items stored earlier. - oWeaponOld = GetLocalObject(OBJECT_SELF,"GW_OldWeapon"); - oArmorOld = GetLocalObject(OBJECT_SELF,"GW_OldArmor"); - oRing1Old = GetLocalObject(OBJECT_SELF,"GW_OldRing1"); - oRing2Old = GetLocalObject(OBJECT_SELF,"GW_OldRing2"); - oAmuletOld = GetLocalObject(OBJECT_SELF,"GW_OldAmulet"); - oCloakOld = GetLocalObject(OBJECT_SELF,"GW_OldCloak"); - oBootsOld = GetLocalObject(OBJECT_SELF,"GW_OldBoots"); - oBeltOld = GetLocalObject(OBJECT_SELF,"GW_OldBelt"); - oHelmetOld = GetLocalObject(OBJECT_SELF,"GW_OldHelmet"); - oShield = GetLocalObject(OBJECT_SELF,"GW_OldShield"); - oBracerOld = GetLocalObject(OBJECT_SELF,"GW_OldBracer"); - oHideOld = GetLocalObject(OBJECT_SELF,"GW_OldHide"); - } - - //-------------------------------------------------------------------------- - // Here the actual polymorphing is done - //-------------------------------------------------------------------------- ePoly = EffectPolymorph(nPoly); - //-------------------------------------------------------------------------- - // Iznoghoud: Link the stackable properties as permanent bonuses to the - // Polymorph effect, instead of putting them on the creature hide. They will - // properly disappear as soon as the polymorph is ended. - //-------------------------------------------------------------------------- - ePoly = AddStackablePropertiesToPoly ( oTarget, ePoly, bWeapon, bItems, bArmor, oArmorOld, oRing1Old, oRing2Old, oAmuletOld, oCloakOld, oBracerOld, oBootsOld, oBeltOld, oHelmetOld, oShield, oWeaponOld, oHideOld); - ePoly = ExtraordinaryEffect(ePoly); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, OBJECT_SELF); - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ePoly, OBJECT_SELF, HoursToSeconds(nDuration)); //Fire cast spell at event for the specified target SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_ELEMENTAL_SHAPE, FALSE)); - //-------------------------------------------------------------------------- - // This code handles the merging of item properties - //-------------------------------------------------------------------------- - object oWeaponNew = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,OBJECT_SELF); - object oArmorNew = GetItemInSlot(INVENTORY_SLOT_CARMOUR,OBJECT_SELF); - object oClawLeft = GetItemInSlot(INVENTORY_SLOT_CWEAPON_L,OBJECT_SELF); - object oClawRight = GetItemInSlot(INVENTORY_SLOT_CWEAPON_R,OBJECT_SELF); - object oBite = GetItemInSlot(INVENTORY_SLOT_CWEAPON_B,OBJECT_SELF); - //-------------------------------------------------------------------------- - // ...Weapons - //-------------------------------------------------------------------------- - if (bWeapon) + + int bWeapon = StringToInt(Get2DACache("polymorph","MergeW",nPoly)) == 1; + int bArmor = StringToInt(Get2DACache("polymorph","MergeA",nPoly)) == 1; + int bItems = StringToInt(Get2DACache("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)) + + + { - //---------------------------------------------------------------------- - // GZ: 2003-10-20 - // Sorry, but I was forced to take that out, it was confusing people - // and there were problems with updating the stats sheet. - //---------------------------------------------------------------------- - /* if (!GetIsObjectValid(oWeaponOld)) + if (GetBaseItemType(oShield) !=BASE_ITEM_LARGESHIELD && + GetBaseItemType(oShield) !=BASE_ITEM_SMALLSHIELD && + GetBaseItemType(oShield) !=BASE_ITEM_TOWERSHIELD) + + + + + + + + + + + + + + + + + + + + + + { - //------------------------------------------------------------------ - // If we had no weapon equipped before, remove the old weapon - // to allow monks to change into unarmed forms by not equipping any - // weapon before polymorphing - //------------------------------------------------------------------ - DestroyObject(oWeaponNew); + + + + + oShield = OBJECT_INVALID; + } - else*/ - { - //------------------------------------------------------------------ - // Merge item properties... - //------------------------------------------------------------------ - WildshapeCopyWeaponProperties(oTarget, oWeaponOld, oWeaponNew); - } - } - else { - switch ( WS_COPY_WEAPON_PROPS_TO_UNARMED ) - { - case 1: // Copy over weapon properties to claws/bite - WildshapeCopyNonStackProperties(oWeaponOld,oClawLeft, TRUE); - WildshapeCopyNonStackProperties(oWeaponOld,oClawRight, TRUE); - WildshapeCopyNonStackProperties(oWeaponOld,oBite, TRUE); - break; - case 2: // Copy over glove properties to claws/bite - WildshapeCopyNonStackProperties(oBracerOld,oClawLeft, FALSE); - WildshapeCopyNonStackProperties(oBracerOld,oClawRight, FALSE); - WildshapeCopyNonStackProperties(oBracerOld,oBite, FALSE); - bCopyGlovesToClaws = TRUE; - break; - case 3: // Copy over weapon properties to claws/bite if wearing a weapon, otherwise copy gloves - if ( GetIsObjectValid(oWeaponOld) ) - { - WildshapeCopyNonStackProperties(oWeaponOld,oClawLeft, TRUE); - WildshapeCopyNonStackProperties(oWeaponOld,oClawRight, TRUE); - WildshapeCopyNonStackProperties(oWeaponOld,oBite, TRUE); - } - else - { - WildshapeCopyNonStackProperties(oBracerOld,oClawLeft, FALSE); - WildshapeCopyNonStackProperties(oBracerOld,oClawRight, FALSE); - WildshapeCopyNonStackProperties(oBracerOld,oBite, FALSE); - bCopyGlovesToClaws = TRUE; - } - break; - default: // Do not copy over anything - break; - }; - } - //-------------------------------------------------------------------------- - // ...Armor - //-------------------------------------------------------------------------- - if (bArmor) - { - //---------------------------------------------------------------------- - // Merge item properties from armor and helmet... - //---------------------------------------------------------------------- - WildshapeCopyNonStackProperties(oArmorOld,oArmorNew); - WildshapeCopyNonStackProperties(oHelmetOld,oArmorNew); - WildshapeCopyNonStackProperties(oShield,oArmorNew); - WildshapeCopyNonStackProperties(oHideOld,oArmorNew); - } - //-------------------------------------------------------------------------- - // ...Magic Items - //-------------------------------------------------------------------------- - if (bItems) - { - //---------------------------------------------------------------------- - // Merge item properties from from rings, amulets, cloak, boots, belt - // Iz: And bracers, in case oBracerOld gets set to a valid object. - //---------------------------------------------------------------------- - WildshapeCopyNonStackProperties(oRing1Old,oArmorNew); - WildshapeCopyNonStackProperties(oRing2Old,oArmorNew); - WildshapeCopyNonStackProperties(oAmuletOld,oArmorNew); - WildshapeCopyNonStackProperties(oCloakOld,oArmorNew); - WildshapeCopyNonStackProperties(oBootsOld,oArmorNew); - WildshapeCopyNonStackProperties(oBeltOld,oArmorNew); - // Because Bracers can have On Hit Cast Spell type properties we should - // avoid copying the bracers twice. Otherwise the player can get that On - // Hit effect both when hitting, and getting hit. - if ( bCopyGlovesToClaws == FALSE ) - WildshapeCopyNonStackProperties(oBracerOld,oArmorNew); } + + //this command will make shore that polymorph plays nice with the shifter + + + + + + + + + + + + + + ShifterCheck(OBJECT_SELF); + + + + //Apply the VFX impact and effects + ClearAllActions(); // prevents an exploit + + + + + + + + + + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, OBJECT_SELF); + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ePoly, OBJECT_SELF, HoursToSeconds(nDuration)); + + + + + + 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(oHelmetOld,oArmorNew); + IPWildShapeCopyItemProperties(oArmorOld,oArmorNew); + + + + IPWildShapeCopyItemProperties(oShield,oArmorNew); + + } + + + + if (bItems) + { + + + + + IPWildShapeCopyItemProperties(oRing1Old,oArmorNew); + IPWildShapeCopyItemProperties(oRing2Old,oArmorNew); + IPWildShapeCopyItemProperties(oAmuletOld,oArmorNew); + IPWildShapeCopyItemProperties(oCloakOld,oArmorNew); + IPWildShapeCopyItemProperties(oBootsOld,oArmorNew); + IPWildShapeCopyItemProperties(oBeltOld,oArmorNew); + + + + + + } + + DelayCommand(1.5,ActionCastSpellOnSelf(SPELL_SHAPE_INCREASE_DAMAGE)); } diff --git a/_haks/poa_dev/nw_s2_wholeness.ncs b/_haks/poa_dev/nw_s2_wholeness.ncs deleted file mode 100644 index 4e13fabf..00000000 Binary files a/_haks/poa_dev/nw_s2_wholeness.ncs and /dev/null differ diff --git a/_haks/poa_dev/nw_s2_wildshape.ncs b/_haks/poa_dev/nw_s2_wildshape.ncs index fe2fc3d8..49b525d9 100644 Binary files a/_haks/poa_dev/nw_s2_wildshape.ncs and b/_haks/poa_dev/nw_s2_wildshape.ncs differ diff --git a/_haks/poa_dev/nw_s2_wildshape.nss b/_haks/poa_dev/nw_s2_wildshape.nss index d6af398a..5b2a2f56 100644 --- a/_haks/poa_dev/nw_s2_wildshape.nss +++ b/_haks/poa_dev/nw_s2_wildshape.nss @@ -15,20 +15,37 @@ //:: Created By: Preston Watamaniuk //:: Created On: Jan 22, 2002 //::////////////////////////////////////////////// -//:: Modified By: Iznoghoud - January 19 2004 -/* -What this script changes: -Allows druid wildshapes to get stacking item properties carried over correctly -just like shifters. -See Iznoghoud's x2_s2_gwildshp script for an in-detail description. -*/ +//:: Modified By: Deva Winblood +//:: Modified Date: January 15th-16th, 2008 //::////////////////////////////////////////////// +/* + Modified to insure no shapeshifting spells are castable upon + mounted targets. This prevents problems that can occur due + to dismounting after shape shifting, or other issues that can + occur due to preserved appearances getting out of synch. -#include "ws_inc_shifter" + This can additional check can be disabled by setting the variable + X3_NO_SHAPESHIFT_SPELL_CHECK to 1 on the module object. If this + variable is set then this script will function as it did prior to + this modification. + +*/ + + +//#include "x3_inc_horse" +#include "prc_alterations" +#include "pnp_shft_poly" + +void wild_shape_shift(object oPC, int nShape) +{ + string sResRef = Get2DACache("prc_polymorph", "ResRef", nShape); + StoreCurrentAppearanceAsTrueAppearance(oPC, TRUE); + ShiftIntoResRef(oPC, SHIFTER_TYPE_DRUID, sResRef); +} void main() + { - //Override in town, no casting! if(GetLocalInt(GetArea(OBJECT_SELF), "NOCAST")==2 && !GetIsDM(OBJECT_SELF)) { @@ -37,21 +54,41 @@ if(GetLocalInt(GetArea(OBJECT_SELF), "NOCAST")==2 && !GetIsDM(OBJECT_SELF)) return; } - //Declare major variables int nSpell = GetSpellId(); - object oTarget = GetSpellTargetObject(); + object oTarget = PRCGetSpellTargetObject(); + object oPC = OBJECT_SELF; effect eVis = EffectVisualEffect(VFX_IMP_POLYMORPH); effect ePoly; int nPoly; - int nMetaMagic = GetMetaMagicFeat(); - int nDuration = GetLevelByClass(CLASS_TYPE_DRUID); + int nMetaMagic = PRCGetMetaMagicFeat(); + int nDuration = GetLevelByClass(CLASS_TYPE_DRUID, oPC) + + GetLevelByClass(CLASS_TYPE_ARCANE_HIEROPHANT, oPC); + if (!GetLocalInt(GetModule(),"X3_NO_SHAPESHIFT_SPELL_CHECK")) + { // check to see if abort due to being mounted + if (PRCHorseGetIsMounted(oTarget)) + { // abort + if (GetIsPC(oTarget)) FloatingTextStrRefOnCreature(111982,oTarget,FALSE); + return; + } // abort + } // check to see if abort due to being mounted + //Enter Metamagic conditions - if (nMetaMagic == METAMAGIC_EXTEND) + if ((nMetaMagic & METAMAGIC_EXTEND)) { nDuration = nDuration *2; //Duration is +100% } + //this command will make shore that polymorph plays nice with the shifter + ShifterCheck(OBJECT_SELF); + + int nShape = GetPersistantLocalInt(oPC, PRC_PNP_SHIFTING + IntToString(nSpell)); + if(nShape > 0) + { + wild_shape_shift(oPC, nShape); + return; + } + //Determine Polymorph subradial type if(nSpell == 401) { @@ -93,255 +130,255 @@ if(GetLocalInt(GetArea(OBJECT_SELF), "NOCAST")==2 && !GetIsDM(OBJECT_SELF)) { nPoly = POLYMORPH_TYPE_DIRE_BADGER; } - } + - int bWeapon; - int bArmor; - int bItems; - int bCopyGlovesToClaws = FALSE; + + + + - bWeapon = StringToInt(Get2DAString("polymorph","MergeW",nPoly)) == 1; + - if ( WS_ALWAYS_COPY_ARMOR_PROPS ) - bArmor = TRUE; - else - bArmor = StringToInt(Get2DAString("polymorph","MergeA",nPoly)) == 1; + + + + - if ( WS_ALWAYS_COPY_ITEM_PROPS ) - bItems = TRUE; - else - bItems = StringToInt(Get2DAString("polymorph","MergeI",nPoly)) == 1; + + + + - // Send message to PC about which items get merged to this form - string sMerge; - sMerge = "Merged: "; // <caz�>: This is a color code that makes the text behind it blue. - if(bArmor) sMerge += "<caz�>Armor, Helmet, Shield"; - if(bItems) sMerge += ",</c> <ca�a>Rings, Amulet, Cloak, Boots, Belt, Bracers"; - if( bWeapon || WS_COPY_WEAPON_PROPS_TO_UNARMED == 1 ) - sMerge += ",</c> <c�AA>Weapon"; - else if ( WS_COPY_WEAPON_PROPS_TO_UNARMED == 2 ) - sMerge += ",</c> <c�AA>Gloves to unarmed attacks"; - else if (WS_COPY_WEAPON_PROPS_TO_UNARMED == 3 ) - sMerge += ",</c> <c�AA>Weapon (if you had one equipped) or gloves to unarmed attacks"; - else - sMerge += ",</c> <c�AA>No weapon or gloves to unarmed attacks"; - SendMessageToPC(oTarget,sMerge + ".</c>"); + + + + + + + + + + + + + + - // Store which items should transfer to this polymorph type. (For exportallchar scripts) - SetLocalInt(oTarget, "GW_PolyID", nPoly); - SetLocalInt(oTarget, "GW_bWeapon", bWeapon ); - SetLocalInt(oTarget, "GW_bArmor", bArmor ); - SetLocalInt(oTarget, "GW_bItems", bItems ); + + + + + - //-------------------------------------------------------------------------- - // Store the old objects so we can access them after the character has - // changed into his new form - //-------------------------------------------------------------------------- - object oWeaponOld; - object oArmorOld; - object oRing1Old ; - object oRing2Old; - object oAmuletOld; - object oCloakOld ; - object oBootsOld ; - object oBeltOld ; - object oHelmetOld; - object oShield ; - object oBracerOld; - object oHideOld; - //Assume the normal shape doesn't have a creature skin object. - //If using a subracesystem or something else that places a skin on the normal shape - //another condition is needed to decide whether or not to store current items. - //One way could be to scan all effects to see whether one is a polymorph effect. - int nPolyed = GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_CARMOUR,OBJECT_SELF)); - // If there is a creature armor see if it is a creature hide put - // on the unpolymorphed player by scanning for a polymorph effect. - if ( nPolyed ) - nPolyed = ( ScanForPolymorphEffect(OBJECT_SELF) != -2 ); - if(! nPolyed) - { - //if not polymorphed get items worn and store on player. - oWeaponOld = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,OBJECT_SELF); - oArmorOld = GetItemInSlot(INVENTORY_SLOT_CHEST,OBJECT_SELF); - oRing1Old = GetItemInSlot(INVENTORY_SLOT_LEFTRING,OBJECT_SELF); - oRing2Old = GetItemInSlot(INVENTORY_SLOT_RIGHTRING,OBJECT_SELF); - oAmuletOld = GetItemInSlot(INVENTORY_SLOT_NECK,OBJECT_SELF); - oCloakOld = GetItemInSlot(INVENTORY_SLOT_CLOAK,OBJECT_SELF); - oBootsOld = GetItemInSlot(INVENTORY_SLOT_BOOTS,OBJECT_SELF); - oBeltOld = GetItemInSlot(INVENTORY_SLOT_BELT,OBJECT_SELF); - oHelmetOld = GetItemInSlot(INVENTORY_SLOT_HEAD,OBJECT_SELF); - oShield = GetItemInSlot(INVENTORY_SLOT_LEFTHAND,OBJECT_SELF); - oBracerOld = GetItemInSlot(INVENTORY_SLOT_ARMS,OBJECT_SELF); - oHideOld = GetItemInSlot(INVENTORY_SLOT_CARMOUR,OBJECT_SELF); - SetLocalObject(OBJECT_SELF,"GW_OldWeapon",oWeaponOld); - SetLocalObject(OBJECT_SELF,"GW_OldArmor",oArmorOld); - SetLocalObject(OBJECT_SELF,"GW_OldRing1",oRing1Old); - SetLocalObject(OBJECT_SELF,"GW_OldRing2",oRing2Old); - SetLocalObject(OBJECT_SELF,"GW_OldAmulet",oAmuletOld); - SetLocalObject(OBJECT_SELF,"GW_OldCloak",oCloakOld); - SetLocalObject(OBJECT_SELF,"GW_OldBoots",oBootsOld); - SetLocalObject(OBJECT_SELF,"GW_OldBelt",oBeltOld); - SetLocalObject(OBJECT_SELF,"GW_OldHelmet",oHelmetOld); - SetLocalObject(OBJECT_SELF,"GW_OldBracer",oBracerOld); - SetLocalObject(OBJECT_SELF,"GW_OldHide",oHideOld); - if (GetIsObjectValid(oShield)) - { - if (GetBaseItemType(oShield) !=BASE_ITEM_LARGESHIELD && - GetBaseItemType(oShield) !=BASE_ITEM_SMALLSHIELD && - GetBaseItemType(oShield) !=BASE_ITEM_TOWERSHIELD) - { - oShield = OBJECT_INVALID; - } - } - SetLocalObject(OBJECT_SELF,"GW_OldShield",oShield); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + } - else - { - //if already polymorphed use items stored earlier. - oWeaponOld = GetLocalObject(OBJECT_SELF,"GW_OldWeapon"); - oArmorOld = GetLocalObject(OBJECT_SELF,"GW_OldArmor"); - oRing1Old = GetLocalObject(OBJECT_SELF,"GW_OldRing1"); - oRing2Old = GetLocalObject(OBJECT_SELF,"GW_OldRing2"); - oAmuletOld = GetLocalObject(OBJECT_SELF,"GW_OldAmulet"); - oCloakOld = GetLocalObject(OBJECT_SELF,"GW_OldCloak"); - oBootsOld = GetLocalObject(OBJECT_SELF,"GW_OldBoots"); - oBeltOld = GetLocalObject(OBJECT_SELF,"GW_OldBelt"); - oHelmetOld = GetLocalObject(OBJECT_SELF,"GW_OldHelmet"); - oShield = GetLocalObject(OBJECT_SELF,"GW_OldShield"); - oBracerOld = GetLocalObject(OBJECT_SELF,"GW_OldBracer"); - oHideOld = GetLocalObject(OBJECT_SELF,"GW_OldHide"); - } + + + + + + + + + + + + + + + + - //-------------------------------------------------------------------------- - // Here the actual polymorphing is done - //-------------------------------------------------------------------------- + + + ePoly = EffectPolymorph(nPoly); - //-------------------------------------------------------------------------- - // Iznoghoud: Link the stackable properties as permanent bonuses to the - // Polymorph effect, instead of putting them on the creature hide. They will - // properly disappear as soon as the polymorph is ended. - //-------------------------------------------------------------------------- - ePoly = AddStackablePropertiesToPoly ( oTarget, ePoly, bWeapon, bItems, bArmor, oArmorOld, oRing1Old, oRing2Old, oAmuletOld, oCloakOld, oBracerOld, oBootsOld, oBeltOld, oHelmetOld, oShield, oWeaponOld, oHideOld); + + + + + + ePoly = ExtraordinaryEffect(ePoly); - ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, OBJECT_SELF); - ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ePoly, OBJECT_SELF, HoursToSeconds(nDuration)); + + //Fire cast spell at event for the specified target SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_WILD_SHAPE, FALSE)); - //-------------------------------------------------------------------------- - // This code handles the merging of item properties - //-------------------------------------------------------------------------- - object oWeaponNew = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,OBJECT_SELF); - object oArmorNew = GetItemInSlot(INVENTORY_SLOT_CARMOUR,OBJECT_SELF); - object oClawLeft = GetItemInSlot(INVENTORY_SLOT_CWEAPON_L,OBJECT_SELF); - object oClawRight = GetItemInSlot(INVENTORY_SLOT_CWEAPON_R,OBJECT_SELF); - object oBite = GetItemInSlot(INVENTORY_SLOT_CWEAPON_B,OBJECT_SELF); - //-------------------------------------------------------------------------- - // ...Weapons - //-------------------------------------------------------------------------- - if (bWeapon) - { - //---------------------------------------------------------------------- - // GZ: 2003-10-20 - // Sorry, but I was forced to take that out, it was confusing people - // and there were problems with updating the stats sheet. - //---------------------------------------------------------------------- - /* if (!GetIsObjectValid(oWeaponOld)) - { - //------------------------------------------------------------------ - // If we had no weapon equipped before, remove the old weapon - // to allow monks to change into unarmed forms by not equipping any - // weapon before polymorphing - //------------------------------------------------------------------ - DestroyObject(oWeaponNew); - } - else*/ - { - //------------------------------------------------------------------ - // Merge item properties... - //------------------------------------------------------------------ - WildshapeCopyWeaponProperties(oTarget, oWeaponOld,oWeaponNew); - } - } - else { - switch ( WS_COPY_WEAPON_PROPS_TO_UNARMED ) - { - case 1: // Copy over weapon properties to claws/bite - WildshapeCopyNonStackProperties(oWeaponOld,oClawLeft, TRUE); - WildshapeCopyNonStackProperties(oWeaponOld,oClawRight, TRUE); - WildshapeCopyNonStackProperties(oWeaponOld,oBite, TRUE); - break; - case 2: // Copy over glove properties to claws/bite - WildshapeCopyNonStackProperties(oBracerOld,oClawLeft, FALSE); - WildshapeCopyNonStackProperties(oBracerOld,oClawRight, FALSE); - WildshapeCopyNonStackProperties(oBracerOld,oBite, FALSE); - bCopyGlovesToClaws = TRUE; - break; - case 3: // Copy over weapon properties to claws/bite if wearing a weapon, otherwise copy gloves - if ( GetIsObjectValid(oWeaponOld) ) - { - WildshapeCopyNonStackProperties(oWeaponOld,oClawLeft, TRUE); - WildshapeCopyNonStackProperties(oWeaponOld,oClawRight, TRUE); - WildshapeCopyNonStackProperties(oWeaponOld,oBite, TRUE); - } - else - { - WildshapeCopyNonStackProperties(oBracerOld,oClawLeft, FALSE); - WildshapeCopyNonStackProperties(oBracerOld,oClawRight, FALSE); - WildshapeCopyNonStackProperties(oBracerOld,oBite, FALSE); - bCopyGlovesToClaws = TRUE; - } - break; - default: // Do not copy over anything - break; - }; - } - //-------------------------------------------------------------------------- - // ...Armor - //-------------------------------------------------------------------------- - if (bArmor) - { - //---------------------------------------------------------------------- - // Merge item properties from armor and helmet... - //---------------------------------------------------------------------- - WildshapeCopyNonStackProperties(oArmorOld,oArmorNew); - WildshapeCopyNonStackProperties(oHelmetOld,oArmorNew); - WildshapeCopyNonStackProperties(oShield,oArmorNew); - WildshapeCopyNonStackProperties(oHideOld,oArmorNew); - } - //-------------------------------------------------------------------------- - // ...Magic Items - //-------------------------------------------------------------------------- - if (bItems) - { - //---------------------------------------------------------------------- - // Merge item properties from from rings, amulets, cloak, boots, belt - // Iz: And bracers, in case oBracerOld gets set to a valid object. - //---------------------------------------------------------------------- - WildshapeCopyNonStackProperties(oRing1Old,oArmorNew); - WildshapeCopyNonStackProperties(oRing2Old,oArmorNew); - WildshapeCopyNonStackProperties(oAmuletOld,oArmorNew); - WildshapeCopyNonStackProperties(oCloakOld,oArmorNew); - WildshapeCopyNonStackProperties(oBootsOld,oArmorNew); - WildshapeCopyNonStackProperties(oBeltOld,oArmorNew); - // Because Bracers can have On Hit Cast Spell type properties we should - // avoid copying the bracers twice. Otherwise the player can get that On - // Hit effect both when hitting, and getting hit. - if ( bCopyGlovesToClaws == FALSE ) - WildshapeCopyNonStackProperties(oBracerOld,oArmorNew); - } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -} + int bWeapon = StringToInt(Get2DACache("polymorph","MergeW",nPoly)) == 1; + int bArmor = StringToInt(Get2DACache("polymorph","MergeA",nPoly)) == 1; + int bItems = StringToInt(Get2DACache("polymorph","MergeI",nPoly)) == 1; - - -//============================================================================================ -/* + + object oWeaponOld = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,OBJECT_SELF); object oArmorOld = GetItemInSlot(INVENTORY_SLOT_CHEST,OBJECT_SELF); @@ -357,12 +394,17 @@ if(GetLocalInt(GetArea(OBJECT_SELF), "NOCAST")==2 && !GetIsDM(OBJECT_SELF)) { if (GetBaseItemType(oShield) !=BASE_ITEM_LARGESHIELD && GetBaseItemType(oShield) !=BASE_ITEM_SMALLSHIELD && - GetBaseItemType(oShield) !=BASE_ITEM_SMALLSHIELD) + GetBaseItemType(oShield) !=BASE_ITEM_TOWERSHIELD) { oShield = OBJECT_INVALID; } } + ClearAllActions(); // prevents an exploit + + + if (GetEssentiaInvestedFeat(OBJECT_SELF, FEAT_AZURE_WILD_SHAPE)) + ePoly = EffectLinkEffects(ePoly, EffectDamageIncrease(IPGetDamageBonusConstantFromNumber(GetEssentiaInvestedFeat(OBJECT_SELF, FEAT_AZURE_WILD_SHAPE)), DAMAGE_TYPE_BASE_WEAPON)); @@ -393,5 +435,6 @@ if(GetLocalInt(GetArea(OBJECT_SELF), "NOCAST")==2 && !GetIsDM(OBJECT_SELF)) IPWildShapeCopyItemProperties(oBeltOld,oArmorNew); } + DelayCommand(1.5,ActionCastSpellOnSelf(SPELL_SHAPE_INCREASE_DAMAGE)); } -*/ + diff --git a/_haks/poa_dev/personal_switch.2da b/_haks/poa_dev/personal_switch.2da deleted file mode 100644 index a283b363..00000000 --- a/_haks/poa_dev/personal_switch.2da +++ /dev/null @@ -1,132 +0,0 @@ -2DA V2.0 - - SwitchName SwitchType SwitchValue -3 PRC_PNP_TRUESEEING int 1 -4 PRC_TIMESTOP_LOCAL int 1 -5 PRC_TIMESTOP_NO_HOSTILE int 0 -6 PRC_TIMESTOP_BLANK_PC int 0 -7 PRC_PNP_ELEMENTAL_SWARM int 1 -8 PRC_PNP_TENSERS_TRANSFORMATION int 1 -9 PRC_PNP_BLACK_BLADE_OF_DISASTER int 1 -10 PRC_PNP_FIND_TRAPS int 0 -11 PRC_PNP_DARKNESS int 0 -12 PRC_PNP_DARKNESS_35ED int 0 -13 PRC_PNP_ANIMATE_DEAD int 1 -14 PRC_35ED_WORD_OF_FAITH int 0 -15 PRC_CREATE_UNDEAD_UNCONTROLLED int 1 -16 PRC_CREATE_UNDEAD_PERMANENT int 0 -17 PRC_SLEEP_NO_HD_CAP int 0 -18 PRC_USE_NEW_IMBUE_ARROW int 1 -19 PRC_ORC_WARLORD_COHORT int 1 -20 PRC_LICH_ALTER_SELF_DISABLE int 0 -21 PRC_TRUE_NECROMANCER_ALTERNATE_VISUAL int 1 -22 PRC_THRALLHERD_LEADERSHIP int 1 -23 PRC_PNP_UNIMPINGED int 1 -24 PRC_PNP_IMPENETRABILITY int 1 -25 PRC_PNP_DULLBLADES int 1 -26 PRC_PNP_CHAMPIONS_VALOR int 1 -27 PRC_STAFF_CASTER_LEVEL int 1 -28 PRC_PNP_ABILITY_DAMAGE_EFFECTS int 1 -29 PRC_PNP_REST_HEALING int 0 -30 PRC_PNP_SOMATIC_COMPOMENTS int 0 -31 PRC_PNP_SOMATIC_ITEMS int 0 -32 PRC_MULTISUMMON int 1 -33 PRC_SUMMON_ROUND_PER_LEVEL int 0 -34 PRC_PNP_FAMILIAR_FEEDING int 0 -35 PRC_PNP_HOLY_AVENGER_IPROP int 1 -36 PRC_PNP_SLINGS int 1 -37 PRC_PNP_RACIAL_SPEED int 1 -38 PRC_PNP_ARMOR_SPEED int 1 -39 PRC_REMOVE_PLAYER_SPEED int 1 -40 PRC_BREW_POTION_CASTER_LEVEL int 1 -41 PRC_SCRIBE_SCROLL_CASTER_LEVEL int 1 -42 PRC_CRAFT_WAND_CASTER_LEVEL int 1 -43 PRC_CRAFTING_BASE_ITEMS int 1 -44 PRC_XP_USE_SIMPLE_LA int 1 -45 PRC_XP_USE_SIMPLE_RACIAL_HD int 1 -46 PRC_AUTO_IDENTIFY_ON_ACQUIRE int 1 -47 PRC_AUTO_UNIDENTIFY_ON_UNACQUIRE int 0 -48 PRC_BARD_LIGHT_ARMOR_SPELLCASTING int 1 -49 PRC_PSIONIC_SLAYER_FAV_ENEMY_ABERRATION_ONLY int 1 -50 PRC_ECL_USES_XP_NOT_HD int 1 -51 PRC_PNP_ANIMAL_COMPANIONS int 1 -52 PRC_PNP_FAMILIARS int 1 -53 PRC_POWER_ATTACK int 1 -54 PRC_NEC_TERM_PERMADEATH int 0 -55 PRC_SPELL_ALIGNMENT_RESTRICT int 2 -56 PRC_ALLOW_ONLY_SHARP_WEAPONS int 0 -57 PRC_DEXBASED_WEAPON_POISONING_FAILURE_CHANCE int 1 -58 PRC_PNP_RAPID_METABOLISM int 0 -59 PRC_PNP_ELEMENTAL_DAMAGE int 1 -60 PRC_SMALL_CREATURE_FINESSE int 1 -61 PRC_CRAFT_ROD_CASTER_LEVEL int 1 -62 PRC_CRAFT_STAFF_CASTER_LEVEL int 1 -63 PRC_XP_USE_SIMPLE_RACIAL_HD_NO_FREE_XP int 1 -64 PRC_XP_INCLUDE_RACIAL_HIT_DIE_IN_LA int 0 -65 PRC_XP_USE_SETXP int 0 -66 PRC_DISABLE_COMPONENTS_SHOP int 0 -67 PRC_TRUE_NECROMANCER_ALTERNATE_VISUAL int 1 -68 PRC_DISABLE_CONVO_TEMPLATE_GAIN int 0 -69 PRC_SPELLSLAB int 1 -70 PRC_POWER_ATTACK_STACK_WITH_BW int 1 -71 PRC_DISABLE_SWITCH_CHANGING_CONVO int 1 -72 PRC_ENFORCE_RACIAL_APPEARANCE int 0 -73 PRC_APPEARNCE_CHANGE_DISABLE int 0 -74 ###BELOW_HERE_CAN_BREAK_EXISTING_PW### **** **** -75 PRC_SUPPLY_BASED_REST int 0 -76 PRC_PNP_DEATH_ENABLE int 0 -77 PRC_DEATH_OR_BLEED int 1 -78 PRC_DEATH_DAMAGE_FROM_BLEEDING int 1 -79 PRC_DEATH_BLEED_TO_STABLE_CHANCE int 1 -80 PRC_DEATH_STABLE_TO_DISABLED_CHANCE int 1 -81 PRC_PW_TIME int 0 -82 PRC_PW_HP_TRACKING int 0 -83 PRC_PW_LOCATION_TRACKING int 0 -84 PRC_PW_MAPPIN_TRACKING int 0 -85 PRC_PW_DEATH_TRACKING int 0 -86 PRC_PW_SPELL_TRACKING int 0 -87 PRC_PW_LOGON_DELAY int 0 -88 PRC_XP_USE_PNP_XP int 1 -89 PRC_XP_MUST_BE_IN_AREA int 1 -90 PRC_XP_MAX_PHYSICAL_DISTANCE int 0 -91 PRC_XP_MAX_LEVEL_DIFF int 8 -92 PRC_EPIC_INGORE_DEFAULT int 0 -93 PRC_EPIC_XP_COSTS int 1 -94 PRC_EPIC_TAKE_TEN_RULE int 1 -95 PRC_EPIC_PRIMARY_ABILITY_MODIFIER_RULE int 1 -96 PRC_EPIC_BACKLASH_DAMAGE int 1 -97 PRC_EPIC_FOCI_ADJUST_DC int 1 -98 PRC_EPIC_GOLD_MULTIPLIER int 1 -99 PRC_EPIC_XP_FRACTION int 1 -100 PRC_EPIC_FAILURE_FRACTION_GOLD int 1 -101 PRC_EPIC_BOOK_DESTRUCTION int 0 -102 PRC_EPIC_CONVO_LEARNING_DISABLE int 0 -103 PRC_CRAFTING_TIME_SCALE int 1 -104 PRC_AFTS_EXTRA_DAMAGE int 1 -105 PRC_DRAGON_DISCIPLE_SIZE_CHANGES int 1 -106 PRC_NPC_HAS_PC_SPELLCASTING int 1 -107 PRC_ENABLE_SPELL_SHARING int 1 -108 PRC_USE_DATABASE int 1 -109 PRC_DB_PRECACHE int 0 -110 PRC_DB_SQLITE int 0 -111 PRC_DB_SQLITE_INTERVAL int 0 -112 PRC_DB_MYSQL int 0 -113 PRC_USE_LETOSCRIPT int 0 -114 PRC_LETOSCRIPT_PHEONIX_SYNTAX int 0 -115 PRC_LETOSCRIPT_FIX_ABILITIES int 0 -116 PRC_LETOSCRIPT_UNICORN_SQL int 0 -117 PRC_LETOSCRIPT_GETNEWESTBIC int 0 -118 PRC_COMBAT_DEBUG int 0 -119 PRC_DEBUG int 0 -120 PRC_35_SPELL_FOCUS int 0 -121 PRC_35_TWO_WEAPON_FIGHTING int 0 -122 PRC_PNP_DISARM int 1 -123 PRC_BONUS_COHORTS int 1 -124 PRC_XP_HENCHMAN_PARTY_COUNT_x100 int 1 -125 PRC_XP_DOMINATED_PARTY_COUNT_x100 int 1 -126 PRC_XP_ANIMALCOMPANION_PARTY_COUNT_x100 int 1 -127 PRC_XP_FAMILIAR_PARTY_COUNT_x100 int 1 -128 PRC_XP_SUMMONED_PARTY_COUNT_x100 int 1 -129 PRC_CHICKEN_INFESTED int 1 -130 PRC_PNP_SHIFTER_BONUS int 127 -131 PRC_PW_SECURITY_CD_CHECK int 0 diff --git a/_haks/poa_dev/x1_s2_imbuearrow.ncs b/_haks/poa_dev/x1_s2_imbuearrow.ncs deleted file mode 100644 index a0538a07..00000000 Binary files a/_haks/poa_dev/x1_s2_imbuearrow.ncs and /dev/null differ diff --git a/_haks/poa_dev/nw_s1_barbrage.nss b/_removed files/nw_s1_barbrage.nss similarity index 100% rename from _haks/poa_dev/nw_s1_barbrage.nss rename to _removed files/nw_s1_barbrage.nss diff --git a/_haks/poa_dev/nw_s2_bardsong.nss b/_removed files/nw_s2_bardsong.nss similarity index 100% rename from _haks/poa_dev/nw_s2_bardsong.nss rename to _removed files/nw_s2_bardsong.nss diff --git a/_haks/poa_dev/nw_s2_wholeness.nss b/_removed files/nw_s2_wholeness.nss similarity index 100% rename from _haks/poa_dev/nw_s2_wholeness.nss rename to _removed files/nw_s2_wholeness.nss diff --git a/_haks/poa_dev/x1_s2_imbuearrow.nss b/_removed files/x1_s2_imbuearrow.nss similarity index 100% rename from _haks/poa_dev/x1_s2_imbuearrow.nss rename to _removed files/x1_s2_imbuearrow.nss