;==================================================
; Name: Madara's WarAssist PvP&PvM
; Author: Madara
; Version: 1.6.6
; Shard FS: UODreams
; Client Tested With: 7.0.22
; EUO version tested with: 1.5 v.236
; Public Release: 12/04/2013
; Last Revision: 17/04/2013
; Requirments: ScanBuffBar - Deve trovarsi all'interno della cartella dove  situazto EasyUO.
; Credits: Boydon(Bone-Cutter)
;==================================================
; COSA FA LO SCRIPT?
; - Cura il vostro pg con Healing, mostrando il contatore di quanto manca.
; - Honora il Mob appena targhettato(al momento solo per WarTanker, no Arciere).
; - Casta e Ricasta Curse Weapon dopo tot tempo, cosi da avere sempre un life leech continuo.
; - Usa Lightning Strike di Bushido, dopo ogni attacco si riattiva in automatico.
; - Ad ogni azione viene mostrato un contatore, in modo da sapere sempre in tempo REALE quanto manca allo scadere del tempo.
; - Contiene il check per i Save, riprende ogni azione da dove l'avete lasciata.
; - Avverte ad ogni uso, la quantit di Bende/Reagenti rimasti.
; - Beve Pozze GreatHeal, Refresh, GreatCure e Melette se sotto Curse, Mortal e BloodOath! Potete metterle anche dentro bag/container/box all'interno del backpack.
; - Potete settare fino a 4 diversi Curse per le Melette e il RemoveCurse.
; Al contrario di altri Script, ogni azioni si basa su tempo calcolato in rispetto a Osi-Style, seguendo specifiche formule.
; Per RESETTARE le impostazioni basta cliccare il pulsante OPTIONS sul paperdoll.
;=========================== SETUP ===========================
set %NewTargetSystem #true ; Tipo di TargetBendata
; #false = Bendata Classica
; #true  = Bendata con NewTargetSystem - (pi rapida e sicura,
;          ma potrebbe dar problemi ad alcuni)
set %AutoHonor #true ; Honora tutti i Mob targhettati
set %AutoHealing #true ; Benda in automatico il vostro pg
set %AutoCurseWeapon #false ; CW auotomaticamente il vostro pg
set %HitPoints 5 ; HP persi prima che lo script inizi a bendare
set %AutoLightningStrike #false ; Hit automatico ad ogni Swing
set %AttivazioneLS 5 ; Setta la rapidit con cui vuoi che venga
; attivato il LightningStrike, pi  bassa e pi veloce sar!
set %AutoRemoveCurse #false ; DISATTIVATO se Melette attive.
set %CurseChivalry_1 CurseBloodOath
set %CurseChivalry_2 Strangle
set %CurseChivalry_3 N/A
set %CurseChivalry_4 N/A
; Curse Inseribili: CurseBloodOath, Strangle, PainSpike, MindRot,
; EvilOmen, CorpseSkin, Curse, Weaken, Feeblemind, Clumsy
; Il MortalStrike per RemoveCurse di Chivalry, anche se non presente
;  sempre attivo.
set %Doom #false ; Taglia-Ossa(#true - #false) - By Boidon
;====================== POZZE E MELETTE ======================
set %Melette #false
set %MortalStrike #true
; Setta se USARE o NO le Melette se afflitto da LethalStrike.
set %CurseMelette_1 CurseBloodOath
set %CurseMelette_2 Strangle
set %CurseMelette_3 N/A
set %CurseMelette_4 N/A
; Curse Inseribili: CurseBloodOath, Strangle, PainSpike, MindRot,
; EvilOmen, CorpseSkin, Curse, Weaken, Feeblemind, Clumsy
set %DrinkHeal #true ; Beve GreaterHeal se sotto soglia HP
set %DrinkCure #false ; Beve GreaterCure se sotto Poison
set %DrinkRefresh #true ; Beve GreaterRefresh se sotto soglia Stamina
set %HitsLimit 30 ; Soglia degli HP per usare pozza Heal
set %StaminaLimit 40 ; Soglia della Stamina per usare pozza Refresh
;=========================== TASTI ===========================
; Se non volete usare le operazioni AUTO potete settare voi stessi
; i TASTI e decidere quando o no usarli. I Tasti possono essere usati
; tranquillamente anche con le Modalit AUTO, non interferiscono con
; le azioni dello script.
set %LightningStrike N/A ; Tasto per Hit di Bushido
set %CurseWeapon N/A ; Tasto per il CurseWeapon di Necro
set %RemoveCurse N/A ; Tasto per il RemoveCurse di Chivalry
set %Honor N/A ; Tasto per Honorare il Mob
set %PozzaHeal N/A ; Tasto per Pozze Heal
set %PozzaCure N/A ; Tasto per Pozze Cure
set %PozzaRefresh N/A ; Tasto per Pozze Refresh
set %Meletta N/A ; Tasto per Melette
;=========================== ALTRO ===========================
; Se volete o avete necessit di richiamare un altro script durante
; l'esecuzione del WarAssit, basta inserire il nome qui di seguito.
; Esempio di come bisogna scriverlo:
; MODO NON CORRETTO:  C:\My Documents\blabla.txt
; MODO CORRETTO:      C:\MyDocu~1\blabla.txt
; MODO CORRETTO:      C:\My , #spc , Documents\blabla.txt
set %CallScript N/A
; IMPORTANTE: se non volete richiamare nessuno script assicuratevi
; che %CallScript sia settato su N/A
;========================= CONTATORI =========================
set %Contatore1 2050 ; Colore del contatore sopra al pg
set %Contatore2 1153 ; Colore del contatore in basso a sinistra
; 1153 = White
; 2050 = PureWhite
; 73   = Green
; 33   = Red
; 1275 = Purple
;====================== TYPE TAGLIA-OSSA =====================
set %bladed FUO_ATF_NPO_JPH_WSF_NMH_VRH_JTF_SOH_BPH_EDP_YCP_ZCP_JDP_LDP_FDP_HDP_OPO_GMH_HNF_CNF
set %bonetypes LNF_QNF_WNF_PNF_KNF_MNF_JNF_YNF_VNF
;========================= END SETUP =========================
InitEvent
set #lpc 500
set %TimeMele 0
set %TimePC 0
set %TimePR 0
set %TimePH 0
set %Save #false
set %Necro #false
set %Healing #false
set #SysMsgCol %Contatore2
if *FirstLight = N/A
 set *FirstLight #true
if %AutoLightningStrike = #true || %LightningStrike <> N/A
{
 chooseskill Bush
 if #skill < 500
 {
  display ok Devi avere almeno 50 Bushido per usare il Lightning Strike.
  halt
 }
}
if %AutoRemoveCurse = #true || %RemoveCurse <> N/A
{
 chooseskill Chiv
 if #skill < 300
 {
  display ok Devi avere almeno 30 Chivalry per usare il Remove Curse.
  halt
 }
}
if %Melette = #true
{
 set %AutoRemoveCurse #false
 event SysMessage Seleziona la Bag dove tieni le Melette. Puoi usare anche il tuo BackPack.
 gosub GetBag
 set %BagMelette #result
 wait 10
 event macro 17
}
if %Doom = #true
{
 gosub FindBlade
 set %blade #result
}

_Main:
 gosub HotKeys
 gosub Time
 gosub Honor
 gosub Bushido
 gosub Necro
 gosub RemoveCurse
 gosub Potions
 gosub Healing
 gosub CallScript
 gosub BoneCut
goto _Main

sub GetBag
set #targcurs 1
while #targcurs = 1
{
}
set #lobjectid #ltargetid
return #lobjectid

sub BoneCut ; By Boydon
for %l 1 5
{
 finditem %bonetypes G_2
 if #findkind <> -1
 {
  set #lobjectid %blade
  set #ltargetkind 1
  event macro 17 0
  set #ltargetid #findid
  set #ltargetkind 1
  target 2s
  set %jstart #jindex
  event macro 22 0
  for %i %jstart #jindex
  {
   scanjournal %i
   wait 1
   if You_can't_use_a_bladed in #sysmsg || You_see_nothing_useful_to_carve in #sysmsg || You_may_not_carve in #sysmsg || if You_can't_use_a_bladed in #journal || You_see_nothing_useful_to_carve in #journal || || You_may_not_carve in #journal
   {
    ignoreitem #findid bones
    return
   }
  }
 }
}
return

sub FindBlade ; By Boydon
	finditem %bladed C
	if #findkind = -1
	{
  	choose:
  	set #ltargetid XXXXXX
  	set #targcurs 1
  	display OK Impossibile trovare un'arma con cui tagliare$
  							+Sceglierne una...
		targLoop:
		wait 1
  	if #ltargetid = XXXXXX
    	goto targLoop
    finditem #ltargetid C
    if #findkind = -1
    {
    	display ok Impossibile trovare l'arma selezionata$
    						+Assicurarsi che il container nel quale  contenuta sia aperto e riprovare!
    	goto choose
    }
	  return #ltargetid
	}
return #findid

sub CallScript
if %CallScript <> N/A
{
 call %CallScript
 set #lpc 500
 wait 1
}
return

sub Potions
if %Melette = #true && H notin #charstatus || %Meletta = #true && H notin #charstatus
{
 gosub Save
 call ScanBuffBar
 finditem CBS C_ , %BagMelette
 if #findid <> X && %CurseMelette_1 in %BuffBarIconNames || #findid <> X && %CurseMelette_2 in %BuffBarIconNames || #findid <> X && %CurseMelette_3 in %BuffBarIconNames || #findid <> X && %CurseMelette_4 in %BuffBarIconNames || #findid <> X && D in #CharStatus && %MortalStrike = #true
 {
  if #scnt >= %TimeMele
  {
   set %Mele ( #findstack - 1 )
   event exmsg #charid 3 %Contatore1 Melette Rimaste: %Mele
   set #lobjectid #findid
   set #ltargetkind 1
   event macro 17
   set %TimeMele ( #scnt + 122 )
  }
 }
}
if %DrinkCure = #true && H notin #charstatus
{
 gosub Save
 finditem NUF C_ , #backpackid
 if #findid <> X && C in #charstatus
 {
  if #scnt >= %TimePC
  {
   set %PozzeC ( #findstack - 1 )
   event exmsg #charid 3 %Contatore1 Pozze Cure Rimaste: %PozzeC
   set #lobjectid #findid
   set #ltargetkind 1
   event macro 17
   set %TimePC ( #scnt + 2 )
  }
 }
}
if %DrinkRefresh = #true && H notin #charstatus
{
 gosub Save
 finditem ZUF C_ , #backpackid
 if #findid <> X && #Stamina <= %StaminaLimit
 {
  if #scnt >= %TimePR
  {
   set %PozzeR ( #findstack - 1 )
   event exmsg #charid 3 %Contatore1 Pozze Refresh Rimaste: %PozzeR
   set #lobjectid #findid
   set #ltargetkind 1
   event macro 17
   set %TimePR ( #scnt + 2 )
  }
 }
}
if %DrinkHeal = #true && H notin #charstatus
{
 gosub Save
 finditem UUF C_ , #backpackid
 if #findid <> X && #Hits <= %HitsLimit
 {
  if #scnt >= %TimePH
  {
   set %PozzeH ( #findstack - 1 )
   event exmsg #charid 3 %Contatore1 Pozze Heal Rimaste: %PozzeH
   set #lobjectid #findid
   set #ltargetkind 1
   event macro 17
   set %TimePH ( #scnt + 12 )
  }
 }
}
return

sub HotKeys
onhotkey %LightningStrike
{
 event macro 15 149
 wait 1
}
onhotkey %CurseWeapon
{
 gosub Save
 finditem YZF C_ , #backpackid
 if #findid <> X
 {
  set %PigIron ( #findstack - 1 )
  event macro 15 104
  chooseskill Spir
  set %TimeCurseWeapon ( ( ( #Skill * 10 ) / 34 ) + 1 ) - 10
  if #Skill = 0 && B notin #CharStatus
   set %TimeCurseWeapon 200
  str len %TimeCurseWeapon
  if #strres = 3
   str left %TimeCurseWeapon 2
  if #strres = 2
   str left %TimeCurseWeapon 1
  set %TimeCurseWeapon_2 ( #scnt + #strres )
  set %scnt_2 #scnt
  set %Necro #true
  event sysmessage PigIron Rimasti: %PigIron
  wait 1
 }
}
onhotkey %RemoveCurse
{
 event macro 15 209
 set #ltargetid #Charid
 gosub Save
 target 5s
 set #ltargetkind 1
 event macro 22
}
onhotkey %Meletta
{
 gosub Save
 finditem CBS C_ , %BagMelette
 if #findid <> X
 {
   set %Mele ( #findstack - 1 )
   event exmsg #charid 3 %Contatore1 Melette Rimaste: %Mele
   set #lobjectid #findid
   set #ltargetkind 1
   event macro 17
   wait 1
 }
}
onhotkey %PozzaCure
{
 gosub Save
 finditem NUF C_ , #backpackid
 if #findid <> X && C in #charstatus
 {
   set %PozzeC ( #findstack - 1 )
   event exmsg #charid 3 %Contatore1 Pozze Cure Rimaste: %PozzeC
   set #lobjectid #findid
   set #ltargetkind 1
   event macro 17
   wait 1
 }
}
onhotkey %PozzaRefresh
{
 gosub Save
 finditem ZUF C_ , #backpackid
 if #findid <> X && #Stamina <= %StaminaLimit
 {
   set %PozzeR ( #findstack - 1 )
   event exmsg #charid 3 %Contatore1 Pozze Refresh Rimaste: %PozzeR
   set #lobjectid #findid
   set #ltargetkind 1
   event macro 17
   wait 1
 }
}
onhotkey %PozzaHeal
{
 gosub Save
 finditem UUF C_ , #backpackid
 if #findid <> X && #Hits <= %HitsLimit
 {
   set %PozzeH ( #findstack - 1 )
   event exmsg #charid 3 %Contatore1 Pozze Heal Rimaste: %PozzeH
   set #lobjectid #findid
   set #ltargetkind 1
   event macro 17
   wait 1
 }
}
onhotkey %Honor
{
 event macro 49 1
 target 2s
 repeat
  wait 0
 until #targcurs = 0
}
return

sub Formula
gosub Save
if %AutoHealing = #true && %Healing = #false
{
 set %TimeBandages ( 11 - ( #Dex / 20 ) )
 set %TimeBandages_2 ( #scnt + %TimeBandages )
 set %scnt #scnt
}
if %AutoCurseWeapon = #true && %Necro = #false
{
 chooseskill Spir
 set %TimeCurseWeapon ( ( ( #Skill * 10 ) / 34 ) + 1 ) - 10
 if #Skill = 0 && B notin #CharStatus
  set %TimeCurseWeapon 200
 str len %TimeCurseWeapon
 if #strres = 3
  str left %TimeCurseWeapon 2
 if #strres = 2
  str left %TimeCurseWeapon 1
 set %TimeCurseWeapon_2 ( #scnt + #strres )
 set %scnt_2 #scnt
}
return

sub Honor
gosub Save
while #CharGhost = YES
{
}
_honormain:
gosub Save
if %AutoHonor = #true && #enemyid <> N/A
{
 if #enemyid = %target
  return
 set #ltargetkind 1
 set #ltargetid #enemyid
 if #ltargetid = #charid
  goto _honormain
 event macro 49 1
 set %target #enemyid
 target 2s
 event macro 22
}
return

sub RemoveCurse
call ScanBuffBar
if %AutoRemoveCurse = #true && #mana > 20 && %CurseChivalry_1 in %BuffBarIconNames || %AutoRemoveCurse = #true && #mana > 20 && %CurseChivalry_2 in %BuffBarIconNames || %AutoRemoveCurse = #true && #mana > 20 && %CurseChivalry_3 in %BuffBarIconNames || %AutoRemoveCurse = #true && #mana > 20 && %CurseChivalry_4 in %BuffBarIconNames || %AutoRemoveCurse = #true && #mana > 20 && D in #CharStatus
{
 set %Targ ( #scnt + 10 )
 if #targcurs <> 0
 {
  repeat
   if #scnt >= %Targ
    set #targcurs 0
  until #targcurs = 0
 }
 event macro 15 209
 set #ltargetid #Charid
 gosub Save
 target 5s
 set #ltargetkind 1
 event macro 22
}
return

sub Bushido
gosub Save
while #CharGhost = YES
{
}
if *FirstLight = #true && %AutoLightningStrike = #true
{
 event SysMessage Clicca due volte su "Lightning Strike Icon" e mentre mantieni il mouse sopra la Spell premi F
 repeat
  onhotkey F
   set %sys 1
 until %sys = 1
 savePix #CursorX #CursorY 1
 set *PixelX #CursorX
 set *PixelY #CursorY
 set *PixCol #PixCol
 event SysMessage Clicca due volte sulla "Primary Ability Icon" e mentre mantieni il mouse sopra la Spell premi F
 wait 20
 repeat
  onhotkey F
   set %sys 2
 until %sys = 2
 savePix #CursorX #CursorY 2
 set *PixelX2 #CursorX
 set *PixelY2 #CursorY
 set *PixCol2 #PixCol
 event SysMessage Clicca due volte su "Secondary Ability Icon" e mentre mantieni il mouse sopra la Spell premi F
 wait 20
 repeat
  onhotkey F
   set %sys 3
 until %sys = 3
 savePix #CursorX #CursorY 3
 set *PixelX3 #CursorX
 set *PixelY3 #CursorY
 set *PixCol3 #PixCol
 set *FirstLight #false
 wait 20
 event SysMessage OK! SETUP COMPLETATO!
}
gosub Save
if #mana > 4 && %AutoLightningStrike = #true
{
 gosub Honor
 savePix *PixelX *PixelY 1
 if #PixCol <> *PixCol
 {
  savePix *PixelX2 *PixelY2 2
  if #PixCol <> *PixCol2
  {
   savePix *PixelX3 *PixelY3 3
   if #PixCol <> *PixCol3
   {
    event macro 15 149
    gosub Time
    wait %AttivazioneLS
   }
  }
 }
}
return

sub Necro
if %AutoCurseWeapon = #true
{
 gosub Save
 while #CharGhost = YES
 {
 }
 finditem YZF C_ , #backpackid
 if #enemyid <> N/A && #findid <> X && H notin #CharStatus && A notin #CharStatus && %Necro = #false && #mana > 6
 {
  set %PigIron ( #findstack - 1 )
  _loopcast:
  set %time ( #scnt + 2 )
  deletejournal
  gosub Honor
  gosub Save
  if %Save = #true
   set %Save #false
  if A in #CharStatus
   return
  set %Targ ( #scnt + 10 )
  if #targcurs <> 0
   {
    repeat
     if #scnt >= %Targ
      set #targcurs 0
    until #targcurs = 0
  }
  event macro 15 104
  _loop:
  scanjournal 1
  if The_spell_fizzles. in #journal
   goto _loopcast
  if An_Sanct_Gra_Char in #journal || Curse_Weapon in #journal
  {
   if The_spell_fizzles. in #journal
    goto _loopcast
   if You_must_be_holding_a_weapon in #journal
    return
   goto _exitloop
  }
  if #scnt >= %time
   goto _loopcast
  goto _loop
  _exitloop:
  event sysmessage PigIron Rimasti: %PigIron
  set %Necro #true
 }
}
return

sub Healing
if %AutoHealing = #true
{
 gosub Save
 while #CharGhost = YES
 {
 }
 finditem ZLF C_ , #backpackid
 if #Hits <= ( #MaxHits - %HitPoints ) && #findid <> X && H notin #CharStatus && A notin #CharStatus && %Healing = #false || C in #CharStatus && #findid <> X && H notin #CharStatus && A notin #CharStatus && %Healing = #false
 {
  set %Bende ( #findstack - 1 )
  gosub Formula
  gosub Honor
  set %j #jindex
  if #Hits = #MaxHits
   return
  set %Targ ( #scnt + 10 )
  if #targcurs <> 0
   {
    repeat
     if #scnt >= %Targ
      set #targcurs 0
    until #targcurs = 0
  }
  if %NewTargetSystem = #true
  {
   gosub Save
   event macro 58
  }
  if %NewTargetSystem = #false
  {
   set #ltargetkind 1
   set #lobjectid #findid
   event macro 17
   set #ltargetkind 1
   set #ltargetid #charid
   target 5s
   gosub Save
   set #ltargetkind 1
   event macro 22
  }
  for %i %j #jindex
  {
   scanjournal %i
   if That_being_is_not_damaged in #journal || That_being_is_not_damaged in #sysmsg || You_heal_what_little_damage in #journal || You_heal_what_little_damage in #sysmsg
    return
  }
  set %Healing #true
  return
 }
}
return

sub Save
if %Doom = #true
 gosub BoneCut
gosub HotKeys
 set #lpc 1000
  {
  scanjournal 1
  if World_save in #journal && #jcolor = 53
   {
   set %Save #true
   set #lpc 500
   return
   }
  if saving in #journal && #jcolor = 53
   {
   event SysMessage Save...Script in Pausa...
   while 1 = 1
    {
    if World_save in #sysmsg
     {
     set %Save #true
     set #lpc 500
     return
     }
    }
   }
  if Cleaning in #journal && #jcolor = 53
   {
   event SysMessage Clean...Script in Pausa...
   while 1 = 1
    {
    if Cleaned in #sysmsg
     {
     set %Save #true
     set #lpc 500
     return
     }
    }
   }
  if Cleaned in #journal && #jcolor = 53
  {
   set %Save #true
   set #lpc 500
   return
  }
 set #lpc 500
return

sub Time
gosub Formula
while #CharGhost = YES
{
}
if #contname = OptionsGump
{
 event SysMessage RESET IMPOSTAZIONI...
 event macro 9
 wait 3s
 event macro 9
 set *FirstLight #true
}
if %Necro = #true || %Healing = #true
{
 gosub Potions
 gosub HotKeys
 gosub BoneCut
 if %Necro = #true
 {
  if #scnt >= %scnt_2
  {
   if %Save = #true
   {
    set %TimeCurseWeapon_2 #scnt
    set %Save #false
   }
   else
    set %TimeC ( %TimeCurseWeapon_2 - %scnt_2 )
   set %scnt_2 ( %scnt_2 + 1 )
   if #scnt >= %TimeCurseWeapon_2
   {
    set %Necro #false
    return
   }
   event exmsg #charid 3 %Contatore1 %TimeC
   ;event exmsg #charposx 3 %Contatore1 %TimeC
  }
 }
 if %Healing = #true
 {
  if #scnt >= %scnt
  {
   for %i 0 5
   {
    gosub Potions
    gosub HotKeys
    gosub BoneCut
    wait 1
   }
   set %TimeB ( %TimeBandages_2 - %scnt )
   set %scnt ( %scnt + 1 )
   if #scnt >= %TimeBandages_2
   {
    for %i 0 15
    {
     gosub Potions
     gosub HotKeys
     gosub BoneCut
     wait 1
    }
    set %Healing #false
    event sysmessage Bende Rimaste: %Bende
    return
   }
   if #Hits = #MaxHits
   {
    for %i 0 15
    {
     gosub Potions
     gosub HotKeys
     gosub BoneCut
     wait 1
    }
    event sysmessage Bende Rimaste: %Bende
    return
   }
   event sysmessage Bandage Time: %TimeB
  }
 }
}
return

; END
halt
