Updated AMS marker feats. Removed arcane & divine marker feats. Updated Dread Necromancer for epic progression. Updated weapon baseitem models. Updated new weapons for crafting & npc equip. Updated prefix. Updated release archive.
129 lines
7.2 KiB
Plaintext
129 lines
7.2 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: Name Starmantle Onhit: Destroy Non-magical weapons
|
|
//:: FileName prc_evnt_strmtl.nss
|
|
//:://////////////////////////////////////////////
|
|
/*
|
|
The starmantle renders the wearer impervious to
|
|
non-magical weapon attacks and transforms any
|
|
non-magical weapon or missile that strikes it
|
|
into harmless light, destroying it forever.
|
|
Contact with the starmantle does not destroy
|
|
magic weapons or missiles, but the starmantle's
|
|
wearer is entitled to a Reflex saving throw
|
|
(DC 15) each time he is struck by such a weapon;
|
|
success indicates that the wearer takes only
|
|
half damage from the weapon (rounded down).
|
|
|
|
Author: Tenjac
|
|
Created: 7/17/06
|
|
*/
|
|
//:://////////////////////////////////////////////
|
|
//:://////////////////////////////////////////////
|
|
|
|
//------------------------------------------------------------------------------
|
|
// AN, 2003
|
|
// Returns TRUE if oItem has any item property that classifies it as magical item
|
|
//------------------------------------------------------------------------------
|
|
// fluffyamoeba - minor optimisation to remove itemprops that will never be on a melee weapon from the check
|
|
int PRCGetIsMagicalMeleeWeapon(object oItem)
|
|
{
|
|
return GetItemHasItemProperty(oItem, ITEM_PROPERTY_ABILITY_BONUS)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_AC_BONUS)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_AC_BONUS_VS_ALIGNMENT_GROUP)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_AC_BONUS_VS_DAMAGE_TYPE)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_AC_BONUS_VS_RACIAL_GROUP)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_AC_BONUS_VS_SPECIFIC_ALIGNMENT)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_ATTACK_BONUS)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_ATTACK_BONUS_VS_ALIGNMENT_GROUP)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_ATTACK_BONUS_VS_RACIAL_GROUP)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_ATTACK_BONUS_VS_SPECIFIC_ALIGNMENT)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_BASE_ITEM_WEIGHT_REDUCTION)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_BONUS_FEAT)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_CAST_SPELL)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_DAMAGE_BONUS)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_DAMAGE_BONUS_VS_ALIGNMENT_GROUP)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_DAMAGE_BONUS_VS_RACIAL_GROUP)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_DAMAGE_BONUS_VS_SPECIFIC_ALIGNMENT)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_DAMAGE_REDUCTION)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_DAMAGE_RESISTANCE)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_DAMAGE_VULNERABILITY)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_DARKVISION)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_DECREASED_ABILITY_SCORE)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_DECREASED_AC)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_DECREASED_ATTACK_MODIFIER)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_DECREASED_DAMAGE)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_DECREASED_ENHANCEMENT_MODIFIER)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_DECREASED_SAVING_THROWS)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_DECREASED_SAVING_THROWS_SPECIFIC)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_DECREASED_SKILL_MODIFIER)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_ENHANCED_CONTAINER_REDUCED_WEIGHT)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_ENHANCEMENT_BONUS)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_ENHANCEMENT_BONUS_VS_ALIGNMENT_GROUP)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_ENHANCEMENT_BONUS_VS_RACIAL_GROUP)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_ENHANCEMENT_BONUS_VS_SPECIFIC_ALIGNEMENT)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_EXTRA_MELEE_DAMAGE_TYPE)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_FREEDOM_OF_MOVEMENT)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_HASTE)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_HOLY_AVENGER)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_IMMUNITY_DAMAGE_TYPE)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_IMMUNITY_MISCELLANEOUS)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_IMMUNITY_SPECIFIC_SPELL)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_IMMUNITY_SPELL_SCHOOL)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_IMMUNITY_SPELLS_BY_LEVEL)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_IMPROVED_EVASION)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_KEEN)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_LIGHT)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_MASSIVE_CRITICALS)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_MIGHTY)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_MIND_BLANK)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_MONSTER_DAMAGE)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_NO_DAMAGE)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_ON_HIT_PROPERTIES)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_ON_MONSTER_HIT)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_POISON)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_REGENERATION)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_REGENERATION_VAMPIRIC)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_SAVING_THROW_BONUS)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_SAVING_THROW_BONUS_SPECIFIC)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_SKILL_BONUS)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_SPELL_RESISTANCE)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_TRUE_SEEING)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_TURN_RESISTANCE)
|
|
|| GetItemHasItemProperty(oItem, ITEM_PROPERTY_ONHITCASTSPELL);
|
|
}
|
|
|
|
#include "prc_inc_spells"
|
|
|
|
void main()
|
|
{
|
|
//Get attacker that hit
|
|
object oSpellOrigin = OBJECT_SELF;
|
|
object oSpellTarget = PRCGetSpellTargetObject(oSpellOrigin);
|
|
object oWeaponR = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oSpellTarget);
|
|
object oWeaponL = GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oSpellTarget);
|
|
|
|
/*
|
|
// motu99: obsolate - is handled in PRCGetSpellCastItem
|
|
// Scripted combat system
|
|
if(!GetIsObjectValid(oItem))
|
|
{
|
|
oItem = GetLocalObject(oSpellOrigin, "PRC_CombatSystem_OnHitCastSpell_Item");
|
|
}
|
|
*/
|
|
//If non-magical weapon in right hand
|
|
if(GetIsObjectValid(oWeaponR) && IPGetIsMeleeWeapon(oWeaponR) && !PRCGetIsMagicalMeleeWeapon(oWeaponR))
|
|
{
|
|
DestroyObject(oWeaponR);
|
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_DISPEL), oSpellTarget);
|
|
return;
|
|
}
|
|
|
|
//if non-magical weapon in left hand
|
|
else if(GetIsObjectValid(oWeaponL) && IPGetIsMeleeWeapon(oWeaponL) && !PRCGetIsMagicalMeleeWeapon(oWeaponL))
|
|
{
|
|
DestroyObject(oWeaponL);
|
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_DISPEL), oSpellTarget);
|
|
return;
|
|
}
|
|
//Magical now handled as damage reduction
|
|
} |