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