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.
Example map: (
link)
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
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
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
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
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
- set Period Count: 4
- set Period Durations: 0
- set Period Effects: Summon (Unit)
- set Periodic Offsets: ([3, 3]. [3, -3]. [-3, -3]. [-3, 3])
- set Location +: Source Unit
- set Location Offset - End +: Source Unit
- set Location Offset - Start +: Source Unit
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.
- 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 Progress Buttons: (Cast: Cast Phase; Channel: Channel Phase; Finish: Finish Phase; Prepare: Prepare Phase)
- 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
- 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
- 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
- (Button: [NAME]; Command Type: Ability Command; Ability: [NAME]; Ability Command: [NAME])
Actors Tab
Model Actors
- Create a new Actor named Prepare Aura with Actor Type: Model and Based On: Model Animation Style Continuous
- set Model: Prepare Aura
- set Scale: 2
- 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 Prepare Start
- Ability - Archaic Sacrifice - Source Finish Start
- 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
- 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
- Animation Done
- 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
- Behavior - Summoning Height - 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
- Behavior - Summoning Height - 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
- Ability - Archaic Sacrifice - Source Finish Stop
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
- set Sound: Doodad_PickupChronoRiftChargeStandLoop
- open Events + and create the following events:
- Ability - Archaic Sacrifice - Source Prepare Start
- Ability - Archaic Sacrifice - Source Finish Start
- 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
- Ability - Archaic Sacrifice - Source Finish Start
- 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
- Sound Done
- 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
- Behavior - Summoning Height - 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 +: 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)
- set Text Scale: 0.5
- open Events + and create the following events:
- Ability - Archaic Sacrifice - Source Prepare Start
- Ability - Archaic Sacrifice - Source Prepare Stop
- Create a new Actor named Cast Text with Actor Type: Text
- set Host +: Summoner
- set Host Site Operations +: SOpAttachOverhead
- set Color: (255, 0, 255, 0)
- set Height Offset: 1
- set Maximum Word Size: (5.0, 2.0)
- set Text: (Text Key: Cast; Text: Cast Phase)
- set Text Scale: 0.5
- open Events + and create the following events:
- Ability - Archaic Sacrifice - Source Cast Start
- Ability - Archaic Sacrifice - Source Cast Stop
- Create a new Actor named Channel Text with Actor Type: Text
- set Host +: Summoner
- set Host Site Operations +: SOpAttachOverhead
- set Color: (255, 255, 255, 0)
- set Height Offset: 1
- set Maximum Word Size: (5.0, 2.0)
- set Text: (Text Key: Channel; Text: Channel Phase)
- set Text Scale: 0.5
- open Events + and create the following events:
- Ability - Archaic Sacrifice - Source Channel Start
- Ability - Archaic Sacrifice - Source Channel Stop
- Create a new Actor named Finish Text with Actor Type: Text
- set Host +: Summoner
- set Host Site Operations +: SOpAttachOverhead
- set Color: (255, 255, 128, 0)
- set Height Offset: 1
- set Maximum Word Size: (5.0, 2.0)
- set Text: (Text Key: Finish; Text: Finish Phase)
- set Text Scale: 0.5
- open Events + and create the following events:
- Ability - Archaic Sacrifice - Source Finish Start
- Ability - Archaic Sacrifice - Source Finish Stop
The color, location and size of the text is entirely optional. The only important parts are the Hosting - [ANYTHING] and Events + fields.
Unit Actors
- Select the Actor named Summoner
- open Events + and remove all but the following events:
- Unit Birth - Summoner
- Unit Death - Summoner
- Ability - Archaic Sacrifice - Source Prepare Start
- Animation Play (Name: Prepare; Animation Properties: Spell; Flags: Play Forever)
- Ability - Archaic Sacrifice - Source Channel Start
- 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, PM or IRC (#SC2Mapster on chat.freenode.net:6667) 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 :)