61 lines
3.0 KiB
Plaintext
61 lines
3.0 KiB
Plaintext
///////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Invizible420's Nyth
|
|
// Created On: 3/15/03
|
|
//
|
|
// Script Name: i420_cr_nyth_dmg
|
|
// Nyth OnDamaged Event
|
|
// Bug Reports: Digiddy777@yahoo.com
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Checks last damage dealt to oNyth for fire/electrical damage, if
|
|
// there has been fire/electical damage, heal that damage and then
|
|
// give temporary hitpoints for that amount, if the tempHP
|
|
// has exceeded the total HP
|
|
#include "prc_inc_racial"
|
|
|
|
void main()
|
|
{
|
|
if (GetLastSpell() == SPELL_MAGIC_MISSILE) {
|
|
int iMMDmg = GetDamageDealtByType(DAMAGE_TYPE_MAGICAL);
|
|
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(iMMDmg),OBJECT_SELF);
|
|
}
|
|
int iFDmg = GetDamageDealtByType(DAMAGE_TYPE_FIRE);
|
|
int iEDmg = GetDamageDealtByType(DAMAGE_TYPE_ELECTRICAL);
|
|
if (iFDmg > 0) {
|
|
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(iFDmg),OBJECT_SELF);
|
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectTemporaryHitpoints(iFDmg*10),OBJECT_SELF);
|
|
}
|
|
if (iEDmg > 0) {
|
|
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(iEDmg),OBJECT_SELF);
|
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectTemporaryHitpoints(iEDmg*10),OBJECT_SELF);
|
|
}
|
|
if (GetCurrentHitPoints(OBJECT_SELF) > 60) {
|
|
if (GetLocalInt(OBJECT_SELF,"SPAWNED_ONCE") != 1) {
|
|
SendMessageToPC(GetLastDamager(),"The "+GetName(OBJECT_SELF)+" fissures into two.");
|
|
ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_FROST_L),GetLocation(OBJECT_SELF));
|
|
|
|
// Loop through all the living creatures in the in (30 ft radius) apply
|
|
// visual light effects, and shoot magic missles at the targets
|
|
object oMMTarget;
|
|
oMMTarget = GetFirstObjectInShape(SHAPE_SPHERE,30.0,GetLocation(OBJECT_SELF),FALSE,OBJECT_TYPE_CREATURE);
|
|
ClearAllActions(TRUE);
|
|
while (oMMTarget != OBJECT_INVALID) {
|
|
if (MyPRCGetRacialType(oMMTarget) != RACIAL_TYPE_UNDEAD) {
|
|
ActionCastSpellAtObject(SPELL_MAGIC_MISSILE,oMMTarget,METAMAGIC_ANY,TRUE,Random(2),PROJECTILE_PATH_TYPE_DEFAULT,TRUE);
|
|
ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_FROST_L),GetLocation(OBJECT_SELF));
|
|
AssignCommand(OBJECT_SELF,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(d4(1)+1*Random(3)+1),oMMTarget));
|
|
}
|
|
oMMTarget = GetNextObjectInShape(SHAPE_SPHERE,30.0,GetLocation(OBJECT_SELF),FALSE,OBJECT_TYPE_CREATURE);
|
|
}
|
|
|
|
DestroyObject(OBJECT_SELF,0.4);
|
|
DelayCommand(0.75,ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_FROST_L),GetLocation(OBJECT_SELF)));
|
|
DelayCommand(1.25,ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_BREACH),GetLocation(OBJECT_SELF)));
|
|
CreateObject(OBJECT_TYPE_CREATURE, "i420_cr_nyth2",GetLocation(OBJECT_SELF));
|
|
CreateObject(OBJECT_TYPE_CREATURE, "i420_cr_nyth2",GetLocation(OBJECT_SELF));
|
|
SetLocalInt(OBJECT_SELF,"SPAWNED_ONCE",1);
|
|
}
|
|
}
|
|
}
|