<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE muclient>
<!-- Saved on Sunday, October 20, 2002, 8:30 PM -->
<!-- MuClient version 3.27 -->

<!-- Plugin "Spellup" generated by Plugin Wizard -->

<muclient>
<plugin
   name="Spellup"
   author="huan"
   id="217c8c6c7d3155e3255127bd"
   language="JScript"
   purpose="Spellup all possible affects on request"
   save_state="y"
   date_written="2002-10-20 20:25:32"
   requires="3.27"
   version="1.0"
   >
<description trim="y">
<![CDATA[
Just type spellup
]]>
</description>

</plugin>

<!--  Get our standard constants -->

<!--include name="Cloud-JS/my_constants.jvs"/-->

<!--  Timers -->

<timers>
  <timer name="tick_timer" script="tick_timer" enabled="y" second="1"/>
</timers>

<!--  Triggers  -->

<triggers>
  <trigger
   enabled="y"
   keep_evaluating="y"
   match="--&gt; TICK &lt;--*"
   name="reset_tickcounter"
   script="reset_tickcounter"
   sequence="100"
  >
  </trigger>
  <trigger
   enabled="y"
   keep_evaluating="y"
   match="(Spell|Skill)\s*: (.*) (\([0-9:]{1,8}\))"
   name="aff_found"
   regexp="y"
   script="aff_found"
   sequence="9997"
  >
  </trigger>
  <trigger
   enabled="y"
   match="You are affected by (.*) skill[s]* and (.*) spell[s]*."
   name="aff_done_1"
   regexp="y"
   script="aff_done"
   sequence="9997"
  >
  </trigger>
  <trigger
   enabled="y"
   match=".*You are not affected by any skills or spells\."
   name="aff_done_2"
	 regex="y"
   script="aff_done"
   sequence="9997"
  >
  </trigger>
  <trigger
   enabled="y"
   match="*Your pulse speeds up, but nothing happens."
   name="aff_recast_berserk"
   sequence="9997"
  >
  <send>berserk</send>
  </trigger>
  <trigger
   enabled="y"
   match="*You lost your concentration while trying to cast *."
   name="aff_recast"
   script="aff_recast"
   sequence="9997"
  >
  </trigger>
</triggers>

<!--  Aliases  -->

<aliases>
	<alias
	 name="run_spellup_stats"
	 script="spellup_stats"
	 match="^spellup (minimal|stats)$"
	 regexp="y"
	 enabled="y"
	 sequence="50">
	 <send>wake</send>
	</alias>
	<alias
	 name="run_spellup_luck"
	 script="spellup_luck"
	 match="^spellup (luck)$"
	 regexp="y"
	 enabled="y"
	 sequence="50">
	 <send>wake</send>
	</alias>
	<alias
   name="run_spellup"
   script="run_spellup"
   match="spellup"
   enabled="y"
	 sequence="100"
  >
		<send>wake</send>
  </alias>
  <alias
   name="spellup_other"
   script="spl2"
   match="spellup *"
   enabled="y"
	 sequence="100"
  >
		<send>wake</send>
  </alias>
  <alias
   match="spellup:help"
   enabled="y"
   send_to="2"
  >
		<send>Commands:
spellup (without arguments) - spellup missing spells, possibly not complete spellup
 	(leaves enough time to sleep over tick to regain mana. Calibrated for spellup
	 2 long ago, if it don't work for you - use spellup now)
spellup luck - spellup only luck and few other spells useful for questing
spellup stats - spellup all stat spells, ignore ac/resist/hr/dr
spellup now - don&apos;t care for the tick counter, spellup everything missing
spellup [name] - spellup another character
		</send>
  </alias>
</aliases>

<script>
<![CDATA[
/********************** spellup ************************/
var spl_auto=false;
var tick_time=0;
var tick_on=1;
var ignore_timer=false;

var spl_tmp_array=0;
var spl_target=null;
var spl_player_level=-1;

var MAX = 4096; // maximal level, for imm-only spell levels
var MU = 4;
var CL = 5;
var TH = 6;
var WA = 7;
var RA = 8;
var PA = 9;
var PS = 10;
var STATS = 11;
var LUCK = 12;

/* player classes */
var pc_mu = 0;
var pc_cl = 0;
var pc_th = 0;
var pc_wa = 0;
var pc_ra = 0;
var pc_pa = 0;
var pc_ps = 0;

/* var spl_names = new Array( {{{ */
var	spl_names = new Array(
		// legenda: name										syntax			self		other		mu		cl		th		wa		ra		pa		ps		
		// stats	luck
		// (luck means luck+dex+few other spellup for quests)
		 new Array("Shield",								"cast 72",	true,		true,		3,		MAX,	MAX,	MAX,	MAX,	MAX,	MAX,
			 false,	false)
	  ,new Array("Call upon faith",				"cast 156",	true,		false, 	MAX,	MAX,	MAX,	MAX,	MAX,	30,		MAX,
				true,	true)
		,new Array("Spirit shield",					"cast 484",	true,		false,	MAX,	MAX,	MAX,	MAX,	MAX,	43,		MAX,
				false,	false)
		,new Array("Champions strength",		"cast 157",	true,		true,		MAX,	MAX,	MAX,	MAX,	MAX,	71,		MAX,
				true, true)
		,new Array("Divine faith",					"cast 160", true,		true,		MAX,	MAX,	MAX,	MAX,	MAX,	34,		MAX,
			 false, false)
		,new Array("Pass without trace",		"trace",		false,	false,	MAX,	MAX,	MAX,	MAX,	26,		MAX,	MAX,
			 false, false)
		,new Array("Sneak",									"sneak",		true,		false,	MAX,	MAX,	 13,	MAX,	MAX,	MAX,	MAX,
			false,	true)
		,new Array("Mental barrier",				"cast 126",	true,		false,	MAX,	MAX,	MAX,	MAX,	MAX,	MAX,	3,
			false,	false)
		,new Array("Detect invis",					"cast 34",	false,	false,	6,		4,		28,		MAX,	MAX,	MAX,	MAX,
			false,	false)
		,new Array("Detect magic",					"cast 35",	false,	false,	6,		4,		26,		MAX,	MAX,	8,		MAX,
			false,	false)
		,new Array("Underwater breathing",	"cast 333",	true,		true,		7,		8,		4,		MAX,	13,		MAX,	4,
			false,	false)
		,new Array("Armor",									"cast 4",		true,		true,		MAX,	5,		MAX,	MAX,	MAX,	MAX,	MAX,
			false,	false)
		,new Array("Bless",									"cast 5",		true,		true,		MAX,	7,		MAX,	MAX,	MAX,	6,		MAX,
			true,		false)
		,new Array("Darkness",							"cast 140",	true,		true,		MAX,	MAX,	MAX,	MAX,	7,		MAX,	MAX,
			false,	false)
		,new Array("Infravision",						"cast 57",	false,	false,	8,		MAX,	MAX,	MAX,	28,		MAX,	MAX,
			false,	false) // jde i na other
		,new Array("Blur",									"cast 171",	true,		true,		9,		MAX,	MAX,	MAX,	MAX,	MAX,	MAX,
			false,	false)
		,new Array("Enhanced strength",			"cast 118", true, 	false,	MAX,	MAX,	MAX,	MAX,	MAX,	MAX,	10,
			true,		false)
		,new Array("Barkskin",							"cast 139",	true,		true,		MAX,	MAX,	MAX,	MAX,	11,		MAX,	MAX,
				false,	false)
		,new Array("Detect good",						"cast 32",	false,	false,	MAX,	16,		MAX,	MAX,	MAX,	4,		12,
			false,	false)
		,new Array("Protection evil",				"cast 67",	false,	false,	MAX,	12,		MAX,	MAX,	16,		9,		MAX,
			false,	false)
		,new Array("Protection good",				"cast 68",	true,		false,	MAX,	12,		MAX,	MAX,	MAX,	MAX,	16,
			false,	false)
		,new Array("Detect hidden",					"cast 33",	false,	false,	19,		13,		27,		MAX,	MAX,	MAX,	MAX,
			false,	false)
		,new Array("Adrenaline control",		"cast 97",	true,		false,	MAX,	MAX,	MAX,	MAX,	MAX,	MAX,	13,
			true,		true)
		,new Array("Detect evil",						"cast 31",	false,	false,	MAX,	16,		MAX,	MAX,	MAX,	4,		15,
			false,	false)
		,new Array("Aid",										"cast 155",	true,		true,		MAX,	15,		MAX,	MAX,	MAX,	13,		MAX,
			true,		true)
		,new Array("Avoidance",							"cast 168",	true,		false,	15,		MAX,	MAX,	MAX,	MAX,	MAX,	MAX,
			false,	false)
		,new Array("Share strength",				"cast 134",	false,	false,	MAX,	MAX,	MAX,	MAX,	MAX,	MAX,	17,
			true,		false)
		,new Array("Thought shield",				"cast 135",	true,		false,	MAX,	MAX,	MAX,	MAX,	MAX,	MAX,	18,
			false,	false)
		,new Array("Magic circle",					"cast 423",	true,		true,		MAX,	19,		MAX,	MAX,	MAX,	MAX,	MAX,
			false,	false)
		,new Array("Mystic might",					"cast 421",	true,		false,	21,		MAX,	MAX,	MAX,	MAX,	MAX,	MAX,
			true,		false)
		,new Array("Levitation",						"cast 125",	true,		true,		MAX,	MAX,	MAX,	MAX,	MAX,	MAX,	22,
			false,	true)
		,new Array("Giant strength",				"cast	51",	true,		true,		MAX,	23,		MAX,	MAX,	MAX,	MAX,	MAX,
			true,		false)
		,new Array("Haste",									"cast 53",	false,	true,		35,		25,		MAX,	MAX,	MAX,	MAX,	MAX,
			true,		false)
		,new Array("Invis",									"cast 58",	true,		false,	25,		MAX,	MAX,	MAX,	MAX,	MAX,	MAX,
			false,	true)
		,new Array("Inertial barrier",			"cast 121",	true,		false,	MAX,	MAX,	MAX,	MAX,	MAX,	MAX,	26,
			false,	false)
		,new Array("Sense anger",						"cast 235",	true,		false,	26,		32,		29,		MAX,	34,		32,		28,
			false,	true)
		,new Array("Accelerate",						"cast 258",	true,		false,	MAX,	MAX,	MAX,	MAX,	MAX,	MAX,	31,
			true,		true)
		,new Array("Enlightenment",					"cast 424",	true,		true,		MAX,	31,		MAX,	MAX,	MAX,	MAX,	MAX,
			true,		false)
		,new Array("Displacement",					"cast 112",	true,		false,	MAX,	MAX,	MAX,	MAX,	MAX,	MAX,	32,
			false,	false)
		,new Array("Harden body",						"cast 422",	true,		true,		32,		MAX,	MAX,	MAX,	MAX,	MAX,	MAX,
			true,		true)
		,new Array("Godly embrace",					"cast 425",	true,		false,	MAX,	34,		MAX,	MAX,	MAX,	MAX,	MAX,
			true,		true)
		,new Array("Fly",										"cast 48",	true,		true,		36,		MAX,	MAX,	MAX,	MAX,	MAX,	MAX,
			false,	true)
		,new Array("Flesh armor",						"cast 119",	true,		false,	MAX,	MAX,	MAX,	MAX,	MAX,	MAX,	37,
			false,	false)
		,new Array("Absorb",								"cast 317",	true,		true,		48,		38,		MAX,	MAX,	MAX,	MAX,	MAX,
			false,	false)
		,new Array("Energy containment",		"cast 116",	true,		false,	MAX,	MAX,	MAX,	MAX,	MAX,	MAX,	41,
			true,		true)
		,new Array("Magical rush",					"cast 428",	true,		false,	41,		MAX,	MAX,	MAX,	MAX,	MAX,	MAX,
			true,		true)
		,new Array("Prayer of fortune",			"cast 429",	true,		true,		MAX,	42,		MAX,	MAX,	MAX,	MAX,	MAX,
			true,		true)
		,new Array("Sanctuary",							"cast 71",	false,	true,		201,	45,		201,	201,	201,	55,		201,
			false,	false) // jde i na other
		,new Array("Intellect fortress",		"cast 123",	true,		false,	MAX,	MAX,	MAX,	MAX,	MAX,	MAX,	46,
			true,		false)
		,new Array("Indestructible aura",		"cast 91",	true,		true,		MAX,	48,		MAX,	MAX,	MAX,	MAX,	MAX,
			false,	false)
		,new Array("Ectoplasmic form",			"cast 114",	false,	false,	MAX,	MAX,	MAX,	MAX,	MAX,	MAX,	50,
			false,	false)
		,new Array("Biofeedback",						"cast 102",	false,	false,	MAX,	MAX,	MAX,	MAX,	MAX,	MAX,	51,
			false,	false)
		,new Array("Perception",						"cast 427",	true,		false,	51,		MAX,	MAX,	MAX,	MAX,	MAX,	MAX,
			true,		false)
		,new Array("Combat mind",						"cast 105",	true,		true,		MAX,	MAX,	MAX,	MAX,	MAX,	MAX,	53,
			true,		false)
		,new Array("True seeing",						"cast 178",	true,		false,	55,		66,		MAX,	MAX,	MAX,	75,		66,
			false,	true)
		,new Array("Frenzy",								"cast 49",	true,		true,		MAX,	57,		MAX,	MAX,	MAX,	MAX,	MAX,
			true,		false)
		,new Array("Stone skin",						"cast 76",	true,		false,	60,		MAX,	MAX,	MAX,	MAX,	MAX,	MAX,
			false,	false)
		,new Array("Calculation",						"cast 435",	true,		false,	MAX,	MAX,	MAX,	MAX,	MAX,	MAX,	61,
			true,		true)
		,new Array("Sustenance",						"cast 321",	false,	false,	84,		MAX,	MAX,	MAX,	62,		MAX,	MAX,
			false,	false) // jde na other
		,new Array("Divine swiftness",			"cast 430",	true,		true,		MAX,	62,		MAX,	MAX,	MAX,	MAX,	MAX,
			true,		true)
		,new Array("Share wisdom",					"cast 436",	false,	false,	MAX,	MAX,	MAX,	MAX,	MAX,	MAX,	70,
			true,		false)
		,new Array("Revelation",						"cast 431",	true,		true,		MAX,	71,		MAX,	MAX,	MAX,	MAX,	MAX,
			true,		false)
		,new Array("Rally",									"cast 432",	true,		true,		MAX,	77,		MAX,	MAX,	MAX,	MAX,	MAX,
			true,		true)
		,new Array("Holy aura",							"cast 164", true,		false,	MAX,	MAX,	MAX,	MAX,	MAX,	80,		MAX,
			false,	false)
		,new Array("Channel energy",				"cast 437",	true,		false,	MAX,	MAX,	MAX,	MAX,	MAX,	MAX,	81,
			true,		false)
		,new Array("Line of protection",		"cast 185",	true,		false,	MAX,	83,		MAX,	MAX,	MAX,	MAX,	MAX,
			false,	false)
		,new Array("Protection from fire",	"cast 152",	true,		true,		MAX,	MAX,	MAX,	MAX,	85,		MAX,	MAX,
			false,	false) // jde na other
		,new Array("Pure faith",						"cast 433",	false,	false,	MAX,	90,		MAX,	MAX,	MAX,	MAX,	MAX,
			true,		true)
		,new Array("Wolf spirits",					"cast 154",	true,		false,	MAX,	MAX,	MAX,	MAX,	93,		MAX,	MAX,
			true,		false)
		,new Array("Wraith form",						"cast 180",	true,		false,	97,		MAX,	MAX,	MAX,	MAX,	MAX,	MAX,
			true,		true)
		,new Array("Share intellect",				"cast 430",	false,	false,	MAX,	MAX,	MAX,	MAX,	MAX,	MAX,	97,
			true,		false) // jde na other
		,new Array("Willpower",							"cast 251",	true ,	true ,	MAX,	MAX,	MAX,	MAX,	MAX,	107,	101,
			false,	false) // other
		,new Array("Warmth",								"cast 253",	true ,	true ,	106,	101,	MAX,	MAX,	145,	MAX,	133,
			false,	false) // other
		,new Array("Compression",						"cast 439",	true,		false,	MAX,	MAX,	MAX,	MAX,	MAX,	MAX,	103,
			false,	false)
		,new Array("Energy ball",						"cast 440",	true,		false,	MAX,	MAX,	MAX,	MAX,	111,	MAX,	MAX,
			true,		true)
		,new Array("Power of faith",				"cast 434", true,		false,	MAX,	MAX,	MAX,	MAX,	MAX,	119,	MAX,
			true,		false)
		,new Array("Antimagic shell",				"cast 167",	true,		false,	114,	MAX,	MAX,	MAX,	MAX,	MAX,	MAX,
			false,	false)
		,new Array("Vaccinate",							"cast 248",	true,		true,		MAX,	116,	119,	MAX,	MAX,	MAX,	MAX,
			false,	false)
		,new Array("Acidproof",							"cast 249",	true ,	true ,	119,	127,	MAX,	MAX,	MAX,	MAX,	117,
			false,	false) // other
		,new Array("Energy shield",					"cast 252",	true ,	true ,	MAX,	MAX,	MAX,	MAX,	MAX,	124,	120,
			false,	false) // other
		,new Array("Party sanctuary",				"cast 414",	false,	false,	MAX,	121,	MAX,	MAX,	MAX,	MAX,	MAX,
			false,	false)
		,new Array("Awakening",							"cast 426",	true,		false,	124,	MAX,	MAX,	MAX,	MAX,	MAX,	MAX,
			true,		false)
		,new Array("Shockproof",						"cast 250",	true ,	true ,	127,	MAX,	MAX,	MAX,	129,	132,	MAX,
			false,	false)
		,new Array("Holy mirror",						"cast 255",	true ,	true ,	131,	129,	MAX,	MAX,	MAX,	146,	142,
			false,	false)
		,new Array("Lightspeed",						"cast 259",	true,		true,		140,	141,	MAX,	MAX,	MAX,	MAX,	149,
			true,		true)
		,new Array("Self harmony",					"cast 442",	true,		false,	MAX,	MAX,	MAX,	MAX,	MAX,	MAX,	141,
			true,		true)
		,new Array("Grey aura",							"cast 335",	true,		true,		142,	144,	MAX,	MAX,	MAX,	102,	MAX,
			false,	false)
		// party harmony and party shield can be cast on other allways, even when caster has self harmony
		,new Array("Party harmony",					"cast 443",	false,	true,		MAX,	MAX,	MAX,	MAX,	MAX,	MAX,	158,
			false,	true)
		,new Array("Toxic resistance",			"cast 254",	true ,	true ,	MAX,	159,	156,	MAX,	170,	MAX,	MAX,
			false,	false)
		,new Array("Party shield",					"cast 444",	true,		true,		MAX,	MAX,	MAX,	MAX,	MAX,	MAX,	173,
			false,	false)
		,new Array("Globe of invulnerability","cast 174",	false,	false,	177,	MAX,	MAX,	MAX,	MAX,	MAX,	MAX,
			false,	false)
	);
/* }}} */

function reset_tickcounter() {
  tick_time=0;
}

function tick_timer () {
  tick_time++;
  if (tick_on) {
    if (tick_time==26) {
     world.note("5 seconds to tick");
    }
    if (tick_time==21) {
     world.note("10 seconds to tick");
    }
    if (tick_time==16) {
     world.note("15 seconds to tick");
    }
//    if (tick_time==30) {
//     world.note("Tick");
//    }
  }
}

function spellup_luck() {
	ignore_timer=true;
	spl_target=null;
	spl_auto=false;
	spl1(false,true);
}

function spellup_stats() {
	ignore_timer=true;
	spl_target=null;
	spl_auto=false;
	spl1(true,false);
}

function run_spellup () {
	ignore_timer=false;
	spl_auto=false;
	spl_target=null;
	spl1();
}

function spl_update_classes() {
	var pc_string = world.getPluginVariable("", "player_classes");
	var pc_array = pc_string.split(/,/);
	pc_mu = 0;
	pc_ra = 0;
	pc_cl = 0;
	pc_ps = 0;
	pc_wa = 0;
	pc_th = 0;
	pc_pa = 0;
	for (i=0; i < pc_array.length; i++) {
		if (pc_array[i] == "mu") 
			pc_mu = 1;
		else if (pc_array[i] == "ra")
			pc_ra = 1;
		else if (pc_array[i] == "cl")
			pc_cl = 1;
		else if (pc_array[i] == "ps")
			pc_ps = 1;
		else if (pc_array[i] == "wa")
			pc_wa = 1;
		else if (pc_array[i] == "th")
			pc_th = 1;
		else if (pc_array[i] == "pa")
			pc_pa = 1;
	}
}

// spellup self
function spl1 (statonly, luckonly) {
	if (typeof(statonly)=="undefined") {
		statonly=false;
	}
	if (typeof(luckonly)=="undefined") {
		luckonly=false;
	}
	if (spl_auto) { world.note("Spellup already running"); return; }
	spl_auto=true;
	spl_tmp_array=new Array(spl_names.length);
	spl_player_level=world.GetPluginVariable("","player_level");
	spl_update_classes();
//	world.note(""+spl_player_level);
	for (i=0;i<spl_names.length;i++) {
		if (
				((pc_mu && spl_names[i][MU] <= spl_player_level) || 
				 (pc_ra && spl_names[i][RA] <= spl_player_level) ||
				 (pc_cl && spl_names[i][CL] <= spl_player_level) ||
				 (pc_ps && spl_names[i][PS] <= spl_player_level) ||
				 (pc_wa && spl_names[i][WA] <= spl_player_level) ||
				 (pc_pa && spl_names[i][PA] <= spl_player_level) ||
				 (pc_th && spl_names[i][TH] <= spl_player_level)
				) &&
				(
				 (spl_names[i][2]==true && (spl_target==null)) ||
				 (spl_names[i][3]==true && (spl_target!=null)) ) && 
				(spl_names[i][STATS] || !statonly) &&
				(spl_names[i][LUCK] || !luckonly)
			) {
			spl_tmp_array[i]=spl_names[i];
//			world.note(""+(spl_names[i][3]==true && (spl_target!=null))+spl_names[i]);
		}
		else {
			spl_tmp_array[i]=null;
//			world.note(""+spl_names[i]);
		}
	}
	if (spl_target==null)
		world.send("saf\r\n");
	else
		world.send("c 'cancel' "+spl_target+"\r\nc 'cancel' "+spl_target);
}

function spl2 (name,output,wildcard) {
	var wc_spl2 = new VBArray(wildcard).toArray();
	spl_target = wc_spl2[0];
	if (spl_target.replace(/ /,"")=="now") {
		ignore_timer=true;
		spl_target=null;
		spl_auto=false;
		spl1();
		return;
	}
	spl1();
	ignore_timer=false;
	spl_auto = true;
	aff_done();
}

function find_spl_tmp(name) {
// world.note("trying to find "+name);
 for (i=0;i<spl_tmp_array.length;i++) {
//  world.note("temp "+"["+i+"]"+spl_tmp_array+" = "+spl_tmp_array[i]);
//  world.note("spl_tmp_array["+i+"] = "+spl_tmp_array[i]);
  if ((spl_tmp_array[i]!=null) && (name==spl_tmp_array[i][0])) {
//   world.note("found "+spl_tmp_array[i]+","+name);
   return i;
  }
 }
 return -1;
}

function find_spl_name(name) {
	var rx = eval("/^" + name + "$/i");
// world.note("trying to find "+name);
 for (i=0;i<spl_names.length;i++) {
//  world.note("temp "+"["+i+"]"+spl_tmp_array+" = "+spl_tmp_array[i]);
//  world.note("spl_names["+i+"] = "+spl_names[i]);
  if ( (spl_names[i][0]!=null) && (spl_names[i][0].match(rx)) ) {
//   world.note("found "+spl_tmp_array[i]+","+name);
   return i;
  }
 }
 return -1;
}

function rem_spl(name){
  i=find_spl_tmp(name);
//  world.note("Find_spl returned "+i);
  if (i>=0)
   spl_tmp_array[i]=null;
  else 
		return;
}

// SPL: ( 25hrs) light protection     -26 to ARMOR
function aff_found (thename, theoutput, wildcard) {
	var wc_spl = new VBArray(wildcard).toArray();
	if (spl_auto) {
		rem_spl(wc_spl[1]);
		if (wc_spl[1]=="inertial barrier")
			rem_spl("protection evil");
		if (wc_spl[1]=="protection evil") {
			rem_spl("inertial barrier");
			rem_spl("protection good");
		}
		if (wc_spl[1]=="fly")
			rem_spl("levitation");
		if (wc_spl[1]=="levitation")
			rem_spl("fly");
		if (wc_spl[1]=="globe of invulnerability")
			rem_spl("antimagic shell");
		if (wc_spl[1]=="antimagic shell")
			rem_spl("globe of invulnerability");
	}
}

function aff_recast(thename, theoutput, wildcard) {
 wc_recast = new VBArray(wildcard).toArray();
 i = find_spl_name(wc_recast[1]);
 if (i>=0)
  if (spl_target!=null)
   world.send(spl_names[i][1]+" "+spl_target);
  else
   world.send(spl_names[i][1]);
}

function aff_done () {
// world.note("AFF done, spelling");
// world.note(spl_tmp_array);
 count_spl=0;
 if (!spl_auto) { return; }
/* if (!spl_target) {
	 rem_spl("protection from fire");
	 rem_spl("warmth");
	 rem_spl("acidproof");
	 rem_spl("shockproof");
	 rem_spl("holy mirror");
 }*/

 // se spellup2 dam 52 spellu a 1 skill (sneak) za 19 sekund -> 2.7 za vterinu, nejaka rezerva na faily -> 2.5
 for (i=0;i<spl_names.length;i++) {
  if (spl_tmp_array[i]!=null) {
   if (!spl_target && !ignore_timer && 
       (tick_time<30 && count_spl>25*(30-tick_time)/10 && count_spl>3)) { // 3 kouzla minimalne
    world.note("Spellup too long, repeat to complete it");
    break;
   }
   if (spl_target!=null) {
//    if (spl_names[i][2])
     world.send(spl_names[i][1]+" "+spl_target);
   } else
    world.send(spl_names[i][1]);
   count_spl++;
  }
 }
 spl_auto=false;
 ignore_timer=false;
 world.enableTrigger("spl_found",false);
}

function OnPluginInstall() {
  world.DoAfterNote(1,"Spellup plugin loaded")
	world.DoAfterNote(1,"Plugin is set for level " + world.getPluginVariable("", "player_level") + " for classes " + world.getPluginVariable("", "player_classes"));
	world.DoAfterNote(1, "If this isn't correct (or no values were displayed at all), go to\n"+
			"   http://www.sweb.cz/aardhuan/scripts.html#spellup_setup and read about necessary setup");
}

]]>
</script> 

</muclient>
