void LightsOn() { object oArea = GetArea(OBJECT_SELF); int x,y; vector vLoc; location lLoc; string sLight; string sLight2; for(x=0;x<32;x++) { for(y=0;y<32;y++) { vLoc = Vector(IntToFloat(x),IntToFloat(y),0.0); lLoc = Location(oArea,vLoc,0.0); sLight = "LIGHT" + IntToString(x) + "." + IntToString(y) + ".1"; sLight2 = "LIGHT" + IntToString(x) + "." + IntToString(y) + ".2"; SetTileMainLightColor(lLoc,GetLocalInt(oArea,sLight),GetLocalInt(oArea,sLight2)); DeleteLocalInt(oArea,sLight); DeleteLocalInt(oArea,sLight2); sLight = "LIGHT" + IntToString(x) + "." + IntToString(y) + ".3"; sLight2 = "LIGHT" + IntToString(x) + "." + IntToString(y) + ".4"; SetTileSourceLightColor(lLoc,GetLocalInt(oArea,sLight),GetLocalInt(oArea,sLight2)); DeleteLocalInt(oArea,sLight); DeleteLocalInt(oArea,sLight2); } } RecomputeStaticLighting(oArea); } void LightsOut() { object oArea = GetArea(OBJECT_SELF); int x,y; vector vLoc; location lLoc; string sLight; for(x=0;x<32;x++) { for(y=0;y<32;y++) { vLoc = Vector(IntToFloat(x),IntToFloat(y),0.0); lLoc = Location(oArea,vLoc,0.0); //Save Color first for all lights sLight = "LIGHT" + IntToString(x) + "." + IntToString(y) + ".1"; SetLocalInt(oArea,sLight,GetTileMainLight1Color(lLoc)); sLight = "LIGHT" + IntToString(x) + "." + IntToString(y) + ".2"; SetLocalInt(oArea,sLight,GetTileMainLight2Color(lLoc)); sLight = "LIGHT" + IntToString(x) + "." + IntToString(y) + ".3"; SetLocalInt(oArea,sLight,GetTileSourceLight1Color(lLoc)); sLight = "LIGHT" + IntToString(x) + "." + IntToString(y) + ".4"; SetLocalInt(oArea,sLight,GetTileSourceLight2Color(lLoc)); SetTileMainLightColor(lLoc,TILE_MAIN_LIGHT_COLOR_BLACK,TILE_MAIN_LIGHT_COLOR_BLACK); SetTileSourceLightColor(lLoc,TILE_MAIN_LIGHT_COLOR_BLACK,TILE_MAIN_LIGHT_COLOR_BLACK); } } RecomputeStaticLighting(oArea); } void CleanTargs() { object oSTarget1 = GetObjectByTag("FireworksSTarget1"); object oSTarget2 = GetObjectByTag("FireworksSTarget2"); object oSTarget3 = GetObjectByTag("FireworksSTarget3"); object oSTarget4 = GetObjectByTag("FireworksSTarget4"); object oSTarget5 = GetObjectByTag("FireworksSTarget5"); object oSTarget6 = GetObjectByTag("FireworksSTarget6"); object oSTarget7 = GetObjectByTag("FireworksSTarget7"); object oSTarget8 = GetObjectByTag("FireworksSTarget8"); object oSTarget9 = GetObjectByTag("FireworksSTarget9"); object oSTarget10 = GetObjectByTag("FireworksSTarget10"); object oSTarget11 = GetObjectByTag("FireworksSTarget11"); object oSTarget12 = GetObjectByTag("FireworksSTarget12"); object oMTarget = GetObjectByTag("FireworksMTarget3"); object oMTarget1 = GetObjectByTag("FireworksMTarget1"); object oMTarget2 = GetObjectByTag("FireworksMTarget2"); object oLTarget = GetObjectByTag("FireworksLTarget3"); object oLTarget1 = GetObjectByTag("FireworksLTarget1"); object oLTarget2 = GetObjectByTag("FireworksLTarget2"); float fTimeDelay = 3.0; DestroyObject(oSTarget1,fTimeDelay); DestroyObject(oSTarget2,fTimeDelay); DestroyObject(oSTarget3,fTimeDelay); DestroyObject(oSTarget4,fTimeDelay); DestroyObject(oSTarget5,fTimeDelay); DestroyObject(oSTarget6,fTimeDelay); DestroyObject(oSTarget7,fTimeDelay); DestroyObject(oSTarget8,fTimeDelay); DestroyObject(oSTarget9,fTimeDelay); DestroyObject(oSTarget10,fTimeDelay); DestroyObject(oSTarget11,fTimeDelay); DestroyObject(oSTarget12,fTimeDelay); DestroyObject(oMTarget,fTimeDelay); DestroyObject(oMTarget1,fTimeDelay); DestroyObject(oMTarget2,fTimeDelay); DestroyObject(oLTarget,fTimeDelay); DestroyObject(oLTarget1,fTimeDelay); DestroyObject(oLTarget2,fTimeDelay); } void SetWrath() { object oTarget = GetWaypointByTag("center_arena"); object oArea = GetArea(oTarget); float z = 0.0; float x,y,tx,ty; float fAngle = 30.0; int nCount; vector nTarget = GetPosition(oTarget); vector nCreate; string sTag; tx = nTarget.x; ty = nTarget.y; //12 small targets in a clock pattern for(nCount = 1;nCount < 13;nCount++) { x = tx + (cos(fAngle)*10); y = ty + (sin(fAngle)*10); sTag = "FireworksSTarget" + IntToString(nCount); CreateObject(OBJECT_TYPE_PLACEABLE,"fireworksstarget",Location(oArea,Vector(x,y,z),0.0),FALSE,sTag); fAngle += 30.0; } x = tx; y = ty; //3 Medium and Large targets same x,y different z for (nCount = 1;nCount < 4;nCount++) { sTag = "FireworksLTarget" + IntToString(nCount); CreateObject(OBJECT_TYPE_PLACEABLE,"fireworksltarget",Location(oArea,Vector(x,y,z),0.0),FALSE,sTag); z += 1.5; } } void WrathCast(float oDelay, int eEffect, object oTarget) { DelayCommand(oDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(eEffect), oTarget)); } void ApplyWrathDamage(int iAmount, int dType, int pType, object oCreature) { effect eEffect = EffectDamage(iAmount, dType, pType); ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect, oCreature); } void WrathDamage(object oPC) { object oArea = GetArea(OBJECT_SELF); object oCreature = GetFirstObjectInArea(oArea); int iDice; string sString; while (GetIsObjectValid(oCreature)) { if ((GetObjectType(oCreature)==OBJECT_TYPE_CREATURE)&& (!GetIsPC(oCreature))&&(GetIsEnemy(oCreature, oPC))&& (GetTag(oCreature)!="starfall")&&(GetTag(oCreature)!="reaper")) { ApplyWrathDamage(500, DAMAGE_TYPE_FIRE, DAMAGE_POWER_NORMAL, oCreature); ApplyWrathDamage(500, DAMAGE_TYPE_COLD, DAMAGE_POWER_NORMAL, oCreature); ApplyWrathDamage(500, DAMAGE_TYPE_DIVINE, DAMAGE_POWER_NORMAL, oCreature); ApplyWrathDamage(500, DAMAGE_TYPE_NEGATIVE, DAMAGE_POWER_NORMAL, oCreature); ApplyWrathDamage(500, DAMAGE_TYPE_MAGICAL, DAMAGE_POWER_NORMAL, oCreature); ApplyWrathDamage(150, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_ENERGY, oCreature); } if ((GetTag(oCreature)=="starfall")&&(GetIsEnemy(oCreature, oPC))) { PlayVoiceChat(VOICE_CHAT_LAUGH, oCreature); iDice = d6(); switch (iDice) { case 1: {sString = "After years of posessing the Phoenix Rod, I have developed immunity to its power!"; break;} case 2: {sString = "Your rod won't work on me, fool!"; break;} case 3: {sString = "Well what do you know, the phoenix must like me! Gonna have to fight your own battle, whelp!"; break;} case 4: {sString = "It is useless against me, mortal!"; break;} case 5: {sString = "Need help defeating me do you?"; break;} case 6: {sString = "Try again, grasshopper!"; break;} } AssignCommand(oCreature, SpeakString(sString)); } oCreature =GetNextObjectInArea(oArea); } } void WrathMessage (object oPC) { SendMessageToPC(oPC, "500 Fire Damage to all creatures"); SendMessageToPC(oPC, "500 Cold Damage to all creatures"); SendMessageToPC(oPC, "500 Divine Damage to all creatures"); SendMessageToPC(oPC, "500 Negative Damage to all creatures"); SendMessageToPC(oPC, "500 Positive Damage to all creatures"); SendMessageToPC(oPC, "500 Magical Damage to all creatures"); SendMessageToPC(oPC, "A massive shockwave does 150 instant damage to all"); } void WrathSpell(object oPC, float oDelay) { object oSTarget1 = GetObjectByTag("FireworksSTarget1"); object oSTarget2 = GetObjectByTag("FireworksSTarget2"); object oSTarget3 = GetObjectByTag("FireworksSTarget3"); object oSTarget4 = GetObjectByTag("FireworksSTarget4"); object oSTarget5 = GetObjectByTag("FireworksSTarget5"); object oSTarget6 = GetObjectByTag("FireworksSTarget6"); object oSTarget7 = GetObjectByTag("FireworksSTarget7"); object oSTarget8 = GetObjectByTag("FireworksSTarget8"); object oSTarget9 = GetObjectByTag("FireworksSTarget9"); object oSTarget10 = GetObjectByTag("FireworksSTarget10"); object oSTarget11 = GetObjectByTag("FireworksSTarget11"); object oSTarget12 = GetObjectByTag("FireworksSTarget12"); object oLTarget = GetObjectByTag("FireworksLTarget3"); ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(488), oLTarget); WrathCast(oDelay+1.0, VFX_FNF_FIRESTORM, oSTarget1); WrathCast(oDelay+1.2, VFX_IMP_DIVINE_STRIKE_HOLY , oSTarget2); WrathCast(oDelay+1.4, VFX_FNF_MYSTICAL_EXPLOSION, oSTarget3); WrathCast(oDelay+1.6, VFX_FNF_ICESTORM, oSTarget4); WrathCast(oDelay+1.8, VFX_FNF_FIRESTORM, oSTarget5); WrathCast(oDelay+2.0, VFX_IMP_DIVINE_STRIKE_HOLY, oSTarget6); WrathCast(oDelay+2.2, VFX_FNF_MYSTICAL_EXPLOSION, oSTarget7); WrathCast(oDelay+2.4, VFX_FNF_ICESTORM, oSTarget8); WrathCast(oDelay+2.6, VFX_FNF_FIRESTORM, oSTarget9); WrathCast(oDelay+2.8, VFX_IMP_DIVINE_STRIKE_HOLY, oSTarget10); WrathCast(oDelay+3.0, VFX_FNF_MYSTICAL_EXPLOSION, oSTarget11); WrathCast(oDelay+3.2, VFX_FNF_ICESTORM, oSTarget12); WrathCast(oDelay+1.9, VFX_FNF_HOWL_MIND, oSTarget3); WrathCast(oDelay+2.3, VFX_FNF_HOWL_MIND, oSTarget6); WrathCast(oDelay+2.9, VFX_FNF_HOWL_MIND, oSTarget9); WrathCast(oDelay+3.1, VFX_FNF_HOWL_MIND, oSTarget12); } void Wrath(object oPC, float oDelay) { effect eEffect = EffectDamage(150, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_ENERGY); SendMessageToPC(oPC, "The Phoenix's wrath is released:"); SetWrath(); //DelayCommand(0.0, LightsOut()); DelayCommand(0.5, WrathSpell(oPC, oDelay)); DelayCommand(8.0, WrathDamage(oPC)); DelayCommand(7.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect, oPC)); DelayCommand(8.2, WrathMessage(oPC)); DelayCommand(10.5, CleanTargs()); //DelayCommand(11.0, LightsOn()); } void main() { object oPC = OBJECT_SELF; FloatingTextStringOnCreature("** Release the Phoenix-Dragon **", oPC); object oMod = GetModule(); int iTime; int iValidArea = GetLocalInt(oPC, "pvp_area"); float dWrathDelay = 5.0; object oTarget = GetWaypointByTag("center_arena"); SetLocalInt(oMod, "WrathTime", 1); if ((GetIsDay()==TRUE)||(GetIsDawn()==TRUE)) {DelayCommand(dWrathDelay+300.0, SetLocalInt(oMod, "WrathTime", 0));} if ((GetIsNight()==TRUE)||(GetIsDusk()==TRUE)) {DelayCommand(dWrathDelay+420.0, SetLocalInt(oMod, "WrathTime", 0));} Wrath(oPC, dWrathDelay); }