66 lines
2.3 KiB
Plaintext
66 lines
2.3 KiB
Plaintext
//Arusteth Underworld Staff
|
|
#include "prc_inc_spells"
|
|
|
|
void main()
|
|
{
|
|
// Define Participants
|
|
object oPC = GetItemActivator();
|
|
object oTarget = GetItemActivatedTarget();
|
|
object oItemToTake1 = GetItemPossessedBy(oPC, "BlackDiamond");
|
|
|
|
int iArcane = GetLevelByClass(CLASS_TYPE_WIZARD, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_SORCERER, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_DREAD_NECROMANCER, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_BEGUILER, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_WARMAGE, oPC);
|
|
|
|
// Check for
|
|
if(GetIsObjectValid(GetItemPossessedBy(oPC, "BlackDiamond")))
|
|
{
|
|
if (GetItemStackSize(oItemToTake1) > 1)
|
|
{
|
|
SetItemStackSize(oItemToTake1, GetItemStackSize(oItemToTake1)-1);
|
|
}
|
|
|
|
else if (GetItemStackSize(oItemToTake1) == 1)
|
|
{
|
|
DestroyObject(oItemToTake1);
|
|
}
|
|
|
|
// Limit to only Wiz/Sorc 10th level plus
|
|
if (iArcane >= 10)
|
|
{
|
|
// Define Major Parameters
|
|
int nCasterLevel = PRCGetCasterLevel(oPC);
|
|
int nDiceRoll = (d4(1)+2);
|
|
int nCasterHP = GetCurrentHitPoints(oPC);
|
|
int nDamage = (nDiceRoll * nCasterHP);
|
|
int nCasterDam = (nCasterHP - 10);
|
|
// Define Visual and Damage Effects
|
|
effect eVis3 = EffectVisualEffect(VFX_FNF_WAIL_O_BANSHEES);
|
|
effect eVis2 = EffectVisualEffect(VFX_FNF_IMPLOSION);
|
|
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
|
|
effect eRay = EffectBeam(VFX_BEAM_EVIL, oPC, BODY_NODE_HAND);
|
|
effect eDam = EffectDamage(nDamage, DAMAGE_TYPE_MAGICAL);
|
|
effect eDam2 = EffectDamage(nCasterDam, DAMAGE_TYPE_NEGATIVE);
|
|
// Apply Payload
|
|
DelayCommand(0.3, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis3, oPC));
|
|
DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eRay, oTarget, 3.0));
|
|
DelayCommand(1.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis2, oTarget));
|
|
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam2, oPC));
|
|
DelayCommand(2.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
|
|
|
|
}
|
|
// Kill Anyone Outright that uses the staff not of proper class
|
|
else
|
|
{
|
|
int nDamage2 = (10000);
|
|
effect eVis = EffectVisualEffect(VFX_FNF_WAIL_O_BANSHEES);
|
|
effect eDam8 = EffectDamage(nDamage2, DAMAGE_TYPE_MAGICAL);
|
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam8, oPC);
|
|
}
|
|
}
|
|
|
|
|
|
}
|