(If you see typos, please point them out so that I can fix them)
While not entirely practical, this tutorial will walk you through all of the ability phases with Text Actors and tie spell effect chains to them. We will be creating a single ability that summons units, raises them into the air, sacrifices them and then temporarily model swaps the caster. I did not make any weapons or effects that you would expect to go with the model swap, but this is mainly because I want to focus only on the spell rather than on the Behaviors and Validators involved in turning a unit's weapons on and off.
Ability Phase Basics
Abilities are broken down into a series of phases. These phase follow the following order and are tied to specific instances during an the ability. If left with no duration, the phase is skipped over. If no phases are given values the ability is an instant cast spell.
Approach: This phase is the duration between when you activate the ability and when your unit moves within range to use the ability. If you want your unit to have a special effect that warns others that it is moving to cast a spell, this is the phase you would use. For most abilities this phase will be non-existent given that the unit won't have to move to begin casting.
Prepare: For all intents and purposes this is the "starting" phase of a spell. Typically only used if you want to create multiple animation stages prior to triggering the Effects.
Cast: This is the last phase before the Effects are triggered.
Channel: This is the phase immediately after the Effects have been triggered. This phase is typically the one that begins while the Effect Chain is still in progress. This is also when the ability cooldown begins.
Finish: This is last phase of the ability that completes the ability. If you used the Channel Phase this usually begins as soon as the last Effect has ended.
Archaic Sacrifice
Effects Tab
Create a new Effect named Sacrifice Summon (Damage) with Effect Type: Damage
set Flags: Kill
This effect will instantly kill the summoned units it is applied to giving the appearance they were sacrificed.
Create a new Effect named Model Swap (Buff) with Effect Type: Apply Behavior
set Units +: Caster
This is a placeholder in the effect chain until you have created the actual behavior.
Create a new Effect named Summoned Unit (Buff) with Effect Type: Apply Behavior
set Units +: Target
This is a placeholder in the effect chain until you have created the actual behavior.
Create a new Effect named Summoning Height (Buff) with Effect Type: Apply Behavior
set Units +: Target
This is a placeholder in the effect chain until you have created the actual behavior.
Create a new Effect named Summon (Unit) with Effect Type: Create Unit
set Effect - Spawn:Summoned Unit (Buff)
set Location +: Target Point
set Origin +: Target Point
set Spawn Count: 1
set Spawn Owner +: Player Origin
set Spawn Range: 1
set Spawn Unit: Any Ground Unit - (I made a custom unit named "Sacrifice")
This is responsible for creating the units you will be killing during the spell. It doesn't matter which unit you choose so long as the unit walks on the ground and it starts the with specified Buff.
Create a new Effect named Summon Offset (Persistent) with Effect Type: Create Persistent
This will trigger the unit summons and allow you to specify the exact location the units are created at.
Behaviors Tab
Create a new Behavior named Model Swap with Behavior Type: Buff
set Alignment: Positive
set Categories: Temporary
open Modification +:
Unit > Vital Max Bonus: (Life: 260; Shields: 260)
set Duration: 30
set Display Countdown: Self
set Icon: btn-unit-protoss-zealot-dark.dds
link the Effect - Apply Behavior:Model Swap (Buff)
Create a new Behavior named Summoning Height with Behavior Type: Buff
set Categories: Temporary
open Modification +:
Ability > Abilities Disabled: [Attack/Move]
Unit > Height: 3
Unit > Height Height Time: (Start: 5)
set Effect - Final:Model Swap (Buff)
set Effect - Periodic:Sacrifice Summon (Damage)
set Duration: 5
set Flags: Hidden
set Period: 5
set Period Count: 1
link the Effect - Apply Behavior:Summoning Height (Buff)
This prevents the unit from moving while raising it into the air and killing it at the end of the buff. At the same time it will apply the Model Swap Buff that is tied to the Model Swap Actor Event.
Create a new Behavior named Summoning Unit with Behavior Type: Buff
set Categories: Temporary
open Modification +:
Ability > Abilities Disabled: [Attack/Move]
set Effect - Final:Summoning Height (Buff)
set Duration: 5
set Flags: Hidden
link the Effect - Apply Behavior:Summoning Unit (Buff)
This prevents the unit from moving after it has been created and chains into the Height Buff.
Buttons Tab
Create a new Button named Archaic Sacrifice
set Hotkey: F
set Icon: btn-techupgrade-terran-psioniclash.dds
Create a new Button named Prepare Phase
set Icon: decalnumber1_diffuse.dds
Create a new Button named Cast Phase
set Icon: decalnumber2_diffuse.dds
Create a new Button named Channel Phase
set Icon: decalnumber3_diffuse.dds
Create a new Button named Finish Phase
set Icon: decalnumber4_diffuse.dds
Abilities Tab
Create a new Ability named Archaic Sacrifice with Ability Type: Effect - Instant
open Commands + and set the Default Button for Execute to Archaic Sacrifice
set Uninterruptible: [Approach/Prepare/Cast/Channel/Finish]
set Validate: [Approach/Prepare/Cast/Channel/Finish]
open Cost + and set Cooldown > Time Use: 40
set Effect:Summon Offset (Persistent)
set Cast Finish Time: 10
set Cast Start Time: 5
set Finish Time: 5
set Prepare Time: 5
set Show Progress: [Approach/Prepare/Cast/Channel/Finish]
This ability will show its progress during each phase and use the buttons you created earlier to help illustrate which phase you are in. Also, it is currently setup to prevent interruptions in all phases. This means that once the ability has started it can't be stopped.
Models Tab
Create a new Model named Avatar
set Model: DarkZealot.m3
Create a new Model named Prepare Aura
set Model: ActiveCrystals.m3
Create a new Model named Cast Beacon
set Model: CircleOfPower_Protoss.m3
Create a new Model named Cast Impact
set Model: BlinkIn.m3
Create a new Model named Channel Beam
set Model: TractorBeam.m3
Create a new Model named Channel Impact
set Model: TractorBeamImpactBubble.m3
Create a new Model named Finish Impact
set Model: VoidPrismImpact.m3
Create a new Model named Summoner
set Model: DarkHighTemplar.m3
Units Tab
Duplicate the High Templar unit and its corresponding Actor. Everything else will be stock or made from scratch.
Name it Summoner
open Abilities + and remove all but [Attack/Move/Stop]; add [Archaic Sacrifice]
open Command Card + and remove all Templar Abilities; add Archaic Sacrifice
Create a new Actor named Cast Beacon with Actor Type: Model and Based On: Model Animation Style Continuous
set Model:Cast Beacon
set Host +:Summoner
set Host Site Operations +: SOpAttachOrigin
open Events + and create the following events:
Actor Creation
Animation Play (Name: Attach; Animation Properties: Stand; Flags: Play Forever)
Ability - Archaic Sacrifice - Source Cast Start
Create
Ability - Archaic Sacrifice - Source Finish Start
Animation Play (Name: Death; Animation Properties: Death)
Animation Done
Animation Name Death (Term)
Destroy
Create a new Actor named Cast Impact with Actor Type: Model and Based On: Model Animation Style One Shot
set Model:Cast Impact
set Host +: Alias > _Unit
set Host Site Operations +: SOpAttachCenter
open Events + and create the following events:
Actor Creation
Animation Play (Name: Attach; Animation Properties: Stand; Time Variant: 1; Time Type: Duration)
Effect - Summon (Unit) - Create
Create
Animation Done
Destroy
Create a new Actor named Channel Beam with Actor Type: Beam (Simple) and Based On: Beam Simple Animation Style Continuous
set Model:Channel Beam
set Host Impact +: Alias > _Unit
set Host Impact Site Ops +: SOpAttachCenter
set Host Launch +:Summoner
set Host Launch Site Ops +: SOpAttachCenter
open Events + and create the following events:
Actor Creation
Animation Play (Name: Beam; Animation Properties: Stand; Flags: Play Forever)
Behavior - Summoning Height - Create
Create
Behavior - Summoning Height - Destroy
Destroy
Create a new Actor named Channel Impact with Actor Type: Model and Based On: Model Animation Style Continuous
set Model:Channel Impact
set Host +: Alias > _Unit
set Host Site Operations +: SOpAttachCenter
open Events + and create the following events:
Actor Creation
Animation Play (Name: Attach; Animation Properties: Stand; Flags: Play Forever)
Behavior - Summoning Height - Create
Create
Behavior - Summoning Height - Destroy
Destroy
Create a new Actor named Finish Impact with Actor Type: Model and Based On: Model Animation Style Continuous
set Model:Finish Impact
set Host +:Summoner
set Host Site Operations +: SOpAttachCenter
open Events + and create the following events:
Actor Creation
Animation Play (Name: Attach; Animation Properties: Stand; Flags: Play Forever)
Ability - Archaic Sacrifice - Source Finish Start
Create
Ability - Archaic Sacrifice - Source Finish Stop
Destroy
It's important to note that with all of these animations the duration is dynamic. This means that if you want to change the length of a given phase, the models will adapt. To better understand some of the events, use the Text Actors in the video to see when different models start and stop.
Sound Actors
Create a new Actor named Prepare Aura Sound with Actor Type: Sound and Based On: SoundContinuous
Create a new Actor named Cast Beacon Sound with Actor Type: Sound and Based On: SoundContinuous
set Sound: WarpGate_TrainLoop
open Events + and create the following events:
Ability - Archaic Sacrifice - Source Cast Start
Create
Ability - Archaic Sacrifice - Source Finish Start
Destroy
Create a new Actor named Cast Impact Sound with Actor Type: Sound and Based On: SoundOneShot
set Sound: Stalker_Blink
open Events + and create the following events:
Effect - Summon (Unit) - Create
Create
Sound Done
Destroy
Create a new Actor named Channel Beam Sound with Actor Type: Sound and Based On: SoundContinuous
set Sound: Sentry_WeaponLoop
open Events + and create the following events:
Behavior - Summoning Height - Create
Create
Behavior - Summoning Height - Destroy
Destroy
You might notice ::Creator in the Host Supporter + field for the SoundContinuous Sound Actors. While we won't use this, if you have a unit that might be destroyed while the sound is active, you can use the Supporter Destruction Actor Event to destroy the sound. Keep in mind that you can change the Supporter to a specific actor if needed.
Text Actors
Create a new Actor named Prepare Text with Actor Type: Text
set Host +: Subject > Summoner
set Host Site Operations +: SOpAttachOverhead
set Color: (255, 0, 0, 255)
set Height Offset: 1
set Maximum Word Size: (5.0, 2.0)
set Text: (Text Key: Prepare; Text: Prepare Phase)
Animation Play (Name: Channel; Animation Properties: Stand, Channel; Flags: Play Forever)
Ability - Archaic Sacrifice - Source Cast Stop
Animation Clear (Name: Prepare)
Ability - Archaic Sacrifice - Source Finish Start
Animation Clear (Name: Channel)
Behavior - Model Swap - Create
Model Swap (Model: Avatar)
Model Swapped - Summoner
Set Scale (Scale: 2.5; Blend: 5; Label: Grow)
Behavior - Model Swap - Destroy
Model Swap (Model: Summoner)
Behavior - Model Swap - Destroy
Clear Scale (Blend: 1; Label: Grow)
These events will cause the caster to animate and change according to the Ability Phase and whether or not it has been Model Swapped. Now your spell should function as shown in the video :D
Feel free to use the attached Test Map or contact me via forum post/IRC if you encounter problems. Keep in mind that I'm a busy person so I may not reply right away, but I'll do my best to answer all questions/concerns that I am aware of :)
Just guessing, but would the approach phase be for abilities that target a location? For example, if you're a ghost and you click 'launch nuke' across the map he has to walk there. I may try this out later and see what happens.
Approach: To be honest I don't see the point for this phase. You can't set it's duration thus it isn't useful for anything other than namesake.
This is not entirely accurate.
"Approach" is the phase that occurs after the unit has been given the order to perform an ability, and before he starts performing it. In essence, it is used when you give a unit an order to cast a spell but he is out of range and must "approach" a valid range in order to cast it. The reason you cannot set the duration is because, by its inherent nature, the duration of this phase is variable, e.g. if you tell a templar to cast psi storm over on the other side of the map, the approach phase will be the time it takes for him to get to a point where he can cast it. During that time, he will be in an "approach" state, which you can break by overriding his orders, or through other actor events.
The usefulness of this phase can be debated, however, from personal experience, I have found this phase to be extremely useful, especially in setting up unit specific AI and intercepting specific user orders.
I'm sure u miss something: U forgot too match the behaviors with the apply behavior effects(I think u want to create the effects and the behaviors with same names, so they will match themselves. But there are 2 model swap behaviors, but only 1 model swap effect).
And with the model swap effect, u forgot to change target unit for the effect to caster.
One more thing: The effect happen only from channel phase, u cannot make it happen during prepare or cast phases.
I'm trying to make another void prison, which capture the unit into an orb during prepare phase, lift in on during cast phase, changing the color of the orb to red and decreasing the size in channel phase and finnaly BOOM. But because of the above, i cannot make a model actor which attach to the target during prepare/cast phase.
So, i think using timer set maybe better than using this.
Updated the tutorial to include the new information about the "Approach Phase"
@MrZ3r0 - Thanks for the catch about Behaviors. I've added the comment to link them to the Apply Behavior Effects. I've also changed the name typos. The effect is actually correct in pointing to target unit, I just misnamed the related buff.
For your second post, I'm somewhat unclear on what you mean. I already pointed out that the effects happen after the Cast Phase and before the Channel Phase, so I agree with this comment. As for your spell, you CAN make actors attach to targets during spell phases other than channel. You can see this is the case given that I have various models created on the caster throughout all of the phases (Approach excluded). To have the models created on your target during any phase, use Target[PHASE][WHEN] instead of Source[PHASE][WHEN]. TargetPrepareStart vs SourcePrepareStart.
@FxD23 - If you haven't already, look at my Panic/Berserk Tutorial. You find it through the link in my signature. I create a bunch of periodic offsets and then have the persistent pick one of the randomly. So while you can pick completely random points, you could fill the offsets with as many different points as you want and then tell the persistent to pick X random offsets from this list to use in your spell.
@zenx1 - The cast bar already shows above the unit. If you look at 0:30 in the movie where the supersized zealot is walking around, I hover over the unit briefly. Each time you can see a gray bar representing the timer on the buff. There is a similar looking blue bar that shows up when casting a spell. You can see this by holding down alt while the spell is running or settings status bars to always in the game itself.
Approach phase. Few units come to mind. probe, drone, scv. When you tell them to build at a spot they are not near they highlight it with holographic transparent outlines of the buildings. Thats the approach phase in action right? I guess its good for doing that...
TBH I don't know if that's a part of the approach phase or the construction ability itself. I'd have to look closer, but that is definitely similar to what you can expect to create using models linked to the approach phase.
(If you see typos, please point them out so that I can fix them)
While not entirely practical, this tutorial will walk you through all of the ability phases with Text Actors and tie spell effect chains to them. We will be creating a single ability that summons units, raises them into the air, sacrifices them and then temporarily model swaps the caster. I did not make any weapons or effects that you would expect to go with the model swap, but this is mainly because I want to focus only on the spell rather than on the Behaviors and Validators involved in turning a unit's weapons on and off.
Ability Phase Basics
Abilities are broken down into a series of phases. These phase follow the following order and are tied to specific instances during an the ability. If left with no duration, the phase is skipped over. If no phases are given values the ability is an instant cast spell.
Archaic Sacrifice
Effects Tab
This effect will instantly kill the summoned units it is applied to giving the appearance they were sacrificed.
This is a placeholder in the effect chain until you have created the actual behavior.
This is a placeholder in the effect chain until you have created the actual behavior.
This is a placeholder in the effect chain until you have created the actual behavior.
This is responsible for creating the units you will be killing during the spell. It doesn't matter which unit you choose so long as the unit walks on the ground and it starts the with specified Buff.
This will trigger the unit summons and allow you to specify the exact location the units are created at.
Behaviors Tab
This prevents the unit from moving while raising it into the air and killing it at the end of the buff. At the same time it will apply the Model Swap Buff that is tied to the Model Swap Actor Event.
This prevents the unit from moving after it has been created and chains into the Height Buff.
Buttons Tab
Abilities Tab
This ability will show its progress during each phase and use the buttons you created earlier to help illustrate which phase you are in. Also, it is currently setup to prevent interruptions in all phases. This means that once the ability has started it can't be stopped.
Models Tab
Units Tab
Duplicate the High Templar unit and its corresponding Actor. Everything else will be stock or made from scratch.
Actors Tab
Model Actors
It's important to note that with all of these animations the duration is dynamic. This means that if you want to change the length of a given phase, the models will adapt. To better understand some of the events, use the Text Actors in the video to see when different models start and stop.
Sound Actors
You might notice ::Creator in the Host Supporter + field for the SoundContinuous Sound Actors. While we won't use this, if you have a unit that might be destroyed while the sound is active, you can use the Supporter Destruction Actor Event to destroy the sound. Keep in mind that you can change the Supporter to a specific actor if needed.
Text Actors
The color, location and size of the text is entirely optional. The only important parts are the Hosting - [ANYTHING] and Events + fields.
Unit Actors
These events will cause the caster to animate and change according to the Ability Phase and whether or not it has been Model Swapped. Now your spell should function as shown in the video :D
Feel free to use the attached Test Map or contact me via forum post/IRC if you encounter problems. Keep in mind that I'm a busy person so I may not reply right away, but I'll do my best to answer all questions/concerns that I am aware of :)
Thanks, ProlificMuze :P
Just guessing, but would the approach phase be for abilities that target a location? For example, if you're a ghost and you click 'launch nuke' across the map he has to walk there. I may try this out later and see what happens.
This is not entirely accurate.
"Approach" is the phase that occurs after the unit has been given the order to perform an ability, and before he starts performing it. In essence, it is used when you give a unit an order to cast a spell but he is out of range and must "approach" a valid range in order to cast it. The reason you cannot set the duration is because, by its inherent nature, the duration of this phase is variable, e.g. if you tell a templar to cast psi storm over on the other side of the map, the approach phase will be the time it takes for him to get to a point where he can cast it. During that time, he will be in an "approach" state, which you can break by overriding his orders, or through other actor events.
The usefulness of this phase can be debated, however, from personal experience, I have found this phase to be extremely useful, especially in setting up unit specific AI and intercepting specific user orders.
I'm sure u miss something: U forgot too match the behaviors with the apply behavior effects(I think u want to create the effects and the behaviors with same names, so they will match themselves. But there are 2 model swap behaviors, but only 1 model swap effect).
And with the model swap effect, u forgot to change target unit for the effect to caster.
Anyway, thank a lot for the tutorial.
The Approach phase is during that time while the unit is getting in range (or turning around) to perform the ability as the others have said.
One use I could think of: You could show an Alert to indicate that a unit has been given an order an is on its way to start that ability.
One more thing: The effect happen only from channel phase, u cannot make it happen during prepare or cast phases.
I'm trying to make another void prison, which capture the unit into an orb during prepare phase, lift in on during cast phase, changing the color of the orb to red and decreasing the size in channel phase and finnaly BOOM. But because of the above, i cannot make a model actor which attach to the target during prepare/cast phase.
So, i think using timer set maybe better than using this.
@ProzaicMuze: Go
Very nice Muze you should really talk to the guys here about getting your own section for a list of all of your tutorials.
Id like to see all your Tuts layed out together in a manner where they could lead into one another.
i'm impressed reminds me of some good ole' Age of Conan.
@ProzaicMuze: Go Thx for all your well structured tutorials.
I'm looking for a way of using random points for the Persistent Periodic Offsets. Do you have any idea or hint how i could archive this?
Could you tell me how to make the casting bar show above the unit instead of the normal UI thingy?
Updated the tutorial to include the new information about the "Approach Phase"
@MrZ3r0 - Thanks for the catch about Behaviors. I've added the comment to link them to the Apply Behavior Effects. I've also changed the name typos. The effect is actually correct in pointing to target unit, I just misnamed the related buff.
For your second post, I'm somewhat unclear on what you mean. I already pointed out that the effects happen after the Cast Phase and before the Channel Phase, so I agree with this comment. As for your spell, you CAN make actors attach to targets during spell phases other than channel. You can see this is the case given that I have various models created on the caster throughout all of the phases (Approach excluded). To have the models created on your target during any phase, use Target[PHASE][WHEN] instead of Source[PHASE][WHEN]. TargetPrepareStart vs SourcePrepareStart.
@FxD23 - If you haven't already, look at my Panic/Berserk Tutorial. You find it through the link in my signature. I create a bunch of periodic offsets and then have the persistent pick one of the randomly. So while you can pick completely random points, you could fill the offsets with as many different points as you want and then tell the persistent to pick X random offsets from this list to use in your spell.
@zenx1 - The cast bar already shows above the unit. If you look at 0:30 in the movie where the supersized zealot is walking around, I hover over the unit briefly. Each time you can see a gray bar representing the timer on the buff. There is a similar looking blue bar that shows up when casting a spell. You can see this by holding down alt while the spell is running or settings status bars to always in the game itself.
Approach phase. Few units come to mind. probe, drone, scv. When you tell them to build at a spot they are not near they highlight it with holographic transparent outlines of the buildings. Thats the approach phase in action right? I guess its good for doing that...
TBH I don't know if that's a part of the approach phase or the construction ability itself. I'd have to look closer, but that is definitely similar to what you can expect to create using models linked to the approach phase.
How to make an aura where the button changes to stop it?