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.
72 lines
2.0 KiB
Plaintext
72 lines
2.0 KiB
Plaintext
|
|
#include "prc_inc_spells"
|
|
|
|
void main()
|
|
{
|
|
object oCastingObject = OBJECT_SELF;
|
|
object oPC = PRCGetSpellTargetObject();
|
|
|
|
string sBonus = GetLocalString(oCastingObject, "SET_COMPOSITE_STRING");
|
|
|
|
int iVal = GetLocalInt(oCastingObject, "SET_COMPOSITE_VALUE");
|
|
int iSubType = GetLocalInt(oCastingObject, "SET_COMPOSITE_SUBTYPE");
|
|
|
|
int iTotalR = GetLocalInt(oPC, "CompositeAttackBonusR");
|
|
int iTotalL = GetLocalInt(oPC, "CompositeAttackBonusL");
|
|
int iCur = GetLocalInt(oPC, sBonus);
|
|
int iAB, iAP, iHand;
|
|
|
|
PRCRemoveEffectsFromSpell(oPC, GetSpellId());
|
|
|
|
switch (iSubType)
|
|
{
|
|
case ATTACK_BONUS_MISC:
|
|
iTotalR -= iCur;
|
|
iTotalL -= iCur;
|
|
if (iTotalR + iVal > 20) iVal = 20 - iTotalR;
|
|
if (iTotalL + iVal > 20) iVal = 20 - iTotalL;
|
|
iTotalR += iVal;
|
|
iTotalL += iVal;
|
|
break;
|
|
case ATTACK_BONUS_ONHAND:
|
|
iTotalR -= iCur;
|
|
if (iTotalR + iVal > 20) iVal = 20 - iTotalR;
|
|
iTotalR += iVal;
|
|
break;
|
|
case ATTACK_BONUS_OFFHAND:
|
|
iTotalL -= iCur;
|
|
if (iTotalL + iVal > 20) iVal = 20 - iTotalL;
|
|
iTotalL += iVal;
|
|
break;
|
|
}
|
|
|
|
if (iTotalR > iTotalL)
|
|
{
|
|
iAB = iTotalR;
|
|
iAP = iTotalR - iTotalL;
|
|
iHand = ATTACK_BONUS_OFFHAND;
|
|
}
|
|
else
|
|
{
|
|
iAB = iTotalL;
|
|
iAP = iTotalL - iTotalR;
|
|
iHand = ATTACK_BONUS_ONHAND;
|
|
}
|
|
|
|
effect eAttack;
|
|
if (iAB > 0)
|
|
eAttack = EffectAttackIncrease(iAB);
|
|
else if (iAB < 0)
|
|
eAttack = EffectAttackDecrease(-1*iAB);
|
|
|
|
eAttack = EffectLinkEffects(eAttack, EffectAttackDecrease(iAP, iHand));
|
|
|
|
eAttack = ExtraordinaryEffect(eAttack);
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eAttack, oPC, 9999.0);
|
|
|
|
SetLocalInt(oPC, "CompositeAttackBonusR", iTotalR);
|
|
SetLocalInt(oPC, "CompositeAttackBonusL", iTotalL);
|
|
SetLocalInt(oPC, sBonus, iVal);
|
|
UpdateUsedCompositeNamesList(oPC, "PRC_ComAttBon", sBonus);
|
|
} |