//DOWNLOAD MODS//DOWNLOAD TUTORIAL //

 

-----------------------------------------------------------------------------------

Intro to modding Disciples 2

----------------------------------------------------------------------------------- 

Ok, I’ve been thinking a lot about writing this and some people asked me to teach them how to mod Disciples 2… so I figured this will be the easiest way to spread the knowledge and preserve it… I like to think that there are some things I don’t know about D2 modding yet, but the more I look into the files, the more I see that I really haven’t missed much… well, without further adieu – lets get to modding Disciples 2 J

 -----------------------------------------------------------------------------------

The general idea

 -----------------------------------------------------------------------------------

Before we actually start modding, we have to know the basics of “how things work” in D2. Well, Discipl2.exe file gathers all game-related information[1] from the DBF files contained in the Globals folder. Before any questions are raised, I’ll clearly say that you cannot put anything “new”[2] in the game, just mix-and-match the existing stuff… DBF files (aka DataBase Files) are a group of cross-referencing databases with delicate formatting, most of your modding time you’ll have to make several entries/corrections to many different databases in order for your creation to be successful. I’ll make some examples later on… This was the part I was going to explain some hex-related stuff, but I decided that I won’t teach anyone how to hex-mod Disciples 2… It will be MUCH MUCH easier for all of us if you just used DBFView from the start (get the v2.03 trial for free and use this serial number 12345678901234567890123456789015 to “legalize” it… I don’t hold any responsibility for this however, and you may be violating 5 to 43 laws depending on your Country / State)

So you have DBFView – what now ? Stay tuned for more, as the interesting stuff is yet to be revealed…

 -----------------------------------------------------------------------------------

Terms

-----------------------------------------------------------------------------------

Ok, here’s a brief list of the terms I will be using:

CtH – chance to hit (e.g. 10%)

Dmg – damage quantity (e.g. 125)

Srcshort for Source

Rng – short for Range

Powerthis is pretty much the same as CtH except it’s a number (e.g. Power of 10 is equal to CtH of 10%)

I think that’s about it concerning the terms… 

-----------------------------------------------------------------------------------

File descriptions / guides

 -----------------------------------------------------------------------------------

Now I will descript each file individually and give a minor guide on what’s important to mod and so on… I will only mention the REALLY important ones, the others are left for you to explore (I just can’t deprive you of the “screaming “WHYYYY” and banging your head because it doesn’t work” sensation) but you’ll do just fine modding these… The files mentioned here will be: Gattacks.dbf; Gbuild.dbf; GDynUpg.dbf; Gimmu.dbf; GimmuC.dbf; GLabi.dbf; GMabi.dbf; Gmodif.dbf; GmodifL.dbf; Grace.dbf; GspellR.dbf; Gspells.dbf; Gtransf.dbf; Gunits.dbf; GVars.dbf; TGlobal.dbf … The unmentioned files will be only BRIEFLY commented and won’t go that deep into details like these ones… Well, backup your Globals folder (zip it and drag it onto the desktop) and lets get started...

 -----------------------------------------------------------------------------------

Gattacks.dbf

-----------------------------------------------------------------------------------

Ok, so if you double-click on this one, your DBFView will (hopefully) pop-up and open it… you’ll see a lot of stuff in here, but you won’t be able to recognize anything… That is because Disciples 2 uses a unique ID system, where ID 1 calls for ID 1a from file B and ID 11bb from file C etc… so this section will be put on hold for now…

----------------------------------------------------------------------------------- 

Tglobal.dbf

-----------------------------------------------------------------------------------

The file you’ll constantly refer to J this file holds only two columns:

The ID, and the string it contains…

Press CTRL+F to search for a string (e.g. Matriarch) and the first one it lands on is x000tg1120 (Column: TXT_ID) which says “Clerics will upgrade to Matriarchs when enough experience is acquired” (Column: TEXT); ignore that for now and click F3 (Search Next) it lands on tg1121 (note that I used a shortened version – instead of writing x000tg1120 I will mostly use only tg1120 or just address stuff by their IDs once we *figure out* the pattern), hit F3 once again and now we land on tg2017 which just says “Matriarch”… nice J if you want the Matriarch to be called “IMBA-healing bitch”, just press CTRL+E which enables your DBFView to edit[3], now you can double-click the field that says “Matriarch” (if it turns all blue just press Home to return to the beginning of the field) and type something in… No need to save because it automatically saves when you edit (it has a direct file control so whenever you change something, its done for good) so just close Tglobal.dbf  (and any other currently open DBF files) and start ScenEdit…. Make a new scenario called test, put the Empire as the race and check Matriarch’s name… if it changed – we made our first mod J if not, well, go back and see what you did wrong… if your game crashed, just revert to your backup… You may freely ignore the other two columns (VERIFIED and CONTEXT)                                                                                                                                                                                      

 -----------------------------------------------------------------------------------

Gunits.dbf

-----------------------------------------------------------------------------------

First, we notice two things when we open this file… It starts with a G and not a T (which pretty much means we Gather info from it and not just Transport it…) and there’s a whole bunch of columns here… Before you start venturing, I will suggest that you make a clear idea on what you want to do… This whole tutorial will revolve around several test-units that we will make; so enable Edit mode and click on Add…

This will result in a completely blank row at the end of the file; a blank canvas for us to do some nice work J

  - The First field (UNIT_ID) must be a unique unit id that will be assigned to our new unit… so we’ll put g000uu9250 here 

 - The Second field (UNIT_CAT) will have a 0 in it (I’ll discuss all categories later on in the text, so just bare with me for now, or read the LunitC.dbf file and all will be revealed) 

 - LEVEL, well this is pretty much self-explanatory but we’ll put a 1 here 

 - PREV_ID, this decides from which unit did you get this one, or in other words which unit upgraded into this one. Notes when using this: PREV_ID unit must be of a smaller level… I’ll get to the restrictions on these stuff later so don’t stray away for now… just put g000000000 (that’s 9 zeros) 

 - RACE_ID, this tells the game which race has this unit… we’ll put g000rr0004 here (which is Neutral) 

 - SUBRACE, if a unit is a neutral, this tells it where to go e.g. Neutral humans or Greenskins etc… feel free to read LSubRace.dbf for more info… Our unit will have a 5 here (Neutrals) 

 -  BRANCH, this tells the game which branch it is… this is only used for upgrading, and I’m sure we’ll get back on this one later on, so just stick a 0 in here (Neutrals don’t have branches because they can’t pick different building paths for their units to upgrade because they don’t have a Capital to build them in, in the first place…) 

 - SIZE_SMALL, well well well, this is our first BOOLEAN field… its kind of a nice place to discuss field types – there are only 3 : Alphanumerical, Numerical, Boolean; you figured out the AlphaNumerical ones in Tglobal.dbf, and the Numerical ones in Gunits.dbf (LEVEL, BRANCH etc)… Boolean fields can only hold one of the two letters: T (true) or F (false)… Since our unit will be a one-spacer, put T here (or F if you’re building a two-spacer) 

 - SEX_M, this tells the game if the unit is Male or Female… this doesn’t have any significance whatsoever, so you can put T or F, it won’t matter much… I would be cautious though, and make sure that M units upgrade to Ms and F units into Fs (although I don’t think this causes any errors, it is better to be safe than sorry) 

 - ENROLL_C, this is how much it costs to enroll/buy this unit… g1000:r0000:y0000:e0000:w0000 – this means that this unit costs 1000 gold and 0 of each mana… if you’re wondering “Hey, there’s only 4 mana types but there are 5 mana types in RotE”, well my suggestion is that if you make units cost mana, DO NOT make them cost Grove (b) mana… you may try this format g1000:r0000:y0000:e0000:w0000:b0000 but I don’t guarantee it will work… although it should J

 

MANA TYPES:

  • y is for Empire (Life) mana,
  • w is for Dwarven (Rune) mana,
  • r is for Demonic (Infernal) mana
  • e is for Undead (Death) mana
  • b is for Elven (Grove) mana

Ok, since we’re settled with this, just copy/paste the entry I gave (1000 gold one) and move on to the next column. 

-         ENROLL_B, this is the ID of the building that allows the purchase of this unit… there are only 5 units that use this, and they are the Racial Special unit (Titan, Griffin, Wolverine, Fiend, Yeti) so just stick a g000000000 here. 

-         NAME_TXT, this is the string this unit uses for its name… so this will be a good time to jump back into the Tglobals.dbf and pick one out… don’t add a new one yet… so you can stick a x000tg2001 here (Squire) 

-         DESC_TXT, this is the string this unit uses for its description… this one is also located in Tglobal.dbf so you can either pick one out yourself or stick a x000tg2501 here (Squire info) 

-         ABIL_TXT, this is the string that specifies the ABILITY of the unit… long story short, this is the thing that says “Scouting hero”, “Fighter Hero”, “mage hero”, “rod planter” and “thief”… since our unit isn’t any of those, stick a x000tgb006 here (none) 

-         ATTACK_ID, this would be a nice time to go back to Gattacks.dbf but not for now… stick a g000aa0001 (Squire’s Sword) 

-         ATTACK2_ID, this is where you define complementary attacks like poison, paralysis, healing etc… I will explain those in detail once we get to gattacks.dbf, just stick g000000000 for now… 

-         ATTACK_TWICE, well this is a simple one… Does this unit have a double attack ? put a T there, just for fun… 

-         HIT_POINT, this defines the units HP… put 200 in there for now… 

-         BASE_UNIT, ok this one needs a bit explanation… the unit id that is written here defines the Model of this unit. In other words, our unit will look[4] just like that unit and share all of its animations and sounds… So, we’ll stick g000uu8050 here if you have RotE, or g000uu0015 if you don’t[5]…. 

-         ARMOR, well, this is pretty easy… how much armor does our unit have? let’s give it a 10 J

 -         REGEN, this is the percentage of HP our unit will heal at the start of the next turn… the default value is 5 with the exception of Infernal Knight that has 15 (and some others that have 50, but disregard that), so we’ll put a 5 here… The Warrior Lord’s bonus adds 15 to that which means most of the units regen 20% of their Max HP per turn under his rule… if you end your turn on your ground, you gain an additional 10% from your terrain that can add up to 30(works for all Lords)!!! So believe me, 5 is plenty J

 -         REVIVE_C, how much does it cost to revive this unit? Use what ever you want or use this: g0200:r0000:y0000:e0000:w0000  , this makes it so that it costs 200GP to revive this unit…

 -         HEAL_C, how much does it cost to heal 1HP for this unit? Use whatever you want or this: g0005:r0000:y0000:e0000:w0000

 -         TRAINING_C, how much does it cost to train this unit for 1XP? Use whatever you want or this: g0005:r0000:y0000:e0000:w0000 

-         XP_KILLED, this is how much XP this unit gives when it is killed… this number will be divided by the number of victorious units… Example: let’s put 300 here and lets imagine 3 Squires and an Archmage attacking this unit… our unit kills one Squire, and the Archmage and the remaining two squires win the fight… they each gain 100 XP (300 / 3) J

 -         UPGRADE_B, this entry says this: ”this building is required in order to upgrade”… so the building ID listed here MUST be built in your capital in order to upgrade into the next unit (more info about this in the Upgrading section)… just stick a g000000000 here J Neutrals don’t upgrade anyhow…

 -         XP_NEXT, this number determines how much XP is needed for Leveling… put 1000 here…

 -         MOVE – the number of move points, only leaders should have this…

 -         SCOUT – the scout radius – number of “squares” this unit sees around itself… also leader-only…

 -         LIFE_TIME, this tells the game how many turns does this unit last… only summons use 1 here and illusions use 3… so either put 0 or leave it blank (I suggest leaving it blank)

 -         LEADERSHIP. This number determines how many units can this unit lead… unlike the in-game version, the unit itself is counted against this number so if you want it to be able to lead 3 units, set its leadership to 4 (3 + self), also leader-only

 -         NEGOTIATE, I don’t really know what this is for, it may be for Thief orders but I don’t know which ones (maybe all?) put something from 10 – 90 in here… Experimentation with this one is encouraged J (leader-only)

 -         LEADER_CAT, this is the leader category… read TleadC.dbf for more into, leader-only

 -         DYNUPG1, this is the characteristics the unit inherits per lvl… to keep it simple – put a g000DU0001 here…

 -         DYN_UPG_LVL, this number determines the *breaking* level… the unit will keep upgrading using the DYNUPG1 until it reaches this level, afterwards it will upgrade using DYNUPG2… put a 10 in here…

 -         DYNUPG2, pretty much the same as DYNUPG1… put g002DU0001 here…

 -         WATER_ONLY, is our unit water only ? I don’t think so, so just leave it blank…

 -         DEATH_ANIM, this number determines which death anim will be played when our unit dies… 1 is empire, 2 is demons, 3 is dwarves, 4 is undead, 5 is neutral, 8 is elf… there are also another two, but I don’t guarantee them working: 6 – dragon, 7 – ghost. Put a 1 here J

 And that’s it J close up the Gunits.dbf and/or any other DBF file you’re currently viewing, start up the ScenEdit and browse through the Neutral units (not leaders) until you find a Paladin (or Sir Allemon) that looks like a squire… play a little with him, give him some levels and after you think you’ve mastered this, we move on to step 2…
-----------------------------------------------------------------------------------

A bit more advanced stuff…

-----------------------------------------------------------------------------------

Ok, if you leveled him up, you’d notice that he gets 3 dmg and 10 HP per level… What if we want him to get 20HP, 5 dmg and 1 armor per level?? Well, we’d just need to open up this file…

-----------------------------------------------------------------------------------

GDynUpg.dbf

-----------------------------------------------------------------------------------

I’ll get right to the point… Add two new lines using the add command and fill them like this:

-         UPGRADE_ID, ok this is the ID that has been given to the current upgrade chart… put g000DU9250, and g002DU9250 in the lower one… 

-         ENROLL_C, this is the value that is added to the ENROLL_C from the Gunits.dbf file… Example: lvl1 squire costs 200 GP and has 20 in his enroll_c in his DynUpg chart… following that analogy, lvl2 squire costs 220gp, lvl5 costs 300GP and so on… you get the picture J, put whatever you want in these two (upper, lower) 

-         HIT_POINT, this represents how much HP the unit gets per level… we’ll put 20 in the first one (DU9250) and 10 in the second one (2DU9250)

 -         ARMOR, this represents how much Armor the unit gets per level… we’ll put 1 in the upper one and leave the lower one blank (blank is 0 by default, so you can just type in 0, but I like to leave things blank… makes it easier to spot something…)

 -         REGEN, this is how much regen does the unit get per level… since I already explained all these in the Gunits.dbf, you may think of this like “those were the stats for lvl1 units, anything from here just adds up to it” so if you put a 5 here, our Lvl2 “squiro-paladin” will regen 10% of his HP instead of just 5… this one is VERY powerful and I advise using it only if you’re building a unit with really high regen (note that this may buff regen up to 90 or so… and I’m not sure what happens when you have regen more or equal to 100…) we’ll leave these blank for both our inputs…

 -         REVIVE_C, ok you get the idea… how much more does it cost to revive the unit… put in whatever you want…

 -         HEAL_C, same as revive…

 -         TRAINING_C, same as heal…

 -         XP_KILLED, this is how much more XP a unit gives when it levels up… remember that we put 300 for our default unit? Well, good practice is that this should be roughly 10% of that value, so put 30 in the upper one and 15 in the lower one (you may have noticed, but g002DU<blah> tends to be half of the first one, which means your unit will gain much power until level 10 (or DYN_UPG_LV) and gain half as much for EVERY NEXT LEVEL… so if you overpower the second upgrade, you’re in for some trouble :P)

 -         XP_NEXT, ok this one may seem kinda odd… I’ll explain it in an example: let’s say we put a 100 here… our unit requires 1000XP by default on lvl1, once it reaches lvl2, it will require 1100XP to level… on lvl3 it will require 1200XP and so on… hero progression is made in this way J put 0 for both units here…

 -         MOVE – how much movement does the unit gain per lvl; putting anything here will make sense only if you use the same upgrade scheme for leader units (non-leader units will ignore it)

 -         NEGOTIATE – same as move

 -         DAMAGE – how much damage you get per level, put 5 in the upper one, and 3 in the lower one…

 -         HEAL – if the unit is a healer, put the **healing damage** here, otherwise leave it blank… Since our guy isn’t a healer, leave it blank.

 -         INITIATIVE – self-explanatory, put 0 for both

 -         POWER – this is the CtH bonus the unit gains per lvl. Put 1 in the upper (DU9250) and 0 in lower (2DU9250)

 Ok, now we have successfully made our upgrade charts… Go back to Gunits.dbf and fix these columns:

DYNUPG1 from g000DU0001 to g000DU9250

DYN_UPG_LVL from 10 to 6

DYNUPG2 from g002DU0001 to g002DU9250

Close all dbf files and check the unit in ScenEdit… play a little with it, and proceed to the next step J

 -----------------------------------------------------------------------------------

Gattacks.dbf

-----------------------------------------------------------------------------------

Our unit has proven to be nice so far, but his simple “Sword” attack that deals 25 dmg kinda sucks… So, click on Add and input the following:

 -         ATT_ID, this is the ID of the attack… put g000aa9250 here (note that I’m using the same *ID* as my unit’s… once I finish explaining the files I will point out some “shortcuts[6]” on how to get to something faster…)

 -         NAME_TXT, this is the name of the attack (e.g. Sword) put x000tg9750 here. Now go to Tglobal.dbf, add a new entry and put x000tg9750 as the TXT_ID, and put “Mighty Slash” in TEXT.

 -         DESC_TXT, this is the same as the NAME_TXT (dunno why, but I don’t complain), so put x000tg9750 here too…

 -         INITIATIVE, the initiative of the attack… if you have multiple attacks, the PRIMARY attack’s initiative is the one that counts… still, I like to be safe and put the same init… put 55 here.

 -         SOURCE, this is the source of the attack… put either 0 here or read LattS.dbf for info…

 -         CLASS, this is the class of the attack, put either 1 here or read LattC.dbf for info…

 -         POWER, this is the CtH of the attack, put 85 in here.

 -         REACH, this is the range of the attack, 1 is All units, 2 is Any Unit, 3 is Adjacent units – so put a 3 here.

 -         QTY_HEAL, this is how much this attack heals… only for healers.

 -         QTY_DAM, the damage quantity, put 50 here.

 -         LEVEL, this is for some special attacks… leave this blank

 -         ALT_ATTACK, only some attacks allow Alternate Attacks (Example: Morph Self – Wolf Lord and Doppelganger), so just put g000000000 here (it will be ignored anyway)

 -         INFINITE, some attacks can have the infinite flag to distinguish them from expiring… PW’s paralyze has INFINITE T, ArchDruidess’ boost is also infinite…

 -         QTY_WARDS, the number of wards this attack bestows on its target(s), this number is used to control the next 4 fields;

 -         WARD1, the ID of the first ward bestowed;

 -         WARD2, the ID of the second ward bestowed;

 -         WARD3, the ID of the third ward;

 -         WARD4, the ID of the fourth ward;

 -         CRITICAL_HIT, this is a Boolean value, T means the attack will ALWAYS deal 5% of its QTY_DMG no matter the armor of the target, and a F means it’s a regular attack… if blank – F is defaulted.

 -         NOTE: note that you can’t bestow more than 4 wards with an attack, and if the attack has QTY_WARDS 1, only WARD1 will be bestow and other three will be ignored (or the game will crashe, I never really tried those kind of errors), and QTY_WARDS should never be greater than 4.

 Ok, exit all DBF files you’re currently viewing and quit… Go check on our unit in the ScenEdit and see how it performs with levels… it should be something like this:

He should gain 1 armor, 20 HP, 5 dmg per level until lvl6, after that he only gains 10HP and 3 dmg per level :P So make two instances, one lvl6 and other lvl7; the lvl6 should look like this: 300HP, 15 armor, 75dng, 55 init, 90 CtH; while the lvl7 should look like this: 310HP, 15 armor, 78dmg, 55init, 90CtH… I always forget if the last DYN_UPG_LVL counts, but I don’t think it does so I should be correct on this one… if the lvl7 unit looks like this: 320HP, 16 armor, 80dmg, 55 init, 91 cth – go to Gunits.dbf, find our unit (uu9250) and change his DYN_UPG_LVL from 6 to 5, that should fix it…

 -----------------------------------------------------------------------------------

Fine tuning and more advanced stuff…

-----------------------------------------------------------------------------------

We all agree that our new unit is awesome, but the name Squire kinda sucks… So, open up Tglobals.dbf and add two entries – one will be for his Name, and the other for his Description… Remember to give them valid IDs (uniques), go back to Gunits.dbf find our unit 9250 and change his name/desc entries… Check if it works in ScenEdit…

Now is a good time for me to lay down some *good practice* advice…

-         Use reasonable IDs (for instance, don’t jump to 9250 when you could have used 9050 or so)

-         Try to keep up with the notation and stuff declaration (if your unit’s ID is 9250, don’t give him an attack that is 0176 even if it means creating a totally new attack that is identical to 0176… this game is full of redundancies, so don’t be cheap about it)

-         When exchanging units from races, my good practice is to move them to neutrals and move my unit in its spot while making sure that the upgrades stayed the same…

 If everything works so far – congrats, you’ve mastered the basics of modding Disciples 2 J

 I have a couple of projects in mind for this tutorial… so, we’ve wrapped up Number 1…

If you keep crashing or you never made it past step 1, I will now discuss various reasons / game limitations that may be causing your game to crash…

-----------------------------------------------------------------------------------

…Game mechanics, (strange) limitations, various crash results, good tips for avoiding crashes and such…

-----------------------------------------------------------------------------------

1)      Neutrals have to be Level 1, if they are anything above that, the game will crash

2)      Neutrals can’t upgrade to other units

3)      Neutral units MUST NOT contain anything in the following columns (must be nulled by either g000000000 or a simple 0): PREV_ID; BRANCH; ENROLL_B; UPGRADE_B

4)      A Race must not have unused units (making someone that belongs to Empire with its whole unit tree full even if you use the correct UNIT_CAT)

5)      A Race must not have an empty spot (e.g. you switched Empire’s Elementalist to neutrals and haven’t replaced him with anything yet)

6)      Units only upgrade to lvl5, there’s no upgrading past lvl5 so don’t try.

7)      Level progression MUST be linear, so lvl1 goes to lvl2 which goes to lvl3 which goes to lvl4 which goes to lvl5.

8)      Don’t try to push upgrades *in between*[7] the tree, only add them at the end of the tree if there is an “empty spot”[8]

9)      If you make a unit, place it on a map, and delete the unit afterwards (or change its ID, it doesn’t matter), that map will crash…

10)  Example: you make a lvl3 unit and place it on a map; then in GUnits.dbf you change it to be a lvl2 unit – the map will work and the unit will be considered to have gained a level (it will have increased stats according to its DynUpg chart), if you make it lvl4 however, the map will crash as you can’t have under-leveled units on any map

11)  Some changes require the regeneration of the map (meaning the SaveGames will crash, but the maps will still work ok), you treat these by either reversing the changes or starting the game again from scratch (this is just a warning if you played a campaign…)

12)  Units are bound by their IDs, not by their Data… so if you have 2 Squires in your stack and later on you change their HP from 100 to 150, they will have 150HP in your stack… Most of the changes are instant, those that are not require the regeneration of the map… Although ScenEdit can’t show correct data sometimes, those maps will always work in the game itself, even if you think they won’t unless you made one of the above-stated fatal mistakes J

13)  Whenever exchanging units, try to preserve the original unit to preserve compatibility…

14)  Unit upgrades must stay in the same Race, and maybe (big maybe) in the same gender… They also have to stay the same size too, so no one-spacer to two-spacer upgrades.

15)  Hm, can’t think of anything else at the moment, maybe I’ll get back to this…

16)  If you have any further questions, mail me at darksidemetatron@gmail.com

-----------------------------------------------------------------------------------

Project Two: Exchanging the Titan for SMC (Something much cooler) J

-----------------------------------------------------------------------------------

Ok, so we know how to make custom units with custom attacks now J nice J you can revert to your backup Globals folder (to lose the new *squire-paladin* unit, we don’t need it anymore and its a lot faster this way than having to erase everything from scratch)

 

Ok, so we’ll have to settle for a new unit idea… How about giving the humans a one-spacer, one target healer that boosts damage at the same time ? sounds kinda fun…

First, we’ll make Variant One, after that we go to Phase 2 of this project and make Variants Two, Three and Four…

 

Since you already know how to make custom units, I’ll leave the hard work to you and just give you points on what needs to be done… Make sure you test in ScenEdit[9] after any change to see if it works… Since Disciples will just CRASH and give you no warning or anything whatsoever when it does, keeping track of errors is really hard work and sometimes you have to revert to some really old versions of your mod to be able to continue your work (so backup your work whenever you make something new), while it may take you 10 or 15 mins to make a new neutral unit and test if it works, I could swap out the hierphant into the neutrals, make a new unit, fit it into the missing spot, re-do the unit connections and dynupgs and custom attacks in less than 10 mins with just a single test – the final one to J Workhours are really rewarding in Disciples Modding, but they are also hard to *earn*… you just have to work like crazy J after some time, it all becomes a routine and its quite easy to bend the game to your liking…

Your To-Do list J

Ø      Add a new unit that resembles the *squire paladin* from project one with any base unit you want. TEST

Ø      Add two new Tglobal.dbf entries with valid IDs, write something into them and put them in their corresponding places in Gunits.dbf . TEST

Ø      Make two new attacks, a healing one (you can borrow the code from Matriarch or any healing unit) and a Boost one (tenderfoot etc); put them in the Gunits.dbf. TEST

Ø      Make two new TGlobal.dbf entries with valid IDs, put “Heavenly Prayer” in one, and “Bless of the Gods” in the other; put them in their corresponding places in Gattacks.dbf.TEST

Ø      If at any moment your game starts crashing, try pinpointing the area where it crashes; if it crashes in the Name/Desc area, disable those entries in the Tglobal.dbf and revert to some other name/desc strings (tg2001, tg2501); if it crashes in the Attack department, try changing the names first, then try disabling the attack in Gattacks.dbf and revert to any other attack (aa0001), if it changes in the DynUpg department, just use g000DU0001 and g002DU0001… after you made all this and it works, proceed.

Nice work, you made your first custom unit ALL BY YOURSELF J Congratulate yourself, go make some coffee or pick up some sodas (whatever), go to the toilet, take a piss, watch a pr0n or whatever you do to relax a little because the next thing is going to be pretty delicate…

 -----------------------------------------------------------------------------------

Some more tips:

-----------------------------------------------------------------------------------

17)  Always plan out your ideas on a piece of paper, Pen and Paper are your most valuable tools (besides DBFview) in modding Disciples 2…

18)  Try to make your own little reference chart instead of having to refer to this file or L files … example, if you don’t know death source, look in LattS.dbf, and write down something like (2 – death), it will be useful later on even if you don’t know it… write down your unit IDs and stuff like that so you don’t forget them in the middle of the project.

19)  STAY FOCUSED AND CONCENTRATED, when you’re modding – you’re modding and not screwing around… Will it be TV or D2 modding, its completely up to you – but it can’t be both… not until you’re through with this manual anyway…

 Our next objective(s) are:

1)      Move Titan to Neutrals

2)      Move SMC unit in Titan’s place

3)      Update Grace.dbf to contain SMC’s ID instead of Titan’s

Ok, lets get to work… Since all of this has to be done in one run (no testing in between) better save your stuff now or risk loosing it J

 -----------------------------------------------------------------------------------

Grace.dbf

-----------------------------------------------------------------------------------

Open up Grace.dbf and search for Empire (g000rr0000), we only need to modify one value, but I’ll describe the file here…

-         RACE_ID, this is the racial ID… don’t try adding new races, it just won’t work… even if it would, there wouldn’t be any way for you to add new structural branches meaning it would be completely useless…

-         GUARDIAN, this is the ID of the Capital Guardian… Capital Guardians aren’t normal Units, so they have some rather… unpleasant effects (like being immune to polymorph)

-         NOBLE, the ID of the race’s Thief…

-         LEADER_1, LEADER_2, LEADER_3 the IDs of their leaders…

-         SOLDIER_1, SOLDIER_2, SOLDIER_3,SOLDIER_4, the IDs of the base soldiers available for purchase…

-         SOLDIER_5 – this is the ID of the Special unit… the one you can enroll when you build its structure… we’ll change this from g000uu0018 to whatever your SMC’s ID is…

-         SCOUT – the number of *squares* your capital reveals around itself…

-         REGEN_H – how much regen bonus you get when you’re in the capital

-         INCOME – the basic income of the capital… its about 100GP and 25 racial mana…

-         PROTECTION – this is just a pointer to the modifier[10] that is applied to the Capital… in this case, its just +50 armor.

-         NAME_TXT – the name of the race

-         RACE_TYPE – the number of the race (dunno what this is for though)

 

Ok, after we’ve edited Grace.dbf go back to Gunits.dbf and make the following changes to g000uu0018 (Titan)

UNIT_CAT -> 0; RACE_ID -> g000rr0004; SUBRACE -> 5; BRANCH -> 0; ENROLL_B -> g000000000;  and he (she) will be a Neutral now…

Now we need to change the SMC to fit into the Titan’s hole…

Find it in the Gunits.dbf and make the following changes:

UNIT_CAT = 0; RACE_ID = g000rr0000; SUBRACE = 1; BRANCH = 4; ENROLL_B = g000bb0022; that will make the SMC fit into the Titan’s hole…

 

Launch ScenEdit and hope it starts (or you messed something up if it doesn’t).

If it does – excellent, you made your first unit exchange while preserving the original unit, thus keeping your mod compatible with the original game (to be more specific: whenever you’d encounter a Titan – the game would crash… the Leader is made so it looks like 0018, and if just changed it directly, you’d still mess it up… plus, you’d want to preserve as many models in the game as possible since its impossible to import new ones, or assign them somehow for that matter)…

 

Remember Phase 2 of this project ? While this SMC only heals 30 and boosts attack by 25%, we want her to progress with levels, so she’ll end up with about 70 heal and 100% boost at lvl4 which will be her final form…

 

Your assignment now is:

Ø      Make 3 new units

Ø      Make 3 new Tglobal entries

Ø      Edit the DynUpg so that it reflects the “Final Form” SMC’s leveling chart, and not the lvl1 smc’s

Ø      Revert the non-Final Form SMC’s attack names to Healing / Boost

Ø      Use one of the Tglobal entries as a name for the non-final form SMCs

Ø      Use the other two to type a new name and desc…

Ø      Make 3x 2 new attacks in Gatttacks.dbf, you don’t have to simulate the leveling progression as both attacks have 100% CtH (idea, a healer that has about 50% cth to boost dmg ? sounds fun), the healing should be 30/40/50/70 while the boost should be 25/50/75/100… Hint: its in the levels J

Ø      Assign the new cool names to the new final form attacks…


 

Ok, I deliberately left you the freedom to manage your own project, but I’ll give suggestions anyway… First, make one unit that resembles the SMC but with increased stats… Note the following Fields:

LEVEL should be 2 now; PREV_ID should be SMC’s ID; ENROLL_B should be g000000000 now (you don’t buy her, you upgrade into her); UPGRADE_B should be g000bb0022 (she can upgrade with only the Titan’s building built), and then TEST. If the ScenEdit fires up, exit, open up Gunits.dbf and set the XP req to 10 for the SMC1 (original SMC), go back into ScenEdit, stage a fight and go into the Game…

Once in the game, build the prereq building, buy the SMC1, and go into the fight… If she levels up ok, it’s a success and you only have to repeat it like 2 more times :P If not, make sure you configured the scenario to allow greater unit levels…

Once you make your first upgrade, its quite easy continuing the chain… So once you get to LVL4, that’s it J she’s the same as SMC2, SMC3 but since there’s no SMC5 that has a PREV_ID equal to SMC4’s ID, she will upgrade into herself and follow whatever the DynUpg says…

 

If you manage to make this, you can promote yourself and rest a little bit…

-----------------------------------------------------------------------------------

Some more fine tuning and interesting stuff…

-----------------------------------------------------------------------------------

Ok, we’ve made a killer healer but with no wards and/or immunes, he sucks J

So, let’s give him Air Ward, Mind Immunity, Frostbite/Blister/Poison immunity…

How? Simple. For this example, I will consider SMC1 to be 9001, SMC2 to be 9002, SMC3 to be 9003 and SMC4 to be 9004! Those IDs may or may not be available for use and you should use your IDs and not these, these are just here to illustrate the process of granting wards/immunities to Attack Sources and Attack Classes.

 -----------------------------------------------------------------------------------

Gimmu.dbf

-----------------------------------------------------------------------------------

Ok, so this is the file that grants Source-based wards/immunities… As you can plainly see, it only has 3 columns:

-         UNIT_ID, this is the ID of the unit receiving the ward/immunity… If you do think of a nice ward/immunity progression per level, you’ll get bonus points… I’ll make it so that SMC1 gains nothing, SMC2 has air ward, SMC3 receives Mind immunity, and SMC4 receives the other immunities. So, Add 5 new lines here and input SMC2 ID in the first one, input SMC3 ID in the second and third, and SMC4 ID in the rest…

-         IMMUNITY, this is the Source that the unit will be protected from… Example: (g000uu0001, 0, 3 would make the Squire immune to Weapon source), so we’ll look at LattS.dbf to find Air Source…7 is air. So, we put 7 in the 1st, 2nd and 4th field. Now we’ll search for Mind, and we find it to be 1. Put 1 in the 3rd and 5th field.

-         IMMUNECAT, this is the immunity category, if there’s a 2 – it’s a ward, if it’s a 3 – it’s a full-immunity… so put a 2 next to those 7s and put a 3 next to those 1s…

 

Guess you’re wondering “hey, what about that poison/frostbite/blister immunity?” well, we need to open up this file to do it:

 -----------------------------------------------------------------------------------

GimmuC.dbf

-----------------------------------------------------------------------------------

This file is practically the same as Gimmu.dbf with a slight excepton… instead of Sources being column2, now those are Attack Classes… so yes, you can in a way create a unit that is immune to direct damage (that would be the ultimate immunity as it would shield the unit from any attack except polymorph and such), so I won’t explain this file in detail as it is exactly the same as Gimmu.dbf… Just add 3 lines, put SMC4 ID’s in there, look up for Frostbite, Blister and Poison classes in LattC.dbf file,  we find them to be 13, 23, 12 respectively. Put those in the middle column and put 3s next to it in IMMUNECAT… you’re all done J

 

Fire up ScenEdit to check on your SMCs… if it fires up and everything works like we expected – congrats J you’ve mastered yet another branch of unit modding…

 -----------------------------------------------------------------------------------

At this point you possess enough knowledge to explore Gvars.dbf and Gbuild.dbf by yourselves… The only info those files contain are some global game variables(Gvars) and Building Costs / Branches / Prereqs / Related Strings (Gbuild.dbf) so you can tweak the building costs / names etc… Whenever you’re unsure of what it is, search for something like g000tg<blahblah> in the file, note that tgXXXX and search for it in the Tglobal.dbf and you’ll pretty much have a much better idea of what it is… After all, what fun would it be if I completely tweaked your game for you ? Modding is all about exploration and insight, just like the point of calculation is insight and not the numbers…

 -----------------------------------------------------------------------------------

Project Three: Free development…

-----------------------------------------------------------------------------------

As a young modder, you should have plenty of ideas by know and you should be thinking about a way to pull it all off… Well, I’m just here to help you… From now on, I’ll just describe the files and give some examples, but that’s it – you’d have to test everything on your own if you want to know more… But first, some more hints / tips…

 

20)   A unit can never have more than 90 armor, and more than 300 dmg.

21)   If an attack has a POWER of less or equal to 10, the game will crash.

22)   Nothing can reduce any damage below 10, no matter how many armor you have, you will receive at least 10 dmg… This makes me think that the minimum allowed dmg for an attack is also 10 – just like with the POWER, it may also crash your game… While this isn’t confirmed (I never made an attack with QTY_DMG less or equal to 10), the POWER crash is confirmed…

 23)  At the start of each round, the Initiative checks are rolled… every unit can score a -5 to +5 bonus to its Initiative, so sometimes a 50 init unit CAN strike before a 60 init unit, but that will happen very rarely… As for Damage, the only thing that happens there is that an attack can get a 0 to +5 dmg bonus… no penalty here except if the target has some armor.

24)  Some special attacks with levels may not have the levels you expect it to have… Check before editing such skills…

25)  Always bear in mind that whatever you change is directly influencing the game, and the AI will probably adapt to it even better then you think… So if you plan on building cheat units, the AI will use them against you even better then you originally planned…

26)  Calculate a good XP req / XP given ratio… Try to estimate a unit’s strength prior to determining its XP given amount…

27)  If you need multiple Upgrades, but are low on *gap levels*[11], consider heightening the XP req for that unit to simulate more levels, and make the unit upgrade into something stronger on that level-up… Example: Wolf Lord is a lvl4 unit and face it – he pretty much sucks… I boosted his XP req to 5000 for the first level-up to give everyone some time to strengthen up before he unleashes a 150dmg, 65 init, 500HP beast of Fenrir, while I simulated a 2.5 level gain in his attack stats (he had 40 attack / 20 frostbite, after 5k XP he had 50 attack and 30 frostbite in his default mode)

28)  Don’t forget that a leveling unit [12] preserves its ID but can’t change their Attack ID nor gain new wards/immunities, while an upgrading unit[13] is basically a new unit that becomes from the old one, but it may be assigned with new attacks (e.g. drain life upgrades to drain life overfeed) and new wards/immunities, and takes just 5 more mins to make… You should always test your chaining[14] however…

29)  Always remember that you can’t introduce *new* units into this game, but only reuse what you have… So, by preserving a lot of what you have, you will have a greater assortment of models and abilities…A unit that was transferred into neutrals and then completely exchanged is worth a lot more than a just edited one (example – we put our Titan into Neutrals and then put a new unit in its place, so we preserved the original; example 2 – let’s say we want to make the Infernal Knight upgrade into something, what I would do is – put the original IK into the Neutrals, make a unit identical to it and put it in the original IK’s spot by process of exchange, and then make THAT one upgrade into whatever’s next…)

30)  Whenever making extended upgrades for a unit, be sure to move the original unit to Neutrals and stick his clone in his place – that way you can place a lvl99 default unit AND a lvl99 regular units (units that are in a direct upgrade path cannot have a greater lvl than their own in the ScenEdit)


-----------------------------------------------------------------------------------

Attacks in general; Secondary Attacks – what are they and what they do?

-----------------------------------------------------------------------------------

I said I’ll explain secondary attacks… Secondary attacks are the attacks you put in ATTACK2_ID in the Gunits.dbf file… They occur ONLY AND IFF(IF AND ONLY IF) the primary attack hits… That means that if a unit is attacking all units and has a poison secondary attack, it can’t poison the units it missed with the secondary attack, and it MAY poison one, two, all or none of the targets the first attack hit depending on its CtH. You all learned how to make attacks by now, here’s some more rules on making secondary attacks…

1.      Don’t make a secondary attack a primary one (Example: don’t make units that attack by Blistering everyone and dealing dmg in that way).

2.      Only some attack classes can be a secondary attack… So, I wouldn’t recommend making an attack like this: DMG/DMG or STEF/STEF[15]

3.      I can’t think of anything else to say about this right now… Just be reasonable with secondary attacks J

Here is a list of attack classes and what they do… Note that I’ll explain the valid ones (and not the disabled ones, enabling those is strongly discouraged)

AttC (0)          DISABLED BY DEFAULT

AttC (1)          Pure damage, use only for primary, doesn’t support alternate attacks.

AttC (2)          Drain Life, use for primary, doesn’t support alternate.

AttC (3)          Paralyze, can be used for primary and secondary, doesn’t support alternate, duration is influenced by INFINITE.

AttC (4)          DISABLED BY DEFAULT

AttC (5)          DISABLED BY DEFAULT

AttC (6)          Heal, use for primary, no alternate.

AttC (7)          Fear, can be used for both, no alternate, acts like Paralyze when attacking towns, I don’t think INFINITE plays a role here…

AttC (8)          Boost Dmg, has 4 levels (25/50/75/100), can be used for both (I thnk) but I’d still use it for primary only. No alternate, INFINITE makes the attack last forever.

AttC (9)          Petrify, can be used for both, no alternate, INFINITE makes it last longer.

AttC (10)      Lower Damage, secondary only, has 2 levels (50%/33%), no alternate, INFINITE makes it last forever.

AttC (11)      Lower Initiative, secondary only, for some reason it has a level, but only 1 (50%), no alternate, INFINITE makes it last forever.

AttC (12)      Poison, secondary, no alternate, INF makes it last longer.

AttC (13)      Frostbite, secondary, no alternate, INF makes it last longer.

AttC (14)      Revive, secondary, no alternate, works only once per unit.

AttC (15)      Drain Life Overflow, use for primary, no alternate.

AttC (16)      Cure, secondary, no alternate, removes all negative STEFs.

AttC (17)      Summon, primary, no alternate, INF makes the attack loop through Gtransf list (but I’m not sure)

AttC (18)      Drain Level, secondary, drains levels and degrades, no alternate.

AttC (19)      Give attack, both, no alternate, works only on units that attacked already.

AttC (20)      Doppelganger, primary, supports alternate, gives you a bonus round before the round starts thus giving you the ability to morph into an enemy unit and attack *in the same round*; units with Doppelganger AttC always act first, no matter their init… if a unit can’t morph, it performs the alternate attack.

AttC (21)      Transform-Self; primary only, supports alternate, transforms self in the unit which ID is listed in Gtransf.dbf when clicked on self, or performs alternate attack when clicked on enemy(s)

AttC (22)      Transform-Other, both, no alternate, transforms units it hits in the unit IDs listed in Gtransf.dbf

AttC (23)      Blister, secondary, no alternate, INF makes it last longer.

AttC (24)      Bestow Wards, both but secondary is preferred, no alternate, bestows the wards defined in Gattacks.dbf , INF may play some part in this but I haven’t figured it out yet.

AttC (25)      Shatter, secondary, no alternate; reduces the target’s armor by its QTY_DMG, INF doesn’t play a role here (I don’t think it does though), SHATTER ATTACK ALWAYS HITS IF PRIMARY ATTACK HITS.

And that’s all for the Attack Classes…Have fun making new units/attacks…

 -----------------------------------------------------------------------------------

Gtransf.dbf

-----------------------------------------------------------------------------------

Ok, this file has only TWO columns… I’ll explain them first, and then explain some more…

-         ATTACK_ID, this is the ID of the attack; if the attacking unit matches this attack something will happen…This responds only if the attack class is : 17, 21 or 22.

 

-         TRANSF_ID, this is the ID that the target is transformed to / or summoned…

-----------------------------------------------------------------------------------

Elaboration on that matter – Summoning attacks:

-----------------------------------------------------------------------------------

Some elaboration: Ok, I probably confused you with the explanations above… so let’s do some practice… You can either make a unit and/or just a new attack… Make the new attack in this manner: Valid_ID[16]; anystring[17]; anystring; any init; any source; 17; 100; 1;  blank; blank; blank; g000000000; T

What we made here is pretty much a Summon attack that summons units in every empty spot… Try it out in ScenEdit and in the game… The unit just can’t attack … why? We never defined the IDs that it will summon…

 

So go back to Gtransf.dbf and make a new line… in the first column put the ID of our new Summon attack, and in the second one put g000uu0001 (squire)… go back to the game and test it out. Now, this unit fills the party with squires… not bad, but not too good either. Go back to Gtransf.dbf and make 3 more new lines; in every first column you will put the ID of the summon attack, and in other 3 you can put these in this order: g000uu5021, g000uu0154, g000uu0153 … Go back to the game and try it out now J It should summon a Blue dragon in the free two spots, and a mix of squired, imperial assassins and elementalists… Note that a two-spacer summon can only work if you have REACH 1; and don’t try to make summon attacks with REACH 3… Ok, since you now learned how to make summon attacks, try making a whole new unit that summons Angels, Archangels and Myzraels with REACH 2…

When you’re done with it and you’re happy with the results, continue to the next phase…

 

Example of a summoning attack: g000aa0001; g000uu0002 … Explanation: the 0001 attack summons the 0002 unit on the target empty spot, with the fact that all summoned 0002 units disappear when the user of the 0001 attack (their summoner) is killed or out of combat.…

 -----------------------------------------------------------------------------------

Elaboration on that matter – Transform-Self attacks:

-----------------------------------------------------------------------------------

We’ve all seen the Wolf Lord and we all know what he does – Transforms himself into a Spirit of Fenrir or attacks all units J kinda nice, but how did they make it? Here’s an explanation on Transform-Self attacks….

As you might have noticed, Transform-Self attacks ALLOW ALTERNATE ATTACKS which means that this unit can pack 3 attacks: the first one being the transformation itself, the second one being the alternate attack – what happens if you don’t transform (or when you attack the enemy), and the third one being the unit’s secondary attack…

 

Practice torture #1 : Before you start working, please read this. We’ll try making a complex unit now… We’ll exchange this one for the Werewolf (you’ve all done exchanging by now, so you know what needs to be done)

The unit will look something like this, WV1 -> WV2 -> WV3 -> WV4 -> FWV… the letters symbolically represent the following:

WV1 is a Level 1 Werewolf Variant1 which is a unit that can either morph itself into a Werewolf1 unit (you can use basic Werewolf for this) OR have a Drain Life attack of REACH = 2; This unit upgrades into a WV2, and needs whatever building it enrolls for upgrading (just like we did with SMC< remember?) This one has no wards and transforms into a weapon-immune werewolf…

 

WV2 is a Level 2 Werewolf Variant2 which is a new unit with similar stats to WV1 but a bit increased… make it so it simulates a standard LVL-UP, the only difference between this one and WV1 is that it should morph into a stronger Werewolf, which means you have to create another werewolf for it to morph in to and make his attacks….This unit should have a Death ward and transform into a weapon-immune werewolf…

 

WV3 is a Level 3 Werewolf Variant3 which is a stronger than the previous two; it should have Death ward and Weapon ward by now… it transforms into a weapon-immune werewolf that is stronger than the previous two…

 

WV4 is a Level 4 Werewolf Variant4, he gains Drain Life Overflow and he is granted Death immunity and weapon ward; he transforms into a Death-warded, weapon-immune werewolf with a critical hit attack…

 

WV5 is a Level5 Werewolf Variant5, he keeps his DLO and gains a secondary attack – Lower Damage which has 33% CtH and lowers dmg by 33%; he should be Death and Weapon immune and he should transform into a Death and Weapon immune werewolf with a stronger critical hit attack than the last one…

Make a DynUpg 1 and 2 according to the WV5 (since he’s the only one who’s gonna be using it), and if this works – you’ve done a pretty good job here…

For this to work though, you’ll need 10 new units(?!?!?), 5 WVs and 5 Morph-into werewolves; you’ll need 15 new attacks(!!!):

One morph attack that has a Drain attack as an alternate, and one for his werewolf counterpart so that’s (3+3+3+3+4) and you’ll need 5 entries in Gtransf.dbf and more than 20 in Gimmu.dbf … Good luck and have fun working with this J

 

Example of a transform-self attack: g000aa0001; g000uu0002… Explanation: the 0001 attack transforms the user of the attack into the 0002 unit for the rest of the combat… This action is irreversible (can’t be undone) and it is strongly disencouraged to chain units back and forth (make UNIT1 transform into UNIT2 which can transform into UNIT1… that won’t work as UNIT2 will not transform into the same UNIT1 you think, and the game just doesn’t handle those situations very well)

NOTE: You have to morph into a unit of the same size meaning there’s no morphing into two-spacers… and making one-spacers of two-spaced units is just plain stupid (looks stupid too)

-----------------------------------------------------------------------------------

Elaboration on that matter – Transform-Others attacks:

-----------------------------------------------------------------------------------

This one is pretty much straight-forward… Only succubi (succubuses) have this attack… Basically, you need to define which attack turns the target into what with a slight exception : this kinds of attacks MUST have two entries – the UnitID of one-spaced targets, and UnitID of two-spaced targets; the corresponding IDs have to be the same size. So examine the Hag/succubus/witch attacks and you’ll see that they all have two entries that are pretty much the same – they all turn units into Imps or Fat Imps… since a one-spacer can’t be turned into a fat imp, he is turned into an imp – and same goes for two-spacer units…

 

And that’s it for Gtransf.dbf


-----------------------------------------------------------------------------------

GLabi.dbf, GMabi.dbf and GleaUpg.dbf

-----------------------------------------------------------------------------------

GMabi.dbf:

-         UNIT_ID, this defines the unit that will have the ability.

-         M_ABILITY, this is the ability the unit possesses.

This file is full of various units having a combination of 0, 1, 3 and 4 abilities… You define if your leader can Fly in this file… I believe the Flying is 3, and I don’t recall what 0 and 1 are for… but I’m getting some ideas – try making Leader instances of different units and giving them these abilities – if they show on the map, then we know what they are; if they don’t – then we still don’t know what 1 and 0 are (doesn’t really seem to do anything)… that’s it for this file J

UPDATE: well I tested out my theory… nope, custom leaders still won’ show on the map… which means I don’t have a clue what 0 and 1 does, although I knew it was something stupid while I was analyzing the game…

 

GLabi.dbf:

-         UNIT_ID, this is the unit that will receive the ability

-         L_ABILITY, this is the Leader ability that will be received…

Ok, so we all know that Warrior Leaders start with Artifacts, Mage leaders start with Orbs and Parchments and Scouting leaders start with Traveling items… well, with this file we can change that J we can make Dwarven Champion start with artifacts, King’s Guard start with Artifacts, Banners and whatnots etc… Consult GleadUpg for skill IDs (I lost my list so I can’t really tell you what’s what…. And I’m too lazy to compile a new one so I’ll just tell you what I know of top of my head) J

 

The ability to read Parchments (scrolls and staves) has ID 14

The ability to use Banners has ID 9

The ability to use Talismans has ID 15

The ability to use Tomes has ID 10

 

This is just like giving each leader some free skills, and this is a part of my “Specific Leader project” in my mod… Each leader starts out with a different set of skills and allows for greater strategic and more flexible builds (more imba too)… Its quite easy to track down the skill you need, just go to GleaUpg and find a skill, find the string it uses and track down that stringID in Tglobal.dbf…

 

GleaUpg.dbf:

You can make new leader skills in this file, and even make some lord and/or race-specific… So if you want, you could make a skill that only Undead Mage lords could take at level 12 which has an effect of giving the hero a Drain Life Overflow attack… and such… You can even make the Rod-Planter ability, the ability which will enable your leader to plant rods once he learns it… and so on… If you’ve come this far, you’ll understand this file quite easily…

-         BELONGS_TO, the Leader type this skill belongs to… by default, every skill belongs to every lord (except maybe Critical Hit)

-         MODIF_ID, this is the Modifier ID this skill grants when it is picked – modifiers do a lot of stuff in this game and it’s the next topic we will cover…

-         MIN_LEVEL, the minimum level needed before this skill can be obtained.

-         NAME_TXT, the string under which the skill will appear in the list (e.g. Earth Ward)

-         DESC_TXT, the description of the skill that will appear below the list.

-         PRIORITY, this is just for the AI to know which skills to pick…

 

And that’s it… by tracking the Skill Names from Tglobal.dbf, you gain knowledge of their modifier ID which in turn gives you the skill number to put in GLabi.dbf if you want to give out that skill for free…

 -----------------------------------------------------------------------------------

Modifiers: a couple of words before we begin…

-----------------------------------------------------------------------------------

Modifiers handle Items, Skills, Abilities and Spells in this game… yes, every item, every skill/ability and spell has a different modifier ID (usually g000um<id here>), and some of them are identical… While the Gmodif.dbf lists the sources and comments each modifier, it holds all modifiers currently active in the game… so inputting a new modifier in GmodifL.dbf without first declaring it in Gmodif.dbf will probably result in a crash… Same thing goes if you declare it and don’t specifically tell the game what it does…

 

I won’t go very deep into the modifiers because the point of this tutorial is force you to learn how to mod… and if I lay out everything about the modifiers for you, then there’s not much left for you to learn, but D2 modding becomes more of a Search, copy/paste, mix-and-match kind of a thing (although that’s what it really is, to a limited extent) so you’ll have to discover the majority of “numbers and what they do” on your own, I’ll just explain some basics and give out a few examples…

 -----------------------------------------------------------------------------------

Gmodif.dbf

-----------------------------------------------------------------------------------

Ok, like I said, this file lists all the modifiers currently present in the game…

-         MODIF_ID, the modifier’s id in GmodifL.dbf file (and the one you referred it by)

-         SOURCE, yes, all modifiers have sources, so refer to LattS.dbf if you don’t know the source IDs… depending on what you want your modifier to do, you might wanna consider which units will be immune/warded to/from it…

-         COMMENTS, this is just for you to write down what it does and/or which spell it is… Example comment: Infortunium (-15% CtH)

 

And now, the big thing J


-----------------------------------------------------------------------------------

GmodifL.dbf

-----------------------------------------------------------------------------------

Let’s get to the descriptions…

-         BELONGS_TO, to which ModifierID this description belongs to… basically, this tells the game which modifier you’re defining…

-         DESC, this is a string to describe it… note that they’re all TGC and not just TG…

-         TYPE, this is the modifier type, something you’ll have to figure out on your own J

-         PERCENT, only some types use the PERCENT fields… Damage, CtH, and Init boosters usually use this…

-         NUMBER, only some types use the NUMBER fields… Armor boosters use these (10, 33, -50…)

-         ABILITY, only some types (well, only type 11) uses the ABILITY field… it grants this ability id to the unit (so when a leader learns a skill, one of type 11 modifiers is *used* on him and he gains the new ability)

-         IMMUNITY, this is for giving wards, but it may be used for giving immunities… This field holds the SOURCE the modifier will shield against (much like Gimmu.dbf)

-         IMMUNITYCAT, well we all know what this is by know… 2 is a ward and 3 is a full-immunity… note that this doesn’t depend on the modifier, but on the duration of the spell that applies it. (so if you changed the Earth Ward spell to last 15 turns, you could have a earth ward for 15 turns… and with a slight edit in this field, you could have a Earth immunity, not bad huh ?) J

-         MOVE, well, this applies (or gives) a special *MOVE* ability… 1 is Forestwalk, 3 is Sailing and 0 is Planeswalk although I’m not sure if its used… you probably won’t make much modifiers of this type anyway J

-----------------------------------------------------------------------------------

You should be able to understand Gspells.dbf and GspellR.dbf on your own by now…

-----------------------------------------------------------------------------------

So what does all this mean? Well, for practice, we’ll change the Incantare <blah> Illusion into 3 different spells… Or, if you feel up to the challenge make new Items J

1)      The first one will be a spell that lowers the targets Max HP by 10% (Use Gallean’s boon as an example)

2)      The second one should lower the targets CtH by 15% (a standard curse, you shouldn’t have trouble making this one)

3)      The third one is a spell of your choice, but make it so it is a World spell… Note that World spells can affect ONLY YOUR units, and ALL of your units will be affected… so a World spell with a “negative” modifier will considerably degrade your stacks (Example, world paraseus spell… it will only drain move points from your stacks, which is completely stupid…) so try to make something good J

-----------------------------------------------------------------------------------

 

If you managed to do this and managed to go through this whole guide, you can consider yourself to be a full-fledged modder as good as me (or even better)… I hope you had fun learning to mod like I did have fun writing this (modding was also fun though).

I wish you all the best in your Disciples 2 modding career, feel free to drop questions on my mail… All the best wishes from Aleksandar Milenkovic, Belgrade, Serbia.


-----------------------------------------------------------------------------------

[1] Note that I said information, the graphics files are compressed in the .FF files, and I never really cared about tampering with them… Visit the official D2 modding forums for more information on those…

[2] An example of the “new” thing – If you want Deaths to have 10% chance to instantly kill the target unit – it cannot be done… what you can do however is give him a poison attack that deals 1000dmg and has a CtH equal to 10.

[3] Once a thing has been edited, there’s no going back… no Undo or anything – so be careful when changing or just blanking (emptying) fields… Deletion of SFI’s entries (Strategy First, the default ones) is highly discouraged as it will cause compatibility issues…  For more info, see Compatibility Issues and crash errors.

[4] By “look” I mean only the visual appearance… A Squire that *looks* like a Paladin will still be a Squire that deals 25dmg and has 100hp, but he will LOOK as a paladin…

[5] If you’re not modding RotE, than the appearance I selected will not be available for you which will cause the game to crash… so to avoid crashing, we’ll select a different look… RotE modders/users can still pick 8050, while DP modders will have to use 0015…

[6] Example, if the unit’s name is x000tg2107, you can be sure that his unit ID is g000uu0107, his Description is x000tg2607, his Attack is g000aa0107, his Alternate Attack is g000aa1107 (if he has any), the Attack name is x000tg5107 and so on… you might want to keep this notation and plan ahead, each unit you create will need at least 3 new entries in the TGlobal, so if you can’t match the notation, just make sure you don’t use the same ID more than once (or you’ll crash terribly and won’t know what happened).

[7] Example: making the Inquisitor upgrade into something before upgrading into the Grand Inquisitor (which would make GI lvl5 in that case)

[8] Example: after the Angel (lvl4), he’s a perfect candidate for upgrading into something else because the tree ends there and you can make it so the new lvl5 unit requires the same building to upgrade as the Angel does.

[9] E.g. sometimes you may pick a wrong ID for Name or something… so everytime you make a unit, just make it look like a Neutral version of the Squire with some other BASE_UNIT – you already know how to make Neutrals… when you do that, try changing his attack, name, desc and last but not least – dynupg… Test after every change to see what you did wrong, e.g. if the game crashes after you changed the name from 2001 (Squire) to your 9386(BlahBlah) try deleting that entry and reverting back to 2001 in the Name column for that unit in the Gunits.dbf… if the game runs, most probably your 9386 ID is wrong, or you made a mistake while typing the ID in either the Gunits.dbf and TGlobals.dbf

[10] I’ll talk about modifiers and Gmodif.dbf later…

[11] A “gap level” is the number of levels between the current level and level 5…

[12] You must learn to make a difference between a “leveling unit” and an “upgrading unit”; a Leveling Unit is the unit that does not change form / ID after level up but remains itself…

[13] You must learn to make a difference between a “leveling unit” and an “upgrading unit”; a Upgrading Unit changes its ID and fundamentally – it’s a whole new unit that was made from the previous one… This allows you to grant it new wards / immunities or new attacks

[14] By “chaining” I mean to check if unit1 is upgrading into unit2 correctly, unit2 into unit3 and so on…

[15] STEF is short for Status Effect Attack… those include Paralyze, Blister, Frostbite, Fear etc…

[16] By valid ID I mean for you to pick a unique ID just like we did before…

[17] Pick any string from Tglobal.dbf, it doesn’t matter… just don’t put anystring in the field J