- Joined
- Dec 15, 2009
- Messages
- 525
- Reaction score
- 31
- Points
- 28
Here is my way to automate this and I got this work flawlessly under my setup (already got the achievements one week ago.)
1st Step, Put these in your inc file
2nd Step, VERY IMPORTANT, your spell_routines.inc has the autostand function that prolly screwed your duck..
Search Duck in your spell_routines.inc, there should be 2 lines of it, change them into the following (add !${MustDuck} into the condition):
Line under Sub Cast,
Line under Sub WaitCast,
Save and run your macro, then good to go!
--------------------------------------------------------
I personally have a this cure structure running in my raid and it helped us to conquer many modern raids.
With this kind of structure, you don't need to actually target anything to gain the debuff information ( plus even you targetting some pc/npc you still can't get the song buff information anyway)
1st to build DanNet Observer from healer and update it every pulse:
2nd Step, in your healer's loop, add something like this,
3rd Step, now is time to cure,
To not interrupt your main heal line too often, you prolly will need to add this at the end of your heal logic by using “else /if”
Though there is a bug of DanNet, sometimes the observer seems got borked then you might got flag==1 even you don't have the debuff, in that case, just unload then reload the DanNet plugin ,and zone one time.
1st Step, Put these in your inc file
Code:
|--Group mission Events
#event KDDuck "The ice encrusted Avatar of War shouts that #1# must bend the knee!"
#event KDNoDuck "#*#The Avatar of War nods, accepting the subservience of those that gave it#*#"
|--Group Mission
Sub Event_KDDuck(string line,string dpeep)
/if (!${Defined[MustDuck]}) /declare MustDuck int outer 0
/if (${dpeep.Find[${Me.CleanName}]}&&!${Me.Ducking}) {
/if (${Me.Class.ShortName.Equal[BER]}) /zerk autostandonduck off
/keypress esc
/delay 10 !${Target.ID}
/keypress duck
/delay 3
/delay 10 ${Me.Ducking}
/varset MustDuck 1
/if (${Me.Ducking}) /gs I Ducked!
/delay 12s
}
/doevents flush KDDuck
/return
Sub Event_KDNoDuck
/if (!${Defined[MustDuck]}) /declare MustDuck int outer 0
/if (${Me.Ducking}) {
/keypress duck
/delay 3
/delay 10 !${Me.Ducking}
/varset MustDuck 0
/gs Standing Right Now!
/if (${Me.Class.ShortName.Equal[BER]}) /zerk autostandonduck on
}
/doevents flush KDNoDuck
/return
2nd Step, VERY IMPORTANT, your spell_routines.inc has the autostand function that prolly screwed your duck..
Search Duck in your spell_routines.inc, there should be 2 lines of it, change them into the following (add !${MustDuck} into the condition):
Line under Sub Cast,
Code:
/if (${Me.Ducking}&&!${MustDuck}) /keypress duck
Line under Sub WaitCast,
Code:
/if (${Me.State.Equal[DUCK]}&&!${MustDuck}) {
/varset castReturn CAST_CANCELLED
/stand
}
Save and run your macro, then good to go!
--------------------------------------------------------
I personally have a this cure structure running in my raid and it helped us to conquer many modern raids.
With this kind of structure, you don't need to actually target anything to gain the debuff information ( plus even you targetting some pc/npc you still can't get the song buff information anyway)
1st to build DanNet Observer from healer and update it every pulse:
Code:
Sub DeclareFlags
/if (!${Defined[tovdot1]}) /declare tovdot1 int outer 0
/if (!${Defined[tovdot2]}) /declare tovdot2 int outer 0
/if (!${Defined[tovdot3]}) /declare tovdot3 int outer 0
/if (!${Defined[tovdot4]}) /declare tovdot4 int outer 0
/if (!${Defined[tovdot5]}) /declare tovdot5 int outer 0
/if (!${Defined[grptovdot]}) /declare grptovdot int outer 0
/return
Sub HealerObserve
/call DeclareFlags
/declare i int local 1
/for i 1 to 5
/if (${DanNet.Peers.Find[${Group.Member[${i}].CleanName}]}) {
/if (!${DanNet[${Group.Member[${i}].CleanName}].Observe.Find[Restless Ice]}) /dobserve ${Group.Member[${i}].CleanName} -q "Me.Song[Restless Ice].ID" -o tovdot${i}
}
/varset tovdot${i} ${DanNet[${Group.Member[${i}].CleanName}].O["Me.Song[Restless Ice].ID"]}
/next i
/if (${tovdot1}||${tovdot2}||${tovdot3}||${tovdot4}||${tovdot5}) {
/if (${grptovdot}!=1) /varset grptovdot 1
} else {
/if (${grptovdot}!=0) /varset grptovdot 0
}
/return
2nd Step, in your healer's loop, add something like this,
Code:
/call HealerObserve
3rd Step, now is time to cure,
Code:
/if (${grptovdot}||${Me.Song[Restless Ice].ID}) /call Cure
To not interrupt your main heal line too often, you prolly will need to add this at the end of your heal logic by using “else /if”
Code:
else /if (${grptovdot}||${Me.Song[Restless Ice].ID}) {
/call Cure
}
Though there is a bug of DanNet, sometimes the observer seems got borked then you might got flag==1 even you don't have the debuff, in that case, just unload then reload the DanNet plugin ,and zone one time.
Last edited: