As for the spell scribing script, figured I'd share. This is the script I use on our server. Some of it pertains to only us, but I commented a few of the lines and you're welcome to use whatever you'd like.
Two things that might need explained -- I use custom hails for certain characters to get a personal response. So the hail check checks for character names and gives a special response if the character name matches =)
The second thing is that every class (except mages) can have their spells scribed up through 51. Mages are the exception because I didn't want them getting a free epic. As you can see in the script, she points mages to Progression Status when they hit 45. He's a custom NPC I use so players can check what landmarks for progression to the next expansion have been unlocked and which remain. In addition, he's been flagged as a vendor with mage spells on him from 45-51. If you don't mind mages having a free epic, you can take out the exceptions that I put in place.
Hopefully you find some use for either parts or all of this =)
Code:
sub EVENT_SAY {
if($text =~ /hail/i && $name =~ /Greenmist/) {
quest::say("I love you! <3");
}
elsif($text =~ /hail/i && $name =~ /Tissirja/) {
quest::say("My favorite cleric! <3");
}
elsif($text =~ /hail/i && $name =~ /Chinc/) {
quest::say("Haha. You're hung like a five year old. Go back to playing Starcraft, we all hate you.");
}
elsif($text =~ /hail/i && $name =~ /Arcite/) {
quest::say("Fall to the ground and stay there forever. Please. What, you gonna cry about it? Go worsen your wounds, emo monk.");
}
elsif($text =~ /hail/i) {
quest::say("Welcome to the Order of Hasson server, how can I help you today? Would you like me to help you [scribe] your spells? Or maybe [heal] your wounds? Or maybe you'd like me to [bind] your soul?");
}
elsif ($text =~ /scribe/i && $ulevel <= 51 && $class ne Magician) {
quest::say("Very well, here you are $name!");
quest::scribespells();
}
elsif($text =~ /scribe/i && $ulevel <= 44 && $class == Magician) {
quest::say("Very well, here you are $name!");
quest::scribespells();
}
elsif($text =~ /scribe/i && $ulevel >= 45 && $class == Magician) {
quest::say("Sorry, $name. You are too high to have any spells scribed! Progression Status over there should have your spells from 45-51, though!");
quest::emote("waves at Progression Status.");
}
elsif ($text =~ /scribe/i && $ulevel >= 52) {
quest::say("Sorry, $name. You are too high to have any spells scribed!");
}
elsif($text =~ /heal/i) { #Fully heals mana and health
quest::say("Let me fix that for you!");
quest::selfcast(13);
quest::selfcast(999);
}
elsif($text =~ /bind/i) { #Binds players
quest::say("Binding your soul!");
quest::selfcast(35);
}
elsif($text =~ /retard/i) { #Fixes common tongue for lizards
quest::say("Yes, I'm sure you're tired of being a retard who can't speak proper English. Have a lesson!");
quest::setlanguage(0,100);
}
}
sub EVENT_ITEM { #This portion allows her to cast GM haste on players who give her 1 platinum, 3 gold, 3 silver, and 7 copper. However, she has a 10% chance to DT players who do so and shout their name across all zones.
if(($platinum==1) && ($gold==3) && ($silver==3) && ($copper==7)) {
my $Chance = quest::ChooseRandom(1,2,3,4,5,6,7,8,9,10);
if ($Chance == '1') {
$client->Damage($npc, 1000000, SPELL_UNKNOWN, 2);
quest::shout2("$name!");
}
quest::selfcast(6593);
quest::say("Hehe, enjoy!");
}
else{
quest::say("What the hell am I supposed to do with that? Take it back. And get away from me, freak!");
plugin::return_items(\%itemcount);
}
}
#Submitted by Jim Mills