Page 1 of 2

Basic Combat Script

Posted: Wed Aug 09, 2006 6:58 am
by aChallenged1
This is my Basic Combat Script. I have not had a problem with this version working, so far so am posting it as complete. I will see what I can do to add on to it, but it really is just a basic script.

It does require that you create a hotkey to start it with the command being:
/runscript bcs ${Target.ID}

An example of my hotkey for when I group with my two toons with a puller:
Page10Button1Name=BCS
Page10Button1Color=13
Page10Button1Line1=/relay is1 EQExecute /assist ToonName
Page10Button1Line2=/relay is2 EQExecute /assist ToonName
Page10Button1Line3=/pause 5
Page10Button1Line4=/relay is1 runscript bcs ${Target.ID}
Page10Button1Line5=/relay is2 runscript bcs ${Target.ID}


Suggetions, additions, help are all appriciated.

And now, the script:

Code: Select all

;basic combat script

#include spell_routines.inc
variable int CurMobID

function main(int CurTarget)
{
AddTrigger woreoff "Your @p1@ spell has worn off of @p2@"
echo ***Basic Combat Script Now Running***

CurMobID:Set[${CurTarget}]
wait 15 ${Target(exists)}
Echo ${Target.CleanName} is in my sights

	if ${Me.Pet(exists)}
		EQExecute /pet attack
		
	if ${Me.PctMana}>50
		{
		call dots ${CurMobFull}
		}
	
while "${Target(exists)}"
	{
		if ${QueuedCommands}
			ExecuteQueued
			
			wait 5
	}
}

function dots()
{
if ${Me.Class.ShortName.Equal[SHM]}
	{
	;slow
	call Cast "Drowsy" GEM1 1
	relay all echo Attempting to slow ${Target.CleanName} with Drowsy
	wait 2
	;dot
	relay all echo Attempting to DOT ${Target.CleanName} with Tainted Breath
	call Cast "Tainted Breath" GEM2 1
	stick 12
		EQExecute /attack on
	}

if ${Me.Class.ShortName.Equal[NEC]}
	{
	target ${CurMobID}
	;Snare
	relay all echo Attempting to snare ${Target.CleanName} with Clinging Darkness
	call Cast "Clinging Darkness" GEM1 1
	;dot
	relay all echo Attempting to DOT ${Target.CleanName} with Poison Bolt
	call Cast "Poison Bolt" GEM2 1
	}
	
if ${Me.Class.ShortName.Equal[SHD]}
	{

	}
	
if ${Me.Class.ShortName.Equal[MAG]}
	{
		relay all echo Attempting to nuke ${Target.CleanName} with Burn
		call Cast "Burn" GEM1 1
		relay all echo Attempting to nuke ${Target.CleanName} with Shock of Blades
		call Cast "Shock of Blades" GEM2 1
	}
	if ${Me.Class.ShortName.Equal[WIZ]}
	{
	
	}
}

function woreoff(string Line,... params)
{
	if ${Me.PctMana}>40 && ${Target.PctHPs}>30
		call Cast "@p1@"
}

function atexit()
{
	EQExecute /attack off
	echo Basic Combat Script Closed
}

Posted: Thu Aug 10, 2006 9:09 pm
by aChallenged1
This is the most current version. It works, so far.

Code: Select all

;basic combat script

#include spell_routines.inc
variable int CurMobID

function main(int CurTarget)
{
	AddTrigger woreoff "Your @p1@ spell has worn off of @p2@"
	echo ***Basic Combat Script Now Running***

	CurMobID:Set[${CurTarget}]
	;	target ${CurMobID}
	wait 15 ${Target(exists)}

	if ${Target(exists} && ${Target.ID}==${CurMobID}
	Echo ${Target.CleanName} is in my sights

	call fightclub

}

function fightclub()
{
	switch ${Me.Class.ShortName}
	{
	case SHM
		Me:Stand
		if ${Target.ID} != ${CurMobID}
		target ${CurMobID}

		if ${Me.Pet(exists)}
		EQExecute /pet attack
		
		if ${Me.PctMana} > 45
		{
			call debuffs
			;dot
			if ${Me.PctMana} > 30
			EQExecute /gs Attempting to DOT ${Target.CleanName} with Tainted Breath
			call Cast "Tainted Breath"
		}
		stick 10
		EQExecute /attack on
		while "${Target(exists)}"
		{
			if ${QueuedCommands}
			ExecuteQueued

			wait 5
		}
		BREAK

	case NEC
		if ${Target.ID} != ${CurMobID}
		target ${CurMobID}

		if ${Me.Pet(exists)}
		EQExecute /pet attack
		if ${Me.PctMana} > 45
		{
			call debuffs
			;Snare
			EQExecute /gs Attempting to snare ${Target.CleanName} with Clinging Darkness
			call Cast "Clinging Darkness"
			;dot
			EQExecute /gs Attempting to DOT ${Target.CleanName} with Poison Bolt
			call Cast "Poison Bolt"
		}
		while "${Target(exists)}"
		{
			if ${QueuedCommands}
			ExecuteQueued
			
			if ${Me.PctHp} < 70%
			call TapHeals
			
			wait 5
		}
		BREAK

	case SHD
		if ${Target.ID} != ${CurMobID}
		target ${CurMobID}

		if ${Me.Pet(exists)}
		EQExecute /pet attack
		if ${Me.PctMana} > 45
		{
			call debuffs
			;Snare
			EQExecute /gs Attempting to DOT ${Target.CleanName} with Festering Darkness
			call Cast "Festering Darkness"
			;dot
			EQExecute /gs Attempting to DOT ${Target.CleanName} with Ignite Blood
			call Cast "Ignite Blood"
		}
		stick 10
		EQExecute /attack on
		while "${Target(exists)}"
		{
			if ${QueuedCommands}
			ExecuteQueued
			call TapHeals
			wait 5
		}
		BREAK

	case MAG
		if ${Target.ID} != ${CurMobID}
		target ${CurMobID}

		if ${Me.Pet(exists)}
		EQExecute /pet attack

		if ${Me.PctMana} > 45
		{
			EQExecute /gs Attempting to nuke ${Target.CleanName} with Burn
			call Cast "Burn"
			EQExecute /gs Attempting to nuke ${Target.CleanName} with Shock of Blades
			call Cast "Shock of Blades"
		}
		while "${Target(exists)}"
		{
			if ${QueuedCommands}
			ExecuteQueued
			wait 5
		}
		BREAK

	case WIZ
		if ${Target.ID} != ${CurMobID}
		target ${CurMobID}
		if ${Me.PctMana} > 45
		{
			; Nukes to be added
		}
		while "${Target(exists)}"
		{
			if ${QueuedCommands}
			ExecuteQueued
			wait 5
		}
		BREAK
	}
}

function woreoff(string Line,... params)
{
	if ${Me.PctMana}>40 && ${Target.PctHP}>30 && ( ${@p1@} == (${Drowsy} || ${Clinging Darkness}) )
	call Cast "@p1@"
}

function debuffs()
{
	variable bool DidDoDebuff
	switch ${Me.Class.ShortName}
	{
	case SHM
		echo ${DidDoDebuff}
		if ${Me.PctMana} > 45 && !${DidDoDebuff}
		{
			;slow
			call Cast "Drowsy"
			EQExecute /gs Attempting to slow ${Target.CleanName} with Drowsy
			DidDoDebuff:Set[TRUE]
		}
		BREAK

	case NEC
		if ${Me.PctMana} > 70 && !${DidDoDebuff}
		{
			;debuff
			call Cast "Scent of Dusk"
			EQExecute /gs Attempting to debuff ${Target.CleanName} with Scent of Dusk
			DidDoDebuff:Set[TRUE]
		}
		BREAK

	case SHD
		if ${Me.PctMana} > 45&& !${DidDoDebuff}
		{
			;debuff1
			relay all echo Attempting to DOT ${Target.CleanName} with Aura of pain
			call Cast "Aura of pain"
			;debuff2
			relay all echo Attempting to DOT ${Target.CleanName} with Aura of hate
			call Cast "Aura of hate"
			DidDoDebuff:Set[TRUE]
		}
		BREAK
	}
}

function TapHeals()
{
	variable bool Tapped

	switch ${Me.Class.ShortName}
	{
	case SHD
		;Lifetap1
		if ${Me.PctHP} < 70 && !${Tapped}
		relay all echo Attempting to DOT ${Target.CleanName} with Touch of Inruku
		call Cast "Touch of Inruku"
		;Lifetap2
		if ${Me.PctHP} < 50 && !${Tapped}
		relay all echo Attempting to DOT ${Target.CleanName} with Touch of Volatis
		call Cast "Touch of Volatis"
		Tapped:Set[TRUE]
		BREAK

	case NEC
		;Lifetap1
		if ${Me.PctHP} < 70 && !${Tapped}
		relay all echo Attempting to TAP ${Target.CleanName} to heal self
		call Cast "Leach"
		Tapped:Set[TRUE]
		BREAK
	}
}


function atexit()
{
	EQExecute /attack off
	echo Basic Combat Script Closed
	;I expect that my Casters have not moved so am simply sitting them down
	switch ${Me.Class.ShortName}
	{
	case NEC
	case WIZ
	case MAG
		if !${Me.Sitting}
			EQExecute /sit
	}
}

Posted: Thu Aug 10, 2006 10:42 pm
by aChallenged1
The above works for shammy and necro, so far. The version up there now was just put there, I had to edit it because of mistakes I found while testing.

Input and suggestions are appriciated. Eventually, once I get the basics ironed out, I'm hoping to learn how to do LavishSettings and create individual character files, rather than using all that extra coding.

Posted: Fri Aug 11, 2006 11:29 am
by aChallenged1
Ok, another update. I've been working out some bugs that I find as I go along, plus I'm trying to add new stuff in.

Code: Select all

;basic combat script

#include spell_routines.inc
variable int CurMobID

function main(int CurTarget)
{
	echo ***Basic Combat Script Now Running***

	CurMobID:Set[${CurTarget}]
	wait 15 ${Target(exists)}

	if ${Target(exists} && ${Target.ID}==${CurMobID}
	Echo ${Target.CleanName} is in my sights

	call fightclub
}

function fightclub()
{
	variable bool SuccessfulCast
	AddTrigger woreoff "Your @p1@ spell has worn off of @p2@"
	AddTrigger ResistCD "@p1@Your target resisted the Clining Darkness Spell."

	switch ${Me.Class.ShortName}
	{
	case SHM
		Me:Stand
		if ${Target.ID} != ${CurMobID}
		target ${CurMobID}

		if ${Me.Pet(exists)}
		EQExecute /pet attack

		if ${Me.PctMana} > 45
		{
			call debuffs
			;dot
			if ${Me.PctMana} > 30
			call Cast "Tainted Breath"
		}
		stick 10
		EQExecute /attack on
		while "${Target(exists)}"
		{
			if ${QueuedCommands}
			ExecuteQueued

			wait 5
		}
		BREAK

	case NEC
		if ${Target.ID} != ${CurMobID}
		target ${CurMobID}

		if ${Me.Pet(exists)}
		EQExecute /pet attack
		if ${Me.PctMana} > 45
		{
			call debuffs

			;dot
			call Cast "Poison Bolt"
			call Cast "Heat Blood"
		}
		while "${Target(exists)}"
		{
			if ${QueuedCommands}
			ExecuteQueued

			if ${Me.PctHPs} < 70%
			call TapHeals

			;Snare

			if ${Target.Body.Name.Equal[Humanoid]} && ${Target.PctHPs} <= 30
			{
				call Cast "Clinging Darkness"
				Me:Sit
				endscript bcs
			}

			wait 5
		}
		BREAK

	case SHD
		if ${Target.ID} != ${CurMobID}
		target ${CurMobID}

		if ${Me.Pet(exists)}
		EQExecute /pet attack
		if ${Me.PctMana} > 45
		{
			call debuffs
			;Snare
			EQExecute /gs Attempting to DOT ${Target.CleanName} with Festering Darkness
			call Cast "Festering Darkness"
			;dot
			EQExecute /gs Attempting to DOT ${Target.CleanName} with Ignite Blood
			call Cast "Ignite Blood"
		}
		stick 10
		EQExecute /attack on
		while "${Target(exists)}"
		{
			if ${QueuedCommands}
			ExecuteQueued
			call TapHeals
			wait 5
		}
		BREAK

	case MAG
		if ${Target.ID} != ${CurMobID}
		target ${CurMobID}

		if ${Me.Pet(exists)}
		EQExecute /pet attack

		if ${Me.PctMana} > 45
		{
			EQExecute /gs Attempting to nuke ${Target.CleanName} with Burn
			call Cast "Burn"
			EQExecute /gs Attempting to nuke ${Target.CleanName} with Shock of Blades
			call Cast "Shock of Blades"
		}
		while "${Target(exists)}"
		{
			if ${QueuedCommands}
			ExecuteQueued
			wait 5
		}
		BREAK

	case WIZ
		if ${Target.ID} != ${CurMobID}
		target ${CurMobID}
		if ${Me.PctMana} > 45
		{
			; Nukes to be added
		}
		while "${Target(exists)}"
		{
			if ${QueuedCommands}
			ExecuteQueued
			wait 5
		}
		BREAK
	}
}

function woreoff(string Line,... params)
{
	if ${Me.PctMana}>40 && ${Target.PctHPs}>30 && ( ${@p1@} == ${Drowsy}
	call Cast "@p1@"
}

function debuffs()
{
	variable bool DidDoDebuff
	switch ${Me.Class.ShortName}
	{
	case SHM
		echo ${DidDoDebuff}
		if ${Me.PctMana} > 45 && !${DidDoDebuff}
		{
			;slow
			call Cast "Drowsy"
			DidDoDebuff:Set[TRUE]
		}
		BREAK

	case NEC
		if ${Me.PctMana} > 70 && !${DidDoDebuff}
		{
			;debuff
			call Cast "Scent of Dusk"
			DidDoDebuff:Set[TRUE]
		}
		BREAK

	case SHD
		if ${Me.PctMana} > 45&& !${DidDoDebuff}
		{
			;debuff1
			call Cast "Aura of pain"
			;debuff2
			call Cast "Aura of hate"
			DidDoDebuff:Set[TRUE]
		}
		BREAK
	}
}

function resistCD()
{
	SuccessfulCast:Set[FALSE]
}

function TapHeals()
{
	variable bool Tapped

	switch ${Me.Class.ShortName}
	{
	case SHD
		;Lifetap1
		if ${Me.PctHPs} < 70 && !${Tapped}
		call Cast "Touch of Inruku"
		;Lifetap2
		if ${Me.PctHPs} < 50 && !${Tapped}
		call Cast "Touch of Volatis"
		Tapped:Set[TRUE]
		BREAK

	case NEC
		;Lifetap1
		if ${Me.PctHPs} < 70 && !${Tapped}
		{
			EQExecute /gs Attempting to TAP ${Target.CleanName} to heal self
			call Cast "Leach"
			Tapped:Set[TRUE]
		}
		BREAK
	}
}


function atexit()
{
	EQExecute /attack off
	echo Basic Combat Script Closed
	;I expect that my Casters have not moved so am simply sitting them down
	switch ${Me.Class.ShortName}
	{
	case NEC
	case WIZ
	case MAG
		if !${Me.Sitting}
		EQExecute /sit
	}
}

Posted: Fri Aug 11, 2006 3:00 pm
by mekaniak
function fightclub, thats cute :-P Keep up the good work.

Re: Basic Combat Script

Posted: Thu Jul 24, 2025 7:48 pm
by xyilla

Re: Basic Combat Script

Posted: Thu Jul 24, 2025 7:49 pm
by xyilla

Re: Basic Combat Script

Posted: Thu Jul 24, 2025 7:50 pm
by xyilla

Re: Basic Combat Script

Posted: Thu Jul 24, 2025 7:51 pm
by xyilla

Re: Basic Combat Script

Posted: Thu Jul 24, 2025 7:52 pm
by xyilla

Re: Basic Combat Script

Posted: Thu Jul 24, 2025 7:53 pm
by xyilla

Re: Basic Combat Script

Posted: Thu Jul 24, 2025 9:06 pm
by xyilla

Re: Basic Combat Script

Posted: Thu Jul 24, 2025 9:08 pm
by xyilla

Re: Basic Combat Script

Posted: Thu Jul 24, 2025 9:45 pm
by xyilla

Re: Basic Combat Script

Posted: Thu Jul 24, 2025 9:46 pm
by xyilla