Initial upload. PRC8 has been added. Module compiles, PRC's default AI & treasure scripts have been integrated. Started work on top hak for SLA / Ability / Scripting modifications.
95 lines
2.4 KiB
Plaintext
95 lines
2.4 KiB
Plaintext
///::///////////////////////////////////////////////
|
|
//:: Keen Edge
|
|
//:: X2_S0_KeenEdge
|
|
//:: Copyright (c) 2001 Bioware Corp.
|
|
//:://////////////////////////////////////////////
|
|
/*
|
|
Adds the keen property to one melee weapon,
|
|
increasing its critical threat range.
|
|
*/
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Andrew Nobbs
|
|
//:: Created On: Nov 28, 2002
|
|
//:://////////////////////////////////////////////
|
|
//:: Updated by Andrew Nobbs May 08, 2003
|
|
//:: 2003-07-07: Stacking Spell Pass, Georg Zoeller
|
|
//:: 2003-07-17: Complete Rewrite to make use of Item Property System
|
|
|
|
|
|
#include "nw_i0_spells"
|
|
#include "x2_i0_spells"
|
|
|
|
#include "x2_inc_spellhook"
|
|
|
|
|
|
void AddKeenEffectToWeapon(object oMyWeapon, float fDuration)
|
|
{
|
|
IPSafeAddItemProperty(oMyWeapon,ItemPropertyKeen(), fDuration, X2_IP_ADDPROP_POLICY_KEEP_EXISTING ,TRUE,TRUE);
|
|
return;
|
|
}
|
|
|
|
void main()
|
|
{
|
|
|
|
/*
|
|
Spellcast Hook Code
|
|
Added 2003-07-07 by Georg Zoeller
|
|
If you want to make changes to all spells,
|
|
check x2_inc_spellhook.nss to find out more
|
|
|
|
*/
|
|
|
|
if (!X2PreSpellCastCode())
|
|
{
|
|
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
|
|
return;
|
|
}
|
|
|
|
// End of Spell Cast Hook
|
|
|
|
|
|
|
|
//Declare major variables
|
|
effect eVis = EffectVisualEffect(VFX_IMP_SUPER_HEROISM);
|
|
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
|
|
int nDuration = 2 * GetCasterLevel(OBJECT_SELF);
|
|
int nMetaMagic = GetMetaMagicFeat();
|
|
|
|
object oMyWeapon = IPGetTargetedOrEquippedMeleeWeapon();
|
|
|
|
if (nMetaMagic == METAMAGIC_EXTEND)
|
|
{
|
|
nDuration = nDuration * 2; //Duration is +100%
|
|
}
|
|
|
|
if(GetIsObjectValid(oMyWeapon) )
|
|
{
|
|
SignalEvent(oMyWeapon, EventSpellCastAt(OBJECT_SELF, GetSpellId(), FALSE));
|
|
|
|
if (GetSlashingWeapon(oMyWeapon))
|
|
{
|
|
if (nDuration>0)
|
|
{
|
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, GetItemPossessor(oMyWeapon));
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDur, GetItemPossessor(oMyWeapon), TurnsToSeconds(nDuration));
|
|
AddKeenEffectToWeapon(oMyWeapon, TurnsToSeconds(nDuration));
|
|
}
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
FloatingTextStrRefOnCreature(83621, OBJECT_SELF); // not a slashing weapon
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
|
|
{
|
|
FloatingTextStrRefOnCreature(83615, OBJECT_SELF);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
}
|