Difference between revisions of "Casting Spells From An Activator"
imported>Tegid (Fixed problem. FlippySource replaced by Activator source. In the future such comments should be on the Discussion Page) |
imported>Decoup |
||
Line 54: | Line 54: | ||
===The Self Spell Script=== | ===The Self Spell Script=== | ||
This script uses [[PlaceAtMe]] to create an activator and then uses that activator to [[Cast]] the AOE spell. | This script uses [[PlaceAtMe]] to create an activator and then uses that activator to [[Cast]] the AOE spell. | ||
Set the <b>Script Type</b> to <b>Magic Effect</b> | |||
<pre> | <pre> | ||
Line 84: | Line 86: | ||
===The Area of Effect Spell Script=== | ===The Area of Effect Spell Script=== | ||
This script will be run on every actor that is hit by the TutCallLightningAoeSpell. This script will then create an activator using PlaceAtMe and use it to cast a lightning bolt at the affected actor. (Remember: This happens for each actor hit!) | This script will be run on every actor that is hit by the TutCallLightningAoeSpell. This script will then create an activator using PlaceAtMe and use it to cast a lightning bolt at the affected actor. (Remember: This happens for each actor hit!) | ||
Set the <b>Script Type</b> to <b>Magic Effect</b> | |||
<pre>scriptname TutCallLightningAoeSpellScript | <pre>scriptname TutCallLightningAoeSpellScript |
Revision as of 05:31, 18 May 2006
Casting Spells from an Activator
This is a short tutorial on how to use activators to cast spells. This will allow you to create more complicated spell effects such as lightning strikes or point blank area of effect spells.
By the end of this tutorial you should have a working point blank AoE lightning strike spell.
What you need
During this tutorial we will creating the following:
- 1 activator object
- 2 spells
- 2 spell scripts
Create the Activator
The first thing we need to do is create the activator object. This object will be used to cast spells.
In the Object Window, Expand the WorldObjects item and select Activator. Right-click in the object list to the right and select "New" from the context menu that pops up.
Set these fields:
- ID: Set this to "ActivatorSource"
- NIF: Set this to "magiceffects\null.nif" (This makes the activator invisible)
Leave the rest of the fields alone and click "OK".
Create the Spells
Next, we need to create two spells. The first spell summons an activator near the caster and then has that activator cast the second spell. Making this second spell an area of effect spell will give us our point blank AoE spell.
The Self Spell
This is the spell that the player or actor will cast.
Expand the Magic list item in the Object Window. Select the Spell item underneath Magic and then right-click in the object list to the right. Select "New"
Fill in the fields:
- ID: TutCallLightningTriggerSpell
- Name: Call Lightning
- Type: Spell
The Area of Effect Spell
This is the spell that the activator will cast.
Right-click in the spell listing again and select "New" from the context menu.
Fill in the fields:
- ID: TutCallLightningAoeSpell
- Type: Spell
Keep in mind that we haven't written the scripts yet, so we'll have to come back and set the scripts after we write them. We're creating things in this order because the scripts need to reference the spells, and the spells need to reference the scripts, but it's easier to create the spells and add the scripts in later.
Write the Scripts
Now it's time to write the scripts. Open up the script editor by selecting the "Gameplay->Edit Scripts..." menu. Once in the script window, select "Script->New..." from that window's menu.
The Self Spell Script
This script uses PlaceAtMe to create an activator and then uses that activator to Cast the AOE spell.
Set the Script Type to Magic Effect
scriptname TutCallLightningTriggerSpellScript ;Casts an aoe spell at the caster which calls lighting down in a radius around him. ref me ;holds a reference to the actor who is casting ref source ;holds a reference to the activator Begin ScriptEffectStart ;get a reference to the caster set me to GetSelf ;place an instance of the source activator that we created earlier set source to me.PlaceAtMe ActivatorSource, 1, 0, 0 ;add 200 to the height so it is above the actor float height set height to me.GetPos z set height to height + 200 source.SetPos z, height ;have the activator cast the AOE spell now source.Cast TutCallLightningAoeSpell me ;disable the activator so we don't have a bunch laying around source.Disable End
The Area of Effect Spell Script
This script will be run on every actor that is hit by the TutCallLightningAoeSpell. This script will then create an activator using PlaceAtMe and use it to cast a lightning bolt at the affected actor. (Remember: This happens for each actor hit!)
Set the Script Type to Magic Effect
scriptname TutCallLightningAoeSpellScript ;Calls lightning down from the sky on a single target ref me ;holds a reference to the actor who affected by this spell ref source ;holds a reference to the activator Begin ScriptEffectStart ;get a reference to this actor set me to GetSelf ;place an instance of the source activator that we created earlier set source to me.PlaceAtMe ActivatorSource, 1, 0, 0 ;add 1000 to the height so it looks like the lightning is coming from the sky float height set height to me.GetPos z set height to height + 1000 source.SetPos z, height ;have the activator cast the lightning spell at the affected actor source.Cast StandardShockDamageTarget1Novice me ;disable the activator so we don't have a bunch laying around source.Disable End
Attach the Scripts to the Spells
Now that we have the scripts created, we need to attach them to the spells.
The Self Spell Script
Edit the TutCallLightningTriggerSpell spell. Right-Click in the Effects list and select "New" from the context menu.
Fill in the fields:
- Effect: Script Effect
- Range: Self
- Duration: 0
- Script: TutCallLightningTriggerSpellScript
- Effect Name: Call Lightning
- School: Destruction
- Visuals Effect: NONE
Click OK in the Effect dialog and the spell dialog to save the spell.
The Area of Effect Spell
Edit the TutCallLightningAoeSpell. Right-click in the Effects list and select "New" from the context menu.
Fill in the fields:
- Effect: Script Effect
- Range: Target
- Area: 100 (or 200, whatever you want. This is the area around the caster that the spell will affect)
- Duration: 0
- Script: TutCallLightningAoeSpellScript
- Effect Name: Lightning Strike
- School: Destruction
- Visuals Effect: NONE
Click OK in the Effect dialog and the spell dialog to save the spell.
Save the Plugin
This is an important part of modding! Save your plugin with a descriptive name like "TutActivatorSpell"
Test the Spell
At this point, the spell should be ready to cast. You'll need to determine the Form ID of the TutCallLightningTriggerSpell spell. Refer to the Form ID page for more information.
Once you know the Form ID, you can use the following console command to give yourself the spell:
player.addspell FormID
Caveats
- This spell will hit the player as well as everyone around him. This may or may not be what you want. A simple if check in the TutCallLightningAoeSpellScript will prevent the spell from hitting the player:
... set me to GetSelf if me == player return endif ...
Note that a more complicated script is required to achieve this if any actor is able to cast this spell.
- This version of the spell will not cause aggro when it hits people. This can be changed by forcing the target into combat using StartCombat in TutCallLightningAoeSpellScript, but there are still some problems with that as well.