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.
66 lines
2.5 KiB
Plaintext
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);
|
|
}
|
|
|