User Tools

Site Tools


Sidebar

Current version: 0.8.5
iOS: 0.8.1+
Android: 0.8.5 (Play/Market version is obsolete!)

Github Coding has become social! Fork us!


News

Latest commit

https://github.com/gemrb/gemrb/commits/master

# ideally, but does not work on sourceforge (does elsewhere); even http proxies don't help rss>https://github.com/gemrb/gemrb/commits/master.atom 1 author 30m sidebar for frequently accessed stuff

developers:mods

This is an old revision of the document!


Mod ideas

Separated by difficulty/time requirement. If you don't know how doable is your idea, just write it here and someone else will categorise it.

The completed mods mentioned here can also be downloaded from a central repository.

Trivial

These mods are just configuration tweaks or file drop-ins. A few game tweaks can be achieved by simply toggling variables in gemrb.ini (check the note in the introduction to learn about the candidates).

Some of the table editing can be more complex due to the data involved. For example, to add brand new spells to the wild surge table, one would also have to create them first, not just replace the existing entries.

  • divine spellcaster classes with sorcerer style spellcasting -
    • just set the booktype to 3 in the gemrb clskills.2da (caveat: it will affect every npc with that class)
  • maximum hitpoint rolls in bg1
    • just add “Maximum HP=1” to baldur.ini
  • different boni for weapon styles
    • just edit override/ws*.2da as you see fit
  • different wild surges
    • just edit override/wildmag.2da
      • replace spell resrefs with your own and/or add modifiers
        • check Scriptable::HandleHardcodedSurge to see how the extra modifiers work (+ and all the numbers)
  • spell icon sorting in the action bar
    • just edit override/shared/spldisp.2da
  • some small usability improvements
    • set GUIEnhancements to 127 in the gemrb config (see the man page for details)
  • different damage and/or XP boni/mali for game difficulty levels
    • just edit override/difflvls.2da as you see fit
  • autocast any memorized self-targetting spells on rest (stoneskin anyone?)
    • add their resref to splspec.2da and use a value of 8

Easy

  • monk/sorcerer kits: normal kit process for creation
    • barbarian kits are not possible, since they are fighter kits themselves
    • add the how/iwd2 combat and damage strings to dialog.tlk
    • add their strrefs to gemrb/override/<game>/strings.2da (DMG_* currently set as -1)
  • different monk ac/apr progression
    • just change gemrb/override/bg2/monkbon.2da
  • quickload button on the startup screen for the games that lack it
    • edit start.chu to add the button
    • edit all the Start.py scripts to use it and make it quickload (see iwd2 for the code)
  • different layout for the PST modron maze
    • change gemrb/override/pst/easymaze.2da (or others when they become available)
    • for more complications also change gemrb/GUIScript/pst/Maze.py
  • new feats for iwd2
    • edit feats.2da
    • create the wanted spell to be applied (like with class abilities)
    • if you want something more complex like Critical Strike, code changes will be needed, pushing this into the hard category
  • new formations:
    • edit/extend override/*/formatio.2da (the easiest way by modifying admin/make_formation.py)
  • spontaneous casting for other games or spellbook types (in iwd2 it works only for cleric spells, not even domain):
    1. in GUICommonWindows.py, function SpellShiftPressed: delete intro cleric type constraint
    2. and decompose Type for GetSpellinfoSpells a few lines below (basically the function should get log2 of Type)
    3. (add sponcast.2da for new games)

Medium

  • subraces in bg2
    • write a new guiscript with a borrowed window pack from the kit selection
    • add subrace boni/mali
  • new multi/dual class choices
    • sorcerer/monk (multiclass mostly done)
    • sorcerer/monk/cleric (multiclass mostly done)
    • update a bunch of tables in the gemrb and game overrides (classes.2da and clskills.2da being the most important)
      • the MULTI column can be computed with this formula: 1«(ID1-1)|1«(ID2-1)|1«(ID3-1) (where the ids are the singleclass values in the ID column)
    • add missing tables (eg. clabxxxx.2da) and strings
    • maybe there'll be a need to update some game scripts
    • currently you'd still have to share the usability flags with some other combo
    • multiclasses are tiny bit easier, since you can skip a few tables
  • x-in-y games (like bg2 in iwd2)
    • no mixing with pst, due to large differences in control ids and strings
    • swap the guiscript folders and possibly some of the files in the gemrb override
    • swap / update gemrb.ini
  • character name generator
    • the only reason this is under medium and not easy is the fact that you have to create a long list of possible names or words and combination rules

Hard

  • more-than-6 player parties (in progress)
    • fix the game scripts, which WeiDU could do if improved, but roughly:
      • see 10pp in this repo (work in progress): https://github.com/lynxlynxlynx/gemrb-mods
      • all the trigger blocks checking Player6 should be copied at the end of the current block and changed to PlayerX (also its actions)
        • unless all players are checked and just an addition trigger needs to be added
      • all other actions involving Player6 should be copied to do the same on PlayerX
        • but of course not if whole blocks were copied above
    • fix the game gui (add new portraits to the CHU)
      • if the control IDs can't follow the existing pattern, also the PortraitWindow loading and refreshing gemrb code will have to be adjusted
      • there is no need to patch the CHUs if you reasonable expect the person to have a large enough display - widescreen installed.
        • it can all be created in GUICommonWindows, also checking for height/width limits and warning the user if they are breached
    • change the PARTY_SIZE constant defined in GUIDefines.py
    • if you want 9-10 characters, extra actions and objects will be needed, but this is just a copy/paste job in the engine
  • making infravision useful - decrease the visual and other ranges in the dark
    • this one would require engine and possibly ingame script changes
  • make all multiclass combinations possible (except for barbarians, of course)
    • this would mostly be about automating the multiclass addition mentioned in the previous section

How to start

Since 0.8.0 GemRB is much easier to mod, since some of it files can now be overriden via the game's override folder, so you can use the usual WeiDU workflow. Here is a table of the common paths.

files present ingame moddable? search order
game/override yes weidu 2
gemrb/override yes manual1) / weidu+ModPath 1
gemrb/unhardcoded no weidu 3
1)
requires write access to where gemrb is installed
developers/mods.1420758669.txt.gz · Last modified: 2015/01/08 23:11 by lynxlynxlynx