Thread Tools Display Modes
03-21-06, 02:05 AM   #1
Cirk
A Cobalt Mageweaver
 
Cirk's Avatar
AddOn Author - Click to view addons
Join Date: Jan 2006
Posts: 226
Cirk's Fastcast

Fastcast provides functionality for speeding up chain-casting of normal cast-time and channeled spells for players on high latency connections.

Current version
Fastcast is currently version 1.11.2.

Download page
http://www.wowinterface.com/download...fo.php?id=4733

Known bugs
None when running with the default client.

Future enhancements
None planned.

Notes
Fastcast is the end point of development that started with Channelcast (channeling protection), then to Channelcast beta (for the addition of fast casting). Due to the overwhelming interest in the fast casting feature, a UI and name change were in order, and Fastcast was born.

-- Cirk of Doomhammer
__________________
Cirk's Addons

Last edited by Cirk : 08-09-06 at 05:52 AM. Reason: Fastcast v1.11.1 release
  Reply With Quote
03-21-06, 01:32 PM   #2
teedog
A Deviate Faerie Dragon
Join Date: Jan 2006
Posts: 13
After installed Fastcast, the following macro which I normally spam no longer works after one cast (instant cast due to Presence of Mind).

Code:
/cast Presence of Mind
/script UseInventoryItem(GetInventorySlotInfo("Trinket1Slot"));
/cast Frostbolt(Rank 10);
Also, do I understand the FAQ correctly that since I am casting Frostbolt from a macro, Fastcast will have no beneficial effect on it?

Thanks for this wonderful mod!
  Reply With Quote
03-21-06, 02:33 PM   #3
teedog
A Deviate Faerie Dragon
Join Date: Jan 2006
Posts: 13
Does Fastcast take into account spell interruption? Suppose you are a healer in the Vaelastrasz fight. A normal 3 second heal becomes 4 seconds due to spell interruption from the aoe damage. With a padding of 0.2, Fastcast will cancel the spell at 3.2 seconds. No heal is cast and tank is dead.

Can Fastcast determine how much your cast time is increased by due to interruption, and adjust accordingly?

Last edited by teedog : 03-21-06 at 02:37 PM.
  Reply With Quote
03-21-06, 03:18 PM   #4
Cirk
A Cobalt Mageweaver
 
Cirk's Avatar
AddOn Author - Click to view addons
Join Date: Jan 2006
Posts: 226
Originally Posted by teedog
After installed Fastcast, the following macro which I normally spam no longer works after one cast (instant cast due to Presence of Mind).
I believe you need to have a call to SpellStopCasting after you cast PoM for this to work. (That should be the case regardless of whether you use Fastcast or not).


Originally Posted by teedog
Also, do I understand the FAQ correctly that since I am casting Frostbolt from a macro, Fastcast will have no beneficial effect on it?
What this means is that you can't chain-cast your next spell (say another Frostbolt) with Fastcast allowing you to cast the second spell early. I.e., you'll have to wait for the full duration of your first macro-cast Frostbolt (i.e., including the server-time lag).


Originally Posted by teedog
Does Fastcast take into account spell interruption? Suppose you are a healer in the Vaelastrasz fight. A normal 3 second heal becomes 4 seconds due to spell interruption from the aoe damage. With a padding of 0.2, Fastcast will cancel the spell at 3.2 seconds. No heal is cast and tank is dead.

Can Fastcast determine how much your cast time is increased by due to interruption, and adjust accordingly?
From the Questions section of the download description:
Q. Does Fastcast still work if your casting is slowed by a debuff, or if you are taking damage?
A. Yes it does. Fastcast uses the information on spell duration provided by the client, and handles changes to this when damage is taken. For channeled spells, when you take damage you lose cast-time remaining, and Fastcast handles that too.

Note also that Fastcast will only interrupt a spell when you try and cast another one and the spell's cast time + padding time has been reached but the spell is still casting. In other words it won't cancel the spell except in response to a user action - no timer based interruptions are used.


Cheers,
-- Cirk
__________________
Cirk's Addons

Last edited by Cirk : 03-21-06 at 03:23 PM.
  Reply With Quote
03-21-06, 03:58 PM   #5
teedog
A Deviate Faerie Dragon
Join Date: Jan 2006
Posts: 13
Originally Posted by Cirk
I believe you need to have a call to SpellStopCasting after you cast PoM for this to work. (That should be the case regardless of whether you use Fastcast or not).
Strange I've been spamming this macro for the last few months without problems until installing Fastcast. If I add SpellStopCasting to the macro, I can't spam it since it would stop my Frostbolt casting.
  Reply With Quote
03-21-06, 04:01 PM   #6
teedog
A Deviate Faerie Dragon
Join Date: Jan 2006
Posts: 13
Re: spell interruption

Eeeep I didn't read the FAQ carefully enough, sorry!

But what about the following scenario caused by lag? Can anything be done about it other than increasing the padding? I suppose it would be a rare case.

Params
1s latency
0.5s padding
3s heal

0.0s - start cast
2.6s - take damage adding 1s to cast time
3.5s - mod stops cast (client has not received report of damage due to bad lag)
3.6s - client receives report of damage from server due to bad latency
4.0s - heal never cast since cancelled at 3.5s

Last edited by teedog : 03-21-06 at 04:05 PM.
  Reply With Quote
03-21-06, 04:39 PM   #7
Cirk
A Cobalt Mageweaver
 
Cirk's Avatar
AddOn Author - Click to view addons
Join Date: Jan 2006
Posts: 226
Originally Posted by teedog
Strange I've been spamming this macro for the last few months without problems until installing Fastcast. If I add SpellStopCasting to the macro, I can't spam it since it would stop my Frostbolt casting.
Hmm, well according to this thread on the UI forums, you need to do:
Code:
/cast Presence of Mind
/script SpellStopCasting();
/script UseInventoryItem(GetInventorySlotInfo("Trinket1Slot"));
/cast Frostbolt(Rank 10);
Can you try that and see if it works?

Originally Posted by teedog
But what about the following scenario caused by lag? Can anything be done about it other than increasing the padding? I suppose it would be a rare case.
Yeah, that situation (where you pressed your heal key again at 3.5s, causing Fastcast to cancel the current spell) could definitely ruin your day, although hopefully that will be a very rare occurrence.

If you are worried, turn off Fastcast when you are casting those long heals and they most definitely positively must have them land (or don't spam your slow healing spells ). You can also try putting long casting spells like this into a macro (for healers, perhaps with an announce so that other healers or your target knows its coming) which should prevent Fastcast from allowing it to be interrupted by a second press of the same macro.


-- Cirk
__________________
Cirk's Addons

Last edited by Cirk : 03-21-06 at 07:02 PM.
  Reply With Quote
03-21-06, 05:54 PM   #8
teedog
A Deviate Faerie Dragon
Join Date: Jan 2006
Posts: 13
Code:
/cast Presence of Mind
/script SpellStopCasting();
/script UseInventoryItem(GetInventorySlotInfo("Trinket1Slot"));
/cast Frostbolt(Rank 10);
That only works if you only want to cast a Frostbolt once. If you spam this macro, the first time will launch an instant PoM Frostbolt. The second time will start a normal Frostbolt cast. The third time will stop the Frostbolt cast and start a new one. And so on. So other than the first instant Frostbolt you never cast anything.

Code:
/cast Presence of Mind
/script UseInventoryItem(GetInventorySlotInfo("Trinket1Slot"));
/cast Frostbolt(Rank 10);
I used to spam this. First time launches a PoM instant Frostbolt. Second time starts a normal Frostbolt. Subsequently each press will either have no effect since you're casting Frostbolt or will start a new cast. Eventually the trinket and/or the PoM cooldown will end and the macro will cast those as well.

Not sure why Fastcast is not allowing me to do this.
  Reply With Quote
04-02-06, 12:35 AM   #9
Vileru
A Kobold Labourer
Join Date: Apr 2006
Posts: 1
New fastcast macros

In the thread on the mage forums you said you can create a pom/trinket macro. However, how would you go about creating simply a trinket + frostbolt macro with FastCast
  Reply With Quote
04-02-06, 01:29 AM   #10
Cirk
A Cobalt Mageweaver
 
Cirk's Avatar
AddOn Author - Click to view addons
Join Date: Jan 2006
Posts: 226
Originally Posted by Vileru
In the thread on the mage forums you said you can create a pom/trinket macro. However, how would you go about creating simply a trinket + frostbolt macro with FastCast
Hi Vileru, assuming you don't need to do a SpellStopCasting() call after your trinket (which normally you wouldn't) you could just do something like:
/script if FastcastStopCasting() then FastcastUseItem("trinket0slot"); CastSpellByName("Frostbolt"); end
Where for "trinket0slot" (which is the top-most trinket slot) you can also use "trinket1slot" (bottom slot) or the exact name of your item (e.g., "Talisman of Ephemeral Power", "Zandalarian Hero Charm", etc.) and it should find it in either trinket slot.

If you didn't want your macro to be fast-cast (i.e., wanted to always wait for the full-server delay) you could just use:
/script FastcastUseItem("trinket0slot"); CastSpellByName("Frostbolt")
Instead, which will just use your trinket if it is available, and cast Frostbolt.

Cheers
-- Cirk
__________________
Cirk's Addons
  Reply With Quote
04-03-06, 09:09 AM   #11
Cirk
A Cobalt Mageweaver
 
Cirk's Avatar
AddOn Author - Click to view addons
Join Date: Jan 2006
Posts: 226
First of all, apologies for uploading yet another release of Fastcast - the third one in as many days.

This release (version 1.10.2) fixes the bug that dynamicbr posted about over on the download page, where Fastcast was preventing some actions from working in Feral form. In fact Fastcast was blocking quite a lot of actions from being handled properly if the client indicated the action was "not usable", with the result that you couldn't toggle out of some toggle type actions (such as prowl for a druid) and wouldn't get error messages for actions you couldn't perform (like trying to cast when shapeshifted for druids and shadow priests).

(The cause of this was some code that I'd been experimenting with during the 1.10.0 development, and never removed again, d'oh)!

Anyway I'm hoping this version is now bug free now, and you can all stop downloading these fixes and go play instead! (Me too ).

-- Cirk
__________________
Cirk's Addons
  Reply With Quote
04-03-06, 10:05 AM   #12
Maia
A Deviate Faerie Dragon
AddOn Author - Click to view addons
Join Date: Feb 2006
Posts: 15
Cirk,
as auto cancellation of heals (aka mana conserve) is history, I've added some code to an addon I provide to my guild which will warn if a spell being cast should better be cancelled. So my thought was to use code similar to:

Code:
function CastHeal()
   if isCasting and isOverhealing then 
      SpellStopCasting()
      isCasting = false
   else
      CastSpellByName(whatever)
      isCasting = true
   end
end
to be able to have one key that will either cast or cancel the spell (with the advantage that you dont have to jump anymore, and don't need to cancel using WSC either, which sometimes deselects the target if being hit too late).

Now the problem is that people using FastCast (including me cant cancel their heals, as FastCast seems to prevent SpellStopCasting() from working until shortly before the spell lands (am I right? If not, I must have a stupid bug in my code, and you can ignore the rest of this posting . So with your new version, I could add a FastcastStopCasting() to my code. But: everyone who doesnt have FastCast installed, or everyone with an older version that doesnt offer that function yet will end up with a big error message on his screen.

So my question is: is there any way to check if FastCast is installed and if FastcastStopCasting() is available, so my code will only run FastcastStopCasting() for people who have the latest FastCast?

Thanks in advance.
  Reply With Quote
04-03-06, 05:38 PM   #13
Graguk
A Murloc Raider
AddOn Author - Click to view addons
Join Date: Jul 2005
Posts: 9
Awesome improvements Cirk


BTW, I'm pretty certain that when you activate a trinket, the client activates a global cooldown so you usually do need a SpellStopCasting() call after activating a trinket.


EDIT: Sorry, I'm reading the FAQ now. Looks like you documented it pretty well

Now, to your new features.. You mention that to get a macro to work with Fastcast, you need a SpellStopCasting() call..

Here's an updated macro I use:

/script if GetInventoryItemCooldown("player", 14) == 0 then UseInventoryItem(14); SpellStopCasting(); end CastSpellByName("Shadow Bolt");

Are you saying I need to make it look like this:

/script SpellStopCasting(); if GetInventoryItemCooldown("player", 14) == 0 then UseInventoryItem(14); SpellStopCasting(); end CastSpellByName("Shadow Bolt");


or like this?:

/script if GetInventoryItemCooldown("player", 14) == 0 then UseInventoryItem(14); SpellStopCasting(); end SpellStopCasting(); CastSpellByName("Shadow Bolt");



Now, I know you've given us another option, but I'd just like to understand how fastcast uses the presence of SpellStopCasting to work with macros so I don't have to re-write my macros if I ever need to disable FastCast.

Last edited by Graguk : 04-03-06 at 05:45 PM.
  Reply With Quote
05-13-06, 10:23 AM   #14
Skizz
A Murloc Raider
Join Date: May 2006
Posts: 5
Nice work Cirk!

I understand that the "casting bar adjustment" works only under certain conditions if I use a separate mod to modify of casting bar. I use eCastingBar; should the "casting bar adjustment" work with this mod? It is a fairly popular mod for modifying how your casting bar looks, but I'm not sure whether it uses the "CastingBarFrame" and "CastingBarFrameStatusBar" objects that you mention in the Readme file. Does eCastingBar work with the "casting bar adjustment" in your FastCast? Or how do I check this myself?

I simply did a search through all the files of the eCastingBar mod for "CastingBarFrame" and "CastingBarFrameStatusBar". I wasn't able to find any instances of "CastingBarFrameStatusBar" and I was able to find only two instances of "CastingBarFrame" (in "eCastingBar.lua"). I'm assuming this means FastCast's "casting bar adjustment" does not work with eCastingbar.

The reason why I ask this is because it doesn't seem like my casting bar (from eCastingBar) is adjusting to the padding setting as I change it. If there isn't any way to get FastCast to work with eCastingBar, would anyone have any suggestions for another casting bar mod with similar capabilities of eCastingBar that works with FastCast's "casting bar adjustment" option?

Thanks in advance. Great mod Cirk, keep it up!

Last edited by Skizz : 05-13-06 at 10:25 AM.
  Reply With Quote
05-30-06, 01:30 PM   #15
Ashes
A Kobold Labourer
Join Date: May 2006
Posts: 1
macro that sets padding time to latency

I have taken the liberty to add a function in the macro callable functions portion of the Fastcast add on. It allows one to set the current latency with one the push of a button. You could even have it “calibrate” your latency everytime you cast a spell.

Code:
function Fastcast_SetLat()
	local up, down, lag = GetNetStats();
	lag = lag / 1000;
	_fastPadding = lag + .005;
end
And the macro I use to activate this function:
Code:
/script Fastcast_SetLat();
/fastcast fast
Very handy if your latency changes from time to time.
  Reply With Quote
06-23-06, 05:48 PM   #16
smokes
A Kobold Labourer
Join Date: Jun 2006
Posts: 1
I dont know if you still check this forum, (its been 2 months since your last reply) but in case you do...

I was wondering if its possible to set up a macro to work with FastCast that incorperates the 8/8 Netherwind bonus of instant cast spells.

The current macro I use is:

/script local f for i=1,24 do f=f or strfind(UnitBuff("player",i) or "","Shadow_Teleport") end if not f then CastSpellByName("Scorch") else CastSpellByName("Pyroblast") end

Where "Shadow_Teleport" is the name of the buff givin by the NW proc.

Thanks
  Reply With Quote
06-29-06, 04:48 AM   #17
Black.
A Kobold Labourer
Join Date: Jun 2006
Posts: 1
there is a bug:

while mounted and attacked by mobs/player it is NOT possible to dismount when fastcast is enabled!
pressing your mount icon doesnt do anything.

its very unconfortable to turn it on/off every time i mount
  Reply With Quote
07-04-06, 10:08 PM   #18
Cirk
A Cobalt Mageweaver
 
Cirk's Avatar
AddOn Author - Click to view addons
Join Date: Jan 2006
Posts: 226
Some replies! (Sorry for the delay )

Originally Posted by Skizz
I understand that the "casting bar adjustment" works only under certain conditions if I use a separate mod to modify of casting bar. I use eCastingBar; should the "casting bar adjustment" work with this mod? It is a fairly popular mod for modifying how your casting bar looks, but I'm not sure whether it uses the "CastingBarFrame" and "CastingBarFrameStatusBar" objects that you mention in the Readme file. Does eCastingBar work with the "casting bar adjustment" in your FastCast? Or how do I check this myself?
Hey Skizz. I've been meaning to look at eCastingBar myself for a while to see if it would work with Fastcast (and what I'd need to do to make it so), so I'll do that, and see if I can roll something into the next Fastcast release.


Originally Posted by Ashes
I have taken the liberty to add a function in the macro callable functions portion of the Fastcast add on. It allows one to set the current latency with one the push of a button. You could even have it “calibrate” your latency everytime you cast a spell.
Hi Ashes. I actually originally had something very similar to this when I was first trying to figure out how to best implement Fastcast, and (for my testing at least) came to the conclusion that the padding factor to use wasn't directly proportional to the latency reported by the network code. Specifically the padding needs to absorb the minor variations in latency which aren't directly related to the actual value of the latency (although it is usually true that a higher latency has a higher degree of variation). I know for myself that my latency varies between 270 to 700 or so, and I basically use the same value (of 0.2) for the padding all the time. Of course thats not to say the approach you've described doesn't have merit, and may in fact be a great way to do it for many players . Maybe one day I'll add an "Auto padding" option to Fastcast, using something very similar (e.g., below 200, use 0.1, between 200 and 400 use 0.2, etc.).


Originally Posted by smokes
I dont know if you still check this forum, (its been 2 months since your last reply) but in case you do...

I was wondering if its possible to set up a macro to work with FastCast that incorperates the 8/8 Netherwind bonus of instant cast spells.

The current macro I use is:

/script local f for i=1,24 do f=f or strfind(UnitBuff("player",i) or "","Shadow_Teleport") end if not f then CastSpellByName("Scorch") else CastSpellByName("Pyroblast") end

Where "Shadow_Teleport" is the name of the buff givin by the NW proc.

Thanks
To make this fast-castable, you should simply be able to add something like:
/script if FastcastStopCasting() then local f for i=1,24 do f=f or strfind(UnitBuff("player",i) or "","Shadow_Teleport") end if not f then CastSpellByName("Scorch") else CastSpellByName("Pyroblast") end end


Originally Posted by Black.
there is a bug:

while mounted and attacked by mobs/player it is NOT possible to dismount when fastcast is enabled!
pressing your mount icon doesnt do anything.

its very unconfortable to turn it on/off every time i mount
Black, I don't have this problem at all, at least with normal mounts (and paladin summoned mounts). Are you using version 1.10.2 of Fastcast? (There was problems in earlier versions with things like what you are reporting).


Cheers
-- Cirk
__________________
Cirk's Addons
  Reply With Quote
07-05-06, 01:28 PM   #19
Anothermage
A Kobold Labourer
Join Date: Jul 2006
Posts: 1
Firstly, after reading the section on Fastcast and macros a few times, I'm still a bit confused; is the following macro (as is), able to take advantage of FastCast's chain casting?

/script Stop=SpellStopCasting;if not CastingBarFrame.casting and GetInventoryItemCooldown("Player",14)==0 then UseInventoryItem(14);Stop();end
/cast Frostbolt

*note: activates toep whenever it is up and casts frostbolt (even if toep is on cooldown).

Secondly, I've been using this macro for a while and when I am trigger happy (assuming cooldown on toep is down) then I will get a couple short interrupt at the beginning of the cast (after toep is activated) - assuming I am rapidly clicking the macro. This can get annoying and cause me to lose valuable casting time. I've almost learned not to be 'trigger happy' but sometiems I still fall into this old trend.

Anyway, I just tried FastCast (not even thinking about my trigger happy macro problem), and surprisingly, the problem above has disappeared. This seems to solve my macro problem when "Protect Channeling" is enabled, whether or not FastCast is enabled. That is, the Protect Channeling seems to have fixed my problem with the interruptions when rapidly clicking the macro. So, why does "Protect Channeling" fix this? Does the ToEP act as a "Channeled Spell?"

Thanks
  Reply With Quote
07-20-06, 08:27 AM   #20
Skizz
A Murloc Raider
Join Date: May 2006
Posts: 5
Originally Posted by Cirk
Hey Skizz. I've been meaning to look at eCastingBar myself for a while to see if it would work with Fastcast (and what I'd need to do to make it so), so I'll do that, and see if I can roll something into the next Fastcast release.
Woot! Nice to know you're still around. I'm still loving your mod. How's that eCastingBar-compatible version coming along? I'm looking foward to it. Good luck and keep up the great work!

Last edited by Skizz : 07-20-06 at 08:31 AM.
  Reply With Quote

WoWInterface » AddOns, Compilations, Macros » Released AddOns » Cirk's Fastcast


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off