generated from Jaysyn/ModuleTemplate
122 lines
5.9 KiB
Plaintext
122 lines
5.9 KiB
Plaintext
///////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// 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 = "<cóóó>";
|
|
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);
|
|
}
|
|
}
|
|
}
|