#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); }