PRC8/nwn/nwnprc/trunk/psionics/psi_warmind.nss
Jaysyn904 6ec137a24e Updated AMS marker feats
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.
2024-02-11 14:01:05 -05:00

69 lines
2.3 KiB
Plaintext

//::///////////////////////////////////////////////
//:: Warmind
//:: psi_warmind.nss
//:://////////////////////////////////////////////
//:: Applies the passive bonuses from Warmind
//:://////////////////////////////////////////////
//:: Created By: Stratovarius
//:: Created On: Dec 15, 2005
//:://////////////////////////////////////////////
#include "prc_alterations"
#include "psi_inc_onhit"
void RemoveSweepingStrike(object oPC, object oWeap)
{
if (DEBUG) FloatingTextStringOnCreature("Remove Sweeping Strike is run", oPC);
RemoveSpecificProperty(oWeap,ITEM_PROPERTY_ONHITCASTSPELL,IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER,0);
DeleteLocalInt(oWeap, "SweepingStrike");
}
void AddSweepingStrike(object oPC, object oWeap)
{
if(GetLocalInt(oWeap, "SweepingStrike"))
return;
//Sweeping Strike only works on melee weapons
if(!IPGetIsMeleeWeapon(oWeap))
return;
if(DEBUG) FloatingTextStringOnCreature("Add Sweeping Strike is run", oPC);
RemoveSweepingStrike(oPC, oWeap);
DelayCommand(0.1, IPSafeAddItemProperty(oWeap, ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER, 1), 9999.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE));
SetLocalInt(oWeap, "SweepingStrike", TRUE);
}
void EnduringBody(object oPC, object oSkin, int nLevel)
{
if(GetLocalInt(oSkin, "EnduringBody"))
return;
int nDR = nLevel >= 9 ? IP_CONST_DAMAGERESIST_3:
nLevel >= 6 ? IP_CONST_DAMAGERESIST_2:
IP_CONST_DAMAGERESIST_1;
AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyDamageResistance(IP_CONST_DAMAGETYPE_PIERCING, nDR), oSkin);
AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyDamageResistance(IP_CONST_DAMAGETYPE_SLASHING, nDR), oSkin);
AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyDamageResistance(IP_CONST_DAMAGETYPE_BLUDGEONING, nDR), oSkin);
SetLocalInt(oSkin, "EnduringBody", TRUE);
}
void main()
{
object oPC = OBJECT_SELF;
object oSkin = GetPCSkin(oPC);
int nWar = GetLevelByClass(CLASS_TYPE_WARMIND, oPC);
object oWeap = GetItemLastEquipped();
object oUnequip = GetItemLastUnequipped();
int iEquip = GetLocalInt(oPC, "ONEQUIP");
if(nWar >= 3) EnduringBody(oPC, oSkin, nWar);
if(nWar >= 5)
{
if(iEquip == 1) RemoveSweepingStrike(oPC, oUnequip);
if(iEquip == 2) AddSweepingStrike(oPC, oWeap);
}
}