D2R mod generator. Provide quick tool to generate .txt files to change game balance: increase drop, monster density or even randomize items.

Overview

Diablo 2 mod generator

Generator is inspired by d2modmaker. It provides fast and easy way to create mod without any modding knowledge.
Features included:

  • GUI-based desktop application with "one click and go" solution;
  • Ability to adjust monster stats;
  • Tune options to increase Set/Unique/Rare drops;
  • Increase monster density and boss pack count to insane numbers;
  • Last but not least, item randomizer - switch magic properties between Uniques, Runewords, Sets, Magic/Rare and even gems and runes!

Quick start

mainwindow
Main Window

  1. Download zip archive from releases page;
  2. Extract wherever you want and go inside extracted folder;
  3. Run modgen.exe (see the screenshot);
  4. Check if "D2R path" is filled correctly; if not, edit it manually to point "Diablo II Resurrected/" folder;
  5. Optional; press "Copy Settings.json" to initialize new mod with your default game settings (music volume, etc);
  6. Now you need to setup modded launch of D2R - that can be done either by creating the shortcut or modifying launch option in BNet launcher, choose what is suitable for you:
    a) Press "Make shortcut on Desktop", that will make "Diablo II - modname Mod" link on your Desktop;
    b) OR copy value from "D2R command arguments" and create shortcut by yourself, pointing to D2R.exe and use this as extra args;
    c) OR close Battlenet client, press "Set launch to mod" to setup game launch as modded by default and launch BNet again;
    d) OR make it manually, by going "Settings near Play button" - "Game Settings" - "Diablo II Resurrected" - "Additional command line arguments" and paste string from "D2R commandline"
  7. Press "Generate" button;
  8. Launch the game and go to offline tab mode. Create a new character and start;
  9. If you done all correctly, character will have chest key in the inventory after creation.

Now, go and play around with other settings, click "Generate" and restart D2R again!
Note: all you offline character still exist in non-modded save folder.
Note 2: mod do not affect online play in any way, you won't get banned for it.
Note 3: if you want to return to unmodded, press "Reset launch to unmodded" (again, BNet must be closed when you press this button).

How it looks like

density
High density setting in Lost City
rando_gem
Random affixes set on gem with Randomizer
rando_rune
That's and Eld rune I always wanted to see!
rando_rare
Nice boots i found in Cold Plains Normal!
rando_unique
Another GG find, Pelta Lunata! Trying to use balanced drops next time...
drops_max
A lot of features enabled here - more Boss drops, increased Uniques/drop count/Rune drops etc. Almost close to D3 drop count (please, dont go that far!)

Detailed description how everything works

  1. Game (D2 and D2R) stores a lot of properties/balance of game cotent in tables - imagine an Excel spreadsheet or database table inside the game. One way to modify this data - provide a set of txt files (which are CSV - tab-separted). Starting with D2R, that can be done in a very simple way - creating a mod subfolder, so custom mod no not override the main game. d2modgen utilizes this feature.
  2. Main game data located in "D2R folder", mod in "D2R folder/mod/modname/modname.mpq/"; save files stored in "User folder/Saved Games", mod save files (and games settings) stored in "User folder/Saved Games/mods/modname". You can easily transfer your data between modded and non-modded versions (for example, shared storage).
  3. To run the game in modded version, you need to provide command-line option, like "-mod rando -txt" will run D2R with mod "rando" enabled.
  4. You can check "Export all .txt" checkbox, and have you own mod setup instead (mod folder is filled by D2R internal files).

Feature tabs

tab_difficulty
Difficulty settings.
First there are sliders to adjust monsters AR/Def/HP/Damage/XP. That will affect all monsters on all difficulties.
Next, "Density" slider - that will affect increase of density of regular monsters (note that it is higly dependant on map and tiles; max density can be reached on open area tiles.)
Boss packs slider icreate number of Champion/Uniques in zones; again, that also not a precise setting.
Checkbox can be used to quickly setup boss count on Normal and Nightmare exactly the same as on Hell.
And the last, you can adjust level area on all maps; note that max value of 85 is still used (so set to 20 to basically make all Hell 85 areas).

tab_drops
Drops improvement.
First 3 sliders are for increasing chance for Uniques/Sets/Rares. Note that it's not than accurate when you have already high chance (like killing low level monster with high MF).
NoDrop slider provides ability to gradually reduce NoDrop parts (it basically similar to increasing players count in the game).
"Increase Champion/Unique item count" make Unique bosses to drop 4 items instead of just 1, and Champions drop 2 items instead of one.
"Increase Good TC" slider makes Gems/Runes/Rings/Amulets/Charms drop far more often compare to equipment.
"Increase Runes chance" tunes Runes specifically compared to other jewellery.
Switch Ber/Jah with Cham/Zod pretty descriptive: when game deside to drop Jah rune, it drops Zod instead.
Final slider is when everything above is not satisfying and you really really want high runes to be more common. Please don't do that :).

tab_random
Randomizer. Firs you need to set topmost checbox to enable everything.
Balance level - determine level difference to be used when selecting new properties for item/rune/etc. With '10' it will select between level-10 and level+5 at first, if there are few candidates, then it will select 0..level+5, and finally it will try fully random. In short, lower value = more balance in terms of original affix level and item level.
Next four sliders set min/max amount of affixes on Uniques, Sets and RuneWords. Sets (whole bonus)/gems/runes will have 1 as minimum and maximum possible as maximum.
Always perfect means simply minimum roll becomes maximum.
Randomize magic/rare include modification of regular affixes - so they can include properties of any other item in the game.
Same for last option for gems.

KnownIssues

  1. If there is many dead bodies on the screen, some portals won't open (e.g. near Summoner). Workaround - go far away to another location, wait while corpses disappeared and then trigger the portal.
  2. If charges spawned on a gem/rune, it will constantly update count on gem mouse hover. This glitch is fixes after gem is inserted in socket.
  3. Game trying to render limited item label on the screen - if there are too many items, you will see only closest ones.
  4. Some mods can be spawn on items that do not support them (like Replenish quantity on Amulet). (TODO - future releases)
  5. You need to completely quit out of the game for Diablo 2 Resurrected, to mod changes apply. In Diablo 2 legacy, however, you can just reload save again without quitting.

Q&A and Troubleshooting

If you encounter an issue (hang/crash) in generator itself, grab applog.txt (File->Browse to settings folder) (make sure to copy file just after the crash). Then create an issue and attach this file.
NB: author do not respond for any issues in D2R itself (all on your own risk!). However, you can create an issue to address game problems if you know correct way to fix it.

How to build from the source

Prerequisites:

  1. Qt 5.15 LTS
  2. CMake 3.20 (prior versions should be fine though).
  3. C++17 capable compiler. Tested: MSVC 2019 16.11.

If requirements are met, then go "cmake/build/build install". For windows platform, "build install" creates install in binary directory with all runtime dependencies.

Contribute

  1. follow clang-format rules in src/ directory;
  2. ConfigPages.cpp is probably your main focus of interest for adding new rules.

Used thirdparty products

Third party components as non-distributed dependency

  • Qt , https://www.qt.io/, GPL/LGPL/Commercial; components utilized by d2modgen are available under LGPL.

License

Project source code is licensed under MIT license.

You might also like...
A tool to generate elegant UML-like class/object diagrams for C++ header files

Diagrams for C++ header files Note: This is a PoC project; Issues will drive the development What's this all about We strive for a tool to generate el

Dummy-Robot my super mini robot arm robot items
Dummy-Robot my super mini robot arm robot items

Dummy-Robot 我的超迷你机械臂机器人项目。 资料待整理 已添加3D模型设计源文件。 已添加夹爪硬件设计文件和LED灯环PCB 已添加无线空间定位控制器PCB文件 已添加无线示教器Peak软硬件工程(作为submodule) 已添加REF的硬件设计文件 已添加DummyStudio上位机 已

the first ever open source zombie killcam mod for bo2 zombies. this repository is the original mod.

BO2 T6ZM Killcams (+ Mod Menu) my zombie killcam mod that is a work-in-progress and open sourced. this may work off plutonium but this was only suppor

The v.st Colour Mod - a colour vector generator based on the original v.st
The v.st Colour Mod - a colour vector generator based on the original v.st

VSTCM - the v.st Colour Mod - a colour vector graphics generator The vstcm is a PCB which can generate colour vector graphics which can then be displa

Quick Look extension for Markdown files on macOS Catalina and Big Sur.
Quick Look extension for Markdown files on macOS Catalina and Big Sur.

QLMarkdown is a macOS Quick Look extension to preview Markdown files. It can also preview textbundle packages and rmarkdown (.rmd) files.

macOS Quick Look plugin for Matroska `.mka` files

qlmka: A macOS Quick Look plugin to display Matroska .mka covers This plugin adds support for showing thumbnails of Matroska .mka files in macOS Finde

An application that can generate traduction pokeemerald dizzy egg project files. Credits to Pokecreator and myself.

INSTRUCTIONS First of all, you have to launch "PokeemeraldTraductor.exe", chose a language then, you just have to wait until the traduction finish. A

An application that can generate traduction pokeemerald dizzy egg project files. Credits to Pokecreator and myself.

INSTRUCTIONS First of all, you have to launch "PokeemeraldTraductor.exe", chose a language then, you just have to wait until the traduction finish. A

This repository will hold all the deadly codes that can change the world .

Hacktoberfest Hack Codes Proud Contributors Do you know , that we belong to an era where your code can build me or destry me ? 😨 So , we thought why

Comments
  • Feature: Quality of life tab.

    Feature: Quality of life tab.

    Some folks really used QoL features from d2mm. So what should not take long:

    • Add Horadric Cube as starter;
    • Increase books size (i think 3x would be ok).
    opened by mapron 4
  • Feature: option to preload files.

    Feature: option to preload files.

    One user want to specify custom data in one of the .txt files (for example, prefixes/suffixes), and then use it data as source to randomizer. Think about: how to do it most convenient way; support more that one source; also source probably can be from different versions/different columns.

    Can be useful for the future 'old legacy patch backport' feature too.

    opened by mapron 1
  • Bug: randomizer max level do not really pick any affix

    Bug: randomizer max level do not really pick any affix

    It does [level-balance, level+balance/2] pick first, so for 1lvl item it will select up to 50level. Think to maybe treat 99 as special value or something.

    opened by mapron 1
  • Crashing in the game itself when adding extended inventory mod

    Crashing in the game itself when adding extended inventory mod

    Love the generator - missing extended stash / user inventory / cube space so i went and added extended.mpq's data folder to add the extra space I got the result i wanted, but after being in the game for 5 secs it crashes.

    Removing/regenerating the mod gives me a working game again, but will so much less space. Is it possible to add an extender for the extra space?

    I know that the karla mod also have the additional space if you need the files?

    bug 
    opened by Reddism 5
Releases(0.5.6)
  • 0.5.6(Oct 22, 2022)

    Tiny fixes here and there this time.

    • Added option to disable XP penalty.
    • Improve set partial bonuses. Now they can be added in rando when initial item did not have them.
    • Added feature 'Multiple sets copies'. This will create separate sets with number in the end, like 'Sigons Complete Steel 3', 'Angelic Wings 6' etc.
    • Added separate slider for number of properties for sets in rando
    • Fixed crash with CSV pregen, if there was slash at the end of folder path.
    • Auto create item-names translations so user can have extra custom sets.
    Source code(tar.gz)
    Source code(zip)
    d2modgen_Win64_0.5.6.zip(15.78 MB)
  • 0.5.5(Oct 3, 2022)

  • 0.5.4(Sep 27, 2022)

  • 0.5.3(Jun 26, 2022)

    Main 2 changes related to better bug diagnostics:

    • Added exception handling to generation phase so you getting message like 'Generation failed in step 'randomizer' with error X' instead of crash;
    • Added exception to common error (missing columns) so you again getting nice dialog instead of crash, reporting 'unknown column 'blha' in table 'runes';
    Source code(tar.gz)
    Source code(zip)
    d2modgen_Win64_0.5.3.zip(15.76 MB)
  • 0.5.2(Jun 5, 2022)

    Various bugfixes related to pre-gen step:

    • Data change in 'D2R mod' combo works correctly;
    • Improved json merge (e.g. if mod have some item.json changes and modgen have them too);
    • Added workaround for column 'worldevent' renamed to 'diablocloneweight' in 2.4.
    • Added couple options: 'Quest drops' and 'Show item level'
    Source code(tar.gz)
    Source code(zip)
    d2modgen_Win64_0.5.2.zip(15.76 MB)
  • 0.5.1(May 5, 2022)

    Couple bug fixes after 0.5:

    • fixed random seed not restored;
    • fixed random seed not applied on 'create new seed' action;
    • fixed monsters HP slider was invisible on Monster Stat tab;
    • fixed resistance penalty was applying with wrong sign (+100% instead of -100% for example)

    Full changelog of all releases: https://github.com/mapron/d2modgen/blob/main/Changelog.md

    Source code(tar.gz)
    Source code(zip)
    d2modgen_Win64_0.5.1.zip(15.75 MB)
  • 0.5(May 3, 2022)

    New features:

    • Added New tab - Requirements!
    • Now you can play around with level requirements and get powerful items early.
    • Added 'max hard skill points' option into Character tab. Now you can dump 60 hard points into Blizzard.

    Noticeable changes:

    • Complete overhaul of modular engine (so bad things can happen, report if something broken).
    • NB: random seed is not compatible with previous versions. You will get different results with same seed from 0.4.1.

    Full changelog of all releases: https://github.com/mapron/d2modgen/blob/main/Changelog.md

    Source code(tar.gz)
    Source code(zip)
    d2modgen_Win64_0.5.zip(15.75 MB)
  • 0.4.1(Feb 19, 2022)

    0.4.1

    New features:

    • Added New Randomizer tab - Skills Randomizer!
    • Skills Randomizer allow you to shuffle skills within the class.
    • Skills Randomizer allow you to change elemental type of damage randomly.
    • Added new Perfect Rolls page, incorporating different 'perfect' options from other tabs.

    Full changelog of all releases: https://github.com/mapron/d2modgen/blob/main/Changelog.md

    Source code(tar.gz)
    Source code(zip)
    d2modgen_Win64_0.4.1.zip(9.89 MB)
  • 0.4(Feb 12, 2022)

    New features:

    • Added Undo action.
    • Added quick presets feature (for now on three tabs).
    • Added option to increase high-level drops.
    • Added Rune Drop tab (to make some space on Item Drops).
    • Improved 'Increase Rune drops' slider to be much more smooth.
    • Randomizer can now accept custom properties list to randomize.

    Bug fixes:

    • Fixed a bug when slider value will slowly creep down on eash program start.
    • Fixed 'perfect roll' not perfect rolling some things.

    Full changelog of all releases: https://github.com/mapron/d2modgen/blob/main/Changelog.md

    Source code(tar.gz)
    Source code(zip)
    d2modgen_Win64_0.4.zip(9.89 MB)
  • 0.3.4(Feb 6, 2022)

  • 0.3.3(Feb 4, 2022)

  • 0.3.2(Feb 3, 2022)

  • 0.3.1(Feb 1, 2022)

  • 0.3(Jan 30, 2022)

    New features:

    • Post-gen and pre-gen steps now a more powerful replacement than 'mod merge' - you can merge different mods and resolve conflicts automatically!
    • Overall UI rework;
    • added Light/Dark theme support;
    • ability to change language (English/Russian for now);
    • disable/enable tab on panel switch;
    • added context help buttons, documentation moved from Readme.MD to UI context (nobody read github docs);
    • added commandline support;

    full changelog is here - https://github.com/mapron/d2modgen/blob/main/Changelog.md

    Source code(tar.gz)
    Source code(zip)
    d2modgen_Win64_0.3.zip(9.85 MB)
  • 0.2.7(Jan 23, 2022)

    New features:

    • each tab have separate enable control and reset button;
    • Randomizer introduces new option: fit properties to item type. Now you can select percent, how much you wish to new generated items resemble old item classes (rings - old rings, belts - old belts etc).

    Full changelog: https://github.com/mapron/d2modgen/blob/main/Changelog.md

    Source code(tar.gz)
    Source code(zip)
    d2modgen_Win64_0.2.7.zip(9.63 MB)
  • 0.2.6(Jan 22, 2022)

  • 0.2.5(Jan 22, 2022)

  • 0.2.4(Jan 22, 2022)

    New features: -Updated docs to include latest features; -Added new "Challenge" tab; -Item randomizer now respect some properties to have sense when spawn: sockets, durability options, throwable options will now spawn on items that support them. -Improved support for partial set bonuses on items for Randomizer (they were ignored previously). -Perfect rolls option now tweak automods too. -Added option to skip knockback/monster flee affix.

    upd: download 0.2.5 instead

    Source code(tar.gz)
    Source code(zip)
  • 0.2.3(Jan 15, 2022)

    Changes from 0.2.3:

    • Monster randomiser is rewritten form scratch; more balanced spawns, minions, skills and TCs now fixed;
    • Disabled buggy charm gambling;
    • Quest items do not randomize their stats now;
    • New feature: mod merge tab; allows to include other mods contents on generate;
    • Reworked item filters - instead modifying droptables, now it shortens labels or hide them, items still available for pickup.
    Source code(tar.gz)
    Source code(zip)
    d2modgen_Win64_0.2.3.zip(9.60 MB)
  • 0.2.2(Jan 12, 2022)

    Changes from 0.2.1:

    • Added Monster Randomizer! Don't worry, you won't overwhelmed on normal from the start!
    • Gambling tuning experimental support (still have quirks);
    • Add quest skip recipes (fast creation of Tal staff and Khalim Will);
    • Fixed issue that 'unbalanced' (=99) mode was not 'crazy enough';
    • Added character tab, to allow add Horadric cube, change stats per level or lower overall requirement;
    • New 'Quality of life' tab, change stacks/books size, remove Unique charm limit, enable Teleport in town, or reduce repair costs!

    Hope you enjoy this improvements.

    Source code(tar.gz)
    Source code(zip)
    d2modgen_Win64_0.2.2.zip(9.59 MB)
  • 0.2.1(Jan 11, 2022)

    Changes:

    • Added Horadric cube tab with a few recipes handy for testing purpose;
    • Option to make uniqes with same base equal rarity (for randomizer that does not make sense anyway)
    • Fixed issue with spawning "defence on time" affix.
    • Perfect roll now a thing in non-randomized mode.
    • New density option.
    • Workaround for lack of loot filter - pseudofilter done through discarding drops.
    • Option to replace +skills and charges to oskills.
    Source code(tar.gz)
    Source code(zip)
    d2modgen_Win64_0.2.1.zip(9.57 MB)
  • 0.2(Jan 8, 2022)

  • 0.1.1(Jan 6, 2022)

  • 0.1(Jan 5, 2022)

Owner
Smirnov Vladimir
C++ desktop application developer. Discord: mapron#8196
Smirnov Vladimir
Write snippets of C code in your txt files for notes and skip the hassle of compiling and running

Write snippets of C code in your txt files for notes and skip the hassle of compiling and running. Greatly helps organization and note-taking to make sure you do not miss anything.

Seamus Walden 4 Jun 13, 2022
A collection of individual tools to randomize bdsp sheets

BDSP_Randomisers A collection of tools to randomize BDSP assets Setup (Windows 10 only) Install Ubuntu 18.04 via WSL1 (plenty of tutorials on that) In

null 6 Mar 1, 2022
Hardware ID Resetter for D2R bans.

Anti-Flag for D2R Anti-Flag is a simply Console Application written in modern C++. It prevents Chainban's by clearing common Directories and Registry

null 16 Mar 8, 2022
Take Damage hook hook made to increase weapon damage, the game I made is Free Fire in version 1.65

Take-Damage Simple Take Damage hook hook made to increase weapon damage, the game I made is Free Fire in version 1.65 Bool bool isTakeDemageBool = fal

Master Games 3 Jan 1, 2022
Lean4 port of Arduino balance car controller

lean4-balance-car This is a small proof-of-concept exercise to show a Lean 4 program controlling a real robotics platform which requires low latency c

Galois, Inc. 31 Jul 11, 2022
CRC32 slice-by-16 implementation in JS with an optional native binding to speed it up even futher

CRC32 slice-by-16 implementation in JS with an optional native binding to speed it up even futher. When used with Webpack/Browserify etc, it bundles the JS version.

Mathias Buus 8 Aug 4, 2021
RRxIO - Robust Radar Visual/Thermal Inertial Odometry: Robust and accurate state estimation even in challenging visual conditions.

RRxIO - Robust Radar Visual/Thermal Inertial Odometry RRxIO offers robust and accurate state estimation even in challenging visual conditions. RRxIO c

Christopher Doer 63 Dec 20, 2022
A Charm/Item editor for Monster Hunter Rise

mhr-charm-item-editor A Charm/Item editor for Monster Hunter Rise. The project is written in C++/CLR (yes, I know, it's shit). I was too lazy to use s

Fexty 49 Dec 9, 2022
Compiles c files automatically on any change

Compiles c files automatically on any change

notaweeb 9 Dec 5, 2022
Watches files and records, or triggers actions, when they change.

Watchman A file watching service. Purpose Watchman exists to watch files and record when they actually change. It can also trigger actions (such as re

Meta 11.4k Jan 3, 2023