Tags
Tags can be applied all over the place; heals, dots, nukes, defenses, buffs, so on. They are in effect, pre-made conditions.
Some tags perform actions, others look for a situation, and some are very specific to a roll.
Not all tags apply to all situations. A little common sense should be used.
Tags are shared for all toons on that PC.
basics
Tags contain three parts: grouping, name, evaluation
- grouping is where the tag belongs like nukes, heals, dots, etc. - the name is just that, the name of the tag; panicheal, nocombat, inraid, onlytuesday - the evaluation is what you are checking for, the condition: ${Me.PctHps} <= 15
Using the above, we would end up with a tag like this: heal::panicheal::${Me.PctHps} <= 15
Groups are pre designed, users cannot edit them. Available groups are:
- heal, nuke, dot, burn, song, defense, buff, miscdps, item
Tags, there are a lot of pre-made tag names. You can make as many tags as you like. Users cannot edit the pre-made tags. A tag name can be applied to different groups.
You could have a heal::tacos that does one thing and a burn::tacos that does another thing.
Tags have three basic colors for easy identification:
- brown - tag markers and actions - green - built in tags with evaluations - cyan - tags and evaluations you create
/tag
To put all the above together, use the /tag command:
/tag heal panicheal "${Me.PctHps} <= 15"
/tag grouping tagname eval
The tag command will take the grouping you give, create the tag name you give and attach the eval to it. If you make a mistake, in the eval, or want to change it, just recreate it with the same command.
Other /tag options:/tag list
- list all the tags/tag list [group]
- list all the tags/evals that ares set for that group/tag list 2
- list all of the tags/evals you have created/tag list marker
- list all of the markers
using tags
To use the panicheal tag/evaluation we created you would attach it to whatever heal spell you have for when your warrior cannot keep it up. Lets say its heal 3.
/heal 3 tag panicheal add
If you have deleted that tag/eval with the /tag command and you want to remove it from heal 3:
/heal 3 tag panicheal delete
Easy as that.
deleting
You can only delete the tags and evaluations you create.
To delete them, you have to delete the eval first, then you can delete the tag name. if you try it in any other order, the code will yell at you.
So, to delete your panicheal example from above we would firse delete the eval: /tag heal panicheal delete
Then you delete the tag name: /tag panicheal delete
You cannot delete the grouping heal.
WARNING deleting tags will not remove the tags that are attached to things like buffs or heals. They will remain in the tag list for that specific thing. So, the panicheal we just deleted will still be attached to the /heal 2 spell we have set aside for useless warrior. And now, whenever the code tries to cast that spell, it will let you know it has a bad tag attached to it.
Current Tags
tag markers
Some tags are used as markers. These are use to identify where, what they are attached too, will be used. For example: `heal::splash::marker splash heal [PAL|CLR]` is the marker for splash heals for cleric and paladin. a heal with this marker attached to it, will only be used wit the splash heal routine.
tag actions
A small few of the tags do something vice checking something. The tag delay1s, does just that, delays the code 1 second.
markers
buff::aura::marker /buff aura buff::crew::marker /buff crew (dannet peoples) buff::group::marker /buff group (not dannet, outsiders and mercs) buff::minion::marker /buff minion buff::now::marker /buff now 24/7 buffs, always have them buff::ps::marker /buff ps (power source) buff::raid::marker /buff raid (not dannet) buff::self::marker /buff self buff::summonaxe::marker axe summoning for zerkers buff::summonitem::marker item summoning from spells buff::summonpoison::marker pants poison summoning for rogues buff::summonrange::marker ranged summoning, like arrows, or daggers buff::summonweapons::marker weapon summoning for mages heal::complete::marker complete heal [CLR] heal::group::marker no target group heals heal::grouphot::marker no target group heal over time heal::hot::marker single target heal over time heal::minion::marker single target minion heal heal::promise::marker promised heal (stupid things) heal::self::marker /heal self only single heal heal::single::marker single target heals heal::splash::marker splash heal [PAL|CLR] heal::surge::marker surge heals [SHM] heal::tot::marker /heal tot single target of target heal
built in tags
buff::BER::${Spawn[${_name}].Class.ShortName.Equal[BER]} buff::BRD::${Spawn[${_name}].Class.ShortName.Equal[BRD]} buff::BST::${Spawn[${_name}].Class.ShortName.Equal[BST]} buff::CLR::${Spawn[${_name}].Class.ShortName.Equal[CLR]} buff::DRU::${Spawn[${_name}].Class.ShortName.Equal[DRU]} buff::ENC::${Spawn[${_name}].Class.ShortName.Equal[ENC]} buff::MAG::${Spawn[${_name}].Class.ShortName.Equal[MAG]} buff::MNK::${Spawn[${_name}].Class.ShortName.Equal[MNK]} buff::NEC::${Spawn[${_name}].Class.ShortName.Equal[NEC]} buff::PAL::${Spawn[${_name}].Class.ShortName.Equal[PAL]} buff::RNG::${Spawn[${_name}].Class.ShortName.Equal[RNG]} buff::ROG::${Spawn[${_name}].Class.ShortName.Equal[ROG]} buff::SHD::${Spawn[${_name}].Class.ShortName.Equal[SHD]} buff::SHM::${Spawn[${_name}].Class.ShortName.Equal[SHM]} buff::WAR::${Spawn[${_name}].Class.ShortName.Equal[WAR]} buff::WIZ::${Spawn[${_name}].Class.ShortName.Equal[WIZ]} buff::agro::${maEnv.Find[swAgro].Value} buff::aliasonly::ACTION::aliasonly buff::autoinventory::ACTION::autoinventory buff::burn::${maBurn.Find[swBurnConditionMet].Value} buff::delay1s::ACTION::delay1s buff::drop::ACTION::drop buff::dropdisc::ACTION::dropdisc buff::dropinvis::ACTION::dropinvis buff::epic::SUB::tag_epic buff::incombat::${Select[${Me.CombatState},combat]} || ${SpawnCount[npc radius ${maEnv.Find[stEnvSafeRadius].Value} playerstate 4]} buff::ingroup::${Group.Members} buff::inraid::${Raid.Members} buff::noactivedisc::!${Me.ActiveDisc.ID} buff::noagro::!${maEnv.Find[swAgro].Value} buff::nocombat::!${Select[${Me.CombatState},combat]} && !${SpawnCount[npc radius ${maEnv.Find[stEnvSafeRadius].Value} playerstate 4]} buff::nogroup::!${Group.Members} buff::noraid::!${Raid.Members} buff::nosafezone::${maEnv.Find[swZoneSafe].Value} buff::outdoor::!${Zone.Indoor} buff::outofwater::!${Me.FeetWet} buff::puller::${maCC.Find[swPull].Value} buff::swarm::${maMinion.Find[swSwarm].Value} buff::target::${Target.ID} buff::targethumanoid::${Target.Body.Name.Equal[humanoid]} buff::targetplant::${Target.Body.Name.Equal[plant]} buff::targetundead::${Target.Body.Name.Equal[undead]} defense::agro::${maEnv.Find[swAgro].Value} defense::aliasonly::ACTION::aliasonly defense::burn::${maBurn.Find[swBurnConditionMet].Value} defense::delay1s::ACTION::delay1s defense::dropdisc::ACTION::dropdisc defense::dropinvis::ACTION::dropinvis defense::incombat::${Select[${Me.CombatState},combat]} || ${SpawnCount[npc radius ${maEnv.Find[stEnvSafeRadius].Value} playerstate 4]} defense::ingroup::${Group.Members} defense::inraid::${Raid.Members} defense::noactivedisc::!${Me.ActiveDisc.ID} defense::noagro::!${maEnv.Find[swAgro].Value} defense::nocombat::!${Select[${Me.CombatState},combat]} && !${SpawnCount[npc radius ${maEnv.Find[stEnvSafeRadius].Value} playerstate 4]} defense::nogroup::!${Group.Members} defense::noraid::!${Raid.Members} defense::nosafezone::!${maEnv.Find[swZoneSafe].Value} defense::outdoor::!${Zone.Indoor} defense::outofwater::!${Me.FeetWet} defense::puller::${maCC.Find[swPull].Value} defense::swarm::${maMinion.Find[swSwarm].Value} defense::target::${Target.ID} defense::targethumanoid::${Target.Body.Name.Equal[humanoid]} defense::targetplant::${Target.Body.Name.Equal[plant]} defense::targetundead::${Target.Body.Name.Equal[undead]} dot::agro::${maEnv.Find[swAgro].Value} dot::aliasonly::ACTION::aliasonly dot::burn::!${maBurn.Find[swBurnConditionMet].Value} dot::delay1s::ACTION::delay1s dot::dropdisc::ACTION::dropdisc dot::dropinvis::ACTION::dropinvis dot::incombat::${Select[${Me.CombatState},combat]} || ${SpawnCount[npc radius ${maEnv.Find[stEnvSafeRadius].Value} playerstate 4]} dot::ingroup::${Group.Members} dot::inraid::${Raid.Members} dot::noactivedisc::!${Me.ActiveDisc.ID} dot::noagro::!${maEnv.Find[swAgro].Value} dot::nocombat::!${Select[${Me.CombatState},combat]} && !${SpawnCount[npc radius ${maEnv.Find[stEnvSafeRadius].Value} playerstate 4]} dot::nogroup::!${Group.Members} dot::noraid::!${Raid.Members} dot::nosafezone::!${maEnv.Find[swZoneSafe].Value} dot::outdoor::!${Zone.Indoor} dot::outofwater::!${Me.FeetWet} dot::puller::${maCC.Find[swPull].Value} dot::swarm::${maMinion.Find[swSwarm].Value} dot::target::${Target.ID} dot::targethumanoid::${Target.Body.Name.Equal[humanoid]} dot::targetplant::${Target.Body.Name.Equal[plant]} dot::targetundead::${Target.Body.Name.Equal[undead]} heal::BER::${Spawn[${_name}].Class.ShortName.Equal[BER]} heal::BRD::${Spawn[${_name}].Class.ShortName.Equal[BRD]} heal::BST::${Spawn[${_name}].Class.ShortName.Equal[BST]} heal::CLR::${Spawn[${_name}].Class.ShortName.Equal[CLR]} heal::DRU::${Spawn[${_name}].Class.ShortName.Equal[DRU]} heal::ENC::${Spawn[${_name}].Class.ShortName.Equal[ENC]} heal::MAG::${Spawn[${_name}].Class.ShortName.Equal[MAG]} heal::MNK::${Spawn[${_name}].Class.ShortName.Equal[MNK]} heal::NEC::${Spawn[${_name}].Class.ShortName.Equal[NEC]} heal::PAL::${Spawn[${_name}].Class.ShortName.Equal[PAL]} heal::RNG::${Spawn[${_name}].Class.ShortName.Equal[RNG]} heal::ROG::${Spawn[${_name}].Class.ShortName.Equal[ROG]} heal::SHD::${Spawn[${_name}].Class.ShortName.Equal[SHD]} heal::SHM::${Spawn[${_name}].Class.ShortName.Equal[SHM]} heal::WAR::${Spawn[${_name}].Class.ShortName.Equal[WAR]} heal::WIZ::${Spawn[${_name}].Class.ShortName.Equal[WIZ]} heal::agro::${maEnv.Find[swAgro].Value} heal::aliasonly::ACTION::aliasonly heal::burn::${maBurn.Find[swBurnConditionMet].Value} heal::complete::CONTROL::MARKER heal::delay1s::ACTION::delay1s heal::dropdisc::ACTION::dropdisc heal::dropinvis::ACTION::dropinvis heal::incombat::${Select[${Me.CombatState},combat]} || ${SpawnCount[npc radius ${maEnv.Find[stEnvSafeRadius].Value} playerstate 4]} heal::ingroup::${Group.Members} heal::inraid::${Raid.Members} heal::noactivedisc::!${Me.ActiveDisc.ID} heal::noagro::!${maEnv.Find[swAgro].Value} heal::nocombat::!${Select[${Me.CombatState},combat]} && !${SpawnCount[npc radius ${maEnv.Find[stEnvSafeRadius].Value} playerstate 4]} heal::nogroup::!${Group.Members} heal::noraid::!${Raid.Members} heal::nosafezone::!${maEnv.Find[swZoneSafe].Value} heal::outdoor::!${Zone.Indoor} heal::outofwater::!${Me.FeetWet} heal::puller::${maCC.Find[swPull].Value} heal::swarm::${maMinion.Find[swSwarm].Value} heal::target::${Target.ID} heal::targethumanoid::${Target.Body.Name.Equal[humanoid]} heal::targetplant::${Target.Body.Name.Equal[plant]} heal::targetundead::${Target.Body.Name.Equal[undead]} nuke::agro::${maEnv.Find[swAgro].Value} nuke::aliasonly::ACTION::aliasonly nuke::burn::${maBurn.Find[swBurnConditionMet].Value} nuke::delay1s::ACTION::delay1s nuke::dropdisc::ACTION::dropdisc nuke::dropinvis::ACTION::dropinvis nuke::incombat::${Select[${Me.CombatState},combat]} || ${SpawnCount[npc radius ${maEnv.Find[stEnvSafeRadius].Value} playerstate 4]} nuke::ingroup::${Group.Members} nuke::inraid::${Raid.Members} nuke::noactivedisc::!${Me.ActiveDisc.ID} nuke::noagro::!${maEnv.Find[swAgro].Value} nuke::nocombat::!${Select[${Me.CombatState},combat]} && !${SpawnCount[npc radius ${maEnv.Find[stEnvSafeRadius].Value} playerstate 4]} nuke::nogroup::!${Group.Members} nuke::noraid::!${Raid.Members} nuke::nosafezone::!${maEnv.Find[swZoneSafe].Value} nuke::outdoor::!${Zone.Indoor} nuke::outofwater::!${Me.FeetWet} nuke::puller::${maCC.Find[swPull].Value} nuke::swarm::${maMinion.Find[swSwarm].Value} nuke::target::${Target.ID} nuke::targethumanoid::${Target.Body.Name.Equal[humanoid]} nuke::targetplant::${Target.Body.Name.Equal[plant]} nuke::targetundead::${Target.Body.Name.Equal[undead]} song::agro::${maEnv.Find[swAgro].Value} song::aliasonly::ACTION::aliasonly song::burn::${maBurn.Find[swBurnConditionMet].Value} song::delay1s::ACTION::delay1s song::dropdisc::ACTION::dropdisc song::dropinvis::ACTION::dropinvis song::incombat::${Select[${Me.CombatState},combat]} || ${SpawnCount[npc radius ${maEnv.Find[stEnvSafeRadius].Value} playerstate 4]} song::ingroup::${Group.Members} song::inraid::${Raid.Members} song::noactivedisc::!${Me.ActiveDisc.ID} song::noagro::!${maEnv.Find[swAgro].Value} song::nocombat::!${Select[${Me.CombatState},combat]} && !${SpawnCount[npc radius ${maEnv.Find[stEnvSafeRadius].Value} playerstate 4]} song::nogroup::!${Group.Members} song::noraid::!${Raid.Members} song::nosafezone::!${maEnv.Find[swZoneSafe].Value} song::outdoor::!${Zone.Indoor} song::outofwater::!${Me.FeetWet} song::puller::${maCC.Find[swPull].Value} song::swarm::${maMinion.Find[swSwarm].Value} song::target::${Target.ID} song::targethumanoid::${Target.Body.Name.Equal[humanoid]} song::targetplant::${Target.Body.Name.Equal[plant]} song::targetundead::${Target.Body.Name.Equal[undead]}
tags by name
To create a tag for a toon it MUST follow this pattern:
/tag buff Toonname "marker name"
e.g. /tag buff Fred "marker name"
DO NOT deviate from that pattern. If you do, the tag will not work, and the filters for /build save
will not catch it causing you to share your character names with others.
sample created tags and applications
These are just some examples how they can be used
Jann's Veil
This is How I work the Clickie Illusion Jann's Veil. As a self only buff that drops the illusions and it will not cast while in combat.
stBuff42::Jann's Veil stBuff42Alias::FALSE lsBuff42Tag . buff::nocombat::!${Select[${Me.CombatState},combat]} && !${SpawnCount[npc radius ${maEnv.Find[stEnvSafeRadius].Value} playerstate 4]} . buff::self::marker /buff self . buff::drop::removes illusion and mount buffs
Aura of the Reverent
Cleric Aura of the Reverent. This is a special case aura in all of EQ. This is one way to make it work correctly.
stBuff50::Aura of the Reverent stBuff50Alias::FALSE lsBuff50Tag . buff::aura::marker /buff aura . buff::nocombat::!${Select[${Me.CombatState},combat]} && !${SpawnCount[npc radius ${maEnv.Find[stEnvSafeRadius].Value} playerstate 4]} . buff::reverentaura::!${Me.Aura[1].Name.Equal[Reverent Aura]} && !${Me.Aura[2].Name.Equal[Reverent Aura]}
created tags
Some of my created tags/evals.
buff::nocol::!${Me.Song[Circle of Life].ID} buff::reverentaura::!${Me.Aura[1].Name.Equal[Reverent Aura]} && !${Me.Aura[2].Name.Equal[Reverent Aura]} item::agro::${maCC.Find[swAgro].Value} item::ingroup::${Group.Members} item::nocop::!${Me.Song[Circle of Power].ID} item::nounity::!${Me.Song[Blessing of Unity].ID} item::swarm::${maMinion.Find[swSwarm].Value} heal::panicheal::${Spawn[${hurtID}].PctHPs} <= 25 item::needmana::${Me.PctMana} < 80 item::burn::${maBurn.Find[swBurnConditionMet].Value}