SpeakinSpell
Funny and/or Useful, SpeakinSpell will use random speeches in chat to announce when you use spells and other abilities, as well as items, procced effects, other events, and user-defined macros. Works with all classes. Configurable for many different situations.
Possible Uses
- Entertain yourself, your guild, and your PuGs
- Roleplay
- Tell your raid that you got an important debuff
- Tell your arena team that you're CC'd
- Whisper your target about a short term buff
- Congratulate your guild members on achievements
- Randomize your battle cries
- More
Main Features
- Can detect over 5000 "Events" and automatically announce them in the chat using a random selection from a list of user-defined speeches, including:
- Spells you cast
- All other abilities for any class (a warrior's Heroic Strike is also technically considered a "spell")
- Anything you can equip in your action bar
- Items
- Procced effects (buffs that you receive from yourself)
- Combat events (enter/exit combat, scored a crit, killing blow, etc)
- Talking to NPCs and other game objects like mailboxes
- Achievements
- Other events (Login, Changed Zone, etc)
- whenever you type "/ss macro something" (create your own event)
- Records more event hooks as it discovers more spells, buffs, and debuffs, etc the longer you use it.
- Each spells' random speeches can be directed to any chat channel you choose
- Supports different channel options (or silent) in different scenarios: solo, party, party leader, raid, raid leader, raid officer, BG, arena, and Wintergrasp.
- Also supports built-in emotes and most other slash commands (/cheer, /script, etc)
- Fully configurable through the interface options panel. (type "/ss" to get started)
- Includes some default example speeches for at least a few spells for all classes.
- These are only meant to serve as examples. In general, very few default speeches are available for most classes, so you may not see it do anything for you right away. You should look at the list of possible event hooks under "/ss create" and write your own speeches.
F.A.Q.
How do I make a backup copy of my SpeakinSpell data?
I recommend making a backup of your SpeakinSpell data frequently. All of your speeches for all characters are stored here: C:\Users\Public\Games\World of Warcraft\WTF\Account\<your name>\SavedVariables\SpeakinSpell.lua
How do I erase all the defaults and start from a clean slate?
Type "/ss eraseall" to erase all your data. This includes any defaults as well as any custom speeches you've written.
How do I find the spell or other event that I want to change in this huge list?
Cast the spell, or trigger the event, then type "/ss recent" then use the click-able links in your chat frame to [Edit Speeches] or [Setup New Event].
How do I stop it from announcing this spell or other event?
Cast the spell, or trigger the event, then type "/ss recent" then use the click-able links in your chat frame to [Edit Speeches] for that event... then click the button that says "Delete this event"
OMG this is so complicated!
Hey! That's not a question! It's a common complaint though, and I'm open to specific suggestions about what you find is too complicated, or confusing, or could be made easier, more intuitive, or more user-friendly. With great power comes great complexity. Everything is labeled with detailed tooltips, and there's a detailed user manual built-in (/ss help) and online to help you out. I also usually answer questions within 24 hours.
Aetharan has also written some nice guides here: http://tinyurl.com/a64sst4
Usage Instructions
How to setup SpeakinSpell in a few easy steps:
- Login and play your toon for a few minutes.
- Activate any abilities, trigger any procced effects, and encounter any other detectable events that you would like SpeakinSpell to announce.
- Type "/ss" to access the interface options panel
- Click on "Create New..." or type "/ss create" to create settings for a new spell or other event
- Select the desired spell or event from the list and click the Create button. You will be taken to the settings page for that spell or event.
- Change the settings to your tastes and write as many speeches as you want. Now whenever you cast that spell or encounter that event, SpeakinSpell will say one of your random messages for that event, using the channels and other rules that you defined.
- Repeat until you run out of ideas for new announcements to write.
Spammy Setup Guides Method
- Type "/ss guides" to enable Setup Guides (there's also a checkbox for it under "/ss options")
- Do stuff with your toon
- Observe that the spammy Setup Guides are reporting all 5k+ of every event that SpeakinSpell detects and could possibly announce
- Click on the clickable links in your chat frame to [Setup New Event] announcements (equivalent to using "/ss create") or [Edit Speeches] for event hooks you already configured (equivalent to using "/ss messages")
- Type "/ss guides" again to turn the Setup Guides back off
- At any time you wish you had the Setup Guides enabled to catch a special proc effect or something, type "/ss recent" to see Setup Guides for the last 5 events detected, and last 5 events announced.
Type "/ss help" for the in-game user's manual for complete, thorough instructions for how to make the most of every feature SpeakinSpell has to offer. It's designed for maximum flexibility.
Additional Features
- Supports over 50 substitutions in your speeches, such as <caster>, <target>, <zone>, <spellname>, <party2pettarget> and many more.
- <spelllink> will create a clickable link to the spell or achievement (for applicable events)
- All of these substitutions also support first person pronoun forms (to say "me" instead of my own name), gender forms, and possessive forms, to make your automated macros sound less like macros and more like natural speech
- Also includes random substitutions like <randomfaction> (like Mad Libs™) and you can create your own random substitution word lists.
- Up to 100 speeches can be entered per spell.
- Never says the same message for a given spell twice in a row (unless you only have 1 message defined for that spell)
- Can be configured to limit your chat spam in several ways
- based on a cooldown between automated speeches in chat
- based on a random chance to speak or not
- optionally limited to once per combat
- optionally limited to once per target name
- based on a global cooldown
- Can whisper messages to the target of your spell (This can be useful for resurrect style spells, innervate, power infusion, etc.)
- When you get compliments on your "macros" use "/ss ad" to tell your friends about SpeakinSpell. Some of the random ads are funny. Yes, it's an addon that spams random text in chat, and it has a feature to spam random text to advertise it's ability to spam random text. "/ss help" in game for more advanced options for using /ss ad.
- Detection of "other events" such as Login, entering combat, changed zone, and more. Type "/ss help" in game for the complete list.
- Custom Defined User Macros. Type "/ss macro something" to make SpeakinSpell detect a pseudo spell event called "When I type: /ss macro something" which you can setup to be announced with random speeches like a spell. This can be used for randomized battlecries (/ss macro battlecry), greetings (/ss macro hi), farewells (/ss macro bye), or anything you want to define (/ss macro _blank_).
- Share your speeches with your friends through the Data Sharing system
- type "/ss import" to browse the shared content you collected from others and add it to your settings (works for copying from your alts too)
- type "/ss network" for options
- type "/ss help" for help.
- Easter Egg ... there's a mildly amusing little story hidden away somewhere in an obvious place where you will never look for it ... yes, I do actually have a lot of time on my hands ...
More Information
SpeakinSpell has many more features than those listed above.
Click here for the Complete User's Manual, or type "/ss help" in-game for the same info. NOTE: If "/ss help" doesn't work, you may have an installation error, or you may have too many addons installed. Try right-clicking the minimap button, or hitting: Escape > Interface > Addons > SpeakinSpell.
Please submit a ticket for any problems, bug reports, or feature requests, or feel free to post in the comments below (but tickets are easier for me to remember to fix).
Submissions Welcome. To submit content including the witty random speeches you wrote, please read this. If you are a translator with better translations, please use this localization tool.
More Technical Information: If you're a programmer interested in understanding more about how SpeakinSpell works, read the SDD.doc in the SpeakinSpell addon folder. It's a software design document in the (compatible) MS Word 97 file format with details about the system architecture.
Aetharan's Tutorials for advanced tips and tricks: http://tinyurl.com/4ptc2xg
Petit tutoriel en Français http://abz.progp.net/wow/Tutoriel_SpeakinSpell.pdf
en Français a Youtube http://www.youtube.com/watch?v=f62eE6rzAFA
The official SpeakinSpell Forum http://www.rismisner.com/forum/viewforum.php?f=3 - Unfortunately, the SpeakinSpell forum is currently disabled because it received an excessive amount of spam advertisements (about 80 per day and only about 1 real post per month for 2 months). I will need help or time to learn how to adequately block advertisers before re-opening it.
Credits
SpeakinSpell was created by...
- Stonarius of Antonidas
Additional coding by...
- Duerma
Primary Beta Testing, Arena Team Pwnage, Key Grip...
- Meneldill
Translators...
- German: leXin (inactive)
- Korean: troth75 (inactive)
- French: contrebasse, An_Braz
Many of the default speeches were blatantly stolen from...
- Cryolysis2
- Necrosis
- LunarSphere
- Ultimate Warcraft Battlecry Generator
- RPHelper2
Thanks for the open license guys! I hope you like what I did with it.
Additional Content Packs Written by...
- Stonarius
- Meneldill
- leXin
- troth75
- Folji
- Dire Lemming
- Duerma
Special thanks to the authors of these addons that I used for copy-paste... *Ahem* I mean example code...
- Titan
- Omen
- Recount
- Healbot
- Mountiful
- WinterTime
- the WowAce libs
- RPHelper2
Additional thanks to...
- Blizzard Entertainment for this great game! ... hire me??
- The community on the wowace forums
- curse.com
- Microsoft Visual Studio, SubVersioN, and TortoiseSVN
- Texas Instruments for enabling E.T. to phone home
- The Order of the Stick
- Mom and Dad
- YOU!!
SpeakinSpell is made from 83% Recycled Materials.
No animals were harmed in the making of this addon.
... Well, the hunter popped a sheep with his aoe, but I resheeped with my /cast [target=focus] macro, and automatically said "Baaah! sheeped again <target>?!" and it was all good...
4.0.6.02
---------
Fixed a reported Lua error at load time: attempt to index field 'Networking' (a nil value)
(I couldn't reproduce this reported error, which means I also could not test this repair to ensure it actually repairs the problem, but in theory, this should fix it)
Next, is there a way to add the default events back one at a time? I don't like them all, and there is a LONG list of them to delete one at a time. Either that, or a simpler way to manage them, say a scroll window where you can delete them easily? If not, how about importing them all back at once, I may have to just go through one at a time.
And finally, is there any chance to have it play sounds too, just for emphasis? Would be nice to have it play a sound when sapped so I can see it easier.
For conditional speeches, like lumber mill, you can setup redirection macros like "/ss macro <eventname> <subzone>" When you cast Thunderstorm at Lumber Mill, it's going to fire "/ss macro Thunderstorm Lumber Mill" so then you would define "/ss macro Thunderstorm Lumber Mill" to say "Enjoy the trip down" but presumably leave the rest of the possible results of "/ss macro <eventname> <subzone>" undefined.
There are too many other subzones in the game (thousands) to make it viable to redirect all of the other results back to a shared speech list for the case of "not lumber mill" This technique is used more effectively for substitution values like <targetrace> where there are fewer possible results.
The UI design for exactly how to design a better interface to unlock this kind of power for conditional exceptions like lumber mill vs. not lumber mill is... not obvious how to make it user friendly. I've discussed it before in comments below and I'm still somewhat uncertain how best to proceed on this idea. I'm open to suggestions. I'm somewhat reluctant to add a per-speech condition box on every random speech for something that's only somewhat rarely used while there's a work-around of using variations on "/ss macro <substitution>"
I'm intrigued thinking over the possible approaches to set that up for "not <substitution>" so you can have logic based on one subzone like lumber mill, and some other speeches for the general case that's not lumber mill, without having to define a /ss macro for every possible <subzone> value... hmmm...
>> I have seen weird things like my draenei was saying things my blood elf should, and my blood elf was saying things the goblin should. It was all very strange.
This sounds familiar. You use the option to share speeches between toons, right? I do too. I recently (well a couple months ago) accepted many new default speeches from my new co-author Duerma, most of which were race-based, imported from RPHelper2. They all looked great on paper, but you described a result I've noticed which I found undesirable and haven't cleaned up yet.
When you share speeches between toons, and make a new toon, it automatically imports all of the defaults for that race into your shared data, which means creating a blood elf makes your goblin start using those speeches. My plan here is to overall the initial setup process with some prompts or additional options. There's not much you can do about it now except for manually cleaning up your data to suit your tastes, by using "/ss message" and/or "/ss import".
>> Next, is there a way to add the default events back one at a time?
Yes. The interface is found at "/ss import" which presents a browser to import the built-in data. You can import data in chunks of any size. There's a screenshot here for "Import New Content" showing this screen. You can see there are very many [Import All] and [Delete All] buttons
(I haven't updated the screenshots or looked at this window in-game in a while, so FYI, I may have relabeled that from Delete All to Hide All to more accurately reflect that you can't actually delete built-in data since it's built-in... this button deletes it from memory temporarily, which removes it from view while you browse... if you "delete all" from the top-most button applied to the largest possible group, it takes you back to the empty interface where all that's there is a search button... searching again will repopulate it with everything you deleted)
Those Import/Delete All buttons are inside group boxes. Take note of those group box outlines. "All" means all IN THAT GROUP. You can import only a specific speech if you want, or an entire event trigger with all of its speeches, or an entire "content pack" which main contain several triggers, their speeches, and related <randomword> lists.
Some of these content packs are enabled by default on a new install. Many more are optional content packs which are only built-in for use in this "/ss import" browser
When you first load this window, all you'll see is a search button. That button compares the built-in data to your current data and shows you only what you're missing, and only what applies to your race/class/faction.
If you want to start from a clean slate, and review all of these things one at a time, you can use "/ss eraseall" to erase all of your data (custom data and defaults will both be deleted), then "/ss import" to browse the built-in data.
Unfortunately, it's still driven largely by drop-down lists for lack of a usable "tree control" widget in the Ace libraries and Blizzard APIs. Now that I've broken the options window out of the default blizzard addon options frame, I intend to further break this down into separate popup windows to make it easier to browse in a way where the full list is visible somewhere all at once, instead of in a drop-down list where only the selected item is really visible.
>> And finally, is there any chance to have it play sounds too, just for emphasis?
Yes. You can add to any random speech:
/run PlaySoundFile("soundfile")
For more information, see here:
http://www.wowwiki.com/API_PlaySoundFile
And thanks for the other ideas....makes things for fun! Awesome addon, love it so far. :D
How could my macro recognize undead players from undead npc?
It's the only "race" which I have issues with :/
Recombining the 10 classes would require simply pointing them all to a shared list.
Aetharan's approach to use <targetclass> to distinguish NPC from playable classes should work.
You could also consider working it by the scenario, by setting up your event triggers to be silent in dungeons and raids, but speak in a non-silent channel in BGs, Arena, and World PvP (meaning WG/TB). You may also get a similar effect through creative use of "/ss macro <scenario>" The <scenario> substitution matches the drop-down lists for which channel to select while in a... <scenario> = Battleground, Arena, World PvP, Solo, Dungeon, Raid, etc.
http://tinyurl.com/4ptc2xg
I pray that my writings will be of use to those who've completed their read-through of the manual and aren't sure where to go from there.
No, you can't, but that is something I plan to add eventually (a way to set any event trigger to ignore the gcd)
For any given event that you want to be on the not-so-global cooldown, place only a single speech in that event:
/ss macro Throttle
Create that custom macro, /ss macro Throttle, and give it a single speech:
/ss macro (eventname)
Use angled brackets instead of parentheses, so that you're making use of the substitution engine. This event is the one where you'll set your "global" cooldown length.
Now, for any event that's passing through your throttle, you'll create another /ss macro, with the Event Name being all that follows. For example, on a warlock, one of these would be /ss macro Shadow Bolt.
It's within these last /ss macros that you'll put your speeches to be actually fired.
-------------------------------
A full example of how this would work:
I successfully cast Shadow Bolt, an event which has a 15% chance to fire and a 120-second cooldown. The dice are rolled, and this time the event fires. In firing, it triggers its only speech, "/ss macro throttle".
/ss macro throttle then fires, with a 100% proc rate but its own 30-second cooldown. It inherits the (eventname) substitution from the event that called it, so when it fires "/ss macro (eventname)", SpeakinSpell processes it as "/ss macro Shadow Bolt". The cooldown on the throttle starts.
/ss macro Shadow Bolt has been called, with a 100% chance and no cooldown. It selects one of the ten speeches I've created, and my warlock says something mildly disturbing to the target of the spell.
In the second after the Shadow Bolt is fired, I hit Curse of the Elements, before the bolt even lands on the boss. Despite the low odds, its 15% chance also fires, and its 120-second cooldown begins. It calls /ss macro throttle.
Due to the fact that /ss macro throttle is still on cooldown, the process stops there this time around, having triggered CoE's cooldown but not gone on to fire any speeches related to it.
When the Shadow Bolt lands a critical hit, it triggers that combat event, and SpeakinSpell rolls the dice for it as well. In this case, it comes up true and fires, but I don't have my critical hit funneled through the throttle, so my warlock also makes a comment about accidentally hitting the boss harder than he meant to.
-------------------------------
If you're feeling particularly aggressive, you can set up multiple throttles, in the same way that you can set up multiple shared lists. The various throttles allow you to have shared, but not global, cooldowns. Any event that you don't want to be throttled, you just allow to fire without going through the extra step.
You say the options interface comes up, but the window is completely blank?