Clear out experimental .35 files
Clear out experimental .35 files
This commit is contained in:
@@ -1,220 +0,0 @@
|
||||
|
||||
#include "prc_alterations"
|
||||
#include "prc_inc_spells.nss"
|
||||
#include "prc_add_spell_dc"
|
||||
|
||||
int GetIsValidAnimate(object oTarget);
|
||||
int GetWeaponAnimateSize(object oTarget);
|
||||
void AddArmourHardness(object oHide, object oArmour, object oAnimate);
|
||||
void AddWeaponHardness(object oHide, object oWeapon, object oAnimate);
|
||||
|
||||
const int SIZE_SMALL = 1;
|
||||
const int SIZE_MEDIUM = 2;
|
||||
|
||||
const int ERROR_CODE_5_AGAIN = 1;
|
||||
|
||||
int GetWeaponAnimateSize(object oTarget)
|
||||
{
|
||||
int iBaseItemType = GetBaseItemType(oTarget);
|
||||
switch (iBaseItemType)
|
||||
{
|
||||
case BASE_ITEM_BASTARDSWORD:
|
||||
case BASE_ITEM_DIREMACE:
|
||||
case BASE_ITEM_TWOBLADEDSWORD:
|
||||
case BASE_ITEM_DOUBLEAXE:
|
||||
case BASE_ITEM_HEAVYFLAIL:
|
||||
case BASE_ITEM_GREATAXE:
|
||||
case BASE_ITEM_GREATSWORD:
|
||||
case BASE_ITEM_HALBERD:
|
||||
case BASE_ITEM_SCYTHE:
|
||||
return SIZE_MEDIUM;
|
||||
break;
|
||||
case BASE_ITEM_DWARVENWARAXE:
|
||||
case BASE_ITEM_BATTLEAXE:
|
||||
case BASE_ITEM_DAGGER:
|
||||
case BASE_ITEM_HANDAXE:
|
||||
case BASE_ITEM_KAMA:
|
||||
case BASE_ITEM_KATANA:
|
||||
case BASE_ITEM_KUKRI:
|
||||
case BASE_ITEM_LIGHTFLAIL:
|
||||
case BASE_ITEM_LIGHTHAMMER:
|
||||
case BASE_ITEM_LIGHTMACE:
|
||||
case BASE_ITEM_LONGSWORD:
|
||||
case BASE_ITEM_MORNINGSTAR:
|
||||
case BASE_ITEM_QUARTERSTAFF:
|
||||
case BASE_ITEM_RAPIER:
|
||||
case BASE_ITEM_SCIMITAR:
|
||||
case BASE_ITEM_SHORTSPEAR:
|
||||
case BASE_ITEM_SHORTSWORD:
|
||||
case BASE_ITEM_SICKLE:
|
||||
case BASE_ITEM_WARHAMMER:
|
||||
case BASE_ITEM_WHIP:
|
||||
return SIZE_SMALL;
|
||||
break;
|
||||
}
|
||||
return SIZE_SMALL;
|
||||
}
|
||||
|
||||
int GetIsValidAnimate(object oTarget)
|
||||
{
|
||||
int iBaseItemType = GetBaseItemType(oTarget);
|
||||
itemproperty ipMagicWeapon = GetFirstItemProperty(oTarget);
|
||||
if (GetIsItemPropertyValid(ipMagicWeapon))
|
||||
{
|
||||
if (iBaseItemType == BASE_ITEM_WHIP)
|
||||
{
|
||||
ipMagicWeapon = GetNextItemProperty(oTarget);
|
||||
if (GetIsItemPropertyValid(ipMagicWeapon))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
ipMagicWeapon = GetFirstItemProperty(oTarget);
|
||||
if (GetItemPropertyType(ipMagicWeapon) == ITEM_PROPERTY_BONUS_FEAT)
|
||||
{
|
||||
if (GetItemPropertySubType(ipMagicWeapon) != 37)
|
||||
return FALSE;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
switch (iBaseItemType)
|
||||
{
|
||||
case BASE_ITEM_ARMOR:
|
||||
case BASE_ITEM_BASTARDSWORD:
|
||||
case BASE_ITEM_BATTLEAXE:
|
||||
case BASE_ITEM_DAGGER:
|
||||
case BASE_ITEM_DIREMACE:
|
||||
case BASE_ITEM_DOUBLEAXE:
|
||||
case BASE_ITEM_DWARVENWARAXE:
|
||||
case BASE_ITEM_GREATAXE:
|
||||
case BASE_ITEM_GREATSWORD:
|
||||
case BASE_ITEM_HALBERD:
|
||||
case BASE_ITEM_HANDAXE:
|
||||
case BASE_ITEM_HEAVYFLAIL:
|
||||
case BASE_ITEM_KAMA:
|
||||
case BASE_ITEM_KATANA:
|
||||
case BASE_ITEM_KUKRI:
|
||||
case BASE_ITEM_LIGHTFLAIL:
|
||||
case BASE_ITEM_LIGHTHAMMER:
|
||||
case BASE_ITEM_LIGHTMACE:
|
||||
case BASE_ITEM_LONGSWORD:
|
||||
case BASE_ITEM_MORNINGSTAR:
|
||||
case BASE_ITEM_QUARTERSTAFF:
|
||||
case BASE_ITEM_RAPIER:
|
||||
case BASE_ITEM_SCIMITAR:
|
||||
case BASE_ITEM_SCYTHE:
|
||||
case BASE_ITEM_SHORTSPEAR:
|
||||
case BASE_ITEM_SHORTSWORD:
|
||||
case BASE_ITEM_SICKLE:
|
||||
case BASE_ITEM_TWOBLADEDSWORD:
|
||||
case BASE_ITEM_WARHAMMER:
|
||||
case BASE_ITEM_WHIP:
|
||||
return TRUE;
|
||||
break;
|
||||
default:
|
||||
return FALSE;
|
||||
break;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
|
||||
if (!X2PreSpellCastCode())
|
||||
{
|
||||
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
object oTarget = PRCGetSpellTargetObject();
|
||||
if (GetIsValidAnimate(oTarget))
|
||||
{
|
||||
object oPC = OBJECT_SELF;
|
||||
object oAnimate;
|
||||
location lTarget;
|
||||
effect eVis = EffectVisualEffect(VFX_DUR_ETHEREAL_VISAGE);
|
||||
if (GetItemPossessor(oTarget) == OBJECT_INVALID)
|
||||
{
|
||||
lTarget = GetLocation(oTarget);
|
||||
}
|
||||
else
|
||||
{
|
||||
lTarget = GetLocation(GetItemPossessor(oTarget));
|
||||
}
|
||||
if (GetBaseItemType(oTarget) == BASE_ITEM_ARMOR)
|
||||
{
|
||||
//SendMessageToPC(OBJECT_SELF, "is armour");
|
||||
int iArmourClass = GetItemACValue(oTarget);
|
||||
if (iArmourClass>4)
|
||||
{
|
||||
oAnimate = CreateObject(OBJECT_TYPE_CREATURE, "anim_armour_5_8", lTarget, FALSE, "PRC_Spell_Animated_Object");
|
||||
//SendMessageToPC(OBJECT_SELF, "5-8");
|
||||
}
|
||||
else if (iArmourClass>0)
|
||||
{
|
||||
oAnimate = CreateObject(OBJECT_TYPE_CREATURE, "anim_armour_1_4", lTarget, FALSE, "PRC_Spell_Animated_Object");
|
||||
//SendMessageToPC(OBJECT_SELF, "1-4");
|
||||
}
|
||||
else
|
||||
{
|
||||
oAnimate = CreateObject(OBJECT_TYPE_CREATURE, "anim_armour_0", lTarget, FALSE, "PRC_Spell_Animated_Object");
|
||||
//SendMessageToPC(OBJECT_SELF, "0");
|
||||
}
|
||||
if (iArmourClass>0)
|
||||
{
|
||||
//remove armour from the animated object (armour should not get armour from itself)
|
||||
ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectACDecrease(iArmourClass,AC_ARMOUR_ENCHANTMENT_BONUS),oAnimate);
|
||||
}
|
||||
object oNewTarget = CopyObject(oTarget, GetLocation(oAnimate),oAnimate);
|
||||
DestroyObject(oTarget,1.0);
|
||||
AssignCommand(oAnimate, ActionEquipItem(oNewTarget,INVENTORY_SLOT_CHEST));
|
||||
//SendMessageToPC(OBJECT_SELF, "done armour");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (GetWeaponAnimateSize(oTarget) == SIZE_SMALL)
|
||||
{
|
||||
oAnimate = CreateObject(OBJECT_TYPE_CREATURE, "anim_weapon_smal", lTarget, FALSE, "PRC_Spell_Animated_Object");
|
||||
}
|
||||
else
|
||||
{
|
||||
oAnimate = CreateObject(OBJECT_TYPE_CREATURE, "anim_weapon_larg", lTarget, FALSE, "PRC_Spell_Animated_Object");
|
||||
}
|
||||
object oNewTarget = CopyObject(oTarget, GetLocation(oAnimate),oAnimate);
|
||||
DestroyObject(oTarget,1.0);
|
||||
AssignCommand(oAnimate, ActionEquipItem(oNewTarget,INVENTORY_SLOT_RIGHTHAND));
|
||||
}
|
||||
if (PRCGetMetaMagicFeat() & METAMAGIC_EXTEND)
|
||||
SetLocalInt(oAnimate,"Rounds",(PRCGetCasterLevel(oPC)*2));
|
||||
else
|
||||
SetLocalInt(oAnimate,"Rounds",PRCGetCasterLevel(oPC));
|
||||
effect eDom = SupernaturalEffect(EffectCutsceneDominated());
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVis, oAnimate, 4.0);
|
||||
AssignCommand(oAnimate, ActionPlayAnimation(ANIMATION_LOOPING_DEAD_BACK, 1.0, 2.0));
|
||||
DelayCommand(3.5, ApplyEffectToObject(DURATION_TYPE_PERMANENT, eDom, oAnimate));
|
||||
DelayCommand(4.0, ExecuteScript("animobj_hb", oAnimate));
|
||||
}
|
||||
else
|
||||
{
|
||||
SendMessageToPC(OBJECT_SELF, "Invalide target");
|
||||
SendMessageToPC(OBJECT_SELF, "Target must be armour/clothing/melee weapon");
|
||||
SendMessageToPC(OBJECT_SELF, "Target cannot be magical");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user