forked from Jaysyn/PRC8
81 lines
2.4 KiB
Plaintext
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);
|
||
|
}
|