Further file organization
Further file organization
This commit is contained in:
89
nwn/nwnprc/trunk/scripts/prc_iaijutsu.nss
Normal file
89
nwn/nwnprc/trunk/scripts/prc_iaijutsu.nss
Normal file
@@ -0,0 +1,89 @@
|
||||
/*
|
||||
File Name: prc_iaijutsu
|
||||
Author: aser
|
||||
Date: Feb 26 2005
|
||||
Purpose: To simulate an Iaijutsu Focus Attack
|
||||
|
||||
Modified by Flaming_Sword
|
||||
Nov 17 2005
|
||||
*/
|
||||
|
||||
//#include "NW_I0_GENERIC"
|
||||
//#include "x0_i0_position"
|
||||
//#include "prc_feat_const"
|
||||
#include "prc_inc_combat"
|
||||
|
||||
void main()
|
||||
{
|
||||
object oPC = OBJECT_SELF;
|
||||
object oTarget = PRCGetSpellTargetObject();
|
||||
object oItem1 = GetItemInSlot(INVENTORY_SLOT_LEFTHAND);
|
||||
object oItem2 = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND);
|
||||
object oWeap = GetFirstItemInInventory(oPC);
|
||||
int iMainHand;
|
||||
int iNumDice;
|
||||
int iNumSides;
|
||||
int nDamage = 0;
|
||||
int iChaMod = GetAbilityModifier(ABILITY_CHARISMA,oPC);
|
||||
int iSkill = GetSkillRank(SKILL_IAIJUTSU_FOCUS,oPC)+ d20(); //Iaijutsu Focus Check
|
||||
|
||||
if(GetHasFeat(FEAT_SKILL_FOCUS_IAI))
|
||||
if(GetHasFeat(FEAT_EPIC_SKILL_FOCUS_IAI))
|
||||
iSkill = iSkill + 13;
|
||||
else
|
||||
iSkill = iSkill + 3;
|
||||
//string OneKat;
|
||||
int iDie = 0;
|
||||
|
||||
//SetLocalInt(oPC,OneKat,0);
|
||||
//int OneKat = 0;
|
||||
|
||||
//Calculate Bonus Damage
|
||||
iDie = iSkill / 5;
|
||||
if(iDie > 0) //if iaijutsu check was successful
|
||||
{
|
||||
if(!GetHasFeat(FEAT_EPIC_IAIJUTSU_FOCUS)) //If not epic iaijutsu
|
||||
if(iDie > 9)
|
||||
iDie = 9;
|
||||
|
||||
nDamage = d6(iDie);
|
||||
|
||||
if(GetHasFeat(FEAT_STRIKE_VOID)) nDamage = nDamage + iChaMod*iDie;
|
||||
// Only works on flatfooted foes or objects. Does half damage to objects
|
||||
if (!GetIsDeniedDexBonusToAC(oTarget, oPC) && GetObjectType(oTarget) == OBJECT_TYPE_CREATURE) nDamage = 0;
|
||||
else if (GetObjectType(oTarget) != OBJECT_TYPE_CREATURE) nDamage /= 2;
|
||||
}
|
||||
|
||||
//Begin Attack Scripting
|
||||
if(oTarget != oPC)
|
||||
{
|
||||
if(!GetIsObjectValid(oItem2) && !GetIsObjectValid(oItem1))
|
||||
{
|
||||
//Searching for a single Katana
|
||||
while(GetIsObjectValid(oWeap) /*&& !OneKat*/)
|
||||
{
|
||||
if(GetBaseItemType(oWeap) == BASE_ITEM_KATANA
|
||||
|| // Hack - Assume a Soulknife with Iaijutsu Master levels using bastard sword shape has it shaped like a katana
|
||||
(GetStringLeft(GetTag(oWeap), 14) == "prc_sk_mblade_" && GetBaseItemType(oWeap) == BASE_ITEM_BASTARDSWORD)
|
||||
)
|
||||
{
|
||||
ActionEquipItem(oWeap,INVENTORY_SLOT_RIGHTHAND);
|
||||
effect eVFX;
|
||||
//this is an action to make sure the "katana" is equiped
|
||||
ActionDoCommand(PerformAttackRound(oTarget, oPC, eVFX, 0.0, 0, nDamage, DAMAGE_TYPE_SLASHING, FALSE, "*Iaijutsu Hit*", "*Iaijutsu Miss"));
|
||||
//OneKat = 1;
|
||||
break;
|
||||
}
|
||||
oWeap = GetNextItemInInventory(oPC);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
FloatingTextStringOnCreature("Must have Katana unequiped, in inventory.",OBJECT_SELF);
|
||||
}
|
||||
}
|
||||
else if(GetIsObjectValid(oItem2))
|
||||
{
|
||||
ActionUnequipItem(oItem2);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user