Introduction / Tools / Extracting / Editing / Creating
Introduction...
Greetings and salutations...
Several people have asked me how I make my mods. First off, it takes time and alot of trial and error. Secondly, you have to know basic editing but if you know the basics then expanding on that becomes easier. To learn basic editing goto ARA*ff's or Siege Crusader's basic editing tutorials.
For those who are really new to mods, there are a few things you need to know. We will call the actual game as the "Foundation". Everyone sees the same thing because everyone has the same "foundation". But once you change something in the foundation, you are the only one who can see it unless someone else has the samething you have changed it to. Just like a buildings foundation which is made of smaller components like bricks, concrete blocks, mortar, ribar, wood, posts, etc., the foundation (game) is made of smaller components called "templates". There is a template for everything you see in the game...I mean everything, if there wasn't, you wouldn't see it. Imagine the possiblilities once you learn how to create your own templates. Within the "major" templates are "smaller" templates. The key to making mods is changing "major" templates but putting unchanged "smaller" templates within that template to make it visable. Remember, if you change all the templates, no one will see it except you, and how fun is that (Example).
All the templates you will need are found in the "resources" folder. The default location is C:/Program Files/Microsoft Games/Dungeon Siege/Resources. Inside the resources folder are files...Logic.dres, Object.dres, Sound.dres, Terrain.dres and Voices.dres (pic). More then likely (until you get very good at editing) all you will really need to mess with is the "logic.dres" file. The "logic.dres" is pretty much the "brain" of the game - hence the term "logic".
(Index)
Tools you will need...
All I ever used to create my mods are;
Tankviewer, Skritpad, and Tank Creator (just ckick on the names to download them)
(Index)
Now that you have the needed tools to edit, lets get started. Before you can edit you need to decide what kind of mod you want to create. There is almost an endless number of Modifications (MODS) you can make i.e; Stronger Weapons, shields and items, items that add stats, new spells, summons spells, even new creatures with different skins.
For this tutorial, lets make a simple summons modification. Therefore we need to extract the "sp_spells.gas" which is the main template for spells.
First thing you need to do is create a folder anywhere you want, I choose to create them on my destktop for easier access. For those who are not sure of how to create a folder, simply right click on your desktop, scroll down to "new" then choose "folder". Rename the folder to whatever you like, for this tutorial I will use "Example" as the folder. (pic)
Then open your tankviewer. (pic)
With tankviewer open the logic.dres, default location is C:/Program Files/Microsoft Games/Dungeon Siege/Resources/. (pic)
After you've located and opened the "logic.dress", let's find the "sp_spells.gas" and extract it into the "example" folder we created on the desktop. To do this, on the left hand window of tankviewer, click on folders "world", then "contentb", then "templates", then "regular", then "interactive". Within the interactive folder you will find "sp_spells.gas" on the right hand window. (pic) Highlight "sp_spells.gas" and then click on the extract button and another window will open allowing to to select folder which you want to exract to.(pic) After you've hightlighted the folder you created, simply just click on the "extract" button.
(Index)
Now that we've extracted the "sp_spells.gas, it's time to do some editing. Like I said earlier, we're just going to make a simple summons mod. I'll show you how to make a new spell template.
With the skritpad, open the the sp_spells.gas located in the folder which you extracted it to. When you extracted the sp_spells.gas, it also extracted the folders in which it was in therefore with skritpad, you will have to open "Eample/World/Contentb/Templates/Regular/Interactive". (pic) Once you get to the "interactive" folder you will notice it appears empty (pic), simply click on the arrow in the window next to "Skrit File (*.skrit;*.txt)" and select "All Files" allowing "sp_spells.gas" to be visible. (pic). Highlight "sp_spells.gas" and click on open. Congratulations, you have now opened the file if done correctly.
At this time, take a moment to have a look around the file. Just make sure you do not accidently move, add, erase, replace anything. One wrong move and the whole template (sp_spells.gas) is messed up unless you return it to its original. Scroll down until you find the template [t:template,n:spell_super_gom_summon].
It's editing time...
Below is the original Gom Summons spell template which we will use to make our own summons spell.
[t:template,n:spell_super_gom_summon] <= = = = = Spell Template
{
category_name = "magic";
doc = "spell_super_gom_summon";
specializes = base_spell_monster;
[inventory]
{
[delayed_pcontent]
{
[oneof*]
{
[all*]
{
chance = 0.33;
il_main = lava_imp_03_summon;
}
[all*]
{
chance = 0.33;
il_main = lava_imp_04_summon;
}
[all*]
{
chance = 0.34;
il_main = molten_golem_summon_gom;
}
}
}
}
[magic]
{
cast_range = 10;
cast_reload_delay = 0;
effect_duration = 20;
requires_line_of_sight = true;
require_state_check = true;
speed_bias = 1;
target_type_flags = tt_conscious_enemy | tt_unconscious_enemy;
usage_context_flags = uc_offensive;
cast_sub_animation = 4;
state_name = "Controlling";
caster_state_name = "Controlling";
}
[spell_summon_multiple]
{
flee = true;
watch_summoned = true;
spawn_num = 6;
effect_script = "fire_summon";
spawn_radius = 10.0;
spawn_rate = .75;
description = "Summoned Creature";
caster_description = "Controlling Summoned";
}
}
To make your own spell template, copy the WHOLE spell starting from [t:template,n:spell_super_gom_summon] (pic) ending at the last " }" prior to the beginning of the next spell template (pic) by highlighing the spell, then right click and choose "copy" (pic). Then paste the spell at the end of the spell by placing the curser next to last " } " of the spell, right clicking then choosing "paste" (pic). You have now made an EXACT copy of the spell, it's time to make a new template.
Scroll back up to the beginning of the spell you've just pasted - [t:template,n:spell_super_gom_summon] and change "spell_super_gom_summon" to whatever you like (pic), in the pic I placed the original template name off to the side just for comparision but you'll notice I changed the template name to "spell_EXAMPLE_summon".
Having changed the template name, we have now created our own spell but the spell still summons the same thing gom does, well, lets change what we summon. Notice in the example above, you will notice there are three "il_main =" ( "il_main = lava_imp_03_summon;" "il_main = lava_imp_04_summon;" and "il_main = molten_golem_summon_gom;" ). To summon different creatures all we have to do is replace "lava_imp_03_summon", "lava_imp_04_summon" and "molten_golem_summon_gom" with whatever creature we want to summon.
To pick what creature we want to use. we will need to open the logic.dres again and browse through the creatures' templates. When I create summons, I usually use "elite" creatures. There are 3 different levels of creatures - Elite, Veteran, and Regular. All "elite" level creature templates start with "3W_", all "veteran" level creatures - "2W_", and all "regular" level creature - "W_". All that will be important as you get better with editing but for now all we will need is the "Elite" templates.
Using the tankviewer, open the logic.dres. Open tankviewer, click on "re-open" and select logic.dres (pic).
After we've selected "logic.dres", click on folders WORLD / CONTENTB / TEMPLATES / ELITE / ACTORS / EVIL. Once we've opened the folder "evil" you will notice 4 more folders A, B, C, D. Each folder contains specific *.gas files. The *.gas files contain the creature templates we will be using.
For this tutorial, we will be using the 3W_maljin.gas (pic) located in folder "A". Simply click on folder "A" on the left hand window and then click on the "3W_maljin.gas" on the right hand window (pic) then click on "VIEW" and a new window will open up.
Within this window are all the Maljin templates. [t:template, n:3W_base_maljin] describes what all maljins look like ie, base height, speed, look, chores and bone placement (pic) hence the term "base"
If we scroll further down we will notice a new template - [t:template, n:3W_maljin_melee] - now this template differs from the first because this one is a template for a specific Maljin, the "Maljin Stalker" (pic).
Scroll down to the next template, you'll find - [t:template,n:3W_base_maljin_ranged] - this template describes what all ranged maljins look like, speed, bone placement (pic) once again hence the term "base".
The next template is [t:template,n:3W_maljin_ranged] - this template is for the creature "Maljin Jolt" (pic). The following template we will use is - [t:template,n:3W_maljin_magic] which is the template for "Maljin Phantom".
To enable us to summon "Maljins", we need to replace :
[all*]
{
chance = 0.33;
il_main = lava_imp_03_summon; with 3W_maljin_melee
}
[all*]
{
chance = 0.33;
il_main = lava_imp_04_summon; with 3W_maljin_ranged
}
[all*]
{
chance = 0.33;
il_main = molten_golem_summon_gom; with 3W_maljin_magic
}
so it looks like this:
[all*]
{
chance = 0.33;
il_main = 3W_maljin_melee;
}
[all*]
{
chance = 0.33;
il_main = 3W_maljin_ranged;
[all*]
{
chance = 0.33;
il_main = 3W_maljin_magic;
}
Therefore the whole new template will look like this:
[t:template,n:spell_EXAMPLE_summon]
{
category_name = "magic";
doc = "spell_super_gom_summon";
specializes = base_spell_monster;
[inventory]
{
[delayed_pcontent]
{
[oneof*]
{
[all*]
{
chance = 0.33;
il_main = 3W_maljin_melee;
}
[all*]
{
chance = 0.33;
il_main = 3W_maljin_ranged;
}
[all*]
{
chance = 0.34;
il_main = 3W_maljin_magic;
}
}
}
}
[magic]
{
cast_range = 10;
cast_reload_delay = 0;
effect_duration = 20;
requires_line_of_sight = true;
require_state_check = true;
speed_bias = 1;
target_type_flags = tt_conscious_enemy | tt_unconscious_enemy;
usage_context_flags = uc_offensive;
cast_sub_animation = 4;
state_name = "Controlling";
caster_state_name = "Controlling";
}
[spell_summon_multiple]
{
flee = true;
watch_summoned = true;
spawn_num = 6;
effect_script = "fire_summon";
spawn_radius = 10.0;
spawn_rate = .75;
description = "Summoned Creature";
caster_description = "Controlling Summoned";
}
}
We have now created a new template summoning maljins. There are alot more templates for creatures we could choose from, here are a few for starters...3W_maljin_melee_boss_01 = "Maljin Assasin" | 3W_bandit_melee = "Bandit" | 3W_bandit_melee_boss_01 = "Rogue Bandit" | 3W_bandit_ranged = "Bandit Archer" | 3W_bandit_boss = "Bandit Boss" | 3W_droog_archer = "Droog Archer" | 3W_droog_grunt = "Droog Grunt" | 3W_droog_grunt_boss_01 = "Droog Captain" | 3W_droog_mage = "Droog Mage" | 3W_fury = "Fury" | 3W_giant_spider = "Giant Spider" | 3W_goblin_robo_suit_minigun = "Goblin Robo Suit" with minigun | 3W_goblin_robo_suit_flamethrower = "Goblin Robo Suit" with flamethrower | 3W_goblin_robo_suit_lightning = "Goblin Robo Suit" with lightning gun | 3W_super_gom = "Super Gom" | 3W_fire_elemental = "Fire Elemental" | 3W_suicide_elemental = "Blazing Elemental" | 3W_toreck = "Toreck" | 3W_kell = "Kell" | 3W_cyclops = "Cyclops" | 3W_chicken_white_super = "Big Chicken" (white) | 3W_chicken_red_super = "Big Chicken" (red) | 3W_rock_beast = "Rock Beast" | 3W_lava_beast = "Lava Beast" | 3W_lava_beast_boss_01 = "Magma Beast".
The next section deals with how far we can cast the spell, how fast the spell can be cast, if we can cast it trough walls and how many we summon.
[magic]
{
cast_range = 10; (change this to any interger between 1 - 100, anything higher is useless)
cast_reload_delay = 0; (this determines how fast the spell can be cast)
effect_duration = 20;
requires_line_of_sight = true; (changing "true" to "false" allows you to cast through walls)
require_state_check = true;
speed_bias = 1;
target_type_flags = tt_conscious_enemy | tt_unconscious_enemy; (this determines who you can cast spell on)
usage_context_flags = uc_offensive;
cast_sub_animation = 4;
state_name = "Controlling";
caster_state_name = "Controlling";
}
[spell_summon_multiple]
{
flee = true; (determines whether your character will run away after spell is cast. Changing "true" to "false", character will hold place)
watch_summoned = true; (change "true" to "false" allow you to cast more then once)
spawn_num = 6; (notice under delayed_pcontent, only 3 creature templates, this line determines HOW MANY will appear)
effect_script = "fire_summon";
spawn_radius = 10.0; (determines how far apart creatures will appear)
spawn_rate = .75; (determines how fast creatures appear)
description = "Summoned Creature";
caster_description = "Controlling Summoned";
}
}
Play around with the values, remember "greater isn't always better". Meaning, don't go crazy and summon 100 creatures....causes lag.
Congratulations, you have just created your very first summons spell, BUT there's still more. Although we have created the template, the spell will show up as a blank icon - no name, no discription. If you have ever acquired a "Gom" spell, you will notice that the only way to tell what it is, is by placing the curser over the spell and the spell template name appears at the bottom of the screen. Meaning if you had a spellbook full of "Gom" spells, switching between spells is difficult to do. We will solve this issue by giving the spell a "name" and "discription". This means more copying and pasting...
With Tankviwer, reopen your "Logic.dres". Find your "sp_spells. gas" again but instead of extracting, just click on view, scroll down the list till you come across the template [t:template, n:spell_accuracy]. Copy starting at the end of line "base_spell_good;" to the last " } " before [gui] (pic). Return to your spell_EXAMPLE_summon template and paste what you copied to it by placing curser after "base_spell_monster;", right clicking and select paste.
The beginning of the template should look like this now...
[t:template,n:spell_EXAMPLE_summon]
{
category_name = "magic";
doc = "spell_super_gom_summon";
specializes = base_spell_monster;
[aspect]
{
gold_value = 783;
}
[common]
{
description = "Raises the Dexterity of a Party Member by <alter_dexterity>."; (replace with list of creatures summoned)
screen_name = "Accuracy"; (replace this with whatever you want to name your spell)
}
[inventory]
{
[delayed_pcontent]
{
[oneof*]
{
[all*]
We have now given your spell a name, a driscription and monetary value.
Hit "File", then "save".
Your new Summons spell has now been created. This spell will summon creatures that will attack anyone, including yourself.
If we were to go ahead and create this mod at this point, it would still be useless to us. Although we have MADE the spell, the spell is still not attainable. At the moment the spell is just a "thought", now we have to make it tangible.
The problem can be solved one of two ways.
1st - Copying and pasting spell template name to your characters.
2nd - Making spell available for purchase from a shop.
I prefer the 2nd option, that way I can purchase spell as I wish instead of having to edit all my characters. So let's make this spell available for purchase from "Trianna" - Priestess in church at Elddim
This means more extracting and editing.
Lets see if we remember how to extract. With tankviewer, open your "logic.dres". Click on World / Contentb / Templates / regular / actors / good / npc and find "npc_fg_based.gas". Highlight "npc_fg_based.gas and then click on "Exract". We are going to extract it to the same folder we extracted the "sp_spells.gas", the "EXAMPLE" folder.
With your Skritpad, open the "npc_fg_based.gas", you will have to open folders "EXAMPLE / world / contentb / templates / regular / actors / good / npc.
Once you've open the file, click on "search", then "find", then type in Trianna in the search bar then click "OK" (pic).
Scroll down from [t:template,n:mage_trianna_lelaine] until you come across:
[all*]
{
il_main = spell_resurrect;
il_main = spell_revive;
il_main = spell_healing_hands;
il_main = scroll_resurrect;
max = 1;
min = 1;
}
Copy and paste the line "il_main = spell_resurrect;" and paste it right above the original so now it looks like this:
[all*]
{
il_main = spell_resurrect;
il_main = spell_resurrect;
il_main = spell_revive;
il_main = spell_healing_hands;
il_main = scroll_resurrect;
max = 1;
min = 1;
}
From this poin, simply replace one of the "spell_resurrect" with "spell_EXAMPLE_summon so that it looks like this:
[all*]
{
il_main = spell_EXAMPLE_summon;
il_main = spell_resurrect;
il_main = spell_revive;
il_main = spell_healing_hands;
il_main = scroll_resurrect;
max = 1;
min = 1;
}
Hit "file", then "save".
You have just created your own summons spell that can be purchased from "Trianna" in the church in Elddim.
***NOTICE*** The most common mistake made by people usually has to do with the semi-colon ( ; ). If you forget get one or double up ( ;; ) on one, the mod will not work. Be sure to always double check your work.
Now lets "Create" the mod.
(Index)
It's time to create our mod. Open Tankcreator (pic). Next to the "source" line, click on the browse button and select the folder we extracted the files into (pic), for me it would be the "EXAMPLE" folder. Next to the "Output" line, click on the browse button, then click on C:/Program Files/Microsoft Games/Dungeon Siege/Resource (pic) and another window will open, next to "file name" type in whatever you want to name your mod (pic) then hit "save". This will return you to the main Tankcreator window. Hit create and c-promt window opens (pic)...all that's left to do is hit the spacebar and your mod is created.
CONGRATULATIONS!!!!! YOU HAVE JUST CREATED YOUR FIRST SUMMONS MOD !!!!!
When you run you game, goto Trianna. She is in the church in Elddim and buy your spell. (screenshot). You can now summon Maljins but remember, they will attack you as well...(screenshot).
If you have any questions, post them in the FORUM under the Dungeon Siege section.
(Index)
Create a free website at Webs.com