PRC8/nwn/nwnprc/trunk/scripts/prc_initdraconic.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

70 lines
2.4 KiB
Plaintext

#include "prc_inc_clsfunc"
#include "prc_inc_unarmed"
#include "prc_ip_srcost"
void SpellResistancePC(object oPC, object oSkin, int iLevel)
{
//15 +lvl
if (iLevel % 2 == 0)
{
iLevel = (iLevel-10)/2;
iLevel = (iLevel>IP_CONST_SPELLRESISTANCEBONUS_60) ? IP_CONST_SPELLRESISTANCEBONUS_60 :iLevel ;
}
else
{
iLevel = iLevel/2+21;
iLevel = (iLevel>IP_CONST_SPELLRESISTANCEBONUS_61) ? IP_CONST_SPELLRESISTANCEBONUS_61 :iLevel ;
}
if (GetLocalInt(oSkin,"IniSR")==iLevel) return;
RemoveSpecificProperty(oSkin,ITEM_PROPERTY_SPELL_RESISTANCE,-1,IP_CONST_ONHIT_SAVEDC_26,GetLocalInt(oSkin,"IniSR"));
AddItemProperty(DURATION_TYPE_PERMANENT,ItemPropertyBonusSpellResistance(iLevel),oSkin);
SetLocalInt(oSkin,"IniSR",iLevel);
}
void StunStrike(object oPC,object oSkin)
{
if (GetLocalInt(oSkin,"IniStunStrk")) return;
object oWeapL = GetItemInSlot(INVENTORY_SLOT_CWEAPON_L,oPC);
// fixed to work with new unarmed inc
if(!GetIsPRCCreatureWeapon(oWeapL))
return;
RemoveSpecificProperty(oWeapL,ITEM_PROPERTY_ON_HIT_PROPERTIES,IP_CONST_ONHIT_STUN,IP_CONST_ONHIT_SAVEDC_26,IPRP_CONST_ONHIT_DURATION_5_PERCENT_1_ROUNDS);
AddItemProperty(DURATION_TYPE_PERMANENT,ItemPropertyOnHitProps(IP_CONST_ONHIT_STUN,IP_CONST_ONHIT_SAVEDC_26,IPRP_CONST_ONHIT_DURATION_5_PERCENT_1_ROUNDS),oWeapL);
SetLocalInt(oSkin,"IniStunStrk",1);
}
void main()
{
object oPC = OBJECT_SELF;
// We cannot add stuff to the creature weapons until they have been evaluated,
// so we request their evaluation, and wait for it to happen.
if(!GetLocalInt(OBJECT_SELF, UNARMED_CALLBACK))
{
//Evaluate The Unarmed Strike Feats
//UnarmedFeats(oPC);
SetLocalInt(oPC, CALL_UNARMED_FEATS, TRUE);
//Evaluate Fists
//UnarmedFists(oPC);
SetLocalInt(oPC, CALL_UNARMED_FISTS, TRUE);
// Request callback once the feat & fist evaluation is done
AddEventScript(oPC, CALLBACKHOOK_UNARMED, "prc_initdraconic", FALSE, FALSE);
}
else
{
//Declare main variables.
object oSkin = GetPCSkin(oPC);
object oWeapL = GetItemInSlot(INVENTORY_SLOT_CWEAPON_L, oPC);
if (GetHasFeat(FEAT_INIDR_SPELLRESISTANCE,oPC)) SpellResistancePC(oPC,oSkin,GetLevelByClass(CLASS_TYPE_INITIATE_DRACONIC,oPC)+15);
if (GetHasFeat(FEAT_INIDR_STUNSTRIKE,oPC)) StunStrike(oPC,oSkin);
}
}