You can also use this: credit to @Haziel
prontera,147,171,5 script Soul Link Santa 718,{
set .@n$,"^0000FF[ Soul Linker NPC ]^000000";
set .@time, 300000; // the buff last 5 minutes
set .zenycost,50000;
mes .@n$;
mes "Hello "+strcharinfo(0)+",do";
mes "You want me to Soul Link you?";
mes "It cost ^00996650,000^000000 zeny";
next;
switch(select("Yes:No")) {
case 1:
if((zeny < (.zenycost))) goto l_nozeny;
set Zeny, Zeny - (.zenycost);
switch ( basejob ) {
case Job_Alchemist: set .@spirit, 445; break;
case Job_Monk: set .@spirit, 447; break;
case Job_Star_Gladiator: set .@spirit, 448; break;
case Job_Sage: set .@spirit, 449; break;
case Job_Crusader: set .@spirit, 450; break;
case Job_SuperNovice: set .@spirit, 451; break;
case Job_Knight: set .@spirit, 452; break;
case Job_Wizard: set .@spirit, 453; break;
case Job_Priest: set .@spirit, 454; break;
case Job_Bard: case Job_Dancer: set .@spirit, 455; break;
case Job_Rogue: set .@spirit, 456; break;
case Job_Assassin: set .@spirit, 457; break;
case Job_Blacksmith: set .@spirit, 458; break;
case Job_Hunter: set .@spirit, 460; break;
case Job_Soul_Linker: set .@spirit, 461; break;
default:
if ( upper == 1 && baselevel < 70 ) set .@spirit, 494;
}
if ( .@spirit ) {
sc_start4 sc_spirit, .@time, 5, .@spirit,0,0;
skilleffect .@spirit, 5;
}
case 2:
mes .@n$;
mes "Okay,goodbye!";
close;
}
l_nozeny:
mes .@n$;
mes "Sorry You don't have enough zeny for a Soul Link.";
mes " ";
mes "Soul Link Service Cost ^00996650,000^000000 zeny";
close;
}
i edited the script to suit ur needs