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

103 lines
3.5 KiB
Plaintext

#include "prc_alterations"
#include "prc_feat_const"
#include "prc_class_const"
#include "prc_ipfeat_const"
// Runescarred Berserker
/*
const int FEAT_RIT_SCAR = 2369;
const int FEAT_SPAWNFROST = 2371;
const int FEAT_RIT_DR = 2370;
*/
////Resistance Cold////
void ResCold(object oPC ,object oSkin ,int iLevel)
{
//if(GetLocalInt(oSkin, "RuneCold") == iLevel) return;
RemoveSpecificProperty(oSkin,ITEM_PROPERTY_DAMAGE_RESISTANCE,IP_CONST_DAMAGETYPE_COLD,GetLocalInt(oSkin, "RuneCold"));
AddItemProperty(DURATION_TYPE_PERMANENT,ItemPropertyDamageResistance(IP_CONST_DAMAGETYPE_COLD,iLevel),oSkin);
SetLocalInt(oSkin, "RuneCold",iLevel);
}
///Ritual Scarring /////////
void RitScar(object oPC ,object oSkin, int iLevel)
{
if(GetLocalInt(oSkin, "RitScarAC") == iLevel) return;
SetCompositeBonus(oSkin, "RitScarAC", iLevel,ITEM_PROPERTY_AC_BONUS);
}
void RitDR(object oPC, object oSkin, int iLevel)
{
//if(GetLocalInt(oSkin, "RitScarDR") == iLevel) return;
RemoveSpecificProperty(oSkin, ITEM_PROPERTY_DAMAGE_REDUCTION, GetLocalInt(oSkin, "RitScarDR"), iLevel, 1, "RitScarDR");
AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyDamageReduction(IP_CONST_DAMAGEREDUCTION_20, iLevel), oSkin);
SetLocalInt(oSkin, "RitScarDR", iLevel);
}
void main()
{
//Declare main variables.
object oPC = OBJECT_SELF;
object oSkin = GetPCSkin(oPC);
int bRitDR = GetHasFeat(FEAT_RIT_DR, oPC) ? IP_CONST_DAMAGESOAK_1_HP : 0;
if(GetLevelByClass(CLASS_TYPE_RUNESCARRED, oPC) >= 7)
{
bRitDR = IP_CONST_DAMAGESOAK_2_HP;
}
if(GetLevelByClass(CLASS_TYPE_RUNESCARRED, oPC) >= 10)
{
bRitDR = IP_CONST_DAMAGESOAK_3_HP;
}
int bRitScar=GetHasFeat(FEAT_RIT_SCAR, oPC) ? 1 : 0;
bRitScar=GetHasFeat(FEAT_RIT_SCAR_2, oPC) ? 2 : bRitScar;
bRitScar=GetHasFeat(FEAT_RIT_SCAR_3, oPC) ? 3 : bRitScar;
/*if(GetLevelByClass(CLASS_TYPE_RUNESCARRED, oPC) >= 6)
{
bRitScar = 2;
}
if(GetLevelByClass(CLASS_TYPE_RUNESCARRED, oPC) >= 9)
{
bRitScar = 3;
}
*/
int bResCold=GetHasFeat(FEAT_SPAWNFROST, oPC) ? IP_CONST_DAMAGERESIST_5 : 0;
if (bResCold>0) ResCold(oPC,oSkin,bResCold);
//if (bRitScar>0) RitScar(oPC, oSkin,bRitScar);
if (bRitDR>0) RitDR(oPC, oSkin,bRitDR);
//rest part to regenerate spells
if(GetLocalInt(oPC,"ONREST"))
{
int nLevel1;
int nLevel2;
int nLevel3;
int nLevel4;
int nLevel5;
switch(GetLevelByClass(CLASS_TYPE_RUNESCARRED, oPC))
{
case 1: nLevel1 = 1; break;
case 2: nLevel1 = 2; break;
case 3: nLevel1 = 2; nLevel2 = 1; break;
case 4: nLevel1 = 3; nLevel2 = 2; break;
case 5: nLevel1 = 3; nLevel2 = 2; nLevel3 = 1; break;
case 6: nLevel1 = 3; nLevel2 = 3; nLevel3 = 2; break;
case 7: nLevel1 = 4; nLevel2 = 3; nLevel3 = 2; nLevel4 = 1; break;
case 8: nLevel1 = 4; nLevel2 = 3; nLevel3 = 3; nLevel4 = 2; break;
case 9: nLevel1 = 4; nLevel2 = 4; nLevel3 = 3; nLevel4 = 2; nLevel5 = 1; break;
case 10: nLevel1 = 4; nLevel2 = 4; nLevel3 = 3; nLevel4 = 3; nLevel5 = 2; break;
}
SetLocalInt(oPC, "Runescar_slot_1", nLevel1);
SetLocalInt(oPC, "Runescar_slot_2", nLevel2);
SetLocalInt(oPC, "Runescar_slot_3", nLevel3);
SetLocalInt(oPC, "Runescar_slot_4", nLevel4);
SetLocalInt(oPC, "Runescar_slot_5", nLevel5);
}
}