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.
75 lines
3.1 KiB
Plaintext
75 lines
3.1 KiB
Plaintext
//:://////////////////////////////////////////////
|
|
//:: Factotum Cunning X abilities
|
|
//:: prc_fact_cunning
|
|
//:://////////////////////////////////////////////
|
|
/*
|
|
@author Stratovarius - 2019.12.21
|
|
*/
|
|
|
|
#include "prc_inc_factotum"
|
|
#include "inc_dynconv"
|
|
|
|
void main()
|
|
{
|
|
object oPC = OBJECT_SELF;
|
|
int nSpellID = PRCGetSpellId();
|
|
int nBonus = GetAbilityModifier(ABILITY_INTELLIGENCE, oPC);
|
|
int nClass = GetLevelByClass(CLASS_TYPE_FACTOTUM, oPC);
|
|
|
|
if(GetHasSpellEffect(nSpellID, oPC))
|
|
{
|
|
FloatingTextStringOnCreature("You are already under the effect of this ability!", oPC, FALSE);
|
|
return;
|
|
}
|
|
|
|
if (nSpellID == SPELL_CUNNING_INSIGHT_ATTACK && ExpendInspiration(oPC, 1))
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectAttackIncrease(nBonus), oPC, 6.0);
|
|
else if (nSpellID == SPELL_CUNNING_INSIGHT_DAMAGE && ExpendInspiration(oPC, 1))
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectDamageIncrease(IPGetDamageBonusConstantFromNumber(nBonus), DAMAGE_TYPE_BASE_WEAPON), oPC, 6.0);
|
|
else if (nSpellID == SPELL_CUNNING_INSIGHT_SAVES && ExpendInspiration(oPC, 1))
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectSavingThrowIncrease(SAVING_THROW_ALL, nBonus), oPC, 6.0);
|
|
else if (nSpellID == SPELL_CUNNING_DEFENSE && 16 > nClass) //Once you get Improved Cunning Defense, you can't use this
|
|
{
|
|
if (ExpendInspiration(oPC, 1))
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectACIncrease(nBonus, AC_DODGE_BONUS), oPC, 6.0);
|
|
}
|
|
else if (nSpellID == SPELL_CUNNING_STRIKE && ExpendInspiration(oPC, 1))
|
|
{
|
|
SetLocalInt(oPC, "CunningStrike", TRUE);
|
|
ExecuteScript("prc_sneak_att", oPC);
|
|
DelayCommand(5.9, DeleteLocalInt(oPC, "CunningStrike"));
|
|
DelayCommand(6.0, ExecuteScript("prc_sneak_att", oPC));
|
|
}
|
|
else if (nSpellID == SPELL_CUNNING_SURGE && ExpendInspiration(oPC, 3))
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectHaste(), oPC, 6.0);
|
|
else if (nSpellID == SPELL_CUNNING_BREACH && ExpendInspiration(oPC, 2))
|
|
{
|
|
SetLocalInt(oPC, "CunningBreach", TRUE);
|
|
DelayCommand(5.9, DeleteLocalInt(oPC, "CunningBreach"));
|
|
}
|
|
else if (nSpellID == SPELL_CUNNING_DODGE && ExpendInspiration(oPC, 4))
|
|
{
|
|
SetImmortal(oPC, TRUE);
|
|
DelayCommand(5.9, SetImmortal(oPC, FALSE));
|
|
}
|
|
else if (nSpellID == SPELL_OPPORTUNISTIC_PIETY_HEAL)
|
|
{
|
|
if (ExpendInspiration(oPC, 1))
|
|
{
|
|
object oTarget = PRCGetSpellTargetObject();
|
|
if (PRCGetIsAliveCreature(oTarget))
|
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectHeal(nBonus + (nClass*2)), oTarget);
|
|
else if (MyPRCGetRacialType(oTarget) == RACIAL_TYPE_UNDEAD)
|
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(nBonus + (nClass*2)), oTarget);
|
|
|
|
DecrementRemainingFeatUses(oPC, FEAT_OPPORTUNISTIC_PIETY_TURN);
|
|
}
|
|
else
|
|
IncrementRemainingFeatUses(oPC, FEAT_OPPORTUNISTIC_PIETY_HEAL);
|
|
}
|
|
else if (nSpellID == SPELL_CUNNING_KNOWLEDGE && ExpendInspiration(oPC, 1))
|
|
{
|
|
AssignCommand(oPC, ClearAllActions(TRUE));
|
|
StartDynamicConversation("prc_fact_sklconv", oPC, DYNCONV_EXIT_NOT_ALLOWED, FALSE, TRUE, oPC);
|
|
}
|
|
} |