Warden Script

bbrown5

Active Member
I am looking to update the warden script to include the remyth and fix a couple things wrong with it about the rezzing routine and updating the group cures and such.. I have question about a function in there...

The function CastSpellRange has a few arguments that are applied to it and not sure how they are suppose to work actually...

the Warden has 3 single target rezzes and one group rez spell ids (300-303)

and I see a few calls in the warden script for those spells but dont seem consistent

for example
Code:
call CastSpellRange 300 303 1 0 ${Me.Group[${temphl}].ID}
does that mean that it will start with ID 300 and if not ready itterate to the next one until spell id 303 is reached?

I saw this from Bob_the_builder inquis script and was going to plagerise it if no objections... since it makes the rezing smarter by determining the priority of which rez should be cast unless I misunderstood it


Code:
if ${rezcount}>1 && ${Me.Ability[${SpellType[301]}].IsReady}
			call CastSpellRange 301 0 1 1 ${Me.Group[${deadperson}].ToActor.ID}
		elseif ${rezcount}==1 && ${Me.Ability[${SpellType[300]}].IsReady}
			call CastSpellRange 300 0 1 1 ${Me.Group[${deadperson}].ToActor.ID}


anyways any help would be appreciated and if I can get it to work better I will add it here for people to check it out


thanks

BBrown
 

bob_the_builder

Well-Known Member
You can take anything you want from the scripts that I have posted. Honestly most are copy/paste from other scripts.

Anyways the first CastSpellRange will cast the first spell 300 and if it isn't ready will cast the second 303.

I like to use if / else commands so either of those two you posted will work.

I had / having some hard times lately so I only have 2 accounts active (Coe and a Wiz) so I haven't tested or tried the Inq script now for several months. The logic is sound though so it should work. Basically it checks the number of dead people in group and + the count, if the count is >1 then it casts the group or raid rez otherwise it casts the single.

Feel free though to post anything here I'm sure myself or others can look at it to determine if it 'should' work.
 

bbrown5

Active Member
ok thanks for the explanation.. so then the two extra arguments ( 1 0 ) are they for spell ids as well or they for something else?

Code:
call CastSpellRange 300 303 1 0 ${Me.Group[${temphl}].ID}
since there are 3 single target and one group rez for the wardens ( not sure if other healers have the same) I would think the if elseif would be best to use unless a case would be better lol...



also I added this piece to the Warden script

Code:
;use Remyth if avail
	if $({Me.Ability[Infuriating Thorns](exists)}) 
		if ${Me.Ability[${SpellType[401]}].IsReady}
			call CastSpellRange 401 0 0 0 ${healtarget}
		
	; Use Cyclone if Avail and MT is in  my group
		else
			if $({Me.Ability[Cyclone](exists)}) 
				if ${Me.Ability[${SpellType[400]}].IsReady} && ${MTInMyGroup}
					call CastSpellRange 400 0 0 0 ${healtarget}

where the two spells were added to the xml file with those IDs


your thoughts?

BBrown
 
Last edited:

bob_the_builder

Well-Known Member
The '1' and '0' are the second and third arguments for CastSpellRange.

Here check out this thread:

http://www.isxgames.com/forums/showthread.php?t=2644&highlight=CastSpellRange

You can also search for that function in EQ2bot.iss and find this:

Code:
function CastSpellRange(... Args)
{
	;; This format still works.
	;; function CastSpellRange(int start, int finish, int xvar1, int xvar2, uint TargetID, int notall, int refreshtimer, bool castwhilemoving, bool IgnoreMaintained, int CastSpellWhen, bool IgnoreIsReady)

	;; Notes:
	;; - IgnoreMaintained:  If TRUE, then the bot will cast the spell regardless of whether or not it is already being maintained (ie, DoTs)
	;; - If the parameters of this function are altered, then the corresponding function needs to be altered in: Illusionist.iss
	;;
	;;	CastSpellNow changed to CastSpellWhen
	;;	CastSpellWhen:
	;;		0 = Queue Spell
	;;		1 = Cast Immediately
	;;		2 = Cast When Current Queue Complete
	;;;;;;;
 

Hendrix

Well-Known Member
Anyways the first CastSpellRange will cast the first spell 300 and if it isn't ready will cast the second 303..
Just wanted to point out that if you have a CastSpellRange of 300 303 then it will try 300 first, if that is not up it will try 301, then 302, and finally 303. It casts a range, not just 2 spells. Now if you happen to not have spells 301 and 302 then yes, you are correct.
 

bbrown5

Active Member
Well I added the remyth spell and the AA line spell for cyclone for the wardens..
the infurating thorns worked like it was supposed to but had not have the chance to test the cyclone piece or not

here is the code I put in

Code:
if (${Me.Ability[Infuriating Thorns](exists)}) 
	{
		if ${Me.Ability[${SpellType[401]}].IsReady}
		{
			call CastSpellRange 401 0 0 0 ${healtarget}
		}	
	
	;Use Cyclone if Avail and MT is in  my group
		else
		{
			if (${Me.Ability[Cyclone](exists)}) 
			{
				if ${Me.Ability[${SpellType[400]}].IsReady} && ${MTInMyGroup}
				{
				call CastSpellRange 400 0 0 0 ${healtarget}
									}
			}
		}
	}
if you want to add these you will also need to add the spell names into the xml

which are

Code:
                  <Setting name="10,385">Tunare\'s Grace</Setting>
		<setting name="10,400">Cyclone</setting>
		<Setting name="10,401">Infuriating Thorns</Setting>

if anyone has any questions about it I can try to help you but it seems pretty straigh forward if anyone has any suggestions on it would be happy to hear any

thanks


I also incorporated the Druid AA group cure as well with major help from the fury script that pygar updated... but did not put that here it has a few bugs still nad trying to get some better logic for it..


BBrown
 
Top Bottom