PRC8/nwn/nwnprc/trunk/newspellbook/tob_etbl_etrrace.nss
Jaysyn904 2a7cb1002e Fixed all content filenames over 16 characters
Fixed all content filenames over 16 characters
2024-08-30 19:49:40 -04:00

79 lines
2.6 KiB
Plaintext

/*
----------------
Eternal Training racial type
attack and damage bonus
tob_etbl_ettrrace.nss
----------------
10 MAR 09 by GC
*/ /** @file
Sets attack and damage bonus against
target's racial type.
*/
#include "tob_inc_move"
#include "tob_movehook"
////#include "prc_alterations"
#include "prc_inc_combat"
void main()
{
object oInitiator = OBJECT_SELF;
object oTarget = PRCGetSpellTargetObject();
if (!PreManeuverCastCode())
{
IncrementRemainingFeatUses(oInitiator, FEAT_ETBL_ETERNAL_TRAINING);
// If code within the PreManeuverCastCode (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
// Blade guide check
if(GetLocalInt(oInitiator, "ETBL_BladeGuideDead"))
{
IncrementRemainingFeatUses(oInitiator, FEAT_ETBL_ETERNAL_TRAINING);
FloatingTextStringOnCreature("*Cannot use ability without blade guide*", oInitiator, FALSE);
return;
}
// Used in encounter already?
if(GetLocalInt(oInitiator, "ETBL_Eternal_Training_Expended"))
{
IncrementRemainingFeatUses(oInitiator, FEAT_ETBL_ETERNAL_TRAINING);
FloatingTextStringOnCreature("*Eternal Training expended already*", oInitiator, FALSE);
return;
}
// Check Intelligence modifier, exit if <= 0
int nInt = GetAbilityModifier(ABILITY_INTELLIGENCE, oInitiator);
if(nInt <= 0)
{
IncrementRemainingFeatUses(oInitiator, FEAT_ETBL_ETERNAL_TRAINING);
FloatingTextStringOnCreature("*Intelligence modifier zero or less*", oInitiator, FALSE);
return;
}
struct maneuver move = EvaluateManeuver(oInitiator, oTarget, TRUE);
if(move.bCanManeuver)
{
object oWeapon = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oInitiator);
int nRace = MyPRCGetRacialType(oTarget);
int nDamageType = GetWeaponDamageType(oWeapon);
if(DEBUG) DoDebug("Target raialtype: " + IntToString(nRace));
effect eLink = VersusRacialTypeEffect(EffectAttackIncrease(nInt), nRace);
eLink = EffectLinkEffects(eLink, VersusRacialTypeEffect(EffectDamageIncrease(nInt, nDamageType), nRace));
//eLink = VersusRacialTypeEffect(eLink, nRace);
eLink = ExtraordinaryEffect(eLink);
//eLink = SupernaturalEffectEffect(eLink);
SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink, oInitiator);
// Expend ability
SetLocalInt(oInitiator, "ETBL_Eternal_Training_Expended", TRUE);
}
else
IncrementRemainingFeatUses(oInitiator, FEAT_ETBL_ETERNAL_TRAINING);
}