Amon_PRC8/_module/nss/underworldstaff.nss
Jaysyn904 c5cffc37af Initial Commit
Initial Commit [v1.01]
2025-04-03 19:00:46 -04:00

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