forked from Jaysyn/PRC8
Updated Release Archive. Fixed Mage-killer prereqs. Removed old LETO & ConvoCC related files. Added organized spell scroll store. Fixed Gloura spellbook. Various TLK fixes. Reorganized Repo. Removed invalid user folders. Added DocGen back in.
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
|
|
} |