Skip to content

Dungeon Keeper FX List of Guides and Resources

Spatulade edited this page Dec 2, 2023 · 7 revisions

Below is a (hopefully) comprehensive list of resources

Applications

Ingame Resources

Scripts and Configs

  • Script commands
  • Names of things in various files
    • At some point I’ll make a quick table of the key features for each, but the original source files (which you’ll need to edit or copy to a campaign and edit if you want changes) are:
    • Fxdata (https://github.com/dkfans/keeperfx/tree/master/config/fxdata):
      • Creature.cfg – List of creature names, changes on level up, instances with names (such as casting a Creature Spell, these rely on the spells/shots from magic.cfg, and also some misc stuff like “being tortured”), jobs and angerjobs with names and attack preferences.
      • Crstates.cfg – creature states. I think this is more behind-the-scenes and isn’t really touched.
      • Cubes.cfg – list of cubes. Used in Unearth when making custom slabs and columns. The file might be used in the future if we can add custom slabs to the file and scripts.
      • Effects.cfg - List of ingame visual effects. Can be used in scripts but can’t really be edited at the moment.
      • keepcompp.cfg – AI Keeper/Computer Assistant Parameters, can be used in scripts with SET_COMPUTER_PROCESS (see section 10 of the Old scripting commands for more info).
      • lenses.cfg – possession effects for certain creatures (overlays and palettes). Hasn’t been touched, but if you learnt how it works and made new stuff I’m sure we would get around to implementing it.
      • magic.cfg – spells (cast by creatures), shots (projectiles etc. generated by some spells), powers (creature/keeper spells with multiple power levels), specials (Dungeon Special boxes).
      • objects.cfg – list of objects (e.g. furniture, lairs, gold piles) with names/IDs
      • rules.cfg – Game rules such as gold per block, time to payday, rules for various creatures, rooms, spells, research order and points needed, list of sacrifices.
      • terrain.cfg – list of slabs and rooms with names
      • trapdoor.cfg – list of traps and doors with names and properties. Here you can make custom traps.
    • Creatrs (https://github.com/dkfans/keeperfx/tree/master/config/creatrs)
      • One for each creature, containing info like stats, name, properties, sprites, attraction requirements, creature spells, jobs etc.
      • Check imp.cfg for more info on what everything does.
  • Making custom traps/objects/creatures/anything else.
    • Custom creature spells – need to modify magic.cfg (shot, possibly also spell), creature.cfg (instance) and the creature’s .cfg inside creatrs (assigning the instance to the creature). GUI2 for icons (or use a custom), sprites for graphics for shot.
    • Custom traps – need to modify magic.cfg (shot), trapdoor.cfg (making the trap), GUI2 for icons (or use a custom), pointer for pointer (or use a custom), sprites for graphics of actual trap.
    • Custom objects – need to modify objects.cfg. Sprites for sprites or make customs.

Making custom graphics

##Custom Icons If you need greyed-out versions of icons (for when you cannot afford a room/spell or have no traps), download qqluqq's Colour Swapper and use this palette as pal_out.png: pal_out

Custom Tilesets

Guide for creating custom tilesets.

  • Palette – The game has a strict palette - https://imgur.com/a/2cKm6dW.
  • 🟥 You can use it in GIMP or other programs that let you use a palette to ensure your image looks like it should ingame.
  • 🟥 Tilesets – subsection on all that with info by me and Trot. How to make, GIMP templates, palette and importing it, advice (make it darker than you’d expect, as this look is how it looks without light), you can much more easily extract and build it using Unearth now! You can also set in Unearth easily, but I can show backup way using hex editing.
  • 🟥 Icons and sprites – setting up the JSONs
  • 🟥 Bundling custom stuff and linking to it

Checking your scripts and maps

Balancing Scripts

Useful scripts if you want to stop snowballing.


rem - prevent prison convert snow-balling -
IF( PLAYER0, SKELETON > 2 )
    SET_GAME_RULE( PrisonSkeletonChance, 80 )
    ADD_TO_FLAG( PLAYER0, FLAG7, 1 )
ENDIF
IF( PLAYER0,SKELETON > 5 )
    SET_GAME_RULE( PrisonSkeletonChance, 60 )
    ADD_TO_FLAG( PLAYER0, FLAG7, 1 )
ENDIF
IF( PLAYER0,SKELETON > 8 )
    SET_GAME_RULE( PrisonSkeletonChance, 40 )
    ADD_TO_FLAG( PLAYER0, FLAG7, 1 )
ENDIF
IF( PLAYER0,GHOST > 3 )
    SET_GAME_RULE( GhostConvertChance, 30 )
    ADD_TO_FLAG( PLAYER0, FLAG7, 1 )
ENDIF

rem - prevent torture convert snow-balling -
IF( PLAYER0, CREATURES_CONVERTED > 2 )
    SET_GAME_RULE( TortureDeathChance, 33 )
    ADD_TO_FLAG( PLAYER0, FLAG7, 1 )
ENDIF
IF( PLAYER0, CREATURES_CONVERTED > 5 )
    SET_GAME_RULE( TortureDeathChance, 50 )
    ADD_TO_FLAG( PLAYER0, FLAG7, 1 )
ENDIF
IF( PLAYER0,CREATURES_CONVERTED > 8 )
    SET_GAME_RULE( TortureDeathChance, 80 )
    ADD_TO_FLAG( PLAYER0, FLAG7, 1 )
ENDIF

rem - modify stun chance -
IF( PLAYER0,FLAG7 >= 1 )
    SET_GAME_RULE( StunEvilEnemyChance, 80 )
    SET_GAME_RULE( StunGoodEnemyChance, 80 )
ENDIF
IF( PLAYER0,FLAG7 >= 2 )
    SET_GAME_RULE( StunGoodEnemyChance, 60 )
ENDIF
IF( PLAYER0,FLAG7 >= 3 )
    SET_GAME_RULE( StunEvilEnemyChance, 60 )
    SET_GAME_RULE( StunGoodEnemyChance, 50 )
ENDIF
IF( PLAYER0,FLAG7 >= 4 )
    SET_GAME_RULE( StunGoodEnemyChance, 30 )
ENDIF

rem - set sacrifice limits -
IF( PLAYER0, SACRIFICED[IMP] >= 9 )
    REMOVE_SACRIFICE_RECIPE( IMP )
ENDIF
IF( PLAYER0, REWARDED[BILE_DEMON] >= 1 )
    REMOVE_SACRIFICE_RECIPE( SPIDER, SPIDER, SPIDER )
ENDIF
IF( PLAYER0, REWARDED[DARK_MISTRESS] >= 1 )
    REMOVE_SACRIFICE_RECIPE( SPIDER, BUG )
ENDIF
IF( PLAYER0, REWARDED[TENTACLE] >= 1 )
    REMOVE_SACRIFICE_RECIPE( SPIDER, TROLL )
ENDIF
IF( PLAYER0, REWARDED[HORNY] >= 1 )
    REMOVE_SACRIFICE_RECIPE( TROLL, BILE_DEMON, DARK_MISTRESS )
ENDIF

rem - set graveyard limits -
IF( PLAYER0, VAMPIRE >= 2 )
    SET_GAME_RULE( BodiesForVampire, 15 )
ENDIF
IF( PLAYER0, VAMPIRE >= 4 )
    SET_GAME_RULE( BodiesForVampire, 20 )
ENDIF
IF( PLAYER0, VAMPIRE >= 6 )
    SET_GAME_RULE( BodiesForVampire, 25 )
ENDIF