Further file organization
Further file organization
This commit is contained in:
129
nwn/nwnprc/trunk/scripts/prc_evnt_strmtl.nss
Normal file
129
nwn/nwnprc/trunk/scripts/prc_evnt_strmtl.nss
Normal file
@@ -0,0 +1,129 @@
|
||||
//::///////////////////////////////////////////////
|
||||
//:: 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
|
||||
}
|
Reference in New Issue
Block a user