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

81 lines
3.2 KiB
Plaintext

//::///////////////////////////////////////////////
//:: Sohei
//:: prc_sohei.nss
//:://////////////////////////////////////////////
//:: Applies the passive bonuses from sohei
//:://////////////////////////////////////////////
//:: Created By: Stratovarius
//:: Created On: Sept 11, 2006
//:://////////////////////////////////////////////
#include "prc_alterations"
#include "x0_i0_modes"
void SoheiDamageResist(object oPC, object oSkin, int nLevel)
{
if(GetLocalInt(oSkin, "SoheiDamageResist") == nLevel) return;
int nDR;
if (nLevel >= 38) nDR = IP_CONST_DAMAGERESIST_10;
else if (nLevel >= 35) nDR = IP_CONST_DAMAGERESIST_9;
else if (nLevel >= 32) nDR = IP_CONST_DAMAGERESIST_8;
else if (nLevel >= 29) nDR = IP_CONST_DAMAGERESIST_7;
else if (nLevel >= 26) nDR = IP_CONST_DAMAGERESIST_6;
else if (nLevel >= 23) nDR = IP_CONST_DAMAGERESIST_5;
else if (nLevel >= 20) nDR = IP_CONST_DAMAGERESIST_4;
else if (nLevel >= 17) nDR = IP_CONST_DAMAGERESIST_3;
else if (nLevel >= 14) nDR = IP_CONST_DAMAGERESIST_2;
else if (nLevel >= 11) nDR = 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, "SoheiDamageResist", nLevel);
}
void main()
{
int nEvent = GetRunningEvent();
object oPC = OBJECT_SELF;
if(nEvent == FALSE)
{
object oSkin = GetPCSkin(oPC);
int nSoh = GetLevelByClass(CLASS_TYPE_SOHEI, oPC);
if(nSoh >= 3)
SoheiDamageResist(oPC, oSkin, nSoh);
/* x - moved to prc_feats.nss
if(nSoh >= 5)
{
// Gains immunity to stunning
// Can't be done as an iprop, so we effect bomb
effect eStun = EffectImmunity(IMMUNITY_TYPE_STUN);
effect eSleep = EffectImmunity(IMMUNITY_TYPE_SLEEP);
// No Dispelling, and no going away on rest
eStun = EffectLinkEffects(eStun, eSleep);
eStun = SupernaturalEffect(eStun);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eStun, oPC);
}*/
//Defensive Strike
if(nSoh >= 7 && GetHasFeat(FEAT_EXPERTISE, oPC))
{
if(DEBUG) DoDebug("prc_sohei: Adding eventhooks");
AddEventScript(oPC, EVENT_ONHEARTBEAT, "prc_sohei", TRUE, FALSE);
}
}
// We're being called from the OnHeartbeat eventhook, so check or skip
else if(nEvent == EVENT_ONHEARTBEAT)
{
// Only applies when using expertise
if(GetModeActive(ACTION_MODE_EXPERTISE) || GetActionMode(oPC, ACTION_MODE_EXPERTISE) || GetLastAttackMode(oPC) == COMBAT_MODE_EXPERTISE ||
GetModeActive(ACTION_MODE_IMPROVED_EXPERTISE) || GetActionMode(oPC, ACTION_MODE_IMPROVED_EXPERTISE) || GetLastAttackMode(oPC) == COMBAT_MODE_IMPROVED_EXPERTISE)
{
effect eAtk = EffectAttackIncrease(4);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eAtk, oPC, 6.0);
}
}// end if - Running OnHeart event
}