Download
(4Kb)
Download
Updated: 06-26-08 08:47 AM
Pictures
File Info
Updated:06-26-08 08:47 AM
Created:unknown
Downloads:3,059
Favorites:11
MD5:

Spelling!

Version: revision260608
by: VagrantEsha [More]

If you like Spelling, please consider giving it a good rating.

(If you use Spelling frequently and feel comfortable with its use, please check out the comments section, as I have a request.)

Spelling Introduction

Spelling, what's it good for? Brightening up spell-casting, ability use, and even item use with some emotive and text-based fun, that's what!

I created this mod because I found that I liked having my character saying things when I cast/used stuff, but generally it was either too spammy or it made my macros too big, so I needed a solution... and thus I made this mod.

An amusing example would be to consider a Mage's spells, what if said Mage could pose dramatically and yell each spell in a terrible Dragonball-Z-like way? A practical example could be Entangling Roots or some other Crowd Control system, when you get it off you could let your raid/party know. You could even tie it to healing spells, applying poisons, or if you're feeling crazy... you could even tie it in with summoning out a mini-pet.

There are many uses for Spelling, and they're all handled through the chat command /spelling. I warn you though, there's no GUI here, so this isn't for the faint of heart. But what I can say is that the level of customisation and granularity that Spelling provides makes up for it.

Spelling Instructions

/spelling help

There is a form of in-game help, but more it's really just a reminder of what each of the commands do. It can be triggered by using the help command, it can also be triggered by typing /spelling with nothing else.

The help print also states whether the mod is enabled or disabled.

/spelling add [...]

This is where the customisation element of Spelling is handled, and though the use of it might be confusing at first, it's all there to help you create the kind of reaction you want and empower the player. Each command is separated by the # symbol, it's done this way so that you only need to type one line to get it all in.

/spelling add boomfire # moonfire # applied # say # 1 # Moonfire!

That's an example of how it works, and you can refer back to that as I explain what each of the arguments do.

Arg 1: Unique Identifier

Spelling is able to use multiple entries for each entity (an entity being what I call a spell cast, aura cast, item use, spell cast fail, aura removal, et cetera), but to be able to do that it needs to be able to distinguish entry A from entry B, a unique identifier is needed to do this. So if you wanted two entries for a spell, you could simply supply a unique identifier for each...

/spelling add starfire1 # starfire # [...]
/spelling add starfire2 # starfire # [...]
/spelling add starfire3 # starfire # [...]

It doesn't have to be numbered like that, in fact you can use any identifier you want, as long as they're all different. Another use for the identifier is if you ever need to remove an entry (I'll cover this later), so it's best to keep the identifiers as simple as you can.

Arg 2: Spell Name or ID

For this arg the spell you wish spelling to react to must be entered, the spell can be entirely lower case, higher case, correct case or whatever you like, as long as the spelling of it is correct.

/spelling add myid # myspell # [...]

You can also use the spell ID. This might be necessary for spells that apply multiple buffs whilst keeping the spell name the same. One example of this is Invisibility, when the spell is first cast a buff named Invisibility is applied, but when the invisibility actually kicks in, another buff named Invisibility is applied again. The only way around this is to use the ID of the spell.

/spelling add myid # id:66 # [...] (First ID of Invisibility.)
/spelling add myid # id:32612 # [...] (Second ID of Invisibility.)

If you're not sure what the IDs are, you can use Spelling's own in-built debugging command. The debug command will be covered later in these instructions.

Please note that Spelling isn't limited to just spells, in fact you could use it with items, or other abilities. As long as it's something that shows up in the Combat Log, it'll work. I even use Spelling to have some text fired when I summon out my Worg Pup.

Arg 3: State

This is--err...--arguably the most complex of all the args. The state implies the state the combat log throws in relation to a spell, item, or ability.

/spelling add tranq # tranquility # spell_heal # [...]
/spelling add mark1 # mark of the wild # success # [...]
/spelling add hold # entangling roots # applied # [...]
/spelling add mark2 # mark of the wild # removed # [...]
/spelling add baaa # polymorph # missed # [...]
/spelling add goose # mongoose bite # missed # [...]

These are a few examples, but the states used by spells can be quite different. Often, many abilities, items, and spells will have their own particular and quirky state use, so you'll have to possibly use the debugging tool to find out which is best for the spell/ability/item you're trying to set up. There's a section below though on the use of states, and I've tried my best to suggest the best courses of action there, so that might be a good read too if you're new to Spelling.

Arg 4: Channel

This arg implies the output channel that spelling will send to. This can be say, raid, party, or whatever you'd like.

/spelling add catform # cat form # applied # emote # 1 # lets out a feral mrowl as his form shifts to that of a Lion.

The above example uses the emote channel, so that if you have a Druid and they shift to Cat, they'll do the emote: Name lets out a feral mrowl as his form shifts to that of a Lion.

The channels are basically the ones you've come to know from WoW, so usually if you can prefix it (such as /say, /party, /guild), you can use it as a channel.

There are times though where you might want to specify that you'd like to check whether you're in a raid and send there, and then check whether you're in a party and send there, and if you're in neither you might not want the Spelling to fire at all.

/spelling add myid # myspell # mystate # channel1 channel2 [...] # [...]

Spelling can take multiple channels and run these checks for you.

/spelling add myid # myspell # mystate # raid party none # [...]

In this example, Spelling first checks to see if the player is in a raid, and if so the output is sent there, then it checks to see if the player is in a party, and the output is sent there, otherwise the spelling won't fire at all.

/spelling add myid # myspell # mystate # party say # [...]

In this instance, Spelling will check if the player is in a party and send the output there, if not it'll send the output through say.

Arg 5: Chance

As a Druid, I'm more than well aware that some abilities are as spammy as hell. Rogues should know this too. But that shouldn't stop us from being able to use Spelling, and without spamming our fellow adventurers into oblivion! To this end, chance allows you to set a chance number for your spell.

The chance is 1 in ?, so if you were to specify 5 it has a 1 in 5 times chance of firing. This is done by doing a randomisation between 1 and your number, if the randomisation matches your number, then the Spelling is fired. If the chance number is 1 then the Spelling will always fire.

/spelling mangler # mangle (cat) # applied # emote # 5 # [...]

Here we see that the mangle (cat) ability has been set so that it has only a 1 in 5 chance of firing.

Arg 6: The Output Text

This is where the fun begins!

/spelling add yoink # pickpocket # success # say # 1 # Yoink!

That's just one example, and the text can be anything you'd like. I've covered earlier how channels can be tied into this, so that you can send text to any channel you like. This is where the customisation of Spelling really shines.

/spelling add nobaaame # polymorph # missed # say # 1 # It would appear that HITNAME doesn't care to be a Sheep, and that's their loss if you ask me. It's a wonderful experience, I say.

There are various elements that can also be tied in with the output text, such as HITNAME in that example. I'll cover these below. The gist of it though is that anything you can get your character saying or doing whatever you like, it really is all up to you.

Output Element: HITNAME

This might imply that you'll need a target in order to use HITNAME, but that's not the case. Providing your spell actually lands on a unit (as opposed to being an area of effect) it'll work. This is because the unit it falls on is known as the destination unit, and any spell or ability that lands on a unit will consider that unit as the destination unit.

For example, if you were to buff Peon with Mark of the Wild, Peon would be considered the destination unit, even if you don't have them targeted.

The same goes for healing spells, abilities, and even item-based abilities that land on a unit. If however HITNAME is used in a spell that doesn't have a destination unit, then HITNAME will simply come back out as <no destination unit>. I've done this so it'll be more simple to quickly spot what can use HITNAME without a lot of debugging.

Output Element: PETHITNAME

You might want to add Spelling items for your Hunter pet, you can do that...

/spelling add growler # growl # success # say # 1 # My pet has successfully growled PETHITNAME!

Basically, the idea is that it works exactly the same as HITNAME, but in this case it'll check for an ability on your pet, and your pet's destination unit.

Output Element: SOURCE

In some cases, you might want to add Spelling entries for things that were cast on you, rather than things you cast. For example, if someone casts a debuff on you, you might want to use Spelling to inform your raid/party.

/spelling add mime # silence # applied # say # 1 # SOURCE is trying to cas--mmh mmf mrrh mmgggrffle mrraaggh... *waves his arms wildly!*

In this example, Spelling is setup to output a say line when the player has silence cast on them, SOURCE will be replaced by the name of the person or mob who cast it on them. This can also be used for heals and buffs to thank people if you like, so it isn't limited to just debuffs.

Output Element: PLAYERISDEST

Unlike the other elements, this one is replaced by nothing, so if you have 'This text.PLAYERISDEST' it becomes simply 'This text.' That means you can put this element anywhere. The point of this element is to allow a Spelling to be fired if the destination of a spell is the same name as the player, hopefully this will be a useful tool to those who have dual-part buffs.

Output Element: IGNOREREQS

This one is simple, it means only that Spelling reacts if a spell is fired, and it makes Spelling not care who the source is, and who the dest is. If IGNOREREQS is supplied, then the only thing Spelling worries about is that the spell is right, and the state is right. Like PLAYERISDEST, IGNOREREQS is simply stripped from the entry as soon as it's been checked.

/spelling list

If you want a list of all the entries you've made to spelling, this is the command to use.

Spelling List: [unique id] text

That's the output format, the unique identifier is highlighted to make it easier to spot the one you're looking for, if you're seeking a certain entry to delete/edit.

If you want to be able to see just one entry or a grouup of entries, you can supply queries to list.

/spelling list firstspelling secondspelling thirdspelling [...]

This will build and display a list of only the specific Spellings you want to see. This is handy if you want to make a quick change to a Spelling because that way you can see what you have already (and Spellings can be re-added without the need to remove them, providing you keep the identifier the same.

Finally, you can do a partial match for entries. Let's say that for your Druid character, you base all your Spelling entries on a class-abilityname basis (such as druid-growl), you could then list them by using: /spelling list druid

/spelling remove [...]

This command is used to delete Spelling entries based on their unique identifiers. If you're not sure of the unique identifier you used, you can use list to check all the entries.

/spelling toggle

This will enable/disable Spelling's functionality. There are times when Spelling would likely get in the way, such as if a player's at a Battleground. So it's good to be able to tell Spelling to shut up for a little while.

This option carries across sessions.

/spelling wipe

This is here for worst case scenarios. If Spelling completely breaks down due to a bad entry and you can't remove it, this'll likely solve the problem. Spelling is pretty solid, these days... but this is here as a "just in case" precaution. It's a last resort though as this will wipe all of your entries and reset Spelling to its default installation state.

/spelling debug

This activate's Spelling's debug mode. It works as a toggle so it can be disabled the same way. Debugging is only activated for the session though, as it's more of an information gathhering tool than anything else.

When debug mode is enabled, standard Spelling behaviour and outputs are suppressed in favour of debug prints. These prints contain the following (and in the same order):

Spell Name, Spell ID, CLEU State, CLEU Source, CLEU Destination.

The debug mode is most handy for figuring out which state is the best for your spell, because you'll be able to watch which states are cycled through when your spell is fired. It's also good for finding out the IDs of spells too, in case you need to find the ID of a spell in order to use it properly (as per the Invisibility example above).

The Use of States

The first step in determining which state best fits a spell is to use the debug, if only one state is fired for your spell, then that's the state to use. If something like SPELL_CAST_START is fired, followed by SPELL_DAMAGE, then SPELL_DAMAGE is the most apt state.

The way to find out which states your spells use is to enable debugging and try casting it. The debug print will tell you exactly which states were used by your spell so that you can determine the best to use.

Generally though, a good basic guide is to keep in mind what a spell does, that and I'll supply a general use list here:

Healing Spells or Abilities: I find spell_heal is generally best.
Damaging Spells: It seems spell_damage works best for these.
Damaging Abilities (Druid/Rogue/Warrior): Often applied works rather well.
Crowd Control: Unsure, but probably success or applied.
Buffs: Usually success is best for buffs.
Items: I find that for items without timers, the way to go is cast_start.

There are weird effects that can stem from using incorrect events, as has been reported to me by helpful Spelling testers. For example, using applied for buffs causes it to trigger when other players cast that buff. So if you're witnessing weird behaviour, try another state. If all else fails, report back here with the line you were using (and the debug info, if possible) and I'll do all I can to help you out.

To see a list of possible states, check out WoW Wiki's page on the Combat Log Event, as almost anything listed there can be used as a state.

If you'd like to see examples of how to create different kinds of Spelling entries, please check out the Spelling Resource Wiki, you might find something close to what you want to do there, and you could simply copy an example and edit it.

Regarding Portals, Teleports, and Mounts

There are things that the Combat Log doesn't support, such as teleports, portals, mounts, and so on. Support has been added for these in Spelling, but they don't use any of the standard CLEU states to function.

SPELL_CAST_SPECIAL_SUCCEEDED - This works the same as SUCCESS.
SPELL_CAST_SPECIAL_SENT - This works the same as START.

So for the states, you can simply supply 'succeeded' and 'sent'. You can debug spells/abilities/items to find out which will work for you, there will be areas where one or the other will take precedence.

Here are a few examples of what I'm talking about: SENT always has a destination, but START never does, SUCCESS always has a destination, but SUCCEEDED never does, neither SENT or SUCCEEDED carry spell IDs (the IDs always return 0), but START and SUCCESS do. (It must be noted that all states carry the spell name, but in some cases the ID is needed because the ID can be different where a spell/buff name can be the same for more than once instance.) So as you can see, you need to choose the state based on what variables you need.

If you want to see the two new states in action, here's how I use them with my mount (as the CLEU doesn't support mounts):

/spelling add horn # frostwolf howler # sent # sound # 1 # warhorn.wav
/spelling add whitemane # frostwolf howler # succeeded # say # 1 # I called to you Whitemane, and loyally you came. Now, let us ride like the wind!

The first instance is done when I start to call out my mount, it plays a warhorn sound (see below in the advanced usage section for information on using sounds in Spelling), then when I get on my mount, it does the say.

With the use of the debug tool, it shouldn't be hard to figure out which you'll want to use.

Info Words

These aren't like the elements as each element is a singular thing, but these words can be used all together in one sentence even, if you so desire. These are to aid in creating more believable Spellings, without needing to resort to a script.

Each of the words works in the same way, and it's a basic concept so this shouldn't be considered as advanced use. Anyone who can use Spelling will be able to use this. The format is basically that WORD is supplied, and you get a Return. As an example, TGTRACE would return Tauren if the targeted unit was a Tauren.

Finally, for the gender words, you can append CAP in order to use them as sentence starters. For example, whereas TGTHESHE would return 'he' (if the target unit were male, of course), TGTHESHECAP would return 'He'.

TGTHESHE and FCSHESHE

This returns either 'he' or 'she' based on the gender of the target or focus, it can also return 'it' if Spelling can't figure out the gender or if the game supplies no gender (this might be the case with numerous non-humanoid mobs).

- As a bitter Forsaken, I hate HITNAME as I hate all things, TGTHESHE can burn!
- As a bitter Forsaken, I hate Baudb as I hate all things, he can burn!

You can replace TGTHESHE with FCSHESHE in this example to use the focus instead.

TGTHISHER and FCSHISHER

This is much like above, except it returns 'his', 'her', or 'its' as applicable.

- Yes, I always buff HITNAME, but what can I say? ...TGTHISHER hair smells nice.
- Yes, I always buff Baudb, but what can I say? ...his hair smells nice.

Again, you can use FCS instead of TGT for a focus unit.

TGTHISHERS and FCSHISHERS

This is much like above, again, except it returns 'his', 'hers', or 'its' as applicable.

- HITNAME certainly brings all the boys to the yard, no showy display of dancing can top TGTHISHERS!
- Baudb certainly brings all the boys to the yard, no showy display of dancing can top his!

TGTHIMHER and TGTHIMHER

Verisimilitude! This returns 'him', 'her', or 'it'.

- HITNAME is irritating enough to deserve SPELLNAME, I find myself irked by TGTHIMHER.
- Baudb is irritating enough to deserve Entangling Roots, I find myself irked by him.

TGTRACE and FCSRACE

This returns the race of the target/focus.

I won't give examples for this, it's too easy for me to take cheap shots at the races I don't like, but because it's pretty obvious, that's okay. <.<

TGTCLASS and FCSCLASS

This reutrns the class of the target/focus.

As above, it's too tempting to take shots at those bloody--err... shots at classes I don't like.

TGTPOWER and FCSPOWER

This returns the power type used by the target/focus. This is mana, energy, or rage. If an unknown type is used, or any undesirable type is returned, it's replaced with 'effort' (I felt that was the most applicable).

- Ow, ow, ow, ow... does this TGTRACE never run out of TGTPOWER?!
- Ow, ow, ow, ow... does this Blood Elf ever run out of energy?!

...and so on.

MINIMAPZONE

This returns the zone as shown by the minimap's text.

- Wow, I think I just dropkicked that TGTRACE all the way out of MINIMAPZONE!
- Wow, I think I just dropkicked that Gnome all the way out of The Barrens!

Advanced Spelling Usage

Please note that with all of the features below, the only elements that work are PLAYERISDEST and IGNOREREQS, as the other words would not be required. PLAYERISDEST is only there so that you can ensure that the player is the destination with a given Spelling. IGNOREREQS forces spelling to not care who's dest and source. Otherwise it's assumed that the player must be the source.

Sounds

Spelling can play sounds to accompany your spells/abilities/items, too. For example, you could play the sound of a horn when summoning your Wolf. All you have to do is supplant the usual entry additions with the appropriate words.

Channel: sound
Text: soundfile.wav (or .mp3, .wma, or whatever else the client supports)

Here's an example of that:

/spelling add horn # frostwolf howler # sent # sound # 1 # warhorn.wav

This allows my Tauren to play a Warhorn to summon Whitemane, his Frostwolf.

Sounds always play, they're not a part of the random selection, so you should only have one sound per spell/ability/item and state. If it's the same spell/ability/item but a different state, then it's okay to have a new sound.

Animated Emotes

This is similar to above, but instead of sounds Spelling can utilise emotes suchc as /dance and so on.

Channel: staticemote
Text: emotename

Here's an example of that:

/spelling add rar # feral charge # success # staticemote # 1 # charge

This will cuase my Druid character to do the /charge emote, whenever he uses the Bear skill Feral Charge.

You, Anybuff/Anydebuff, and SPELLNAME

What if you wanted a blanket system that could react to any buff or debuff? I did, and so I've included an option to Spelling that can do that. If you supply anybuff or anydebuff to Spelling, it'll do a named Spelling whenever a buff/debuff is cast. Basically turning Spelling into broadcaster, but with Spelling scripts (Grammar) so much more could be done than that. But for the purpose of example, we'll use a broadcaster. Note that SPELLNAME, unlike any other element, can be used in combination with any other one element.

/spelling omgbuffs # anybuff # applied # raid party none # 1 # SPELLNAME buff received!PLAYERISDEST

/spelling ackdebuffs # anydebuff # applied # raid party none # 1 # SPELLNAME debuff is on me!PLAYERISDEST

On the Spelling Resource Wiki there's an example of a Spelling script called tehdance, I'm personally now using that with anybuff in the following format:

/spelling dancylads # anybuff # applied # script # 1 # tehdancePLAYERISDEST

Since the spell is passed through to the Spelling script, the SPELLNAME element does not need to be supplied.

You and Any

The any operator works similar to IGNOREREQS, except in this case it ignores the need for the spell. When any is supplied, there can be any or even no spell. The reason for this is primarily for scripts, but it can even be used with normal spellings, too. When any is supplied, the creator of a Spelling must instead look to the state to work with, it's with this that the power of any is utilised.

Here's an example:

/spelling add killed # any # party_kill # 3 # A vile act, but it had to be done. May the winds guide TGTHISHER spirit to the Earthmother's embrace...

On a chance of one in three, this fires whenever the player (who is the source) makes a kill. I find it rather fitting that my Tauren says this occasionally when grinding.

Scripting

The scripting functionality is for advanced users, and if you don't have an understanding of Lua then you shouldn't worry about it. For those that are interested though, I'd suggest you download Grammar from the optional files, as it contains what you'll need to start Spellin' some scriptin'! ...or something like that.

The Grammar.lua file contains detailed instructions on how the system works, including an example. If you have any questions about the feature then feel free to ask me, I'm always willing to help! I've also put up a script example (just to get things started) on the Spelling Resource Wiki.

I'm hoping the wiki can become a central hub for users of Grammar, it's a place where you can put your scripts for others to see, or if you need help with a script (mark it as problematic/not working) then put it up on the wiki and I'll be able to take a look at it and edit it for you.

Footnote

Spelling is feature-complete, and after much testing it's pretty stable. It can currently be considered stable, as I've implemented all the features I wanted to see in it, and I've fixed all the known bugs. For the forseeable future, I'm going to focus on fixing any bugs that might possibly remain, and simply maintaining the addon.

I say this because Spelling does all that it should, currently, and it covers every base. I don't want to do more with it than it already does as that would be feature-creep, just putting things in for the sake of putting them in, things that might not necessarily be useful.

So Spelling as you see it now will likely be Spelling as you'll always see it.

All I have to add now is; thanks for using my mod, and I hope you enjoy it and find it useful!

revision260608: It was possible to call improper things from the /spelling command line thingy, and I've known that for a bit but I just left it to smart users not to do anything foolish with it. But now that I'm just working on cleaning up Spelling, I've removed that capability. So consider that a fix, of sorts!

revision230608c: /spelling list can now do partial matches.

revision230608b: Damnation, I forgot to replace one instance of HITPOWER with FCSPOWER, I can't believe I overlooked that. Thankfully it was only one and I caught it quick.

revision230608: First of all, a fix. I'm really sorry about this but it seems like the whole SRC/HIT stuff I added only works in PvP. :< This is because the UnitBlah functions are smart enough to work with player names, but not smart enough to figure out how they should work with mob names (in fact, UnitSex always returns male if it's given anything it doesn't recognise). To this end, I've had to change the source/destination basis to a target/focus basis. Again, sorry. I've added a bunch of fun new stuff to make up for my err, though. The gender items can now be capitalised (to be used at the start of a sentence), there's a new 'any' operator which can be used in the place of a spell name, list has been buffed so that it can supply only what you want to see (instead of spamming everything), and at Everglow's request (and it was a good request) I've moved SpellingScript into Grammar for the sake of cleanliness and to save people from accidental overwriting.

revision220608: Added some word thingies, fun stuff!

revision170608c: Note to self... commit before uploading! Thankfully, it hadn't been verified yet, I noticed when I peeked in the zip that something didn't match up my local, thank goodness I do OCD code spring-cleaning.z

revision170608b: Having to add every buff to Spelling for tehdance (those who read the comments will know what I mean) was getting pretty damned old. So instead I put in a system where anybuff/anydebuff could be used. This is insanely powerful... and could be used as an alert system with two spelling lines alone. I've put the details on the front page. ...heh, I love these little updates, no more epic stuff for me! But this stuff I can do.

revision170608: Nothing major, just a couple of small things I felt Spelling could do with to make it more powerful, there's a new element (IGNOREREQS) and now spell is passed to SpellingScripts along with source, and dest. Check out the SpellingScript.lua for the example but don't overwrite your current SpellingScript file!

revision160608d: The addscript, removescript, and listscript commands have been removed in favour of an entirely better system, a more complex one to be sure, but it has to be said that the older scripts system was pretty damn useless. As I like to do with Spelling, the chaff is cut away and only the wheat remains, hopefully this will be the kind of powerful system I was hoping for, one that really would let players do whatever they like with their Spellings. Well, within the restrictionns imposed by Blizzard, of course. (So no reactive-casting for us! <.< Well, not unless you're really clever and you tie it into a button that shows at the proper time... but I won't get into that.)

revision160608c: Of course, could be that a player wants to specify player-as-source-only or player-as-destination-only for sounds and static emotes, in that case, I've enabled the use of PLAYERISDEST for sounds and static emotes. Please check the front page for information on this.

revision160608b: Sounds and static emotes should only work if the player is the source or the destination, whoops.

revision160608: Fixed an error in Spelling's onload, which caused it to run more than once.

revision150608d: Hokay, new attempt at the script feature. I re-thought it and I think I have a good solution. Check out the front-page for details. Important note: If you aren't new to Spelling, please run the /spelling upgrade command!

revision150608c: The last version had a blank zip inside which was because I wrote the batch file I was using to compile these wrongly, whoops! Thanks to Cairenn for letting me know!

revision150608b: I have an apology to make. I've been trying to keep the 'special' instances of things to 'SUCCESS' in order to not make things difficult on the player, but the truth of it is... it's not working out. Ever since I introduced support for portals, teleports, and mounts, Spelling has gone haywire. That was my fault, my erroneous approach. Before anything is feared, no, I'm not rolling back. In fact, this release is a rethink of how special, non CLEU (like the aforementioned) things are handled. There are now two new states (so you may have to debug). The one is a replacement for the special bits of SPELL_CAST_SUCCESS, the other is something entirely new! I've been playing with it for a while (questing with it) because I wanted to make sure that it was good. I wanted to make sure that it was right. I've gotten a bit fed up of all the broken releases lately... and it's because I've been going beyond my capabilities, trying to do the impossible for the sake of simplicity. So everything works now, it's just a bit more complicated. I apologise for that, but at the very least Spelling is flawless again. To check out information on the new states and such, check out the front page, I've explained it all there.

revision150608: Changed when sounds/static-emotes fire, now included officially. Check the front page for details.

revision140608d: Fixed a few bugs. Spelling would only fire once for certain things per session [regression-fixed]. Spelling would sometimes fire twice for certain things [fixed]. Spelling would not fire if a special instance (such as mounts, portals, teleports, and so on) were to be triggered first after logging on [fixed]. Believe it or not, all of these bugs are related. Anyway, that's it... I'm-a go to bed.

revision140608c: A few undocumented additions, check the comments.

revision140608b: I realised that there was an error in the last release, it broke destination tracking. I thought that would be a simple fix, turns out it wasn't. It took me half a day to sort it all out, and to get the new functionality working happily with the old (many Druid skills and mount ups tested, with people giving me funny looks). But in the end, fix it I did, and without needing to change how it works for the user, either! But damn, that was exhausting. I can has hugs now? *Thud.*

revision140608: Spelling release of awesomeness! I'm sorry for that, I don't mean to be egotistical or anything but I'm really pleased with this release. Spelling now supports things the Combat Log does not, such as teleports, portals, and mounts. Hooray!

revision130608: This version is an attempt to fix things like the second part of Invisibility, if they don't work. The suggested approach is to use the new PLAYERISDEST element. I've also fixed a silly bug with SOURCE handling.

revision120608b: Okay, I know everything was working in the current release, but there were a few quirks that were bothering me. For example, if you set a buff to success, it wouldn't fire for other players, but if it was set to applied (a wrong state), it would. Now it won't fire at all if it's set to applied. I've done some serious rejigging of the code, here. This also means that the one elusive element--Invisibility, part the second--should actually work right, now. I've also cut down the extra added registered events, now I only register one event other than the CLEU, and that's only because it's aboslutely necessary. So try this latest release and see for yourself! (Oh, forgot to mention... I also fixed a bug where the list would freak out if the mod was in its disabled state and the list was called.)

revision120608: No code updates this time, I've just included a credits text.

revision110608c: I made one more attempt, and this time I know I have it. Why? I got my roomie to help out with his Mage. Two Mages, and a hell of a lot of testing. I just kept changing things until it worked. I have no idea why this all works now, my head is too confused... but it works. And I never, ever want to do that much testing again, ever. Nor having to impose! Bleh! I also ran a full battery of tests on my Druid; Starfire, Moonfire, Cat Form, Prowl, Entangling Roots, and Summon Worg Pup. So if Spelling is still firing for other players, then it's probably not Spelling's fault. This time I'm sure. I just wish I knew fully why it works... but it does.

revision110608b: Okay, this is my last attempt to fix this by myself. This might do the trick, but I honestly can't say. The spells should work, and they shouldn't trigger for other players. If it's still broken, let me know and I'll go asik for help over on the WoWAce forums, I will get this mod sorted out!

revision110608: Thanks to lfd, I found some weirdness with how start>apply based spells were being handled, this really broke my mind for a bit... but I got that all sorted.

revision100608f: The PETHITNAME element wasn't working right, it was reporting for players using abilities with the same names of those of the pet's. For example, if I had a growl Spelling setup for my Hunter, it was also showing on my Druid. I've fixed that. And I've also changed HITNAME so it comes out as '<no destination unit>' instead of just HITNAME.

revision100608e: Damn, I was rushing because I had things to do and I accidentally uploaded the wrong version. Here's the correction for that. Sorry!

revision100608d: I introduced a regression which once again allowed Spelling entries to fire for other players. Damn it. Sorry about that. This version should be good.

revision100608c: Changed the on/off in Spelling to a toggle, as that works better. And I've now got the help printout showing the enabled/disabled status. The conversion option has also been taken out of this version as likely everyone has converted their databases by now, and the option might prove confusing to those who don't know why it's there. The older versions that have it though will remain up for a while.

revision100608b: New option! You can now specify a spell by its ID instead of the name, to do this, use id:number instead of the name of the spell. So for example, where you might use mark of the wild, you'd use id:9885 instead. Both name and id can be used, it hasn't switched from one to the other.

revision100608: The last version did tighten up the progression from start to applied and passing source, but there was an instance where if someone nearby is casting the same spell as you, and they got it off before you, then their success would fire for you, even if your spell failed. That just wasn't good enough. So I looked over some LOGwut printouts to see if I could link anything... and I think I'm finally beginning to wrap my head around the whole flags malarkey. Now, it goes by ensuring that the source/dest flags match up. So it should be theoretically impossible for a Spelling to fire for another player. Or such is the hope.

revision090608b: I think I've got the bug pinned down where certain spells fire for other players aswell as yourself in this release.

revision090608: There was a bug where debug mode was being reset when it shouldn't have, I've hopefully fixed that. There was also an issue in the progression of output channels ('raid party say') because I was foolish and forgot to perform a simple removal on the string to make sure it wouldn't constantly call the first element again. I can't test the latter though at the moment, so consider that drycoded.

revision080608c: Quick fix for something that wouldn't break Spelling but could cause it to throw errors.

revision080608b: First, an apology. I realise that in the last release, I broke a few things (such as stopping Spelling firing for other people when it shouldn't, gathering HITNAME names and so on). This was because I was working on a framework for this release... so some of it was drycoded. That was a mistake. This new release though has been tested quite thouroughly, and it seems to be spiffy. Of course, with this new release existing users will have to convert their databases, and I apologise for that, too. I'm not very good at managing my mods, am I? Well, rather than apologise yet again... let's get to what's new. This new release allows players to specify states! So you can now explicitly tell Spelling when you want it to fire, and for different things. So yep, Spelling can now alert when a Sheep/Growl attempt fails, and neat stuff like that. Still, I do apologise for hte large amounts of fail in the last version, and in needing to convert for this one.

revision080608: I've added some channel handling to Spelling, so that more control over where the output goes is handed to the player. I always felt that the output might be a little stiff anyway, and this improves upon that by taking that unbending absolution away from the outputs. So a player can specify more than one output, as opposed to an absolution-based requirement where the text must be output in a certain place. Thanks go to lfd on the comments page for the suggestion!

revision070608b: This release adds PETNAME to the list of replaceable words, see the front page for details. It also has a bit of a rewrite for replacement word handling, this resolves any bugs that might've occurred from trying to use two replacement words together (which is never necessary, but it may get tried).

revision070608: This release fixes the issue where Mage food/drink spells (or any spells that fire SPELL_CREATE) will only work for the current session. Many thanks to lfd (of the comments page) for helping me to test this, as I don't have a high level Mage. This fix wouldn't have gotten in if not for that help.

revision060608: Spelling now has a debug system, check out the description on the front page to see how it works.

revision050608: So... many... logic... gates, and sheep jumping logic gates, polymorphed Tauren sheep! This is tainting my dreams! Ahem, this release adds the ability to use SOURCE, which is awesome...SOURCE. It's thanks to a comment made by a friendly poster on the comments page, and I do tend to listen to feature requests. I also actually used this release as an excuse to clean out some redundant gates I saw (type(spell) == "string" is checked early on, so the later instance of 'not spell' does not need to be there, little things like that).

revision040608: I worked so hard on this one! The bug with removing spellings (Spelling getting confused over what should be removed, or simply refusing to do it) has been fixed. The bug where spells which didn't require a target didn't do anything has been fixed. The bug which affected Spelling's ability to detect area of effect spells has been fixed. The bug where stuff like Moonfire would happen twice has been fixed. The bug where something might only trigger once in a battle and then not again until the end of the battle has... indeed, been fixed. The ability to enable/disable the mod has been added, the ability to wipe Spelling's database has been added, the ability for Spelling to distinguish properly between spells which have a destination or not (see the updated description) has been added. Due to important changes that had to be made to Spelling's storage system, any Spelling stored before this release will be cleared! Sorry! :< You might want to do a list in game and use something like Chatter to copy your stuff out before you upgrade to this version.

revision030608: Fixed the silly bug where sometimes it'd say such and such is being compared with a number, it was something that slipped in after the rewrite, something that i'd even remembered to account for in the first release. Oops! <.< Still, that issue shouldn't be seen any more.

revision020608: Second release, less spammy this time! The combat log event, unfiltered, is a most confusing and nebulous thing. 9.6 When does a spell have a destination? When is something spell damage or spell periodic damage? If it's periodic, why doesn't it have a source (the player)? If you apply a debuff on a mob, why does it only 70 per cent of the time list you as the source of that debuff? Why, why, why... aauuuugh. There are times when I just wish to go to Blizzard's HQ and hit anyone with an IDE open over the head repeatedly with an iron bar. I could have got out the easy way, claiming that Spelling wasn't meant to use those spells, that it's just for laugh... lol-ed it off. But I'm not like that! So yes... lots of work went into the logic checking of Spelling, it should now be good, and not spammy, for everyone!

revision010608: Initial release.
Optional Files (0)


Post A Reply Comment Options
Unread 06-15-08, 11:22 PM  
VagrantEsha
Token Werewolf Fan
 
VagrantEsha's Avatar
Premium Member
AddOn Author - Click to view AddOns

Forum posts: 27
File comments: 238
Uploads: 38
Let me know what you think.

I think I have an even better idea, though...

What if you could do this?

1. Use something like WoWLua to create a function, similar to:

function SpellingScript_helloworld()
SendChatMessage("SAY", "Hello World")
end

This would basically allow you to fully write up your function properly, any way you like.

2. Then you could: /spelling addscript helloworld

What this would do is look for SpellingScript_identifier, using _G["SpellingScript_"..identifier]. It would copy the entire function into Spelling's databaase, then it would Spelling_helloname = nil, so that function isn't left hanging around in the global namespace.
Last edited by VagrantEsha : 06-15-08 at 11:25 PM.
Report comment to moderator  
Reply With Quote
Unread 06-15-08, 07:42 PM  
Sojik
A Wyrmkin Dreamwalker
 
Sojik's Avatar
AddOn Author - Click to view AddOns

Forum posts: 53
File comments: 166
Uploads: 10
Brilliant! Installing now!
Report comment to moderator  
Reply With Quote
Unread 06-15-08, 04:48 PM  
VagrantEsha
Token Werewolf Fan
 
VagrantEsha's Avatar
Premium Member
AddOn Author - Click to view AddOns

Forum posts: 27
File comments: 238
Uploads: 38
Okay, first of all... I've got a new way to handle scripts! Let me know how that works out for you, lfd. The reason I approached it from this angle is because providing short identifiers are used, this provides a lot more space for the actual script itself.

Please read the notes though, as there's a command that must be run to upgrade the database for the new scripting stuffs. I did try to do it automatically... but Warcraft wasn't having that for some reason.

"Also, I found an outdated mod on WoWI that does similar things to Spelling (but alot less customizable, useful and feature rich). It's called AfterCast. Heard of it? Also, is it frowned upon to post a comment on an old addon about an addon that is updated/working/better? :P"

Wow, that's by Iriel? o.O

Nope, I wasn't aware of its existance. Actually, Spelling came about because I saw a lot of: "This is mod X, it does Y when you cast Z." And I kept thiking to myself: "I'd like that. And that. And that. And that. ...that's a lot of mods. Damn, there isn't one that does that. Or that." Then I thought to myself: "I wonder if there's a mod which does all of that, on a completely customised and dynamic basis?" I couldn't find one, no matter how hard I searched, so then I thought: "I wonder if I could do that? No, that's crazy. I'm a crazy bastard, I can't do that, that's way over my head. ...but what the hell? It'll be a laugh, right?" ...and so Spelling was born. <.<

I don't think it's bad to post there, but be warned... every mod has its fans, and if you post about something being better, you might get lynched. If it really doesn't work though, you could post about a similar mod you found that works, that'd be okay. I only say this because I wouldn't want to see you getting flamed.

And I admit, Spelling has only recently started working properly (again). So even my mod was broken for a bit... but I'm glad it's working now, I've been questing all day and not a single error. It's... a relief, it's this huge burden of worry lifted. I'm so glad to see that I have the CLEU stuff and the non-CLEU stuff working happily together. And that's good, because damnit, I love my mount Spellings!

But I digress...

As always.
Report comment to moderator  
Reply With Quote
Unread 06-15-08, 02:37 PM  
Sojik
A Wyrmkin Dreamwalker
 
Sojik's Avatar
AddOn Author - Click to view AddOns

Forum posts: 53
File comments: 166
Uploads: 10
Originally posted by VagrantEsha
The thing is, the editbox considers an absolute, you can enter many, many characters... but it always clips at an absolute maximum of 255 characters, this is from the get-go of the forward-slash.
I use Prat and maybe that stops how much you can type in the edit box just so it doesn't get clipped --- which explains why I may have explained it weird. But you got what I meant.

I wouldn't be opposed to your idea. It's not like I'll want to mess with spelling all the time, so having to do it out-of-game (for scripts atleast) isn't that big of a hassle. For now, I'll just use the shortened script.

Also, I found an outdated mod on WoWI that does similar things to Spelling (but alot less customizable, useful and feature rich). It's called AfterCast. Heard of it? Also, is it frowned upon to post a comment on an old addon about an addon that is updated/working/better? :P
Last edited by Sojik : 06-15-08 at 02:40 PM.
Report comment to moderator  
Reply With Quote
Unread 06-15-08, 01:29 PM  
VagrantEsha
Token Werewolf Fan
 
VagrantEsha's Avatar
Premium Member
AddOn Author - Click to view AddOns

Forum posts: 27
File comments: 238
Uploads: 38
It's probably the difference in characters between...

/run [blah]

...and...

/spelling add name # et cetera # [blah]

The thing is, the editbox considers an absolute, you can enter many, many characters... but it always clips at an absolute maximum of 255 characters, this is from the get-go of the forward-slash.

That's why, to avoid script being clipped off, the only solution might be to provide external access to the scripting functionality. I might even replace the current script functionality with it, as due to the length of Spelling's slash-command, it makes script kind of worthless. :/

Let me think on this... and I'll have something up later.
Report comment to moderator  
Reply With Quote
Unread 06-15-08, 12:19 PM  
Sojik
A Wyrmkin Dreamwalker
 
Sojik's Avatar
AddOn Author - Click to view AddOns

Forum posts: 53
File comments: 166
Uploads: 10
Hmm... The script itself fits in a macro but if I try to tack on the /spelling add blah # blah # blah stuff it gets cut off.
Report comment to moderator  
Reply With Quote
Unread 06-15-08, 12:11 PM  
VagrantEsha
Token Werewolf Fan
 
VagrantEsha's Avatar
Premium Member
AddOn Author - Click to view AddOns

Forum posts: 27
File comments: 238
Uploads: 38
Unfortunately, RunScript() (which is what Spelling uses) also has the 255 limit. It's something imposed by Blizzard.

There's only one solution I can think of. Having a SpellingScript.lua file which a player can edit, it'll have a table which scripts can be added to, those scripts could then be called by Spelling in-game. That's the only way to get around the 255-char limitation, though.
Report comment to moderator  
Reply With Quote
Unread 06-15-08, 11:59 AM  
Sojik
A Wyrmkin Dreamwalker
 
Sojik's Avatar
AddOn Author - Click to view AddOns

Forum posts: 53
File comments: 166
Uploads: 10
Hey, for scripts, is their a max size (like 255 characters)? If not, is there a way we can get around the max the chat edit box allows us to send? I've had to shorten two of my scripts because the client just doesn't let me send more text in one line. I'll do some research.
Report comment to moderator  
Reply With Quote
Unread 06-15-08, 11:33 AM  
VagrantEsha
Token Werewolf Fan
 
VagrantEsha's Avatar
Premium Member
AddOn Author - Click to view AddOns

Forum posts: 27
File comments: 238
Uploads: 38
I've finally got this. And I really am sorry for the added complication, it was the only way. :/

I did a lot of testing today, with various things... my mount, minipets, questing and battling, lots of people around, and I tried my hardest to break it. Finally though, it seems that I have a release which isn't breakable. So those who've stuck by me whilst I've slowly meandered my way through this and figured it out, your patience has been rewarded.

This is like when I first got the original Spelling working beautifully, before I added support for the new stuff. There was a period up until then when I was trying to get a stable release, and just before I added that support, I did have a stable release. I was tempted to roll back to that point and just forget about the support for the extra stuff, but I couldn't do that to the people who use my mod and wanted to see that in there. It would've felt like a bit of a betrayal (but it was so tempting sometimes).

Once again though, I feel like I've finally achieved that grail, a stable release. Not only that, but it's a stable release where static emotes, sound, and script support work beautifully without breaking anything. It will require a change to Spellings for things like mounts and I'm sorry for that, but it shouldn't be too hard. Do what I do: Use a /spelling list, then readd them without deleting them, just type the line again (or copy it) and simply change the state to one of the new special states (whichever applies).

There's only one thing I want to get into Spelling now and that's screen prints, with the ability to be able to colour the text. I'll be thinking on how best to implement that. After I've got that in, I'll be going into a state of testing and bugfixing where I hope to find and squash any bugs that remain, if there will be any. And after that, I hope to be able to proclaim a feature-complete and bug-free release, a sort of 1.0... a milestone if you will.

From my own experiences today though, I definitely feel as though I'm getting there, but Spelling is very complicated. I'm not sure how most people are going to react to that, but I don't think I ever really made Spelling for most people in the first place, just for those who have a base understanding of code and can handle slash-commands instead of GUIs. So to be honest, I don't think any of you will really mind the complexity.

So I hope you enjoy this release. This'll be the last release until I get the print functionality iin (which may take a while), that is unless there are any bugs... of course. But this time, I really think I've got it right. It just required me sitting down and rethinking the whole thing.

Test it out and let me know what you think.

And thanks to you all for being so patient.

Edit-

For those wondering about the change and the introduction of special states, it was mostly because I was trying to mash the use of what's now the special states into SPELL_CAST_SUCCESS, to save needing to create them. However, mashing them into that state like that caused numerous problems. It was supremely hard to get spelling to know whether it should be using stuff from the CLEU or other events, it was hard to combine all the variables of both events into one run, and it was near impossible to clear up the quirkiness of trying to combine all of this into one output, seamlessly. It had to be split up, after splitting it up everything started going right again.
Last edited by VagrantEsha : 06-15-08 at 11:35 AM.
Report comment to moderator  
Reply With Quote
Unread 06-14-08, 05:09 PM  
VagrantEsha
Token Werewolf Fan
 
VagrantEsha's Avatar
Premium Member
AddOn Author - Click to view AddOns

Forum posts: 27
File comments: 238
Uploads: 38
Tossed in static emotes, script support, and sound support just for laughs.

To use static emotes...

channel: staticemote
text: dance

To use script...

channel: script
text: DoEmote("DANCE")

(The above is an example, you don't need /run to do it.)

To use sounds...

channel: sound
text: somefile.wav

(The sound must be in the Spelling\Sounds directory, create the Sounds directory yourself for now.)

I'll get this in officially later, when I'm not so tired. I've tested script and staticemote though, so I know those two are fine.
Report comment to moderator  
Reply With Quote
Unread 06-14-08, 04:23 PM  
VagrantEsha
Token Werewolf Fan
 
VagrantEsha's Avatar
Premium Member
AddOn Author - Click to view AddOns

Forum posts: 27
File comments: 238
Uploads: 38
The scripting and sounds will be coming soon. Thankfully those will be easy, very easy, since they don't require me to fiddle around with Spelling's main 'engine', that being the spell handling and parsing.

I'm really sorry about the last version and what happened with it, none of it was your doing. It was my fault for not fully testing things after the new additions. I didn't think to go and try battling in Cat Form after I got everything working... but as soon as I started questing, I could see something was wrong. So very wrong.

And it was not easy to put right.

Still, right it is... and providing there are no issues with the current version (I couldn't find any, but I don't have access to all classes), I'll start on adding the other features, like script, sound, and so on.

Edit-

Oh, and that's a nice example of code! The only recommendation I have is to replace the semi-colon with a space. The reason I say this is because the lua-parser doesn't actually even acknowledge semi-colons, it just reads past them. So semi-colons in lua-code are generally extraneous characters.

Edit-

Oh, and don't forget to make that c variable a local, otherwise it'll exist in the global namespace and other things that've registered 'c' will be able to tinker with it. You can do that by simply typing local c at the start of your code.
Last edited by VagrantEsha : 06-14-08 at 04:40 PM.
Report comment to moderator  
Reply With Quote
Unread 06-14-08, 01:45 PM  
Sojik
A Wyrmkin Dreamwalker
 
Sojik's Avatar
AddOn Author - Click to view AddOns

Forum posts: 53
File comments: 166
Uploads: 10
Originally posted by VagrantEsha
2. Scripting. An addition where one could supply script as the channel name and it would pass the entry to RunScript(), so that it would be activated as a script.
I'd love this. Since Portals now work (I tested them ), I'd love to use:

Code:
 /run if 0< GetNumPartyMembers()then c="PARTY" end;if 0< GetNumRaidMembers()then c="RAID" end; SendChatMessage("Portal to Shattrath City location confirmed. Advance to minimap ping posthaste.",c)Minimap:PingLocation(0,0)
EDIT: Hmm... For some reason the id for invis has changed for SUCCESS. It's 43987 now. And oddly, JUST for the SUCCESS. The first APPLIED is still 66. But changing the spelling to just "invisibility" instead of an ID fixes it. Changing the spelling to id:43987 didn't work the first time, and I'm not sure why, but since I found out how it DOES work, I stopped testing. The cooldown on Invis is 5 minutes so it's tedious to test. Lemme know if you want to me test this further.
Last edited by Sojik : 06-14-08 at 02:38 PM.
Report comment to moderator  
Reply With Quote
Unread 06-14-08, 10:57 AM  
VagrantEsha
Token Werewolf Fan
 
VagrantEsha's Avatar
Premium Member
AddOn Author - Click to view AddOns

Forum posts: 27
File comments: 238
Uploads: 38
Sounds will be the next thing in there, believe me. And you deserved to be in the credits, your feedback earlier was most helpful.

Also: I just tested other, non special (like the Worg Pup), minipets. Even they work now! I can't use an ID for 'em, of course, but providing the correct name is used (i.e., Summon Prairie Dog), the Spelling'll work.
Report comment to moderator  
Reply With Quote
Unread 06-14-08, 10:45 AM  
Sjak
A Deviate Faerie Dragon
AddOn Author - Click to view AddOns

Forum posts: 13
File comments: 15
Uploads: 7
Sweet, will give the new version a try! I also like the sound of including sounds ( :P ) on events - that could be useful.

Oh - thanks for the mention in the credits file!
Report comment to moderator  
Reply With Quote
Unread 06-14-08, 09:39 AM  
VagrantEsha
Token Werewolf Fan
 
VagrantEsha's Avatar
Premium Member
AddOn Author - Click to view AddOns

Forum posts: 27
File comments: 238
Uploads: 38
I'm so pleased with this new version, I really am.

I've tested mounts personally and they all work beautifully. And at one point I was lucky enough to be near a Mage who was casting a Portal whilst in debug mode... that was recognised and thus it'll likely work beautifully too.

Just take a look at the latest example up on the wiki, it felt really awesome to do that. I'm really hyped now about adding sounds, because I can just imagine tying that Spelling in with the sound of a war-horn being blown.
Report comment to moderator  
Reply With Quote
Post A Reply



Category Jump: