First off, the files you have to edit are located here: ...\Steam\SteamApps\common\magicka\content\Levels\Challenges
For the easiest editing open the xml files with Notepad++. Nice code highlighting (
download here)
I'll use the Havindr Arena Challenge as example. The file you have to edit is chs_havindr_arena.xml (read this, if it doesn't display file extensions)
The first lines of code you see are these:
Code:
<?xml version="1.0" encoding="utf-8" ?>
<Scene>
<model>ch_havindr_arena</model>
<reverb roomType="10" mix="40" />
<trigger id="Start" repeat="false">
<if />
<then>
<cameramagnify magnification="0.8"/>
<playMusic cue="music_encounter" delay="3"/>
<playAnimation name="rope1" loop="true"/>
<playAnimation name="rope2" loop="true"/>
<playAnimation name="rope3" loop="true"/>
<playAnimation name="rope4" loop="true"/>
<playSound id="ch_arena_bars01" volume="0" area="ch_arena_bars01" radius="150" apply3d="true" cue="Misc/misc_arena_gate01" />
</then>
</trigger>
<RuleSet type="Survival" waves="20">
<spawnAreas>
<area>north</area>
<area>west</area>
<area>east</area>
<area>south</area>
</spawnAreas>
</RuleSet>
You won't essentially need any of that. You can zoom in and out by changing the value of magnification in the cameramagnify-tag. (lower number for zooming out)
If you want to have more waves (or less) edit the value for waves in the RuleSet-tag.
Now to edit the waves.
This is a basic wave:
Code:
<wave value="1">
<waveActions area="any" delay="0">
<spawn type="orc_regular" nr="1"/>
<spawn type="orc_captain" nr="1"/>
</waveActions>
</wave>
The wave tag initiates a new wave. Wave one in this case.
In the waveActions-tag you usually spawn stuff. It inherits area="any" and delay="0" to the spawn tags inside.
The attributes 'area' and 'delay' aren't needed in the waveActions-tag if you place them in the spawn-element (and reverse)
Code:
<wave value="1">
<waveActions area="any" delay="5">
<spawn type="orc_regular" nr="1"/>
<spawn type="orc_captain" nr="2" area="west" delay="5"/>
</waveActions>
</wave>
In this case one regular orc will spawn at a random spawn point after 5 seconds (5 seconds before waveActions is executed), while the two orc captain spawns at the spawn point west with an overall delay of 10 seconds.
type="?" sets what unit spawns;
nr="?" sets how many units spawn;
area="?" sets at what spawn point units spawn, possible points can be found in the area-tag;
delay="?" sets the delay in seconds before units spawn, can also be used for many other tags
You can find a list of spawnable units here: ...\Steam\SteamApps\common\magicka\content\Data\Characters
Use the file name without the extension as value for the
type-attribute in the
spawn-tags.
If you want to unlock a magick, use this code:
Code:
<unlockMagick magicktype="?" delay="?" />
List of possible magicks:
MeteorS
TractorPull
Levitate
ChainLightning
ProppMagick
Portal
napalm
revive
ctd
confuse
grease
teleport
timewarp
Blizzard
Tornado
Thunderb
Thunders
SPhoenix
rain
Invisibility
SElemental
Sundead
Fear
charm
Conflagration
SDeath
Vortex
Nullify
corporealize
haste
wave
performanceenchantment
judgementspray
Place in waveActions.
delay="?" is optional.
Use this code, to spawn items (weapons, staffs, magick tomes):
Code:
<spawnItem item="weapon_chainsaw" area="?" nr="1" physicsEnabled="false/true" delay="?"/>
List of spawnable items is here: ...\Steam\SteamApps\common\magicka\content\Data\items\Wizard
Use the file name without the extension as value for the
item-attribute.
Place in waveActions.
Use this, to automatically equip all players a weapon or staff:
Code:
<assignItem id="staff_default" delay="?"/>
id uses the same values as
item.
Place in waveActions.
Dis- and enable elements:
Code:
<disableElement element="?" delay="?"/>
<enableElement element="?" delay="?"/>
values for
element: life, water, shield, cold, lightning, arcane, earth, fire
Note: Trying to enable an element that's already enabled will cause ctd. Same applies to disabling.
delay is optional
Place in waveActions.
Dis- and enable cast types:
Code:
<disableCastType type="?" delay="?"/>
<enableCastType type="?" delay="?"/>
<disablePush/>
<enablePush/>
values for
type: force, area, self, weapon
Note: Trying to enable a cast type that's already enabled will cause ctd. Same applies to disabling.
delay is optional
Place in waveActions.
That was the basic stuff. Of course there is more, but that'd take too much time to write for now. Maybe I'll make an actual guide some day...