/////////////////////////////////////////////////////////////////////////////// // // Invizible420's Nyth // Created On: 3/15/03 // Updated: 05.01.05 // // Script Name: i420_c_odm_nyt // 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() { string WHITE = ""; int iMissile, iDomain, iMMDmg, iFDmg, iEDmg; object oMMTarget; if (GetTag(OBJECT_SELF) == "i420_c_001_nyt") { if (GetLastSpell() == SPELL_MAGIC_MISSILE) { iMMDmg = GetDamageDealtByType(DAMAGE_TYPE_MAGICAL); ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(iMMDmg),OBJECT_SELF); } if (GetLastSpell() == SPELL_ISAACS_LESSER_MISSILE_STORM) { iMMDmg = GetDamageDealtByType(DAMAGE_TYPE_MAGICAL); ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(iMMDmg),OBJECT_SELF); } if (GetLastSpell() == SPELL_ISAACS_GREATER_MISSILE_STORM) { iMMDmg = GetDamageDealtByType(DAMAGE_TYPE_MAGICAL); ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(iMMDmg),OBJECT_SELF); } iFDmg = GetDamageDealtByType(DAMAGE_TYPE_FIRE); iEDmg = GetDamageDealtByType(DAMAGE_TYPE_ELECTRICAL); if (iFDmg > 0) { ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(iFDmg),OBJECT_SELF); ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectTemporaryHitpoints(iFDmg*100),OBJECT_SELF); } if (iEDmg > 0) { ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(iEDmg),OBJECT_SELF); ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectTemporaryHitpoints(iEDmg*100),OBJECT_SELF); } if (GetCurrentHitPoints(OBJECT_SELF) > 60) { if (GetLocalInt(OBJECT_SELF,"SPAWNED_ONCE") != 1) { SendMessageToPC(GetLastDamager(),WHITE+"The "+GetName(OBJECT_SELF)+" fissures."); 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 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) { iMissile = d3(1); { iDomain = 1; AssignCommand(OBJECT_SELF,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(d4(1)+1),oMMTarget)); } if (iMissile == 2) { iDomain = 2; AssignCommand(OBJECT_SELF,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(d4(1)+1),oMMTarget)); AssignCommand(OBJECT_SELF,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(d4(1)+1),oMMTarget)); } if (iMissile == 3) { iDomain = 3; AssignCommand(OBJECT_SELF,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(d4(1)+1),oMMTarget)); AssignCommand(OBJECT_SELF,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(d4(1)+1),oMMTarget)); AssignCommand(OBJECT_SELF,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(d4(1)+1),oMMTarget)); } ActionCastSpellAtObject(SPELL_MAGIC_MISSILE,oMMTarget,METAMAGIC_ANY,TRUE,iDomain,PROJECTILE_PATH_TYPE_DEFAULT,TRUE); ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_FROST_L),GetLocation(OBJECT_SELF)); } 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_c_002_nyt",GetLocation(OBJECT_SELF)); CreateObject(OBJECT_TYPE_CREATURE, "i420_c_002_nyt",GetLocation(OBJECT_SELF)); SetLocalInt(OBJECT_SELF,"SPAWNED_ONCE",1); } } } if (GetTag(OBJECT_SELF) == "i420_c_002_nyth") { if (GetLastSpell() == SPELL_MAGIC_MISSILE) { iMMDmg = GetDamageDealtByType(DAMAGE_TYPE_MAGICAL); ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(iMMDmg),OBJECT_SELF); } if (GetLastSpell() == SPELL_ISAACS_LESSER_MISSILE_STORM) { iMMDmg = GetDamageDealtByType(DAMAGE_TYPE_MAGICAL); ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(iMMDmg),OBJECT_SELF); } if (GetLastSpell() == SPELL_ISAACS_GREATER_MISSILE_STORM) { iMMDmg = GetDamageDealtByType(DAMAGE_TYPE_MAGICAL); ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(iMMDmg),OBJECT_SELF); } iFDmg = GetDamageDealtByType(DAMAGE_TYPE_FIRE); 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); } } }