72 lines
2.0 KiB
Plaintext
72 lines
2.0 KiB
Plaintext
|
//::///////////////////////////////////////////////
|
||
|
//:: Foe Hunter
|
||
|
//:://////////////////////////////////////////////
|
||
|
/*
|
||
|
Foe Hunter Rancor Attack
|
||
|
*/
|
||
|
//:://////////////////////////////////////////////
|
||
|
//:: Created By: Oni5115
|
||
|
//:: Created On: July 12, 2004
|
||
|
//:://////////////////////////////////////////////
|
||
|
|
||
|
#include "prc_inc_combat"
|
||
|
|
||
|
int GetRancorDice(object oPC)
|
||
|
{
|
||
|
int iFHLevel = GetLevelByClass(CLASS_TYPE_FOE_HUNTER, oPC);
|
||
|
int iRancorDice = FloatToInt( (( iFHLevel + 1.0 ) /2) );
|
||
|
|
||
|
return iRancorDice;
|
||
|
}
|
||
|
|
||
|
int GetRancorDamage(int iNumDice)
|
||
|
{
|
||
|
int rDam = d6(iNumDice);
|
||
|
|
||
|
return rDam;
|
||
|
}
|
||
|
|
||
|
void main()
|
||
|
{
|
||
|
object oTarget = PRCGetSpellTargetObject();
|
||
|
|
||
|
object oPC = OBJECT_SELF;
|
||
|
object oWeapR = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC);
|
||
|
|
||
|
int iWeapRDamageType = GetWeaponDamageType(oWeapR);
|
||
|
int DamagePower = GetDamagePowerConstant(oWeapR, oTarget, oPC);
|
||
|
|
||
|
// damage vars
|
||
|
int iRancDice = GetRancorDice(oPC);
|
||
|
int iRancorDamage = GetRancorDamage(iRancDice);
|
||
|
int bIsRangedAttack = GetWeaponRanged(oWeapR);
|
||
|
|
||
|
if(!bIsRangedAttack)
|
||
|
{
|
||
|
AssignCommand(oPC, ActionMoveToLocation(GetLocation(oTarget), TRUE) );
|
||
|
}
|
||
|
|
||
|
if(GetHasFeat(FEAT_RANCOR))
|
||
|
{
|
||
|
string sSuccess = "*Rancor Attack Hit*";
|
||
|
string sMiss = "*Rancor Attack Miss*";
|
||
|
|
||
|
if(GetLocalInt(oPC, "HatedFoe") != MyPRCGetRacialType(oTarget) )
|
||
|
{
|
||
|
iRancorDamage = 0;
|
||
|
sSuccess = "*Not Hated Foe: Rancor Attack Not Possible*";
|
||
|
}
|
||
|
|
||
|
effect eBonusDamage = EffectDamage(iRancorDamage, iWeapRDamageType, DamagePower);
|
||
|
|
||
|
// gives player a few seconds to run at enemy from distance
|
||
|
if(!bIsRangedAttack)
|
||
|
{
|
||
|
DelayCommand( 2.0, PerformAttackRound(oTarget, oPC, eBonusDamage, 0.0, 0, 0, 0, FALSE, sSuccess, sMiss) );
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
PerformAttackRound(oTarget, oPC, eBonusDamage, 0.0, 0, 0, 0, FALSE, sSuccess, sMiss);
|
||
|
}
|
||
|
}
|
||
|
}
|