Fear Aura
Posted: Wed Nov 23, 2022 7:24 pm
As part of my Necromancy spell line, Necromancers can summon ghosts, and for ghost I have added this 'fear aura' ability. There is only a 25% chance that the aura will go off, and there is a chance for those caught in the aura to resist. This ability is based on the life_drain_aura.js script.
// For creatures that can drain life of target when they are hit in combat. From the life_drain_aura.js script
var iSpecialAttack = 25; // This is the % chance the attacker will attempt to drain life
var resistModifyer = 1; // How effective the players magic resistance is to ward off the attack
function onAttack(pAttacker, pDefender, damageValue, damageType )
{
var iNum = RandomNumber( 0, 100 );
if (iNum < iSpecialAttack) // there is a 25% chance that nearby targets may be impacted by fear
{
AreaCharacterFunction( "DealAreaFear", pAttacker, 5 );
return true;
}
else
return false;
}
function DealAreaFear( pAttacker, pDefender )
{
if( ValidateObject(pDefender) && pDefender != pAttacker && pDefender.vulnerable && !pDefender.dead
&& (( pDefender.npc && ( pDefender.tamed || pDefender.hireling )) || pDefender.online ))
{
var iResistRoll = RandomNumber( 0, 1000 );
if( iResistRoll > ( pDefender.skills.magicresistance / resistModifyer))
{
var mSpell = Spells[38];
pDefender.frozen = 1;
pDefender.SpellStaticEffect( mSpell );
pDefender.SoundEffect( 0x0204, true );
if( pDefender.socket != null )
pDefender.EmoteMessage("You are paralyzed by fear");
pDefender.StartTimer(10000, 0, true);
}
}
return false;
}
function onTimer(pDefender, timerID)
{
var socket = pDefender.socket;
if(timerID == 0)
{
pDefender.frozen = 0;
if( pDefender.socket != null )
pDefender.EmoteMessage( "You have regained mobility");
return true;
}
}
var iSpecialAttack = 25; // This is the % chance the attacker will attempt to drain life
var resistModifyer = 1; // How effective the players magic resistance is to ward off the attack
function onAttack(pAttacker, pDefender, damageValue, damageType )
{
var iNum = RandomNumber( 0, 100 );
if (iNum < iSpecialAttack) // there is a 25% chance that nearby targets may be impacted by fear
{
AreaCharacterFunction( "DealAreaFear", pAttacker, 5 );
return true;
}
else
return false;
}
function DealAreaFear( pAttacker, pDefender )
{
if( ValidateObject(pDefender) && pDefender != pAttacker && pDefender.vulnerable && !pDefender.dead
&& (( pDefender.npc && ( pDefender.tamed || pDefender.hireling )) || pDefender.online ))
{
var iResistRoll = RandomNumber( 0, 1000 );
if( iResistRoll > ( pDefender.skills.magicresistance / resistModifyer))
{
var mSpell = Spells[38];
pDefender.frozen = 1;
pDefender.SpellStaticEffect( mSpell );
pDefender.SoundEffect( 0x0204, true );
if( pDefender.socket != null )
pDefender.EmoteMessage("You are paralyzed by fear");
pDefender.StartTimer(10000, 0, true);
}
}
return false;
}
function onTimer(pDefender, timerID)
{
var socket = pDefender.socket;
if(timerID == 0)
{
pDefender.frozen = 0;
if( pDefender.socket != null )
pDefender.EmoteMessage( "You have regained mobility");
return true;
}
}