A Diablo like RPG stats system - now with magic! | PD fork: caster-force spells + extra artillery spell.
I recommend downloading:
https://mods.factorio.com/mod/pd_rpg_extra_spells
https://mods.factorio.com/mod/pd_rpg_m_spell_pack
https://mods.factorio.com/mod/pd_rpg_too_many_spells
Features:
all of original RPG 2.0.2 mod
Summoned units are set to the players force (multiplayer compatible)
Artillery spell -> Moved to pd_rpg_extra_spells
Turret spell (K2SO compatible) -> Moved to pd_rpg_extra_spells
XP tokens 100 + 1000 + 10000 (consumable, costs xp to craft)
tokens can craft science packs (cost is configurable) (including modded science packs)
+6 Spell slots (total 9) and short cuts, default Ctrl + number.
Allows PD_RPG_Extra_Spells to be added
Allows PD_RPG_M_Spell_Pack to be added
Allows PD RPG Too Many Spells to be added
global xp is now per force
real time numbers to Spell UI (level, xp, mana)
spell book added, to handle high number of spells
spells now have categories
working on:
new spells
new ways to use xp token
ideas are welcome!
to fix:
still looking for new bugs to fix
Thanks to the Original MOD:
https://mods.factorio.com/mod/RPG?from=search
None of this would be possible without the original mod, make sure to give them some love!
.
.
.
.
.
.
Comparison with Original:
Hard conflict with the original
Resource paths
Original uses RPG/...
Fork updates to rpg_pd_fork/...
This matters for anything referencing icons/sprites by mod path.
Structure / maintainability changes (big one)
Original has most data-stage definitions directly in data.lua (sprites + custom input).
Fork makes data.lua a tiny entrypoint and moves prototypes into modules:
prototypes/sprites.lua
prototypes/custom_inputs.lua
prototypes/item_groups.lua
prototypes/hand_crafting.lua
prototypes/xp_tokens.lua
Fork also adds data-final-fixes.lua + prototypes/final_fixes/* (extra late-stage tweaks).
Net effect: the fork is more modular and easier to patch without touching big monolithic files.
Runtime settings: polling removed (performance/UPS improvement)
Original: control.lua runs an every-60-ticks loop that repeatedly reads runtime settings and re-applies them.
Fork: removes that polling and introduces rpg/runtime_settings.lua:
applies settings on on_init
re-applies on on_configuration_changed
updates on on_runtime_mod_setting_changed
Net effect: less constant work, settings apply immediately when changed, and it’s cleaner.
Addon mod support: runtime spell registration (major feature)
Fork upgrades the remote API so other mods can inject spells at runtime into the RPG UI:
In rpg/commands.lua:
add_new_spell(...) now routes to runtime registration
adds new API:
register_spell(spell_def)
unregister_spell(spell_id)
clear_runtime_spells()
And it ships documentation:
README_ADDON_MODDING.md
docs/ADDON_MODDING_GUIDE.md
docs/ARCHITECTURE.md
Net effect: Spell Pack / addon mods can plug in cleanly without editing the core mod.
New gameplay/content pieces in the fork
Files added in the fork that don’t exist in the original:
XP token item prototypes + icons
prototypes/xp_tokens.lua
graphics/icons/xp-token*.png
Hand-crafting prototype wiring
prototypes/hand_crafting.lua
prototypes/final_fixes/hand_crafting_categories.lua
Token → science conversion final-fix
prototypes/final_fixes/token_science.lua
plus new startup settings in settings.lua:
rpg-token-science-default-output
rpg-token-science-cost-multiplier
rpg-token-science-overrides
Turret ammo category final-fix
prototypes/final_fixes/turret_ammo_category.lua
UI/locale changes
Fork adds a runtime-per-user setting:
rpg_show_spell_ui_numbers (used to show numbers on the spell UI / quickbar selection logic)
Locale files changed/expanded:
Fork adds locale/*/local.cfg and modifies many locale entries
Original has some different locale file naming (and extra mod_pic/* images).