Further file organization
Further file organization
This commit is contained in:
75
nwn/nwnprc/trunk/scripts/prc_fact_cunning.nss
Normal file
75
nwn/nwnprc/trunk/scripts/prc_fact_cunning.nss
Normal file
@@ -0,0 +1,75 @@
|
||||
//:://////////////////////////////////////////////
|
||||
//:: 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);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user