PRC8/trunk/scripts/prc_iaijutsu.nss
Jaysyn904 1662218bb4 Initial upload.
Adding base PRC 4.19a files to repository.
2022-10-07 13:51:24 -04:00

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);
}
}