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

Quests::Custom Custom Quests here

Reply
 
Thread Tools Display Modes
  #1  
Old 06-22-2009, 09:36 AM
cubber
Discordant
 
Join Date: Apr 2006
Posts: 374
Default Items and levels for a small server.

This is a quest that I tagged on Galarono_McHalorsos in the bazaar on my server. I chose him because he had no quests assigned to him and he is in a central location. The quest gives him the ability to summon players certian items to make their lives a bit easier on a small server with a population of about 5 players.

This script will give the player the choice to obtain the following:

- 3 guide packs if the player says [bags].

- gm pants (bard speed), celestial sword (gate), gm boots (lev), earing of the Z (nice regen and stats), gm gloves (100% Rez) if the player says [special items]

- Your basic set of mage summoned pet gear if the player says [pet gear]

- An Adventurer's Stone if the player says [Adventurer's Stone]

- 10 vials of Armour Dye if a player says [Armour Dye]

- A joke about the epic if the player says [Epic]

- And finally a choice of levels to level the player up to with the max being 50.

Code:
#############
#Written By : Cubber
#Quest Name: Small Server Help
#Quest Zone: Bazaar
#Quest NPC: Galarono_McHalorsos
#################
sub EVENT_SAY
{
   if($text=~/Hail/i)
      {
         quest::say("Hello there $name,  Looking for some new toys are ya?  I just may have a some special equipment stashed away here somewhere,  are you [interested] ?");
      }
if ($text=~/interested/i)
			
			{
				quest::say("Tell me $race what are ya looking for? [Bags], [Special Items], [Pet Gear], an [Adventurer's Stone], some [Dye] for your armour, or your [Epic]?  I can also help you catch up to your friends by granting you some [Levels].");
			}
			
				if ($text=~/bags/i)
					{
						quest::say("Here are some bags to help carry all your loot!");
						quest::summonitem("17800");
						quest::summonitem("17800");
						quest::summonitem("17800");      	
					}
			
				if ($text=~/Special Items/i)
					{
						quest::say("Here are a few special items to help you along in your travels!");
						quest::summonitem("31951");
						quest::summonitem("31883");
						quest::summonitem("31881");
						quest::summonitem("31885");
						quest::summonitem("31954");
					}
			
				if ($text=~/Pet Gear/i)
					{
						quest::say("Here are some goodies for your pet!");
						quest::summonitem("46987");
						quest::summonitem("28595");
						quest::summonitem("28595");
						quest::summonitem("28596");
						quest::summonitem("28596");
						quest::summonitem("28598");
					}

				if ($text=~/Adventurer's Stone/i)
					{
						quest::say("Good luck on your adventures!");					
						quest::summonitem("41000");
					}

				if ($text=~/Dye/i)
					{
						quest::say("Don't go to crazy with this stuff now!");
						quest::summonitem("32557");
						quest::summonitem("32557");
						quest::summonitem("32557");
						quest::summonitem("32557");
						quest::summonitem("32557");
						quest::summonitem("32557");
						quest::summonitem("32557");
						quest::summonitem("32557");
						quest::summonitem("32557");
						quest::summonitem("32557");
					}

				if ($text=~/Epic/i)
					{
						quest::say("HaHa! I got ya $class ... You need to earn that one for yourself!");
					}
	
				if ($text=~/Levels/i)
					{
						quest::say("What level would you like me to grant you? [10], [20], [30], [40], or [50]?");
					}

				if ($text=~/10/i)
					{
						quest::say("There you are!  Don't forget to go train, and get your new spells or skills.");
						quest::level(10);
					}

				if ($text=~/20/i)
					{
						quest::say("There you are!  Don't forget to go train, and get your new spells or skills.");
						quest::level(20);
					}

				if ($text=~/30/i)
					{
						quest::say("There you are!  Don't forget to go train, and get your new spells or skills.");
						quest::level(30);
					}
	
				if ($text=~/40/i)
					{
						quest::say("There you are!  Don't forget to go train, and get your new spells or skills.");
						quest::level(40);
					}

				if ($text=~/50/i)
					{
						quest::say("There you are!  Don't forget to go train, and get your new spells or skills.");
						quest::level(50);
					}

}
Reply With Quote
  #2  
Old 07-20-2009, 11:31 AM
cubber
Discordant
 
Join Date: Apr 2006
Posts: 374
Default

I changed this a bit to require a donation to the NPC for the items or levels.

A few other changes that were made:

- Removed the adventure stone since it is obtainable now via the regular quests.

- Added the ability to purchase AA points from the NPC

- Added the ability to purchase 1 level at a time from the NPC

- Removed the old leveling options.

Without a large playerbase I have a bunch of players with a lot of plat and nothing to spend it on. So I figured I would make this guy a plat sink.

Code:
#############
#Written By : Cubber
#Quest Name: Items and Levels for a Small Server.
#Quest Zone: Bazaar
#Quest NPC: Galarono_McHalorsos
#################
sub EVENT_SAY
{
   	if($text=~/Hail/i)
      		{
         	quest::say("Hello there $name! I have in my possesion some very fine items, as well as a few useful abilities that I am offering to adventurers for a small donation.  Are you [interested] in what I have to offer?");
      		}
	
	elsif ($text=~/interested/i)
		
		{
			quest::say("Tell me $race what are ya looking for? [Bags], [Pet Gear], some [Dye] for your armour, or some very [Special Items]?  I can also help you catch up to your friends by granting you some [Levels] or [AA Points].");
		}
			
				elsif ($text=~/dye/i)
					{
						quest::say("I will trade you a stack of armour dye for 25 platinum pieces.");
					}

				elsif ($text=~/bags/i)
					{
						quest::say("I will trade you a nice bag for 50 platinum pieces.");
					}
			
				elsif ($text=~/Pet Gear/i)
					{
						quest::say("I will trade you some nice gear for your pet for 100 platinum pieces.");
					}

				elsif ($text=~/Special Items/i)
					{
						quest::say("I will trade you a few very special items for 10000 platinum pieces.");
					}
			
								
				elsif ($text=~/AA Points/i)
					{
						quest::say("I will grant you 5 regular AA Points for 2500 platinum pieces.");
					}
					
	
				elsif ($text=~/Levels/i)
					{
						quest::say("I will grant you 1 level for 5000 platinum pieces.");
					}

					
				
}

sub EVENT_ITEM

{

	if($platinum ==25)
		{
			quest::summonitem("32557","20");
		}

	elsif($platinum ==50)
		{
			quest::summonitem("17145");
		}

	elsif($platinum ==100)
		{
			quest::summonitem("46987");
			quest::summonitem("28595");
			quest::summonitem("28595");
			quest::summonitem("28596");
			quest::summonitem("28596");
			quest::summonitem("28598");
		}
	
	elsif($platinum ==10000)
		{
			quest::summonitem("31951");
			quest::summonitem("31883");
			quest::summonitem("31881");
			quest::summonitem("31885");
			quest::summonitem("31954");
		}

	elsif($platinum ==2500)
		{
			quest::ding();
			quest::emote("grants you 5 AA Points!");
			$client->AddAAPoints(5);
		}

	elsif($platinum ==5000)
		{
			quest::emote("grants you 1 level!");
			quest::level(quest::getlevel(0) +1);
		}
			
}
Reply With Quote
  #3  
Old 07-20-2009, 01:31 PM
vales
Discordant
 
Join Date: May 2006
Posts: 458
Default

Wow, that's awesome! Thanks for the contribution.

Edit: Think you can do one for spells? Ever since Sony changed it to get spells at every level, it's getting harder to hunt them down since most of them we can't get due the zones being unavailable (Nedaria's Landing) or the NPCs not being there like in Freeport. And don't even get me started on rune spells, lol.

I think if there was also a way to scale down the HP and MP for mobs for low population servers would be awesome as well. There's no way everyone can experience content if there's a required amount of players needed for something. Bots are awesome, but there are limits still.
Reply With Quote
  #4  
Old 07-20-2009, 01:34 PM
cubber
Discordant
 
Join Date: Apr 2006
Posts: 374
Default

I will see if I can add in a spells line when I have the time.
Reply With Quote
  #5  
Old 07-20-2009, 01:53 PM
cubber
Discordant
 
Join Date: Apr 2006
Posts: 374
Default

Quote:
Think you can do one for spells?
Here you go. Updated to scribe spells at the current level of the player for 500 plat.

Code:
#############
#Written By : Cubber
#Quest Name: Items and Levels for a Small Server.
#Quest Zone: Bazaar
#Quest NPC: Galarono_McHalorsos
#################
sub EVENT_SAY
{
   	if($text=~/Hail/i)
      		{
         	quest::say("Hello there $name! I have in my possesion some very fine items, as well as a few useful abilities that I am offering to adventurers for a small donation.  Are you [interested] in what I have to offer?");
      		}
	
	elsif ($text=~/interested/i)
		
		{
			quest::say("Tell me $race what are ya looking for? [Bags], [Pet Gear], [Spells], some [Dye] for your armour, or some very [Special Items]?  I can also help you catch up to your friends by granting you some [Levels] or [AA Points].");
		}
			
				elsif ($text=~/dye/i)
					{
						quest::say("I will trade you a stack of armour dye for 25 platinum pieces.");
					}

				elsif ($text=~/bags/i)
					{
						quest::say("I will trade you a nice bag for 50 platinum pieces.");
					}
			
				elsif ($text=~/Pet Gear/i)
					{
						quest::say("I will trade you some nice gear for your pet for 100 platinum pieces.");
					}

				elsif ($text=~/Special Items/i)
					{
						quest::say("I will trade you a few very special items for 10000 platinum pieces.");
					}
			
								
				elsif ($text=~/AA Points/i)
					{
						quest::say("I will grant you 5 regular AA Points for 2500 platinum pieces.");
					}
					
	
				elsif ($text=~/Levels/i)
					{
						quest::say("I will grant you 1 level for 5000 platinum pieces.");
					}
				
				elsif ($text=~/Spells/i)
					{
						quest::say("I will grant you all of the spells up to your current level for 500 platinum pieces.");
					}
					
				
}

sub EVENT_ITEM

{

	if($platinum ==25)
		{
			quest::summonitem("32557","20");
		}

	elsif($platinum ==50)
		{
			quest::summonitem("17145");
		}

	elsif($platinum ==100)
		{
			quest::summonitem("46987");
			quest::summonitem("28595");
			quest::summonitem("28595");
			quest::summonitem("28596");
			quest::summonitem("28596");
			quest::summonitem("28598");
		}
	
	elsif($platinum ==10000)
		{
			quest::summonitem("31951");
			quest::summonitem("31883");
			quest::summonitem("31881");
			quest::summonitem("31885");
			quest::summonitem("31954");
		}

	elsif($platinum ==2500)
		{
			quest::ding();
			quest::emote("grants you 5 AA Points!");
			$client->AddAAPoints(5);
		}

	elsif($platinum ==5000)
		{
			quest::emote("grants you 1 level!");
			quest::level(quest::getlevel(0) +1);
		}
			
	elsif($platinum ==500)
		{
			quest::scribespells(quest::getlevel(0));
			quest::emote("points at your spellbook");
		}
}
Reply With Quote
  #6  
Old 07-20-2009, 01:56 PM
vales
Discordant
 
Join Date: May 2006
Posts: 458
Default

Quote:
Originally Posted by cubber View Post
Here you go. Updated to scribe spells at the current level of the player for 500 plat.
Wow, that's awesome. Thanks a bunch!

I'll test tit in a bit after I go kill myself outside in this 100+ degree weather. =/
Reply With Quote
  #7  
Old 07-20-2009, 01:54 PM
vales
Discordant
 
Join Date: May 2006
Posts: 458
Default

Cool. Yeah, it totally caught me off guard when I got the message about heading to the home town or wayfarer's camp to get my stone appeared. I was completely overwhelmed with glee. Heh.

I was looking for something similar about lowering the HP/MP ratio on the server, and remembered someone wrote a solo server SQL batch for WoW. Here's a small sample - maybe someone can take this and run with it. These values are completely different with EQ's but it's something for reference, really. I tested this back in the day, and it was completely awesome. Got to see content I never would have imagined this way as well.

Quote:
-- Restore original values
TRUNCATE TABLE creature_template;
INSERT INTO creature_template SELECT * FROM creature_template_backup;

-- Add tag column
ALTER TABLE creature_template ADD COLUMN solo INTEGER(1) DEFAULT 0;

-- 40 man instances
UPDATE creature_template SET `solo`=1, `minhealth`=`minhealth`/40, `maxhealth`=`maxhealth`/40, `minmana`=`minmana`/40, `maxmana`=`maxmana`/40, `mindmg`=`mindmg`/40, `maxdmg`=`maxdmg`/40, `minrangedmg`=`minrangedmg`/40, `maxrangedmg`=`maxrangedmg`/40, `attackpower`=`attackpower`/40, `rangedattackpower`=`rangedattackpower`/40 WHERE entry IN (SELECT id FROM creature WHERE map IN (249,409,469,531,533)) and rank > 0 and npcflag = 0;

-- Adjustment with maxhealth range
-- Based on 40 man (> 200,001)
UPDATE creature_template SET `solo`=1, `minhealth`=`minhealth`/40, `maxhealth`=`maxhealth`/40, `minmana`=`minmana`/40, `maxmana`=`maxmana`/40, `mindmg`=`mindmg`/40, `maxdmg`=`maxdmg`/40, `attackpower`=`attackpower`/40, `rangedattackpower`=`rangedattackpower`/40
WHERE entry IN (SELECT id FROM creature WHERE map IN (0,1,530) AND solo=0 AND maxhealth > 200001) and rank > 0 and npcflag = 0;

-- Based on 25 man (140,001 - 200,000)
UPDATE creature_template SET `solo`=1, `minhealth`=`minhealth`/25, `maxhealth`=`maxhealth`/25, `minmana`=`minmana`/25, `maxmana`=`maxmana`/25, `mindmg`=`mindmg`/25, `maxdmg`=`maxdmg`/25, `attackpower`=`attackpower`/25, `rangedattackpower`=`rangedattackpower`/25
WHERE entry IN (SELECT id FROM creature WHERE map IN (0,1,530) AND solo=0 AND maxhealth BETWEEN 140001 AND 200000) and rank > 0 and npcflag = 0;

-- Based on 20 man (100,001 - 140,000)
UPDATE creature_template SET `solo`=1, `minhealth`=`minhealth`/20, `maxhealth`=`maxhealth`/20, `minmana`=`minmana`/20, `maxmana`=`maxmana`/20, `mindmg`=`mindmg`/20, `maxdmg`=`maxdmg`/20, `attackpower`=`attackpower`/20, `rangedattackpower`=`rangedattackpower`/20
WHERE entry IN (SELECT id FROM creature WHERE map IN (0,1,530) AND solo=0 AND maxhealth BETWEEN 100001 AND 140000) and rank > 0 and npcflag = 0;

-- Based on 10 man (40,001 - 100,000)
UPDATE creature_template SET `solo`=1, `minhealth`=`minhealth`/10, `maxhealth`=`maxhealth`/10, `minmana`=`minmana`/10, `maxmana`=`maxmana`/10, `mindmg`=`mindmg`/10, `maxdmg`=`maxdmg`/10, `attackpower`=`attackpower`/10, `rangedattackpower`=`rangedattackpower`/10
WHERE entry IN (SELECT id FROM creature WHERE map IN (0,1,530) AND solo=0 AND maxhealth BETWEEN 40001 AND 100000) and rank > 0 and npcflag = 0;

-- Based on 5 man (14,000 - 40,000)
UPDATE creature_template SET `solo`=1, `minhealth`=`minhealth`/5, `maxhealth`=`maxhealth`/5, `minmana`=`minmana`/5, `maxmana`=`maxmana`/5, `mindmg`=`mindmg`/5, `maxdmg`=`maxdmg`/5, `attackpower`=`attackpower`/5, `rangedattackpower`=`rangedattackpower`/5
WHERE entry IN (SELECT id FROM creature WHERE map IN (0,1,530) AND solo=0 AND maxhealth BETWEEN 14000 AND 40000) and rank > 0 and npcflag = 0;


-- Other elite adjustement
DROP TABLE IF EXISTS `avghealth`;
CREATE TABLE `avghealth` (
`minlevel` int(3) unsigned default '0',
`minhealth` int(5) unsigned default '0',
`maxhealth` int(5) unsigned default '0',
`minmana` int(5) unsigned default '0',
`maxmana` int(5) unsigned default '0',
`mindmg` float default '0',
`maxdmg` float default '0',
`minrangedmg` float NOT NULL default '0',
`maxrangedmg` float NOT NULL default '0',
`attackpower` int(10) unsigned NOT NULL default '0',
`rangedattackpower` smallint(5) unsigned NOT NULL default '0'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


update creature_template as a join avghealth as b on a.minlevel = b.minlevel set a.`minhealth`=b.`minhealth`, a.`maxhealth`=b.`maxhealth`, a.`minmana`=b.`minmana`, a.`maxmana`=b.`maxmana`, a.`mindmg`=b.`mindmg`, a.`maxdmg`=b.`maxdmg`, a.`minrangedmg`=b.`minrangedmg`, a.`maxrangedmg`=b.`maxrangedmg`, a.`attackpower`=b.`attackpower`, a.`rangedattackpower`=b.`rangedattackpower` where a.minhealth > b.minhealth and solo <> 1 and rank > 0 and npcflag = 0;
This made it so the 40 man instances and stuff were perfectly accessable for a small group.

Elite mobs hit harder and have way more HP, so there was also a sql entry to tone them down a bit.

I'm not SQL savvy, but it would be nice to further customize EQ along these lines where maxhp > 10 million could be fixed to reresent something less daunting for a small group.
Reply With Quote
Reply


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 03:40 PM.


 

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