;=================================================================
; Script Name: TrailMyx's UI Tutorial - Spellcasting
; Author: TrailMyx
; Version: 0.68
; Shard OSI / FS: OSI / FS OK
; Revision Date: 9/29/2007
;
; Purpose:
;
; Globals/System variables:
;
; Special Thanks:
;
; Revision History:
;
gosub showEUOMenu1
gosub Setup
set #MENUBUTTON N/A
 
set %current_circle 1
set %current_log_selection 0
set %last_target N/A
 
mainloop1:
;
; Update Window
;
  gosub UpdateLogWindow
 
  menu get CircleMenu
  if #MENURES <> %current_circle
  {
    set %current_circle #MENURES
    gosub UpdateSpellMenu %current_circle
  }
 
  menu get EUOListLogWindow
  if #MENURES <> %current_log_selection
  {
    set %current_log_selection #MENURES
    set %temp %journal . %current_log_selection
    menu set EUOStatus %temp
  }
;
; Handle Buttons/Checkmarks
;
  if #MENUBUTTON = EUOButtonCast
  {
    set #MENUBUTTON N/A ; Always remember to reset #MENUBUTTON when you handle it!
    menu delete EUOShape1
    menu Shape EUOShape1 168 40 105 21 3 7 1 Black 7 Red
    menu get CircleMenu
    set %circle #MENURES
    menu get SpellMenu
    set %spell #MENURES
    menu get EUOCheckWaitForTarget
    set %waitfortarget #MENURES
 
    if %circle = 9 ; Computer the event macro 15 spell number...
      set %spell_num 100 + %spell
    else
      set %spell_num ( ( %circle - 1 ) * 8 ) + %spell - 1
 
    event macro 15 %spell_num
    if %waitfortarget = #TRUE
    {
      target 10s
      if %last_target = N/A
      {
        repeat
        until #TARGCURS = 0
        set %last_target #LTARGETID
      }
      event macro 22 0
    }
    menu get EUOEditDelay
    wait #MENURES
    menu delete EUOShape1
    menu Shape EUOShape1 168 40 105 21 3 7 1 Black 7 Lime
  }
 
  if #MENUBUTTON = EUOButtonResetTarget
  {
    set #MENUBUTTON N/A ; Always remember to reset #MENUBUTTON when you handle it!
    set %last_target N/A
  }
 
  menu get EUOCheckLoop
  if #MENURES = #TRUE
  {
    set #MENUBUTTON EUOButtonCast ; Force the Cast button to be pressed again!
  }
goto mainloop1
;--------------------------------------------------------------
sub Setup
  menu Combo Add CircleMenu First Circle
  menu Combo Add CircleMenu Second Circle
  menu Combo Add CircleMenu Third Circle
  menu Combo Add CircleMenu Forth Circle
  menu Combo Add CircleMenu Fifth Circle
  menu Combo Add CircleMenu Sixth Circle
  menu Combo Add CircleMenu Seventh Circle
  menu Combo Add CircleMenu Eighth Circle
  menu Combo Add CircleMenu Necromancy Circle
  menu Combo Select CircleMenu 1 ; select 1st circle
  gosub UpdateSpellMenu 1 ; redraw combo SpellMenu with 1st circle spells
  menu Combo Select SpellMenu 1 ; always select the first combo select so it's visible
return
;--------------------------------------------------------------
sub UpdateSpellMenu
  set %circle %1
  menu Delete SpellMenu
  menu Font BGColor White
  menu Combo Create SpellMenu 12 64 145
 
  menu get EUOCheckOSI
  set %shard_kind #MENURES ; OSI and RunUO have different spells for 1st
  if %circle = 1
  {
    if %shard_kind = #TRUE
    {
      menu Combo Add SpellMenu Clumsy
      menu Combo Add SpellMenu Create Food
      menu Combo Add SpellMenu Feeblemind
      menu Combo Add SpellMenu Heal
      menu Combo Add SpellMenu Magic Arrow
      menu Combo Add SpellMenu Night Sight
      menu Combo Add SpellMenu Reactive Armor
      menu Combo Add SpellMenu Weaken
    }
    else
    {
      menu Combo Add SpellMenu Reactive Armor
      menu Combo Add SpellMenu Clumsy
      menu Combo Add SpellMenu Create Food
      menu Combo Add SpellMenu Feeblemind
      menu Combo Add SpellMenu Heal
      menu Combo Add SpellMenu Magic Arrow
      menu Combo Add SpellMenu Night Sight
      menu Combo Add SpellMenu Weaken
    }
    return
  }
  if %circle = 2
  {
    menu Combo Add SpellMenu Agility
    menu Combo Add SpellMenu Cunning
    menu Combo Add SpellMenu Cure
    menu Combo Add SpellMenu Harm
    menu Combo Add SpellMenu Magic Trap
    menu Combo Add SpellMenu Magic Untrap
    menu Combo Add SpellMenu Protection
    menu Combo Add SpellMenu Strength
  }
  if %circle = 3
  {
    menu Combo Add SpellMenu Bless
    menu Combo Add SpellMenu Fireball
    menu Combo Add SpellMenu Magic Lock
    menu Combo Add SpellMenu Poison
    menu Combo Add SpellMenu Telekinesis
    menu Combo Add SpellMenu Teleport
    menu Combo Add SpellMenu Unlock
    menu Combo Add SpellMenu Wall of Stone
  }
  if %circle = 4
  {
    menu Combo Add SpellMenu Arch Cure
    menu Combo Add SpellMenu Arch Protection
    menu Combo Add SpellMenu Curse
    menu Combo Add SpellMenu Fire Field
    menu Combo Add SpellMenu Greater Heal
    menu Combo Add SpellMenu Lightning
    menu Combo Add SpellMenu Mana Drain
    menu Combo Add SpellMenu Recall
  }
  if %circle = 5
  {
    menu Combo Add SpellMenu Blade Spirits
    menu Combo Add SpellMenu Dispel Field
    menu Combo Add SpellMenu Incognito
    menu Combo Add SpellMenu Magic Reflection
    menu Combo Add SpellMenu Mind Blast
    menu Combo Add SpellMenu Paralyze
    menu Combo Add SpellMenu Poison Field
    menu Combo Add SpellMenu Summon Creature
  }
  if %circle = 6
  {
    menu Combo Add SpellMenu Dispel
    menu Combo Add SpellMenu Energy Bolt
    menu Combo Add SpellMenu Explosion
    menu Combo Add SpellMenu Invisibility
    menu Combo Add SpellMenu Mark
    menu Combo Add SpellMenu Mass Curse
    menu Combo Add SpellMenu Paralyze Field
    menu Combo Add SpellMenu Reveal
  }
  if %circle = 7
  {
    menu Combo Add SpellMenu Chain Lightning
    menu Combo Add SpellMenu Energy Field
    menu Combo Add SpellMenu Flame Strike
    menu Combo Add SpellMenu Gate Travel
    menu Combo Add SpellMenu Mana Vampire
    menu Combo Add SpellMenu Mass Dispel
    menu Combo Add SpellMenu Meteor Swarm
    menu Combo Add SpellMenu Polymorph
  }
  if %circle = 8
  {
    menu Combo Add SpellMenu Earthquake
    menu Combo Add SpellMenu Energy Vortex
    menu Combo Add SpellMenu Resurrection
    menu Combo Add SpellMenu Air Elemental
    menu Combo Add SpellMenu Summon Daemon
    menu Combo Add SpellMenu Earth Elemental
    menu Combo Add SpellMenu Fire Elemental
    menu Combo Add SpellMenu Water Elemental
  }
  if %circle = 9
  {
    menu Combo Add SpellMenu Animate Dead
    menu Combo Add SpellMenu Blood Oath
    menu Combo Add SpellMenu Corpse Skin
    menu Combo Add SpellMenu Curse Weapon
    menu Combo Add SpellMenu Evil Omen
    menu Combo Add SpellMenu Horrific Beast
    menu Combo Add SpellMenu Lich Form
    menu Combo Add SpellMenu Mind Rot
    menu Combo Add SpellMenu Pain Spike
    menu Combo Add SpellMenu Poison Strike
    menu Combo Add SpellMenu Strangle
    menu Combo Add SpellMenu Summon Familiar
    menu Combo Add SpellMenu Vampiric Embrace
    menu Combo Add SpellMenu Vengeful Spirit
    menu Combo Add SpellMenu Wither
    menu Combo Add SpellMenu Wraith Form
    menu Combo Add SpellMenu Exorcism
  }
return
;--------------------------------------------------------------
sub UpdateLogWindow
  if %jindex = N/A
    set %jindex #JINDEX
  if %journal_pointer = N/A
    set %journal_pointer 1
  if %journal_pointer > 200
  {
    set %journal_pointer 1
    menu delete EUOListLogWindow ; remember when you want to redraw a control, you MUST!! delete it first.
    menu List Create EUOListLogWindow 12 136 257 225
  }
  while %jindex < #JINDEX
  {
    scanjournal %jindex
    gosub AddSpace #JOURNAL
    menu List add EUOListLogWindow #RESULT
    set %journal . %journal_pointer #RESULT
    set %journal_pointer %journal_pointer + 1
    set %jindex %jindex + 1
  }
 
return
;--------------------------------------------------------------
; %1 - string to mung
sub AddSpace
  namespace push
  namespace local AS
  set !tempstring %1
  AddSpace_loop1:
    str pos !tempstring _
    if #STRRES <> 0
    {
      set !val #STRRES - 1
      str left !tempstring !val
      set !left #STRRES
      set !val !val + 1
      str del !tempstring 1 !val
      set !tempstring !left , #SPC , #STRRES
      goto AddSpace_loop1
    }
  set #RESULT !tempstring
  namespace pop
return #RESULT
;--------------------------------------------------------------
sub UpdateNecromancySpellMenu
  menu Delete SpellMenu
  menu Combo Create SpellMenu 12 20 145
  menu Combo Add SpellMenu Animate Dead
  menu Combo Add SpellMenu Blood Oath
  menu Combo Add SpellMenu Corpse Skin
  menu Combo Add SpellMenu Curse Weapon
  menu Combo Add SpellMenu Evil Omen
  menu Combo Add SpellMenu Horrific Beast
  menu Combo Add SpellMenu Lich Form
  menu Combo Add SpellMenu Mind Rot
  menu Combo Add SpellMenu Pain Spike
  menu Combo Add SpellMenu Poison Strike
  menu Combo Add SpellMenu Strangle
  menu Combo Add SpellMenu Summon Familiar
  menu Combo Add SpellMenu Vampiric Embrace
  menu Combo Add SpellMenu Vengeful Spirit
  menu Combo Add SpellMenu Wither
  menu Combo Add SpellMenu Wraith Form
  menu Combo Add SpellMenu Exorcism
return
;--------- EasyUO Menu Designer Code Begin ---------
sub showEUOMenu1
        menu Clear
        menu Window Title TrailMyx's Spell Caster
        menu Window Color BtnFace
        menu Window Size 277 392
        menu Font Transparent #true
        menu Font Align Right
        menu Font Name MS Sans Serif
        menu Font Size 8
        menu Font Style
        menu Font Color WindowText
        menu Font Transparent #false
        menu Font Align Left
        menu Text EUOLabel1 8 4 Spell circle/Necro:
        menu Text EUOLabel2 8 48 Spell name:
        menu Text EUOLabel3 8 120 Log Display:
        menu Shape EUOShape1 168 40 105 21 3 7 1 Black 7 Lime
        menu Text EUOLabel4 16 96 Delay
        menu Font BGColor Window
        menu Combo Create CircleMenu 12 20 145
        menu Combo Create SpellMenu 12 64 145
        menu List Create EUOListLogWindow 12 136 257 225
        menu Font BGColor BtnFace
        menu Button EUOButtonCast 184 12 75 25 Cast
        menu Check EUOCheckOSI 172 64 73 17 #true OSI
        menu Font BGColor Window
        menu Edit EUOStatus 12 368 257 ...
        menu Font BGColor BtnFace
        menu Check EUOCheckLoop 172 80 93 17 #false Loop?
        menu Check EUOCheckWaitForTarget 172 96 109 17 #false Wait for Target?
        menu Font BGColor Window
        menu Edit EUOEditDelay 48 92 81 20
        menu Font BGColor BtnFace
        menu Button EUOButtonResetTarget 184 116 75 21 Reset Target
        menu Show 421 270
return
;--------- EasyUO Menu Designer Code End ---------