Go Back   EQEmulator Home > EQEmulator Forums > Quests > Quests::Custom

Quests::Custom Custom Quests here

 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
  #1  
Old 10-28-2012, 12:31 PM
Dunge0nMastr
Hill Giant
 
Join Date: Oct 2002
Location: Rockville, MD
Posts: 124
Default Temple of Veeshan, Vulak'Aerr Ring Event

Hey folks this is a bit of a round about way of going about recreating the original ring event in ToV, but i wanted to post to see if anyone was able to help me clean it up so its not using quite so many scripts hehe. As opposed to using timers for the waves i used signalwith to compensate for the smaller raids on the server.

All information RE the event was taken from: http://www.monkly-business.net/forum...hp/t-5765.html

While the event is a bit different (semi custom id say) i tried to keep as true as i could considering the raid sizes on my server, to the actual event.
The event starts after all 6 lords/ladys are dead, Thylex of Veeshan then becomes targetable (i moved him back to just in front of Vulak's spawn) when he is killed the event starts.

this was added to each boss to keep track of the bosses being up:
Code:
sub EVENT_DEATH {
quest::signalwith(124000,1,0);
}
Thylex of Veeshan script - accepts signals for when lady/lords die. Also checks to see if the event has been completed recently.
Code:
#Thylex of Veeshan
#New Ring Event to spawn Vulak
#When killed starts event

sub EVENT_SPAWN {
quest::modifynpcstat("special_attacks", "ABHSERFTQUMCNIDf");
$counter = 0;
}

sub EVENT_SIGNAL {
my $globalname = "VulakRingEvent";
if ($signal == 1) {
	$counter += 1;
if (!defined $qglobals{$globalname} && ($counter == 6)) {
		quest::spawn2(124171,0,0,$x,$y,$z,$h);
		quest::depopall(124000);
		}
	}
}
Killable Thylex after all 6 lords/ladys die:
Code:
#Targetable Thylex of Veeshan
#NPCID 124171
#spawns upon all 6 lords/ladys being killed, then triggers Vulak Event

sub EVENT_DEATH {
quest::unique_spawn(124158,0,0,"13.8","0.0","-6.2","0.0"); #Ring Event Tracker NPC
quest::signalwith(124158,0,0);
}
And the Event Tracker: This will track each wave, spawn the other waves accordingly, and will also control the fail/pass mechanisms on the event (if wipe = fail, if vulak dead despawns and event is reset in X hours.

Code:
#Ring Event Tracker
#Triggers when Thylex of Veeshan is Killed
#124158

sub EVENT_SPAWN {
$counter = 0;
quest::settimer("DTmobs",15);
quest::settimer("event",4000);
quest::shout("The Ring Event will begin in 30 seconds.  Prepare yourselves!");
}

sub EVENT_TIMER {
if ($timer eq "DTmobs") {
	quest::spawn2(124021,0,0,"-720.6","971.2","124.1","127.5");
	quest::spawn2(124021,0,0,"-760.6","971.2","124.1","127.5");
	quest::spawn2(124172,0,0,"-740.6","971.2","124.1","127.5");
	quest::stoptimer("DTmobs");
	quest::settimer("wave1",15);
	}
if ($timer eq "wave1") {
	quest::spawn2(124159,0,0,"-739.7","890.2","124.0","127.8"); #Wave 1 Guardian Wurm
	quest::spawn2(124161,0,0,"-811.7","510.1","124.0","62.6"); #Guardian Drake
	quest::spawn2(124161,0,0,"-677.7","510.1","124.0","191.1"); #Guardian Drake
	quest::stoptimer("wave1");
	}
if ($timer eq "vulak") {
	quest::depopall(124155);
	quest::shout("The Ring event has been Reset");
	quest::spawn2(124171,0,0,"-739.7","588.6","124.1","0.1");
	quest::depopall(124158);
	}
if ($timer eq "event") {
	quest::shout("You have failed the Vulak`Aerr Ring event.  Please try again");
	quest::stoptimer("event");
	quest::spawn2(124171,0,0,"-739.7","588.6","124.1","0.1");
	quest::depopall(124158);
	}

}

sub EVENT_SIGNAL {
if ($signal == 1) {
	$counter += 1;
	if ($counter == 3) {
		quest::spawn2(124160,0,0,"-741.5","488.5","122.0","255.3"); #Wave 2 Templar Drake
		}
	if ($counter == 4) {
		quest::spawn2(124159,0,0,"-739.7","890.2","124.0","127.8"); #wave 3 Guardian Wurm
		quest::spawn2(124161,0,0,"-811.7","510.1","124.0","62.6"); #Guardian Drake
		quest::spawn2(124161,0,0,"-677.7","510.1","124.0","191.1"); #Guardian Drake
		}
	if ($counter == 7) {
		quest::spawn2(124162,0,0,"-741.5","488.5","122.0","255.3"); #wave 4, first mini boss Zruk the lifestealer
		}
	if ($counter == 8) {
		quest::spawn2(124159,0,0,"-739.7","890.2","124.0","127.8"); #wave 5 Guardian Wurm
		quest::spawn2(124161,0,0,"-811.7","510.1","124.0","62.6"); #Guardian Drake
		quest::spawn2(124161,0,0,"-677.7","510.1","124.0","191.1"); #Guardian Drake
		}
	if ($counter == 11) {
		quest::spawn2(124159,0,0,"-739.7","890.2","124.0","127.8"); #wave 6 Guardian Wurm
		quest::spawn2(124161,0,0,"-811.7","510.1","124.0","62.6"); #Guardian Drake
		quest::spawn2(124161,0,0,"-677.7","510.1","124.0","191.1"); #Guardian Drake
		}
	if ($counter == 14) {
		quest::spawn2(124160,0,0,"-811.7","510.1","124.0","62.6"); #wave 7 Templar Drake
		quest::spawn2(124160,0,0,"-677.7","510.1","124.0","191.1"); #Templar Drake
		}
	if ($counter == 16) {
		quest::spawn2(124163,0,0,"-741.5","488.5","122.0","255.3"); #wave 8, second mini boss Rathek the Tigerclaw
		}
	if ($counter == 17) {
		quest::spawn2(124164,0,0,"-811.7","510.1","124.0","62.6"); #wave 9 Guardian Destroyer
		quest::spawn2(124164,0,0,"-677.7","510.1","124.0","191.1"); #Guardian Destroyer
		quest::spawn2(124164,0,0,"-739.7","890.2","124.0","127.8"); #Guardian Destroyer
		}
	if ($counter == 20) {
		quest::spawn2(124160,0,0,"-741.5","488.5","122.0","255.3"); #wave 10 Templar Drake
		quest::spawn2(124160,0,0,"-739.7","890.2","124.0","127.8"); #Templar drake
		}
	if ($counter == 22) {
		quest::spawn2(124160,0,0,"-739.7","890.2","124.0","127.8"); #wave 11 Templar Drake
		quest::spawn2(124164,0,0,"-811.7","510.1","124.0","62.6"); #guardian destroyer
		quest::spawn2(124164,0,0,"-677.7","510.1","124.0","191.1"); #guardian Destroyer
		}
	if ($counter == 25) {
		quest::spawn2(124165,0,0,"-741.5","488.5","122.0","255.3"); #wave 12, 3rd mini boss Vethrol the Skycaller
		}
	if ($counter == 26) {
		quest::spawn2(124160,0,0,"-811.7","510.1","124.0","62.6"); #wave 13 Templar Drake
		quest::spawn2(124160,0,0,"-741.5","488.5","122.0","255.3"); #Templar Drake
		quest::spawn2(124160,0,0,"-677.7","510.1","124.0","191.1"); #Templar Drake
		}
	if ($counter == 29) {
		quest::spawn2(124167,0,0,"-811.7","510.1","124.0","62.6"); #wave 14 Drake Warden
		quest::spawn2(124167,0,0,"-677.7","510.1","124.0","191.1"); #Drake Warden
		}
	if ($counter == 33) {
		quest::spawn2(124166,0,0,"-741.5","488.5","122.0","255.3"); #wave 15, Herald of Vulak
		}
	if ($counter == 34) {
		quest::spawn2(124155,0,0,"-739.4","517.2","121","255"); #Vulak Aerr
		quest::settimer("vulak",1200);
		quest::stoptimer("event");
		}
	}
if ($signal == 2) {
	quest::depopall(124155);
	quest::shout("The Ring event has been Reset");
	quest::spawn2(124171,0,0,"-739.7","588.6","124.1","0.1");
	quest::depopall(124158);
	quest::depopall(124021);
	quest::depopall(124021);
	quest::depopall(124172);
	}
if ($signal == 3) {
	quest::stoptimer("event");
	}
if ($signal == 4) {
	quest::stoptimer("vulak");
	quest::depopall(124021);
	quest::depopall(124172);
	quest::depopall(124158);
	}
}
Each wave is commented, i had to add alot of the appropriate mobs, including the mini-bosses, unfortunatley i couldnt find exact information on them as not many guilds did the ring event when it was live, and my old guild's MBs went down years ago 8(. The back of the bridge is also just like live - unescapable, to prevent people from kiting etc. it spawns 3 mobs, 2 with Proximities on them for DT, and 1 which warns players when they get too close (obviously greater proximity than DT mob lol).

Code:
#DT Mob Warner
#Higher Proximity than DT mobs warns players to turn back for face a fate worth than death
#NPCID: 124172

sub EVENT_SPAWN {
quest::set_proximity($x-75,$x+75,$y-75,$y+75,$z-25,$z+25);
}

sub EVENT_ENTER {
$client->Message(14,"You hear a voice in your mind, 'Turn back or face a fate worse than death.' There appears to be no retreat.");
}
and the 2 dt mobs:

Code:
#DT Proximity Mobs in VP
#Spawn when Ring event for Vulak is started
#124021

sub EVENT_SPAWN {
quest::set_proximity($x-40,$x+40,$y-40,$y+40,$z-40,$z+40);
quest::modifynpcstat("special_attacks", "ABHSERFTQUMCNIDf"); #immune to everything
}

sub EVENT_ENTER {
if ($npc && $client) {
	$npc->SpellFinished(7477, $client); #DT's players when they enter the proximity, forces them to not retreat
	}
}

sub EVENT_EXIT {
if ($npc && $client) {
	$npc->SpellFinished(7477, $client); #if it didnt fire when they enter it will when they exit!
	}
}
each mob in the waves has the following code:
Code:
sub EVENT_DEATH {
quest::signalwith(124158,1,0);
}
i decided to control the guardian destroyers Knockbacks through their script:
Code:
#Guardian Destroyer
#For Vulak Ring Event
#124164

sub EVENT_SPAWN {
quest::modifynpcstat("special_attacks","SERFf");
}

sub EVENT_COMBAT {
if ($combat_state == 1) {
	quest::settimer("kb",12);
	}
if ($combat_state == 0) {
	quest::signalwith(124158,2,0);
	quest::depopall(124164);
	}
}

sub EVENT_TIMER {
my $RTarget = $npc->GetHateRandom();
if ($timer eq "kb") {
	if ($RTarget) {
		$npc->SpellFinished(13073,$RTarget);
		}
	}
}


sub EVENT_DEATH {
quest::signalwith(124158,1,0);
}
And the Drake Wardens, which on live kept splitting i think 16mobs total, i set to only do 2 each, again cause of raid size on the server:

Code:
#A Drake Warden
#When killed splits into 2
#124167

sub EVENT_SPAWN {
quest::modifynpcstat("special_attacks","SERFf");
}

sub EVENT_DEATH {
quest::spawn2(124169,0,0,$x,$y,$z,$h);
quest::spawn2(124169,0,0,$x,$y,$z,$h);
}
The final named: The Herald of Vulak, spawns Vulak`Aerr when killed.

Code:
#Herald of Vulak
#124166
#final mini boss of Vulak Ring Event, death triggers Vulak's Spawn, and also casts a knockback.

sub EVENT_SPAWN {
quest::modifynpcstat("special_attacks","gSERFf");
quest::shout("You are fools to challenge the might of Vulak'Aerr");
}

sub EVENT_COMBAT {
if ($combat_state == 1) {
	quest::settimer("kb",12);
	}
if ($combat_state == 0) {
	quest::stoptimer("kb");
	quest::signalwith(124158,2,0);
	quest::depopall(124165);
	}
}

sub EVENT_TIMER {
my $RTarget = $npc->GetHateRandom();
if ($timer eq "kb") {
	if ($RTarget) {
		$npc->SpellFinished(13073,$RTarget);
		}
	}
}

sub EVENT_DEATH {
quest::signalwith(124158,1,0);
}
And Finally Vulak`Aerr:

Code:
#New Vulak`Aerr Script
#has a global 6 hour lock out on Ring event.
#124155

sub EVENT_SPAWN {

quest::signalwith(124158,3,0);
quest::modifynpcstat("special_attacks", "SERFTrMCNIDfdL");
quest::shout("Who dare's Disturb my Temple?!  Behold the power of $npcname!  I shall wipe you from the face of Velious!");
}

sub EVENT_DEATH {
my $globalname = "VulakRingEvent";
quest::shout2("I shall return Mortals!  Be warned, for when I do I will wipe your races from the face of Norrath!");
quest::setglobal("$globalname",1,7,'H6');
quest::signalwith(124158,4,0);
}
Currently i just have the Aggro range on the mobs set very high, basically the event goes: mob waves then break before mini boss (wont aggro unless players are close) - then add waves, mini boss etc till the end. gives players some downtime every couple of waves. Something i need to look into but havent done yet is how to manipulate aggro from one mob to others, (im still working on learning Hatelist manipulation in general).

Anyways - any thoughts comments fixes etc would all be greatly appreciated!

If someone wants all the .pl files for the event (22 in total) i will happily upload them all. I just wanted to get the basic stuff down.

Thanks! Hope someone gets something out of this!
__________________
Bront -Server Admin/Owner and Lead Quest Dev for Kildrukaun's Prophecy
http://kpemu.com/
Reply With Quote
 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 10:24 AM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3