Titan Quest Fans Forum

Titan Quest - Anniversary Edition => Modifications => Art Manager => Topic started by: WNG on 16 February 2019, 03:20:18

Title: [Tutorial] Add yellow/green affixes to the game!
Post by: WNG on 16 February 2019, 03:20:18
↜  Add yellow/green affixes to the game! by WNG ↝

Introduction

Hello! This small tutorial will show you how to invent and implent new affixes that can appear on all items. The process is simple, quick and has a world of possibilities.

I may assume you have some basic knowledge and overlook some manipulations. Feel free to tell me if anything is unclear.

Without further ado, let's get started.

I. Creating the affixes files

I. Create a first affix file charisma
Open your Art Manager. Select the Database tab and, on the right window, right-click  > New > Record. Double click on it, and when you will be prompted to choose its template, select LootRandomizer.tpl.

You can now begin to create your affix. Check the spoiler below for the parameters to edit. Parameters that are irrelevant will be omitted, as always.

General Parameters
Header
File Description : For your eyes only! Leaves a description or a note for the developper. No effect in-game.

Configuration
Loot Randomizer Name : The displayed name of your affix. Reference it in your Modstrings.txt. More info here : https://titanquest.fandom.com/wiki/Modstrings.txt
Loot Randomizer Jitter : Value ranging from 0 to 50. Variation of the affix's price.
Loot Randomizer Cost : Base value of your affix's value, in gold.
Item Classification : Determines what color your affix is (Magical = Yellow, Rare = Green.)
Market Adjustment Percent : Percentage value that increases your affix's value.
Level Requirement : The level requirement to wear an item that has this affix on it.

Notice:
If you are unsure as to wich values to put in there, here's a small table containing values I deemed as okay if you don't want to put too much thought into it. Feel free to raise them if you want to make a particularly rare/strong affix.
(https://i.imgur.com/hMSetI1.png)

Affixes' Bonuses Parameters
This is a review of the many (not all!) basic parameters you may set on your item. If you know about those, skip this.
Many of the parameters share the same proprietes. I'll explain them once.

Offensive Parameters
Offensive Global (for offensive bonuses with a global chance (5% of +10% Total Damage, +20% Poison Damage, ...))
  • offensiveGlobalChance : Chance of offensive global effects to occur (choose the effects with booleans in the sections below.)

Offensive Absolute (for flat/percent based damage bonuses)
(https://i.imgur.com/Xxvinq4.png)
  • offensiveXMin : Minimum of flat X damage.
  • offensiveXMax : Maximum of flat X damage.
  • offensiveXChance : Chance of the X damage set above to occur.
  • offensiveXXOR : Boolean. Set to 1 to select only one bonus in the global pool.
  • offensiveXGlobal : Boolean. Set to 1 to make the bonus part of the global chance pool.
  • offensiveXModifier : Increases by X% the damage of the selected type.
  • offensiveXModifierChance : Chance of the percent damage bonus to occur.

Offensive Duration (for damage/debuffs over time bonuses)
(https://i.imgur.com/poQSMAJ.png)
  • offensiveSlowXMin : Minimum of X damage over time (every second).
  • offensiveSlowXMax : Maximum of X damage over time (every second).
  • offensiveSlowXDurationMin : Minimal duration of the DoT effect.
  • offensiveSlowXDurationMax : Maximial duration of the DoT effect.
  • offensiveSlowXChance : Chance of the X damage over time set above to occur.
  • offensiveSlowXXOR : Boolean. Set to 1 to select only one bonus in the global pool.
  • offensiveSlowXGlobal : Boolean. Set to 1 to make the bonus part of the global chance pool.
  • offensiveSlowXModifier : Increases by X% the damage of the selected type.
  • offensiveSlowXModifierChance : Chance of the percent damage bonus to occur.
  • offensiveSlowXDurationModifier : Increases the duration of the DoT effect by x%.

Offensive Influence (for debuffs for a set duration, such as Confusion, Mind-Control, etc.)
See the above sections, they share similar parameters.
Retaliation Parameters

Retaliation Global (for retaliation bonuses with a global chance (5% of 15 Piercing Retaliation, 20 Elemental Retaliation, ...))
  • retaliationGlobalChance : Chance of retaliation global effects to occur (choose the effects with booleans in the sections below.)
Retaliation Absolute (for flat retaliation bonuses)
(https://i.imgur.com/kQrDqM6.png)
  • retaliationXMin : Minimal damage of the retaliation of the set type.
  • retaliationXMax : Maximal damage of the retaliation of the set type.
  • retaliationXChance : Chance of the retaliation to occur.
  • retaliationXXOR : Boolean. Set to 1 to select only one bonus in the global pool.
  • retaliationXGlobal : Boolean. Set to 1 to make the bonus part of the global chance pool.
  • retaliationXModifier : Boosts the damage of the retaliation of X type by a set percent.
  • retaliationXModifierChance : Chance of the percent damage boost to occur.
Retaliation Duration (for DoT retaliation bonuses)
(https://i.imgur.com/ABXC3sK.png)
  • retaliationSlowXMin : Minimal damage of the retaliation of the set type (per second.)
  • retaliationSlowXMax : Maximal damage of the retaliation of the set type (per second.)
  • retaliationSlowXDurationMin : Minimal duration of the DoT of the set type.
  • retaliationSlowXDurationMax : Minimal damage of the DoT of the set type.
  • retaliationSlowXChance : Chance of the retaliation to occur.
  • retaliationSlowXXOR : Boolean. Set to 1 to select only one bonus in the global pool.
  • retaliationSlowXGlobal : Boolean. Set to 1 to make the bonus part of the global chance pool.
  • retaliationSlowXModifier : Boosts the DoT of the retaliation of X type by a set percent.
  • retaliationSlowXModifierChance : Chance of the percent DoT boost to occur.
  • retaliationSlowXDurationModifier : Boosts the DoT of X type's duration by a set percent.
  • retaliationSlowXDurationModifierChance : Chance of the percent duration boost to occur.


Defensive Parameters
Defensive Absolute (for resistances bonuses)
(https://i.imgur.com/QRTHLNF.png)
  • defensiveX :  Increases resistance to the damage type of by a set percent.
  • defensiveXChance : Chance of the resistance to the damage type of by the percent set above.
  • defensiveXModifier :  Increases the resistance bonus by a set percent.
  • defensiveXModifierChance : Chance of the resistance bonus to the damage type by the percent set above.
  • defensiveXDuration : Same as above, for the matching DoT.
  • defensiveXDurationChance : Same as above, for the matching DoT.
  • defensiveXDurationModifier : Same as above, for the matching DoT.
  • defensiveXDurationModifierChance : Same as above, for the matching DoT.
Defensive Special (for resistances versus certain DoTs)
    See the Defensive Absolute section, they share similar parameters.
Defensive Misc (for blocking/reflecting bonuses)
    See the Defensive Absolute section, they share similar parameters.
Defensive Influence (for secondary resistances)
    See the Defensive Absolute section, they share similar parameters.
Monster Defense (for tertiary resistances)
    See the Defensive Absolute section, they share similar parameters.

Character Parameters
Character Base Attributes (Is irrelevant, do not touch.)
    No need to touch this.
Character Bonus Attributes (for direct stats bonuses)
(https://i.imgur.com/9Ujupm4.png)
  • characterStrenght : Flat strenght increase.
  • characterDexterity : Flat dexterity increase.
  • characterIntelligence : Flat intelligence increase.
  • characterLife : Flat health points increase.
  • characterMana : Flat energy points increase.
  • characterStrenghtModifier : Percent strenght increase.
  • characterDexterityModifier  : Percent dexterity increase.
  • characterIntelligenceModifier  : Percent intelligence increase.
  • characterLifeModifier  : Percent health points increase.
  • characterManaModifier  : Percent energy points increase.
  • characterIncreasedExperience  : Increases experience gained.
  • characterPhysToElementalRation  : x% converted to elemental damage.
Character Speed (for speed bonuses)
(https://i.imgur.com/ISOF79h.png)
  • characterRunSpeed : Increases base run speed. Unused at this date.
  • characterAttackSpeed : Increases base attack speed. Unused at this date.
  • characterSpellCastSpeed : Increases base spell cast speed. Unused at this date.
  • characterRunSpeedModifier : Increases run speed by x%.
  • characterAttackSpeedModifier : Increases attack speed by x%.
  • characterSpellCastSpeedModifier : Increases spell cast speed by x%.
  • characterTotalSpeedModifier : Increases total speed by x%.
Character Regeneration (for regeneration bonuses)
(https://i.imgur.com/AYKUZ7F.png)
  • characterLifeRegen : Increases health regeneration by a flat amount.
  • characterManaRegen : Increases energy regeneration by a flat amount.
  • characterLifeRegenModifier : Increases health regeneration by a percent amount.
  • characterManaRegenModifier : Increases energy regeneration by a percent amount.

Character Ability (for dodge/critical hit bonuses)
(https://i.imgur.com/lBlQEQq.png)
  • characterOffensiveAbility : Increases OA by a flat amount.
  • characterDefensiveAbility : Increases DA by a flat amount.
  • characterOffensiveAbilityModifier : Increases OA by a percent amount.
  • characterDefensiveAbilityModifier : Increases DA by a percent amount.
  • characterDefensiveBlockRecoveryReduction : Reduces shield recovery time.
  • characterEnergyAbsorptionPercent : Recovers energy when hit by spells by percent amount.
  • characterDodgePercent : Increases melee attack dodge chance.
  • characterDeflectProjectile : Increases projectile dodge chance.

Character Reserve (for mana reservation reduction bonuses)
(https://i.imgur.com/M1j6qj9.png)
  • characterManaLimitReserve : Not quite sure...
  • characterManaLimitReserveReduction : Decreases energy reserved by a flat amount.
  • characterManaLimitReserveModifier : Not quite sure...
  • characterManaLimitReserveReductionModifier : Decreases energy reserved by a percent amount.

Requirement Reduction (for requirement reduction bonuses)
(https://i.imgur.com/6lN23fu.png)
Self-explanatory. Also, you do NOT need to add the negative.

Skill Parameters (for bonuses that regard spells)
Skill Reduction (for reduced recharge and mana costs)
(https://i.imgur.com/q6UV1Nj.png)
  • skillCooldownReduction  : Flat cooldown reduction.
  • skillCooldownReductionChance : Chance of flat cooldown reduction.
  • skillManaCostReduction : Flat mana cost reduction.
  • skillManaCostReductionChance : Chance of flat mana cost reduction.
  • skillCooldownReductionModifier : Percent cooldown reduction.
  • skillCooldownReductionModifierChance : Chance of percent cooldown reduction.
  • skillManaCostReductionModifier : Percent mana cost reduction.
  • skillManaCostReductionModifierChance : Chance of percent mana cost reduction.
Projectile Bonus (for projectile speed)
  • skillProjectileSpeedModifier  : Percent increase of the projectile speed.
  • skillProjectileSpeedModifierChance : Chance of percent increase of the projectile speed.
Skill Augment (boosts or grants skills)
(https://i.imgur.com/ExDpbM2.png)
  • augmentSkillName1  : The database entry of the skill you wish to boost. (ex.: records\skills\stealth\envenomweapon.dbr)
  • augmentSkillLevel1  : Level by wich the skill above is increased.
  • augmentSkillName2  : The database entry of ANOTHER the skill you wish to boost.
  • augmentSkillLevel2  : Level by wich the skill above is increased.
  • augmentMasteryName1  : The database entry of a mastery you wish to boost all of its skills.
  • augmentMasteryLevel2  : Level by wich the skills of the mastery above is increased.
  • augmentMasteryName2  : The database entry of ANOTHER mastery you wish to boost all of its skills.
  • augmentMasteryLevel2  : Level by wich the skills of the mastery above is increased.
See this for masteries names :
  • Warfare : records\skills\warfare\warfaremastery.dbr
  • Defense : records\skills\defensive\defensivemastery.dbr
  • Rogue : records\skills\stealth\stealthmastery.dbr
  • Hunting : records\skills\hunting\huntingmastery.dbr
  • Dream : records\xpack\skills\dream\dreammastery.dbr
  • Nature : records\skills\nature\naturemastery.dbr
  • Earth : records\skills\earth\earthmastery.dbr
  • Storm :records\skills\storm\stormmastery.dbr
  • Runes : records\xpack2\skills\runemaster\runemaster_mastery.dbr
  • Spirit :records\skills\spirit\spiritmastery.dbr
  • augmentAllLevel : Level by wich all skills should be increased.
  • itemSkillName : See the part IV.
  • itemSkillLevel : See the part IV.
  • itemSkillAutoController : See the part IV.
Racial Bonus (for increased offense/defense versus certain races)
(https://i.imgur.com/DdRCtNL.png)
  • racialBonusRace  : Races that will be affected by the bonuses below. You can have as many as you like.
  • racialBonusPercentDamage  : Percent damage increase versus the race.
  • racialBonusAbsoluteDamage  : Flat damage increase versus the race.
  • racialBonusPercentDefense  : Percent reduced damage received from the race.
  • racialBonusAbsoluteDefense  : Flat reduced damage received from the race.
Pet Bonus (for bonuses to all pets)
  • petBonusName  : Select a pet bonus for the item. May explain the creation of one of these later.

Notice how you are not asked to define whether your affix is a prefix or a suffix. This is because the prefixes and suffixes are stored in different tables. You will see this below shortly.

II. Create multiple versions

Depending on what you have in mind, you might want to create upgraded versions of your affix (of Life < of Endurance < of Survival ...). Doing this is very simple, as you only have to copy and paste your .dbr the number of times you wish, rename the new .dbrs accordingly and make the needed changes, that is increase the power of the bonus, increase the cost and perhaps even a new name. Once your work is done, do not forget to build your .dbrs.

(https://i.imgur.com/XFjbIfj.png)

III. Include your affixes to tables

Now that your affixes are fully done, it is now time to include them in the affixes tables to finally make them appear on items from chests and merchants. To do so, you will need to import the needed tables. This is where they are located.

records\item\lootmagicalaffixes\... => for the Vanilla Game
records\xpack\item\lootmagicalaffixes\... => for the Immortal Throne Expansion
*Ragnarök does not have its own tables, therefore it uses the same as IT's.

From there, you will have to select if you want to add your affix to the prefix or suffix tables. With this exemple, I'll go with suffixes.

records\item\lootmagicalaffixes\suffix...
records\xpack\item\lootmagicalaffixes\suffix...

Thereafter, you select for what type of item it'll be. My suffixes will be exclusively for shields (but nothing prevents you from including it to swords and mage bracelets at the same time.)

records\item\lootmagicalaffixes\suffix\tablesshields...
records\xpack\item\lootmagicalaffixes\tablesshields...

Here you see the .dbr files that contain all possible affixes for specified category of items, for the difficulty X and the act Y. If I want to include it from the beginning to the end of the game, I'll need to import all the entirety of the two folders mentionned just above.

Open the files you just imported. You will see an array containing other affixes (or in this case, suffixes) that can drop. To include yours, all you need to do is to double-click on an empty space named "randomizerNameX" and insert the access path of the .dbr of your affix.

(https://i.imgur.com/XEmy9rR.png)

Just under, there should be a slot "randomizerWeightX". Here, input a flat number that will act as the odds for your affix to be selected by the table.

Keep on editing all the tables you have imported and build them when your work is done. Since those tables are the ones used by the original game, your work is now over, and your new affixes may now begin to appear.
SimplePortal 2.3.7 © 2008-2026, SimplePortal