EDIT: Well poop, colors dont work in code. Gonna try converting to a quote, if it is not too messy, I will leave it and this note.

Okay here is what I got guys, the whole script. Its a start of me getting back into things and making bigger scripts like I used to. Remember my imbuing training and make armor/imbue/enhance? This is gonna be a stand alone Bard/Tamer/Mage bot for doing things that need disco.
Anyways, can someone please edit it so it works correctly so I can see what is wrong? It runs one spawn perfect, then hangs.
Also this is getting going on most things that are the core, Turn on Perserverence BEFORE discord and off when Mob dies (See purple note)
As well as I intend to add healing, at minimum for pet, first just by baindaids, then by magery if its a mob Tamer cannot get close to.
Healing for emergencies on Tank will also come if it is not too much for me. Doubtful, just slow getting back in to things and remembering

I also want to have the toon stay within 10 tiles of Tank no matter where tank goes. Thinking of using party chat so bot can communicate with main what its doing. Also scanning party chat to do certain things...
Anyways, thanks for listening.

I will mark in RED where its hanging. Please, thank you,

set %spawn XZ_HS_IJ_FJ_
set %scanbuffbar C:\EUO\
start:
gosub disco
gosub wait
;gosub bardoff ;<------Will eventually turn off Bard Mastery Perserverence
goto start:
sub wait
if #findkind = -1
return
msg all kill $ ;duh
target 5s
set #ltargetid %spawn
set #ltargetkind 1
event macro 22 0 ;last target
wait 10
event macro 3 0 all kill ;duh
target 5s
event macro 22 ;last target
KeepWaiting:
Repeat
until #findCnt = 0 ;<---------Hangs up here!
Return
sub bardoff
if #findkind = 1
return
Call ScanBuffBar
if _Preservance_ in %BuffBarIconNames
{
event macro 15 704 ;Cast Perserverence (off) <-----This will turn OFF Perserverence
wait 5s
}
Return
sub castbard
if _Preservance_ in %BuffBarIconNames
Return
event macro 15 704 ;Cast Perserverence (on) <-----This sub will turn ON Perserverence.
wait 5s
Return
sub disco
set %DiscoAttempts 0
repeat
if %DiscoAttempts > 0
wait 10s
finditem %spawn G_10
if #findkind = -1
return
;event macro 15 704 ;Cast Perserverence (on)<-----For now, this turns Perserverence on (but toggles it on off on off)
wait 90
set %spawn #findid
event macro 13 15 ;disco
target 5s
set #ltargetid %spawn
set #ltargetkind 1
event macro 22 0
wait 1s
gosub TM_AdvJournalScan disco NONE jarring already
set %DiscoAttempts ( %DiscoAttempts + 1 )
until #result = #true
gosub TM_AdvJournalSync disco 100
return
;------------------------------Journal tool---------------------
;=================================================================
; Script Name: TrailMyx's Advanced Journal Scanner
; Author: TrailMyx
; Version: 1.0
; Shard OSI / FS: OSI / FS?
; Revision Date: 10/20/2007
; Purpose:
; Use these subs to quickly find text in your #journal entries. These subs
; use #jindex for flawless journal scanning and is much more reliable than using
; standard indexing of #journal and #SYSMSG.
;
; Now it is possible to manage separate journals based on unrelated text. It's now possible
; to monitor spellcasting, bandaging, stealing, or anything else without a TM_AdvJournalSync
; potentially removing text needed for another UO funciton.
;
; New is the ability to either gosub or call these functions without the need to change the
; header! When calling, a limit of 10 arguments is allowed, but more can be added by editing the
; call interface section.
;
; Examples:
; gosub TM_AdvJournalSync speech 100 ; sync "speech" journal space, set #LPC to 100 from default of 1000
; gosub TM_AdvJournalScan speech VALID Find_this_text and_find_this_too ; will not advance copy of #jindex
; gosub TM_AdvJournalScan heal VALID_ADVANCE you_heal_what that_patient_is_not ; advances pointer after scan
; gosub TM_AdvJournalScan spellcast NONE fizzle ; no spam checking and doesn't advance #jindex copy automatically
;
; Subs included:
; TM_AdvJournalSync - Must call this in initialzation
; TM_AdvJournalScan - see header for details....
;
; Release history:
; v1.0 - Initial release.
;
; Requirements:
; Nothing special
;
; Credit:
; If you use these subs, please leave credit for me somewhere in your script header.
;=================================================================
;------------------------ Call interface -----------------------
;=================================================================
set !TM_FunctionCalled #FALSE
if %0 = 1
gosub %1
if %0 = 2
gosub %1 %2
if %0 = 3
gosub %1 %2 %3
if %0 = 4
gosub %1 %2 %3 %4
if %0 = 5
gosub %1 %2 %3 %4 %5
if %0 = 6
gosub %1 %2 %3 %4 %5 %6
if %0 = 7
gosub %1 %2 %3 %4 %5 %6 %7
if %0 = 8
gosub %1 %2 %3 %4 %5 %6 %7 %8
if %0 = 9
gosub %1 %2 %3 %4 %5 %6 %7 %8 %9
if %0 = 10
gosub %1 %2 %3 %4 %5 %6 %7 %8 %9 %10
if %0 = 11
gosub %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11
if %0 > 11
{
display ok Too many arguments for "call", edit file.
stop
}
if !TM_FunctionCalled = #TRUE
exit
if %0 = N/A
display ok You may not run this script directly.
else
display ok Function " , %1 , " not found.
stop
;-------------------------------------------------------------------------------
;-------------------------------------------------------------------------------
; %1 - Journal Name
; %2 - #LPC setting (optional)
; Brings !_jindex up to the most recent #journal entry
sub TM_AdvJournalSync
namespace push
namespace local TM_AdvJS_ , %1
set !_jindex #jindex + 1
if %0 > 1
set !lpc_set %2
namespace pop
set !TM_FunctionCalled #TRUE
return
;-------------------------------------------------------------------------------
; %1 - Journal Name
; %2 - NONE, ADVANCE , ( _VALID ) - advances jindex pointer, anything else
; %3, %4, %5, etc strings to match
; returns #TRUE for match, #FALSE for no match
; Will not advance !_jindex pointer to allow for scanning journal history for more than one search.
; Also searches for : , #SPC in journal entry to be sure someone isn't spamming the text
; About %2 arguments:
; NONE: defaults to basic journal scan (no SPAM checking, no #jindex pointer copy advancing)
; ADVANCE: no spam checking, advances #jindex copy
; VALID: invokes SPAM filtering, no advance of #jindex copy
; VALID_ADVANCE, VALIDADVANCE, ADVANCE_VALID, etc.: invokes SPAM filtering, advances of #jindex copy
sub TM_AdvJournalScan
namespace push
namespace local TM_AdvJS_ , %1
set !args %2
set !temp_lpc #LPC
if !lpc_set = N/A
set #LPC 1000
else
set #LPC !lpc_set
set !num_args %0
set !first_arg 3
if !_jindex = N/A
set !_jindex #jindex
if !charname = N/A
{
set !charname #CHARNAME
AdvJournalScan_loop1:
str pos !charname #SPC
if #STRRES <> 0
{
set !val #STRRES - 1
str left !charname !val
set !left #STRRES
set !val !val + 1
str del !charname 1 !val
set !charname !left , _ , #STRRES
goto AdvJournalScan_loop1
}
}
set !index !first_arg
repeat
set !temp_jindex !_jindex
set !text % . !index
while !temp_jindex <= #jindex
{
scanjournal !temp_jindex
str pos #JOURNAL !charname 1
set !namepos #STRRES
str count #JOURNAL !charname
set !namecnt #STRRES
str pos #JOURNAL :_ 1
set !smcpos #STRRES
str pos #JOURNAL !text 1
set !textpos #STRRES
if !textpos < !smcpos && !smcpos <> 0 || !smcpos = 1 || :_ notin #JOURNAL || VALID notin !args
set !pass #TRUE
else
set !pass #FALSE
if ( !text in #journal && ( ( !namepos = 1 && !namecnt <= 1 ) || !pass ) )
{
set !temp_jindex !temp_jindex + 1
if ADVANCE in !args
set !_jindex !temp_jindex
set #LPC !temp_lpc
namespace pop
set !TM_FunctionCalled #TRUE
return #TRUE
}
set !temp_jindex !temp_jindex + 1
}
set !index !index + 1
until !index - !first_arg > !num_args - !first_arg
set #LPC !temp_lpc
namespace pop
set !TM_FunctionCalled #TRUE
return #FALSE