Updated Buff your Players (markdown)

TurmoilToad
2018-11-06 14:34:20 -05:00
parent 10fab60606
commit 97331b7b47
+673
@@ -160,3 +160,676 @@ sub EVENT_LEVEL_UP {
} }
} }
``` ```
# Player Buffer (PERL)
* File Name (example): Canary_Morris.pl
* Description: This script will provide buffs and cures to the player and/or the player's pet, or the player's group and their pets, and will bind the player to the area. The NPC will charge the player for the good buffs.
_Credit to Maze who created the original version of this script, which has been adapted for use on this wiki._
```perl
#:: Create a scalar vaiable to store the maximum level of buffs
$maxlevelbuffs = 70;
#:: Create a hash to define spells cast at each 10 levels, and their cost
#:: Keys are by each 10 levels, with differentiation for spells ranked as generic vs. advanced
#:: Values are each spell, by id, and the cost in platinum for each rank
%buffshash = (
#:: Hash for Warriors
1 =>
{
level10generic => [276,278,219,368,146,148,279,129],
level10costgeneric => 0,
level10costadvanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level10costadvanced => 100,
level20generic => [276,278,219,368,146,148,279,129],
level20costgeneric => 0,
level20advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level20costadvanced => 100,
level30generic => [276,278,219,368,146,148,279,129],
level30costgeneric => 0,
level30advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level30costadvanced => 100,
level40generic => [276,278,219,368,146,148,279,129],
level40costgeneric => 0,
level40advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level40costadvanced => 100,
level50generic => [276,278,219,368,146,148,279,129],
level50costgeneric => 0,
level50advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level50costadvanced => 100,
level60generic => [276,278,219,368,146,148,279,129],
level60costgeneric => 0,
level60advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level60costadvanced => 100,
level70generic => [276,278,219,368,146,148,279,129],
level70costgeneric => 0,
level70advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level70costadvanced => 100,
},
#:: Hash for Clerics
2 =>
{
level10generic => [276,278,219,368,146,148,279,129],
level10costgeneric => 0,
level10advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level10costadvanced => 100,
level20generic => [276,278,219,368,146,148,279,129],
level20costgeneric => 0,
level20advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level20costadvanced => 100,
level30generic => [276,278,219,368,146,148,279,129],
level30costgeneric => 0,
level30advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level30costadvanced => 100,
level40generic => [276,278,219,368,146,148,279,129],
level40costgeneric => 0,
level40advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level40costadvanced => 100,
level50generic => [276,278,219,368,146,148,279,129],
level50costgeneric => 0,
level50advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level50costadvanced => 100,
level60generic => [276,278,219,368,146,148,279,129],
level60costgeneric => 0,
level60advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level60costadvanced => 100,
level70generic => [276,278,219,368,146,148,279,129],
level70costgeneric => 0,
level70advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level70costadvanced => 100,
},
#:: Hash for Paladins
3 =>
{
level10generic => [276,278,219,368,146,148,279,129],
level10costgeneric => 0,
level10advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level10costadvanced => 100,
level20generic => [276,278,219,368,146,148,279,129],
level20costgeneric => 0,
level20advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level20costadvanced => 100,
level30generic => [276,278,219,368,146,148,279,129],
level30costgeneric => 0,
level30advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level30costadvanced => 100,
level40generic => [276,278,219,368,146,148,279,129],
level40costgeneric => 0,
level40advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level40costadvanced => 100,
level50generic => [276,278,219,368,146,148,279,129],
level50costgeneric => 0,
level50advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level50costadvanced => 100,
level60generic => [276,278,219,368,146,148,279,129],
level60costgeneric => 0,
level60advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level60costadvanced => 100,
level70generic => [276,278,219,368,146,148,279,129],
level70costgeneric => 0,
level70advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level70costadvanced => 100,
},
#:: Hash for Ranger
4 =>
{
level10generic => [276,278,219,368,146,148,279,129],
level10costgeneric => 0,
level10advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level10costadvanced => 100,
level20generic => [276,278,219,368,146,148,279,129],
level20costgeneric => 0,
level20advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level20costadvanced => 100,
level30generic => [276,278,219,368,146,148,279,129],
level30costgeneric => 0,
level30advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level30costadvanced => 100,
level40generic => [276,278,219,368,146,148,279,129],
level40costgeneric => 0,
level40advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level40costadvanced => 100,
level50generic => [276,278,219,368,146,148,279,129],
level50costgeneric => 0,
level50advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level50costadvanced => 100,
level60generic => [276,278,219,368,146,148,279,129],
level60costgeneric => 0,
level60advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level60costadvanced => 100,
level70generic => [276,278,219,368,146,148,279,129],
level70costgeneric => 0,
level70advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level70costadvanced => 100,
},
#:: Hash for Shadow Knight
5 =>
{
level10generic => [276,278,219,368,146,148,279,129],
level10costgeneric => 0,
level10advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level10costadvanced => 100,
level20generic => [276,278,219,368,146,148,279,129],
level20costgeneric => 0,
level20advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level20costadvanced => 100,
level30generic => [276,278,219,368,146,148,279,129],
level30costgeneric => 0,
level30advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level30costadvanced => 100,
level40generic => [276,278,219,368,146,148,279,129],
level40costgeneric => 0,
level40advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level40costadvanced => 100,
level50generic => [276,278,219,368,146,148,279,129],
level50costgeneric => 0,
level50advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level50costadvanced => 100,
level60generic => [276,278,219,368,146,148,279,129],
level60costgeneric => 0,
level60advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level60costadvanced => 100,
level70generic => [276,278,219,368,146,148,279,129],
level70costgeneric => 0,
level70advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level70costadvanced => 100,
},
#:: Hash for Druid
6 =>
{
level10generic => [276,278,219,368,146,148,279,129],
level10costgeneric => 0,
level10advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level10costadvanced => 100,
level20generic => [276,278,219,368,146,148,279,129],
level20costgeneric => 0,
level20advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level20costadvanced => 100,
level30generic => [276,278,219,368,146,148,279,129],
level30costgeneric => 0,
level30advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level30costadvanced => 100,
level40generic => [276,278,219,368,146,148,279,129],
level40costgeneric => 0,
level40advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level40costadvanced => 100,
level50generic => [276,278,219,368,146,148,279,129],
level50costgeneric => 0,
level50advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level50costadvanced => 100,
level60generic => [276,278,219,368,146,148,279,129],
level60costgeneric => 0,
level60advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level60costadvanced => 100,
level70generic => [276,278,219,368,146,148,279,129],
level70costgeneric => 0,
level70advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level70costadvanced => 100,
},
#:: Hash for Monk
7 =>
{
level10generic => [276,278,219,368,146,148,279,129],
level10costgeneric => 0,
level10advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level10costadvanced => 100,
level20generic => [276,278,219,368,146,148,279,129],
level20costgeneric => 0,
level20advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level20costadvanced => 100,
level30generic => [276,278,219,368,146,148,279,129],
level30costgeneric => 0,
level30advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level30costadvanced => 100,
level40generic => [276,278,219,368,146,148,279,129],
level40costgeneric => 0,
level40advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level40costadvanced => 100,
level50generic => [276,278,219,368,146,148,279,129],
level50costgeneric => 0,
level50advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level50costadvanced => 100,
level60generic => [276,278,219,368,146,148,279,129],
level60costgeneric => 0,
level60advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level60costadvanced => 100,
level70generic => [276,278,219,368,146,148,279,129],
level70costgeneric => 0,
level70advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level70costadvanced => 100,
},
#:: Hash for Bard
8 =>
{
level10generic => [276,278,219,368,146,148,279,129],
level10costgeneric => 0,
level10advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level10costadvanced => 100,
level20generic => [276,278,219,368,146,148,279,129],
level20costgeneric => 0,
level20advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level20costadvanced => 100,
level30generic => [276,278,219,368,146,148,279,129],
level30costgeneric => 0,
level30advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level30costadvanced => 100,
level40generic => [276,278,219,368,146,148,279,129],
level40costgeneric => 0,
level40advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level40costadvanced => 100,
level50generic => [276,278,219,368,146,148,279,129],
level50costgeneric => 0,
level50advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level50costadvanced => 100,
level60generic => [276,278,219,368,146,148,279,129],
level60costgeneric => 0,
level60advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level60costadvanced => 100,
level70generic => [276,278,219,368,146,148,279,129],
level70costgeneric => 0,
level70advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level70costadvanced => 100,
},
#:: Hash for Rogue
9 =>
{
level10generic => [276,278,219,368,146,148,279,129],
level10costgeneric => 0,
level10advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level10costadvanced => 100,
level20generic => [276,278,219,368,146,148,279,129],
level20costgeneric => 0,
level20advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level20costadvanced => 100,
level30generic => [276,278,219,368,146,148,279,129],
level30costgeneric => 0,
level30advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level30costadvanced => 100,
level40generic => [276,278,219,368,146,148,279,129],
level40costgeneric => 0,
level40advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level40costadvanced => 100,
level50generic => [276,278,219,368,146,148,279,129],
level50costgeneric => 0,
level50advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level50costadvanced => 100,
level60generic => [276,278,219,368,146,148,279,129],
level60costgeneric => 0,
level60advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level60costadvanced => 100,
level70generic => [276,278,219,368,146,148,279,129],
level70costgeneric => 0,
level70advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level70costadvanced => 100,
},
#:: Hash for Shaman
10 =>
{
level10generic => [276,278,219,368,146,148,279,129],
level10costgeneric => 0,
level10advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level10costadvanced => 100,
level20generic => [276,278,219,368,146,148,279,129],
level20costgeneric => 0,
level20advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level20costadvanced => 100,
level30generic => [276,278,219,368,146,148,279,129],
level30costgeneric => 0,
level30advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level30costadvanced => 100,
level40generic => [276,278,219,368,146,148,279,129],
level40costgeneric => 0,
level40advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level40costadvanced => 100,
level50generic => [276,278,219,368,146,148,279,129],
level50costgeneric => 0,
level50advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level50costadvanced => 100,
level60generic => [276,278,219,368,146,148,279,129],
level60costgeneric => 0,
level60advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level60costadvanced => 100,
level70generic => [276,278,219,368,146,148,279,129],
level70costgeneric => 0,
level70advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level70costadvanced => 100,
},
#:: Hash for Necromancer
11 =>
{
level10generic => [276,278,219,368,146,148,279,129],
level10costgeneric => 0,
level10advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level10costadvanced => 100,
level20generic => [276,278,219,368,146,148,279,129],
level20costgeneric => 0,
level20advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level20costadvanced => 100,
level30generic => [276,278,219,368,146,148,279,129],
level30costgeneric => 0,
level30advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level30costadvanced => 100,
level40generic => [276,278,219,368,146,148,279,129],
level40costgeneric => 0,
level40advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level40costadvanced => 100,
level50generic => [276,278,219,368,146,148,279,129],
level50costgeneric => 0,
level50advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level50costadvanced => 100,
level60generic => [276,278,219,368,146,148,279,129],
level60costgeneric => 0,
level60advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level60costadvanced => 100,
level70generic => [276,278,219,368,146,148,279,129],
level70costgeneric => 0,
level70advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level70costadvanced => 100,
},
#:: Hash for Wizard
12 =>
{
level10generic => [276,278,219,368,146,148,279,129],
level10costgeneric => 0,
level10advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level10costadvanced => 100,
level20generic => [276,278,219,368,146,148,279,129],
level20costgeneric => 0,
level20advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level20costadvanced => 100,
level30generic => [276,278,219,368,146,148,279,129],
level30costgeneric => 0,
level30advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level30costadvanced => 100,
level40generic => [276,278,219,368,146,148,279,129],
level40costgeneric => 0,
level40advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level40costadvanced => 100,
level50generic => [276,278,219,368,146,148,279,129],
level50costgeneric => 0,
level50advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level50costadvanced => 100,
level60generic => [276,278,219,368,146,148,279,129],
level60costgeneric => 0,
level60advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level60costadvanced => 100,
level70generic => [276,278,219,368,146,148,279,129],
level70costgeneric => 0,
level70advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level70costadvanced => 100,
},
#:: Hash for Magician
13 =>
{
level10generic => [276,278,219,368,146,148,279,129],
level10costgeneric => 0,
level10advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level10costadvanced => 100,
level20generic => [276,278,219,368,146,148,279,129],
level20costgeneric => 0,
level20advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level20costadvanced => 100,
level30generic => [276,278,219,368,146,148,279,129],
level30costgeneric => 0,
level30advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level30costadvanced => 100,
level40generic => [276,278,219,368,146,148,279,129],
level40costgeneric => 0,
level40advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level40costadvanced => 100,
level50generic => [276,278,219,368,146,148,279,129],
level50costgeneric => 0,
level50advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level50costadvanced => 100,
level60generic => [276,278,219,368,146,148,279,129],
level60costgeneric => 0,
level60advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level60costadvanced => 100,
level70generic => [276,278,219,368,146,148,279,129],
level70costgeneric => 0,
level70advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level70costadvanced => 100,
},
#:: Hash for Enchanter
14 =>
{
level10generic => [276,278,219,368,146,148,279,129],
level10costgeneric => 0,
level10advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level10costadvanced => 100,
level20generic => [276,278,219,368,146,148,279,129],
level20costgeneric => 0,
level20advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level20costadvanced => 100,
level30generic => [276,278,219,368,146,148,279,129],
level30costgeneric => 0,
level30advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level30costadvanced => 100,
level40generic => [276,278,219,368,146,148,279,129],
level40costgeneric => 0,
level40advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level40costadvanced => 100,
level50generic => [276,278,219,368,146,148,279,129],
level50costgeneric => 0,
level50advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level50costadvanced => 100,
level60generic => [276,278,219,368,146,148,279,129],
level60costgeneric => 0,
level60advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level60costadvanced => 100,
level70generic => [276,278,219,368,146,148,279,129],
level70costgeneric => 0,
level70advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level70costadvanced => 100,
},
#:: Hash for Beastlord
15 =>
{
level10generic => [276,278,219,368,146,148,279,129],
level10costgeneric => 0,
level10advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level10costadvanced => 100,
level20generic => [276,278,219,368,146,148,279,129],
level20costgeneric => 0,
level20advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level20costadvanced => 100,
level30generic => [276,278,219,368,146,148,279,129],
level30costgeneric => 0,
level30advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level30costadvanced => 100,
level40generic => [276,278,219,368,146,148,279,129],
level40costgeneric => 0,
level40advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level40costadvanced => 100,
level50generic => [276,278,219,368,146,148,279,129],
level50costgeneric => 0,
level50advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level50costadvanced => 100,
level60generic => [276,278,219,368,146,148,279,129],
level60costgeneric => 0,
level60advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level60costadvanced => 100,
level70generic => [276,278,219,368,146,148,279,129],
level70costgeneric => 0,
level70advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level70costadvanced => 100,
},
#:: Hash for Berserker
16 =>
{
level10generic => [276,278,219,368,146,148,279,129],
level10costgeneric => 0,
level10advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level10costadvanced => 100,
level20generic => [276,278,219,368,146,148,279,129],
level20costgeneric => 0,
level20advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level20costadvanced => 100,
level30generic => [276,278,219,368,146,148,279,129],
level30costgeneric => 0,
level30advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level30costadvanced => 100,
level40generic => [276,278,219,368,146,148,279,129],
level40costgeneric => 0,
level40advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level40costadvanced => 100,
level50generic => [276,278,219,368,146,148,279,129],
level50costgeneric => 0,
level50advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level50costadvanced => 100,
level60generic => [276,278,219,368,146,148,279,129],
level60costgeneric => 0,
level60advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level60costadvanced => 100,
level70generic => [276,278,219,368,146,148,279,129],
level70costgeneric => 0,
level70advanced => [3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
level70costadvanced => 100,
}
);
sub EVENT_SAY {
#:: Create a scalar variable to store the cost of group buffs
my $groupbuffmaxcost = 0;
#:: Match text for "hail", case insensitive
if ($text =~/Hail/i) {
quest::say("Greetings $name. I have been sent to aid you on your journey! Would you like some [".quest::saylink("lesser buffs",1)."] for ".$buffshash{$client->GetClass()}->{"level".round_up($ulevel)."costgeneric"}."pp, or some [".quest::saylink("greater blessings",1)."] for ".$buffshash{$client->GetClass()}->{"level".round_up($ulevel)."costadvanced"}."pp?");
#:: Check to see if the player is grouped
if ($client->IsGrouped()) {
#:: Create a scalar variable to store the group
$buffgroup = $entity_list->GetGroupByClient($client);
#:: Create a loop to count how many members are in the group
for ($count = 0; $count < $buffgroup->GroupCount(); $count++) {
#:: Create a scalar variable to store the group member count
my $groupmember = $buffgroup->GetMember($count);
#:: Make sure that each group member is in zone before charging for them
if ($groupmember->GetZoneID() == $zoneid) {
#:: Create a scalar variable to store the cost of the buffs
$groupbuffmaxcost += ($buffshash{$groupmember->GetClass()}->{"level".round_up($groupmember->GetLevel())."costadvanced"});
}
}
quest::say("Since you are grouped, you can also get the best [".quest::saylink("group blessings",1)."] for ".$groupbuffmaxcost."pp");
}
quest::say("To [".quest::saylink ("cure", 1)."] you and/or your pet is free.");
quest::say("Or I can [".quest::saylink ("bind", 1)."] you to this location at no cost.");
}
#:: Match text for "lesser buffs", case insensitive
elsif ($text=~/lesser buffs/i) {
#:: Make sure the player has enough plat for the buffs
if ($client->GetCarriedMoney() >= (($buffshash{$client->GetClass()}->{"level".round_up($ulevel)."costgeneric"}) * 1000)) {
#:: Create an array of the buffs to be cast on the player
my @buffstocast = @{$buffshash{$client->GetClass()}->{"level".round_up($ulevel)."generic"}};
#:: Create a loop to cast each buff in the hash for the pet (if it exists) and then the player
foreach my $buff (@buffstocast) {
#:: Check to see if the player has a pet
if ($client->GetPetID()) {
#:: Create a scalar variable to store the pet by ID
my $pcpet = $entity_list->GetMobByID($client->GetPetID());
#:: Buff the pet
$client->SpellFinished ($buff, $pcpet);
}
#:: Buff the player
quest::selfcast ($buff);
}
#:: Take payment for the buffs
$client->TakeMoneyFromPP((($buffshash{$client->GetClass()}->{"level".round_up($ulevel)."costgeneric"}) * 1000), 1) unless ($buffshash{$client->GetClass()}->{"level".round_up($ulevel)."costgeneric"}) == 0;
}
else {
#:: Match if the player does not have enough plat
quest::say("I charge ".($buffshash{$client->GetClass()}->{"level".round_up($ulevel)."costgeneric"})."pp for lesser buffs, you don't appear to have enough on you.");
}
}
#:: Match text for "greater blessings", case insensitive
elsif ($text =~/greater blessings/i) {
#:: Make sure the player has enough plat for the buffs
if ($client->GetCarriedMoney() >= (($buffshash{$client->GetClass()}->{"level".round_up($ulevel)."costadvanced"}) * 1000)) {
#:: Create an array of the buffs to be cast on the player
my @buffstocast = @{$buffshash{$client->GetClass()}->{"level".round_up($ulevel)."advanced"}};
#:: Create a loop to cast each buff in the hash for the pet (if it exists) and then the player
foreach my $buff (@buffstocast) {
#:: Check to see if the player has a pet
if ($client->GetPetID()) {
#:: Create a scalar variable to store the pet by ID
my $pcpet = $entity_list->GetMobByID($client->GetPetID());
#:: Buff the pet
$client->SpellFinished ($buff, $pcpet);
}
#:: Buff the player
quest::selfcast ($buff);
}
#:: Take payment for the buffs
$client->TakeMoneyFromPP((($buffshash{$client->GetClass()}->{"level".round_up($ulevel)."costadvanced"}) * 1000), 1) unless ($buffshash{$client->GetClass()}->{"level".round_up($ulevel)."costadvanced"}) == 0;
}
else {
#:: Match if the player does not have enough plat
quest::say("I charge ".($buffshash{$client->GetClass()}->{"level".round_up($ulevel)."costadvanced"})."pp for greater blessings, you don't appear to have enough on you.");
}
}
#:: Match text for "group blessings", case insensitive, and if the player is grouped
elsif ($text =~ /group blessings/i && $client->IsGrouped()) {
#:: Make sure the player has enough plat for the buffs
if ($client->GetCarriedMoney() >= (($buffshash{$client->GetClass()}->{"level".$maxlevelbuffs."costadvanced"}) * 1000 * $buffgroup->GroupCount())) {
#:: Create a loop to count the group members
for ($count = 0; $count < $buffgroup->GroupCount(); $count++) {
#:: Create a scalar variable to store the group member count
my $groupmember = $buffgroup->GetMember($count);
#:: Make sure that each group member is in zone before charging for them
if ($groupmember->GetZoneID() == $zoneid) {
#:: Take payment for the buffs
$client->TakeMoneyFromPP((($buffshash{$groupmember->GetClass()}->{"level".round_up($groupmember->GetLevel())."costadvanced"}) * 1000), 1) unless ($buffshash{$groupmember->GetClass()}->{"level".round_up($groupmember->GetLevel())."costadvanced"}) == 0;
#:: Create an array of the buffs to be cast on each player
my @buffstocast = @{$buffshash{$groupmember->GetClass()}->{"level".round_up($groupmember->GetLevel())."advanced"}};
#:: Create a loop to cast each buff in the hash for each group member pet (if any exist) and then each group member
foreach my $buff (@buffstocast) {
#:: Check to see if the player has a pet
if ($groupmember->GetPetID()) {
#:: Create a scalar variable to store the pet by ID
my $groupmemberpet = $entity_list->GetMobByID($groupmember->GetPetID());
#:: Buff the pet
$groupmember->SpellFinished ($buff, $groupmemberpet);
}
#:: Buff the group members
$groupmember->SpellFinished ($buff, $groupmember);
}
#:: Create an on-screen message for each group member so they know who to thank for the buffs
$groupmember->SendMarqueeMessage(15, 510, 1, 1, 3000, "You've been buffed compliments of ".$client->GetCleanName()."!");
}
}
}
else {
#:: Match if the player does not have enough plat
quest::say("I charge a maximum of ".(($buffshash{$client->GetClass()}->{"level".$maxlevelbuffs."costadvanced"}) * $buffgroup->GroupCount())."pp to cast buffs on your entire group. You don't appear to have enough!");
}
}
#:: Match text for "cure", case insensitive
elsif ($text=~/cure/i) {
#:: Check to see if the player has a pet
if ($client->GetPetID()) {
#:: Create a scalar variable to store the pet by ID
my $pppet = $entity_list->GetMobByID($client->GetPetID());
#:: Cure the pet
$client->SpellFinished (6594, $pppet);
}
#:: Cure the player
$client->SpellFinished(6594);
}
#:: Match text for "bind", case insensitive
elsif ($text=~/bind/i) {
#:: Bind the player
quest::selfcast(35);
}
}
#:: This is a sub-routine to round up to the nearest 10 levels
sub round_up {
my $n = shift;
my $scale = 10**int(log($n)/log(10));
$n = 9 if $scale == 1;
if ($n > $scale) {
$n = int($n/$scale+1)*$scale;
}
$n;
}
```