Further file organization
Further file organization
This commit is contained in:
65
nwn/nwnprc/trunk/scripts/prc_at_isa.nss
Normal file
65
nwn/nwnprc/trunk/scripts/prc_at_isa.nss
Normal file
@@ -0,0 +1,65 @@
|
||||
//::///////////////////////////////////////////////
|
||||
//:: Arcane Trickster
|
||||
//:://////////////////////////////////////////////
|
||||
/*
|
||||
Script to Simulate the Impromptu Sneak Attack
|
||||
*/
|
||||
//:://////////////////////////////////////////////
|
||||
//:: Created By: Oni5115
|
||||
//:: Created On: Mar 11, 2004
|
||||
//:: Updated by Oni5115 9/23/2004 to use new combat engine
|
||||
//:://////////////////////////////////////////////
|
||||
#include "prc_inc_combat"
|
||||
|
||||
void main()
|
||||
{
|
||||
object oTarget = PRCGetSpellTargetObject();
|
||||
object oPC = OBJECT_SELF;
|
||||
|
||||
if(oPC == oTarget)
|
||||
{
|
||||
SendMessageToPC(oPC,"You cannot attack yourself...");
|
||||
return;
|
||||
}
|
||||
|
||||
// might need to modify the enemies bonus AC due to other class abilities
|
||||
// things like Canny Defense which are typically lost when a player loses dex bonus to AC
|
||||
int iEnemydexBonus = GetAbilityModifier(ABILITY_DEXTERITY, oTarget);
|
||||
|
||||
object oWeap = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC);
|
||||
int iDamageType = GetWeaponDamageType(oWeap);
|
||||
int iDamagePower = GetDamagePowerConstant(oWeap, oTarget, oPC);
|
||||
int iSneakAttackDice = GetTotalSneakAttackDice(oPC);
|
||||
int iSneakDamage = 0;
|
||||
|
||||
effect eSneakDamage;
|
||||
|
||||
string sSuccess = "";
|
||||
string sMiss = "";
|
||||
|
||||
iSneakDamage = d6(iSneakAttackDice);
|
||||
// gain no bonus damage if immune to criticals
|
||||
if(GetIsImmune(oTarget, IMMUNITY_TYPE_CRITICAL_HIT, OBJECT_INVALID) )
|
||||
{
|
||||
iSneakDamage = 0;
|
||||
sSuccess = "*Enemy Immune to Impromptu Sneak Attack*";
|
||||
}
|
||||
|
||||
// if enemy is more than 30 feet away
|
||||
if(GetDistanceBetween(oTarget, oPC) >= FeetToMeters(30.0))
|
||||
{
|
||||
iSneakDamage = 0;
|
||||
sSuccess = "*Enemy is to far away for Impromptu Sneak Attack*";
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
sSuccess = "*Impromptu Sneak Attack Hit*";
|
||||
sMiss = "*Impromptu Sneak Attack Missed*";
|
||||
}
|
||||
|
||||
// if using a melee weapon, make them run into melee range
|
||||
|
||||
eSneakDamage = EffectDamage(iSneakDamage, iDamageType, iDamagePower);
|
||||
PerformAttackRound(oTarget, oPC, eSneakDamage, 0.0, iEnemydexBonus, 0, 0, FALSE, sSuccess, sMiss);
|
||||
}
|
Reference in New Issue
Block a user