PRC8/nwn/nwnprc/trunk/scripts/prc_dj_warstrike.nss
Jaysyn904 6ec137a24e Updated AMS marker feats
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.
2024-02-11 14:01:05 -05:00

81 lines
2.4 KiB
Plaintext

//::///////////////////////////////////////////////
//:: Name Drow Judicator Warstrike
//:: FileName prc_dj_warstrike
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
This is the spell effect of the Warstrike ability
of the Drow Judicator prestige class.
*/
//:://////////////////////////////////////////////
//:: Created By: PsychicToaster
//:: Created On: 7-24-04
//:: Updated by Oni5115 9/23/2004 to use new combat engine
//:://////////////////////////////////////////////
#include "prc_inc_combat"
void main()
{
//Setup Variables
object oPC = OBJECT_SELF;
object oTarget = PRCGetSpellTargetObject();
if(oPC == oTarget)
{
SendMessageToPC(oPC,"You cannot attack yourself...");
return;
}
object oWeapR = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC);
int bIsRangedAttack = GetWeaponRanged(oWeapR);
int nClass = GetLevelByClass(CLASS_TYPE_JUDICATOR);
int nChaMod = GetAbilityModifier(ABILITY_CHARISMA);
int nFortDC = 10+nClass+nChaMod;
int nCon = d6(2);
//Roll Fortitude Saving Throw
if(FortitudeSave(oTarget, nFortDC, SAVING_THROW_FORT, oPC))
{
nCon = nCon/2;
if (GetHasMettle(oTarget, SAVING_THROW_FORT))
// This script does nothing if it has Mettle, bail
return;
//Debug
//SpeakString("Debug Save Succeeded. Damage Dealt ="+IntToString(nCon));
}
effect eVis = EffectVisualEffect(VFX_IMP_POISON_L);
effect eCon = EffectAbilityDecrease(ABILITY_CONSTITUTION,nCon);
effect eLink = EffectLinkEffects(eVis, eCon);
//ApplyEffectToObject(DURATION_TYPE_PERMANENT, MagicalEffect(eLink), oTarget);
//Debug
//SpeakString("Damage Dealt ="+IntToString(nCon));
// script now uses combat system to hit and apply effect if appropriate
string sSuccess = "";
string sMiss = "";
float fDistance = GetDistanceBetween(oPC, oTarget);
// If they are not within 10 ft, they can't do a melee attack.
if(!bIsRangedAttack && !GetIsInMeleeRange(oTarget, oPC) )
{
SendMessageToPC(oPC,"You are not close enough to your target to attack!");
return;
}
if(!bIsRangedAttack)
{
AssignCommand(oPC, ActionMoveToLocation(GetLocation(oTarget), TRUE) );
sSuccess = "*War Strike Hit*";
sMiss = "*War Strike Miss*";
}
PerformAttackRound(oTarget, oPC, eLink, 0.0, 0, 0, 0, FALSE, sSuccess, sMiss);
}