;=================================================================
; Script Name: Chivalry
; Author: VicVega
; Version: 0.2
; Shard OSI / FS: UO Legends
; Revision Date: 20/5/2009
; Purpose: Trains Chivalry to GM
; Globals: None
;=================================================================
; Instructions: You need to setup your fcr in %userFcr variable
; It's 0 by default
;
;************************ Setup **********************************
gosub setup
;*********************** Main Loop *******************************
repeat
gosub checkskill
gosub chooseChivSpell
while #mana >= %minManaToCast
gosub castChivalrySpell
gosub meditate
while #mana < #maxMana
gosub checkMeditateStatus
until #charGhost = yes
return
;************************* Subs **********************************
sub setup
set %userFcr 0
chooseskill chiv real
set %startingskill #skill
str len %startingskill
str ins %startingskill #dot #strRes
set %startingskill #strres
set %successMessageTrance you_enter_a_meditative
set %successMessagePeace you_are_at_peace
set %failFocus cannot_Focus
set %failWait you_must_wait
return
sub checkskill
if #skill = #skillcap
halt
set %currentskill #skill
str len %currentskill
str ins %currentskill #dot #strRes
set %currentskill #strres
setuotitle SS %startingskill | CS %currentskill
set %currentskill #skill
return
sub castChivalrySpell
event Macro 15 %spell
target
event Macro 23 0
wait %fcrDelay
return
sub meditate
wait 1s
event macro 13 46
gosub scan %failFocus %failWait %successMessageTrance %successMessagePeace
set %scanResult #result
return
sub checkMeditateStatus
if %scanResult = %failWait
{
wait 1s
event macro 13 46
gosub scan %failFocus %failWait %successMessageTrance %successMessagePeace
set %scanResult #result
}
if %scanResult = %failFocus
{
wait 10s
event macro 13 46
gosub scan %failFocus %failWait %successMessageTrance %successMessagePeace
set %scanResult #result
}
return
sub scan
set %maxTimeOutScan 15
set %timeout #scnt + %maxTimeOutScan
set %jrnl #jindex
scanjournal %jrnl
while #scnt < %timeout
{
if %jrnl < #jindex
{
set %jrnl %jrnl + 1
scanjournal %jrnl
}
for %journalCounter 1 %0
{
if % . %journalCounter in #journal
return % . %journalCounter
}
}
return
Sub chooseChivSpell
chooseskill chiv
set %skill #skill real
set %minManaToCast 10
if %skill < 1000 && %skill > 849
{
set %spell 208 ; Noble Sacrafice
set %minManaToCast 20
}
if %skill < 850 && %skill > 749
set %spell 207 ; Holy Light
if %skill < 750 && %skill > 649
{
set %spell 206 ; Enemy of One
set %minManaToCast 20
}
if %skill < 650 && %skill > 549
set %spell 204 ; Dispel Evil
if %skill < 550 && %skill > 449
{
set %spell 205 ; Divine Fury
set %minManaToCast 15
}
if %skill < 450 && %skill > 349
set %spell 203 ; Consecrate Weapon
if %skill < 350
{
set %spell 209 ; Remove Curse
set %minManaToCast 20
}
return
sub setFcrDelay
if %userFcr = 6
set %fcrDelay 1
if %userFcr = 5
set %fcrDelay 2
if %userFcr = 4
set %fcrDelay 3
if %userFcr = 3
set %fcrDelay 5
if %userFcr = 2
set %fcrDelay 10
if %userFcr = 1
set %fcrDelay 15
if %userFcr = 0
set %fcrDelay 20
return