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

66 lines
2.5 KiB
Plaintext

#include "prc_inc_spells"
int GetDSWeaponAttackBonus(object oWeap)
{
object oPC = GetItemPossessor(oWeap);
itemproperty ip = GetFirstItemProperty(oWeap);
int iTotal = 0;
int iValue = 0;
while (GetIsItemPropertyValid(ip))
{
if (GetItemPropertyType(ip) == ITEM_PROPERTY_ATTACK_BONUS ||
GetItemPropertyType(ip) == ITEM_PROPERTY_ENHANCEMENT_BONUS)
{
iValue = GetItemPropertyCostTableValue(ip);
iTotal = (iValue > iTotal) ? iValue : iTotal;
}
else if (GetItemPropertyType(ip) == ITEM_PROPERTY_HOLY_AVENGER &&
GetLevelByClass(CLASS_TYPE_PALADIN, oPC))
{
iValue = 5;
iTotal = (iValue > iTotal) ? iValue : iTotal;
}
ip = GetNextItemProperty(oWeap);
}
return iTotal;
}
void main()
{
object oPC = PRCGetSpellTargetObject();
object oWeap1 = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC);
object oWeap2 = GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC);
PRCRemoveEffectsFromSpell(oPC, GetSpellId());
// thankfully damage effects actually use the IP_CONST_DAMAGEBONUS constants too! :) Thus
// you can apply non-bioware damage bonuses as defined in the 2da.
int iDivBonus = GetHasFeat(DEMONSLAYING_1, oPC) ? IP_CONST_DAMAGEBONUS_1d6 : 0;
iDivBonus = GetHasFeat(DEMONSLAYING_2, oPC) ? IP_CONST_DAMAGEBONUS_2d6 : iDivBonus;
iDivBonus = GetHasFeat(DEMONSLAYING_3, oPC) ? IP_CONST_DAMAGEBONUS_3d6 : iDivBonus;
iDivBonus = GetHasFeat(DEMONSLAYING_4, oPC) ? IP_CONST_DAMAGEBONUS_4d6 : iDivBonus;
int iAttBonus = GetHasFeat(DEMONSLAYING_1, oPC) ? 1 : 0;
iAttBonus = GetHasFeat(DEMONSLAYING_2, oPC) ? 2 : iAttBonus;
iAttBonus = GetHasFeat(DEMONSLAYING_3, oPC) ? 3 : iAttBonus;
iAttBonus = GetHasFeat(DEMONSLAYING_4, oPC) ? 4 : iAttBonus;
int iAttBonusR = iAttBonus + GetDSWeaponAttackBonus(oWeap1);
int iAttBonusL = iAttBonus + GetDSWeaponAttackBonus(oWeap2);
effect eDam = VersusRacialTypeEffect(EffectDamageIncrease(iDivBonus, DAMAGE_TYPE_DIVINE), RACIAL_TYPE_OUTSIDER);
effect eAttR = VersusRacialTypeEffect(EffectAttackIncrease(iAttBonusR, ATTACK_BONUS_ONHAND), RACIAL_TYPE_OUTSIDER);
effect eAttL = VersusRacialTypeEffect(EffectAttackIncrease(iAttBonusL, ATTACK_BONUS_OFFHAND), RACIAL_TYPE_OUTSIDER);
effect eLink = EffectLinkEffects(eAttR, eAttL);
eLink = EffectLinkEffects(eLink, eDam);
eLink = SupernaturalEffect(eLink);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink, oPC);
}