Back to "musicianship" tags

Ougah Dexxer Bard Single target by Jephgag

Description: This is a work in progress. This script is for my play style. Read the beginning of the script to make sure to setup the cooldowns properly.

Updated :

Added Peace/Disco Song buffs

Added Refresh Potions

Moved The clean up section outside of the main loop

1# Ougah Dexxer Bard
2# By [Myth]Ougah Ougah
3# This script is work in progress
4
5# The overhead targetting portion of the script is taken from Jasowns Autodexxer Script
6# The drinking potion part of the script is taken from Jasowns Autodexxer Script
7# The Chiv symbol counting is taken from Jasowns Autodexxer Script
8# https://outlands.uorazorscripts.com/ultimate-dexxer
9
10# This script is very specific to my style of play, but feel free to try it and modify it. 
11
12# This script requires :
13# Chivalry
14# Discord and Peace making
15# A skinning knife if you want to autocarve the bodies of your target
16
17# The philosophy behind this script is that it can be used both in solo play and group play. The goal is to target a single monster.
18# If the player needs to retreat, then the script will stop by itself (you will see the message Target Lost)
19
20# The order of priority of this script
21# 1. Heal/Cure the player
22# 2. Peace the target first to reduce damage
23# 3. Then discord the target for easier kills
24# 5. Up the chivalry buffs (musicianships buff to come)
25# 4. Once the target is dead, skin the corpse (if enabled)
26
27# This script only use Heal potion and cure potion (for now) 
28
29# There are a few user variable to setup below for what type of heal to use (Noble, Holy light, Hp pot) and which buff to use (EoO, Divine Fury)
30
31
32# The following Cooldowns must be setup in your UO Client (Options -> Cooldowns)
33# Be careful to write them as they are written below, case sensitive
34# Musicianship
35# Peacemaking
36# Pacified
37# Discordance
38# Discorded
39# Healing Potion
40# Cure Potion
41# Refresh Potion
42# Heal Preventend
43# Chivalry Ability CD
44# Noble Sacrifice
45# Divine Fury
46# Enemy Of One
47# Cleanse By Fire
48# Close Wounds
49# Holy Light
50# Song Buff Delay
51# Song Of Discordance
52# Song Of Peacemaking
53
54######################################################
55# Start of Script Setup
56######################################################
57
58#*****************************************************
59#  User Variables
60#***************************************************** 
61@setvar! PeacemakingReapply 30000
62@setvar! DiscordanceReapply 60000
63
64@setvar! AutoCarving 1
65@setvar! FindTargetRefresh 3000
66@setvar! StopWhenTargetCannotBeSeen 1
67
68@setvar! HpNobleSacrifice 65
69
70@setvar! HpHolyLight 40
71@setvar! HpHealPotion 55
72@setvar! HpCurePotion 95
73@setvar! StamRefreshPotion 90
74
75@setvar! EnableCleanseByFire 1
76@setvar! EnableCloseWounds 1
77@setvar! EnableNobleSacrifice 1
78@setvar! EnableHolyLight 1
79@setvar! EnableDivineFury 1
80@setvar! EnableEnemyOfOne 1
81
82@setvar! EnablePeacemakingBuff 1
83@setvar! EnableDiscordanceBuff 1
84
85@setvar! SongReapply 840000
86
87@setvar! EnableHealPotion 1
88@setvar! EnableCurePotion 1
89@setvar! EnableRefreshPotion 1
90
91@setvar! EnableParalyzePouch 1
92
93#variable reused from jasowns autodexxer script
94@setvar! minimumWaitForPing 300
95@setvar! minimumWaitForPingUnequipping 650
96
97#*****************************************************
98#  End of User Variables
99#***************************************************** 
100#*****************************************************
101#  Script Variables
102#*****************************************************
103
104 
105@setvar! StopTheLoop 0
106@setvar! UseHealPotion 0
107@setvar! UseCurePotion 0
108@setvar! ChivAbilityCd 31000
109@setvar! PotionCd 10000
110@setvar! TimeBetweenChivAbility 300
111@setvar! SongBuffDelay 11000
112
113
114#*****************************************************
115#  End of Script Variables
116#***************************************************** 
117
118
119
120######################################################
121# End of script Setup
122######################################################    
123######################################################
124# Beginning of Main Loop
125######################################################
126
127
128#*****************************************************
129#  Setup of Main Loop
130#*****************************************************  
131hotkey 'Target Closest Non-Friendly Monster'
132
133if insysmsg "No one matching that was found on your screen"
134    @setvar CurrentTarget 0
135    overhead "[*** NO CREATURE ***]" 88
136else
137
138	@setvar LastTarget CurrentTarget
139    @setvar CurrentTarget lasttarget 
140
141    clearsysmsg
142    
143    #clean the cooldowns
144    
145    if LastTarget != CurrentTarget
146	    cooldown "Pacified" 0
147    	cooldown "Discorded" 0
148    endif
149#*****************************************************
150#  end of Setup of Main Loop
151#*****************************************************  
152#*****************************************************
153#  Main Loop
154#*****************************************************  
155    
156   	while not dead CurrentTarget and StopTheLoop = 0
157   	
158 	
159   		if not timerexists "FindTarget"
160   			createtimer "FindTarget"
161   			settimer "FindTarget" FindTargetRefresh
162   		endif
163   		
164   		if timer "FindTarget" >= FindTargetRefresh
165   			attack CurrentTarget
166		    overhead "● ▼▼ HERE ▼▼ ●" 88 CurrentTarget	
167       		attack CurrentTarget
168       		settimer "FindTarget" 0
169		endif
170   		
171		getlabel CurrentTarget descTarget
172
173#*****************************************************
174#  Start of Survival Loop
175#*****************************************************
176
177		if paralyzed and EnableParalyzePouch = 1
178			if findtype "pouch" backpack 38
179				yell "[pouch"
180				wait minimumWaitForPing
181			endif			
182		endif
183		
184		if EnableNobleSacrifice = 1
185			
186			if hits <= HpNobleSacrifice and skill "Chivalry" >= 80 and not cooldown "Noble Sacrifice" and not cooldown "Heal Prevented" and not cooldown "Chivalry Ability CD" 
187				yell "[NobleSacrifice"
188				
189				if not insysmsg "You do not have enough holy symbols for that ability"
190					waitfortarget 500
191					target 'self'
192					wait minimumWaitForPing	
193					cooldown "Heal Prevented" 5000
194					cooldown "Noble Sacrifice" ChivAbilityCd
195					cooldown "Chivalry Ability CD" TimeBetweenChivAbility
196				endif
197					
198			endif
199		endif
200	
201		if EnableHolyLight = 1	
202			if hits <= HpHolyLight and skill "Chivalry" >= 95 and not cooldown "Holy Light" and not cooldown "Heal Prevented" and not cooldown "Chivalry Ability CD"
203				yell "[HolyLight"
204				wait minimumWaitForPing		
205				cooldown "Holy Light" ChivAbilityCd		
206				cooldown "Chivalry Ability CD" TimeBetweenChivAbility
207			endif
208		endif
209		
210		
211		#check for both cure and heal potion to not remove the weapons 2 times.
212		if EnableHealPotion = 1
213			if hits <= HpHealPotion and not cooldown "Heal Prevented" and not cooldown "Healing Potion"
214				@setvar! UseHealPotion 1
215			else
216				@setvar! UseCurePotion 0
217			endif
218		endif
219		
220		if EnableCurePotion = 1
221			if hits <= HpCurePotion and not cooldown "Cure Potion" and poisoned
222				@setvar! UseCurePotion 1
223			else
224				@setvar! UseCurePotion 0
225			endif
226		endif
227		
228		if EnableRefreshPotion = 1
229			if stam <= StamRefreshPotion and not cooldown "Refresh Potion"
230				@setvar! UseRefreshPotion 1
231			else
232				@setvar! UseRefreshPotion 0
233			endif
234		endif
235		
236		#stole this part from the AutoDexxer Jasowns script
237		#https://outlands.uorazorscripts.com/ultimate-dexxer
238		
239		if UseCurePotion = 1 or UseHealPotion = 1 or UseRefreshPotion = 1
240			if skill "Alchemy" >= 80
241				@setvar! jaseCanDrinkPotion 1
242			else
243				if not findlayer self lefthand and not findlayer self righthand
244					@setvar! jaseCanDrinkPotion 1
245				else
246					if findlayer self lefthand as myLefthand
247						@setvar! jaseLeftHand myLefthand
248					endif
249					if findlayer self righthand as myRightHand
250						@setvar! jaseRightHand myRightHand
251					endif 
252					if not lhandempty 
253						if not rhandempty 
254							@setvar! jaseCanDrinkPotion 0
255						else
256							// handle two handed weapons
257							getlabel jaseLeftHand desc
258							if skill "Swordsmanship" > 0
259							   if "axe" in desc or "bardiche" in desc or "halberd" in desc
260								    @setvar! jaseCanDrinkPotion 0
261								    @setvar! needTwoHandSwap 1
262								else   
263								    @setvar! jaseCanDrinkPotion 1
264								endif
265							elseif skill "Mace Fighting" > 0
266								if "staff" in desc or "crook" in desc or "war hammer" in desc
267								    @setvar! jaseCanDrinkPotion 0
268								    @setvar! needTwoHandSwap 1
269								else   
270								    @setvar! jaseCanDrinkPotion 1
271								endif
272							elseif skill "Fencing" > 0
273								if "spear" in desc or "pitchfork" in desc
274								    @setvar! jaseCanDrinkPotion 0
275								    @setvar! needTwoHandSwap 1
276								else   
277								    @setvar! jaseCanDrinkPotion 1
278								endif
279							elseif skill "Archery" > 0
280								if "bow" in desc or "heavy crossbow" in desc
281								    @setvar! jaseCanDrinkPotion 0
282								    @setvar! needTwoHandSwap 1
283								else   
284								    @setvar! jaseCanDrinkPotion 1
285								endif
286							elseif skill "Wrestling" > 0
287								@setvar! jaseCanDrinkPotion 1
288							endif  
289						endif
290					endif
291					if not rhandempty 
292						if lhandempty 
293							@setvar! jaseCanDrinkPotion 1
294						else
295							@setvar! needShieldSwap 1
296						endif
297					endif
298				endif
299			endif
300		endif
301		
302		if jaseCanDrinkPotion = 1
303			// do nothing
304		else
305			if needTwoHandSwap = 1
306				if skill "Swordsmanship" > 0 and findtype "cutlass|broadsword|scimitar|viking sword|longsword|katana" backpack as item
307					dclick item
308					wait minimumWaitForPing
309				elseif skill "Mace Fighting" > 0 and findtype "maul|war axe|war mace|mace|hammer pick|club" backpack as item
310					dclick item
311					wait minimumWaitForPing
312				elseif skill "Fencing" > 0 and findtype "kryss|war fork" backpack as item
313					dclick item
314					wait minimumWaitForPing
315				elseif skill "Archery" > 0 and findtype "crossbow" backpack as item
316					dclick item
317					wait minimumWaitForPing
318				else
319					hotkey 'Arm/Disarm Left Hand'    
320					wait minimumWaitForPing
321				endif
322				@setvar! jaseCanDrinkPotion 1
323			elseif needShieldSwap = 1
324				overhead "we should be disarming left hand"
325				while not lhandempty
326					hotkey 'Arm/Disarm Left Hand'
327					wait minimumWaitForPingUnequipping
328					while queued
329						wait 100
330					endwhile
331				endwhile
332				setvar! jaseCanDrinkPotion 1
333			endif
334		endif
335
336		if jaseCanDrinkPotion = 1
337			if UseHealPotion = 1
338				if findtype "Yellow Potion" backpack as jotion
339					overhead "[Drinking Heal Potion]" 34
340					dclick jotion
341					wait minimumWaitForPing
342					cooldown "Healing Potion" PotionCd
343				else
344					overhead "No Heal potion found!" 34
345				endif
346				@setvar! UseHealPotion 0
347			endif
348			
349			if UseCurePotion = 1
350				if findtype "Orange Potion" backpack as jotion
351					overhead "[Drinking Cure Potion]" 34
352					dclick jotion
353					wait minimumWaitForPing
354					cooldown "Cure Potion" PotionCd
355				else
356					overhead "No Cure potion found!" 34
357				endif
358				@setvar! UseCurePotion 0
359			endif
360			
361			if UseRefreshPotion = 1
362				if findtype "Red Potion" backpack as jotion
363					overhead "[Drinking Refresh Potion]" 34
364					dclick jotion
365					wait minimumWaitForPing
366					cooldown "Refresh Potion" PotionCd
367				endif
368				@setvar! UseRefreshPotion 0
369			endif
370			
371			if needTwoHandSwap = 1
372				dclick jaseLeftHand
373				wait minimumWaitForPing
374			elseif needShieldSwap = 1
375				hotkey 'Arm/Disarm Left Hand'
376				wait minimumWaitForPingUnequipping
377			endif
378		endif
379		
380		
381		if EnableCleanseByFire = 1
382
383			if poisoned and not cooldown "Cleanse By Fire" and not cooldown "Chivalry Ability CD"
384				yell "[CleanseByFire"
385				wait minimumWaitForPing
386				
387				if not insysmsg "You do not have enough holy symbols for that ability"
388					cooldown "Cleanse By Fire" ChivAbilityCd
389				endif
390			endif
391		endif
392		
393		if EnableCloseWounds = 1
394			
395			if findbuff "bleed" or findbuff "disease"
396				if skill "chivalry" >= 70 and not cooldown "Close Wounds" and not cooldown "Chivalry Ability CD" 
397					yell "[CloseWounds"
398					wait minimumWaitForPing 
399					
400					if not insysmsg "You do not have enough holy symbols for that ability"
401						cooldown "Close Wounds" ChivAbilityCd
402						cooldown "Chivalry Ability CD" TimeBetweenChivAbility
403					endif
404				endif
405			endif
406		endif
407		
408	
409#*****************************************************
410#  End of Survival Loop
411#*****************************************************
412
413		
414#*****************************************************
415#  Start of PeaceMaking
416#*****************************************************  		
417		if not cooldown "Peacemaking" and not cooldown "Musicianship" and not cooldown "Pacified"
418		
419			if "pacified" in descTarget and cooldown "Pacified"
420				#do nothing
421			else
422				skill "Peacemaking"
423				waitfortarget 500
424				if insysmsg "What instrument shall you play?"
425				    if findtype "bamboo flute" backpack as inny
426				        target inny
427				    elseif findtype "tambourine" backpack as inny
428				        target inny
429				    elseif findtype "drum" backpack as inny
430				        target inny
431				    elseif findtype "lute" backpack as inny
432				        target inny
433				    elseif findtype "lap harp" backpack as inny
434				        target inny
435				    else 
436				        #Cause an error message
437				        target CurrentTarget
438				        overhead "No instrument in backpack"
439				        
440				    endif
441				endif
442		    
443				if not insysmsg "This is not a musical instrument"
444				    waitfortarget 500
445				    target CurrentTarget
446				    wait minimumWaitForPing
447				endif
448
449				if insysmsg "Target cannot be seen." and StopWhenTargetCannotBeSeen = 1
450					#stop the script
451					@setvar! StopTheLoop 1
452				break
453				
454				endif				
455				if insysmsg "You play successfully, pacifying your target"
456					cooldown "Pacified" PeacemakingReapply
457					cooldown "Musicianship" 5000
458					cooldown "Peacemaking" 11000
459				endif
460				
461				if insysmsg "you fail to pacify your opponent"
462					cooldown "Musicianship" 5000
463				endif
464				
465		    endif
466		endif
467#*****************************************************
468#  End of Peacemaking
469#*****************************************************  		
470#*****************************************************
471#  Start Discordance
472#*****************************************************  
473
474		if not cooldown "Discordance" and not cooldown "Musicianship" and not cooldown "Discorded"
475			
476			if "discord" in descTarget and cooldown "Discorded"
477				#do nothing
478			else
479			
480				skill "Discordance"
481				waitfortarget 500
482				if insysmsg "What instrument shall you play?"
483				    if findtype "bamboo flute" backpack as inny
484				        target inny
485				    elseif findtype "tambourine" backpack as inny
486				        target inny
487				    elseif findtype "drum" backpack as inny
488				        target inny
489				    elseif findtype "lute" backpack as inny
490				        target inny
491				    elseif findtype "lap harp" backpack as inny
492				        target inny
493				    else 
494				        #Cause an error message
495				        target CurrentTarget
496				        overhead "No instrument in backpack"
497				        
498				    endif
499				endif
500				
501				if not insysmsg "This is not a musical instrument"
502				    waitfortarget 500
503				    target CurrentTarget
504				    wait minimumWaitForPing
505				endif
506				
507				if insysmsg "Target cannot be seen." and StopWhenTargetCannotBeSeen = 1
508					#stop the script
509					@setvar! StopTheLoop 1
510				endif
511				
512				if insysmsg "You play successfully, disrupting your opponent"
513					cooldown "Discorded" DiscordanceReapply
514					cooldown "Musicianship" 5000
515					cooldown "Discordance" 11000
516				endif
517				
518				if insysmsg "You fail to discord your opponent"
519					cooldown "Musicianship" 5000
520				endif
521			endif
522		endif
523#*****************************************************
524#  End of Discordance
525#*****************************************************  		   
526
527#*****************************************************
528#  Chiv Abilities
529#***************************************************** 
530
531
532		if EnableDivineFury = 1 
533			if not cooldown "Divine Fury" and not cooldown "Chivalry Ability CD"
534				yell "[DivineFury"
535				wait minimumWaitForPing
536				
537				if not insysmsg "You do not have enough holy symbols for that ability" and not insysmsg "You must wait a moment before attempting to use another Chivalry ability."
538					cooldown "Divine Fury" ChivAbilityCd
539					cooldown "Chivalry Ability CD" 500
540				endif
541			endif
542		endif
543		
544		if EnableEnemyOfOne = 1 
545			if not cooldown "Enemy Of One" and not cooldown "Chivalry Ability CD"
546				yell "[EnemyOfOne"
547				wait minimumWaitForPing
548				
549				if not insysmsg "You do not have enough holy symbols for that ability" and not insysmsg "You must wait a moment before attempting to use another Chivalry ability."
550					cooldown "Enemy Of One" ChivAbilityCd
551					cooldown "Chivalry Ability CD" 500
552				endif
553			endif
554		endif
555#*****************************************************
556#  end of Chiv Abilities
557#*****************************************************
558
559#*****************************************************
560#  End of Musicianship Buff
561#*****************************************************
562
563		if EnablePeacemakingBuff = 1 and not cooldown "Song Of Peacemaking" and not cooldown "Musicianship" and not cooldown "Peacemaking" and not cooldown "Song Buff Delay"
564			skill "Peacemaking"
565			waitfortarget 500
566			if insysmsg "What instrument shall you play?"
567			    if findtype "bamboo flute" backpack as inny
568			        target inny
569			    elseif findtype "tambourine" backpack as inny
570			        target inny
571			    elseif findtype "drum" backpack as inny
572			        target inny
573			    elseif findtype "lute" backpack as inny
574			        target inny
575			    elseif findtype "lap harp" backpack as inny
576			        target inny
577			    else 
578			        #Cause an error message
579			        target CurrentTarget
580			        overhead "No instrument in backpack"
581			        
582			    endif
583			endif
584	    
585			if not insysmsg "This is not a musical instrument"
586			    waitfortarget 500
587			    target backpack 
588			    wait minimumWaitForPing
589			    cooldown "Song Of Peacemaking" SongReapply
590			    cooldown "Song Buff Delay" SongBuffDelay
591			    #no need to refresh the musicianship cooldown. 
592			endif
593		endif
594		
595		if EnableDiscordanceBuff = 1 and not cooldown "Song Of Discordance" and not cooldown "Musicianship" and not cooldown "Discordance" and not cooldown "Song Buff Delay"
596			skill "Discordance"
597			waitfortarget 500
598			if insysmsg "What instrument shall you play?"
599			    if findtype "bamboo flute" backpack as inny
600			        target inny
601			    elseif findtype "tambourine" backpack as inny
602			        target inny
603			    elseif findtype "drum" backpack as inny
604			        target inny
605			    elseif findtype "lute" backpack as inny
606			        target inny
607			    elseif findtype "lap harp" backpack as inny
608			        target inny
609			    else 
610			        #Cause an error message
611			        target CurrentTarget
612			        overhead "No instrument in backpack"
613			    endif
614			endif
615	    
616			if not insysmsg "This is not a musical instrument"
617			    waitfortarget 500
618			    target backpack 
619			    wait minimumWaitForPing
620   			    cooldown "Song Of Discordance" SongReapply
621   			    cooldown "Song Buff Delay" SongBuffDelay
622			    #no need to refresh the musicianship cooldown. 
623			endif
624		endif
625#*****************************************************
626#  End of Musicianship Buff
627#*****************************************************
628
629#*****************************************************
630#  World Save
631#*****************************************************
632
633		if insysmsg "world is saving"
634			if not timerexists "WorldSaveTimer"
635				createtimer "WorldSaveTimer"
636			endif
637			
638			settimer "WorldSaveTimer" 0
639			
640			#Wait a maximum of 5 seconds in this loop, or when the save complete message pops			
641			while timer "WorldSaveTimer" < 5000
642				if insysmsg "save complete"
643					break
644				endif
645			endwhile
646			
647			overhead "Resuming Script..." 88
648		endif   
649		
650#*****************************************************
651#  end of WorldSave
652#*****************************************************		
653		    
654    endwhile
655    
656#*****************************************************
657#  End of Main Loop
658#*****************************************************  
659	overhead "[*** TARGET LOST ***]"
660######################################################
661# End of Main Loop
662######################################################    
663endif
664
665######################################################
666# Beginning of Clean Up
667######################################################
668
669
670#Clean-up
671
672#clean the cooldowns
673cooldown "Pacified" 0
674cooldown "Discorded" 0
675
676
677#carve your kill
678
679wait 500
680if AutoCarving = 1
681
682	if findtype 'Elven SpellBlade' backpack
683		if findtype "corpse" ground -1 -1 2 as rip
684    		overhead "[Skinning]"		
685    		dclicktype "Elven Spellblade"
686    		waitfortarget 1500
687    		target 'self'
688    		
689    		@ignore rip
690		endif
691	else
692		overhead "[No Skinning Knife]" 88
693	endif
694	
695endif
696
697######################################################
698# End of Cleanup
699######################################################
700    
701
702
703
704