forked from Jaysyn/PRC8
Updated Release Archive. Fixed Mage-killer prereqs. Removed old LETO & ConvoCC related files. Added organized spell scroll store. Fixed Gloura spellbook. Various TLK fixes. Reorganized Repo. Removed invalid user folders. Added DocGen back in.
89 lines
2.9 KiB
Plaintext
89 lines
2.9 KiB
Plaintext
/*
|
|
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);
|
|
}
|
|
} |