GameModes

The “GameModes” JSON is used to create game modes in Blade and Sorcery. It allows you to change specific components of the game, as well as allow you to adjust difficulty settings and the Home Level.

If you want to change any points regarding already-existing game modes, it is recommended to only reference the ID and the field you have edited, to prevent any file override conflicts.

Keys Description
id ID of the gamemode. Must be unique to avoid conflict of already existing gamemodes.
name Name of the gamemode that will appear on GameMode Selection
nameLocalizationId ID of the localization section for the “name”.
warning The text used before you start the game. For example, this would be used if you have Mods instlaled for CrystalHunt
warningId Localisation ID for the warning text.
iconAddress Addressable address of the “Icon” that is used for the main menu game-mode selection
order Order of which the gamemode will appear on the selection list
state Determines the visibility of the gamemode.
Show - Shown and able to be played.
Disabled Unable to be shown or played.
Hidden - Not shown but able to be played.
refreshMapOnlyWhenPlayerNear Will refresh the map selection board only when the player gets near it.
saveGameOnSkillUnlock Will save the player progress when they unlock a skill
allowLevelSelection Allows the player to select the levels they want to load in to.
allowRefundCoreSkills Allows the player to refund the “core” skills.
defaultPlayerInvincibility When enabled, player will be invincible by default.
defaultPlayerFallDamage When enabled, player will have fall damage by default
defaultPlayerInfiniteFocus When enabled, player will have infinite focus by default
defaultPlayerFastCast When enabled, player will have instant spell casting by default
defaultInfiniteImbue When enabled, player imbued weapons will have its imbue last forever
defaultInfiniteSupply When enabled, player-owned quivers and weapon holders will be infinite
defaultClimbFree When enabled, climbing will be easier
defaultEasyDismemberment When enabled, dismemberment will be easier
defaultInfiniteArrows When enabled, player’s arrows will be infinite, and will spawn on the bow when pulled back
defaultArmorDetection When enabled, enemy’s armor will have detection. When disabled, enemy armor is ineffective and won’t block/negate weapon attacks
levelHome Level ID of the default “Home” map.
levelHomeModeName ID of the gamemode used in the home for in-game events
levelHomeTravelSpawnerId Name of the PlayerSpawner transform of the spawner that spawns the player after returning from a level
hasTutorial When true, the gamemode will have a tutorial option
tutorialPlayerSpawnerId ID of the PlayerSpawner that spawns the player when the tutorial starts.
playerInventorStart Default Inventory for player options. See Inventory Start
mainCurrency The main currency used for monetary transactions.
otherCurrencies You can list alternative currencies here.
characterStatPrefabAddress Addressable address of the player stats UI
difficultyOptions Shows potential difficulty adjustments. See Difficulty

Inventory Start

The inventory start section allows you to have default starting options for the player in the game-mode. Currently this is used for selecting what type of magic you want to start with, but can be used for starting gold, inventory contents and specific armor/weapons.

Keys Description
containerID ID of Container json which contains the contents of the player inventory at default
textGroupID ID of the text group the localisation of the title is located
titleTextID ID of the text used for the title used for the inventory start
descriptionTextID ID of the text used for the start description
descriptionText Text used for the Description if it is not edited by the Text ID
titleImageAddress Addressable address of the image used for the inventory start
currencies Allow you to start with a basic amount of currency. You can add “Gold” and “CrystalShard” by default.

Difficulty

The Difficulty options is used to create difficulty settings, from allowing cheats to adjusting player damage.

Potential Difficulty Options

Difficulty Option Description
DealthPenalty Allows you to have a penalty to death, like losing gold on death or delete your character when you die.
EnemyDamageOption Allows you to adjust how much damage enemies deal to the player
PlayerDamageOption Allows you to adjust how much damage the player deals to enemies
AutoTranslateOption When set, Dalgarian notes will automatically translate to english.
CheatsMenu When set, the cheats option will be available in the gamemode

Difficulty Presets

With the difficulty presets, you can automatically set difficulty options with the specific difficulty, under the “Drop Levels”.

Modules

Crystal Hunt Level Instances Module

The Crystal Hunt level module determines all settings related to Crystal Hunt, from the tutorial to the dungeon map board.

Keys Description
mapInfoPrefabAddress Addressable address of the map information
difficultyIcon Addressable address of the level difficulty. Default is Bas.Icon.Skull
difficultyIconColor Color picker of the difficulty icon
minPinsToGeneratePerDay The minimum amount of dungeon levels that can appear on a map board every time the player returns home
maxPinsToGeneratePerDay The maximum amount of dungeon levels that can appear on a map board every time the player returns home
arenasLevelInfo References the “Arenas” that can appear on the map board, with their designated game mode
minNumberOfArenasAllowedPerDay The minimum amount of arenas that can appear on the map board after the player returns home
maxNumberOfArenasAllowedPerDay The maximum amount of arenas that can appear on the map board after the player returns home
dalgarianDungeonLevelInfo All the information regarding the enemy configurations and loot configurations for Dalgarian Dungeons
dalgarianMapLocationRandomNearest The nearest map point that the Dalgarian Dungeon map icon will spawn near
tutorialDungeonLevelInfo Information regarding the tutorial dungeon, including the level and mode id
outpostDungeonLevelInfo All the information regarding the enemy configurations and loot configurations for the Outpost dungeon
outpostMapLocationRandomNearest The nearest map point that the Outpost Dungeon map icon will spawn near
shopID ID of the level ID used for the shop
endRewardBalanceAddress Addressable address relating to the end of dungeon reward configuration
dungeonLengthBalanceAddress Addressable address relating to the dungeon length balance configuration
dungeonLootMultiplierBalanceAddress Addressable address relating to the dungeon loot multiplier configuration
dungeonTypeBalanceAddress The addressable address relating to the dungeon type balance configuration
outpostFactionTierBalanceAddress The addressable address relating to the outpost faction tiers balance configuration
dalgarianFactionTierBalanceAddress The addressable address relating to the dalgarian faction tiers balance configuration
JSON Block
{
  "$type": "ThunderRoad.Modules.CrystalHuntLevelInstancesModule, ThunderRoad",
  "mapInfoPrefabAddress": "Bas.Map.CrystalHuntMapInfos",
  "difficultyIcon": "Bas.Icon.Skull",
  "difficultyIconColor": {
    "r": 0.215686277,
    "g": 0.1764706,
    "b": 0.1764706,
    "a": 1.0
  },
  "minPinsToGeneratePerDay": 3,
  "maxPinsToGeneratePerDay": 5,
  "arenasLevelInfo": [
    {
      "$type": "ThunderRoad.Modules.CrystalHuntLevelInstancesModule+LevelInfo, ThunderRoad",
      "levelId": "Arena",
      "modId": "WaveAssault"
    },
    {
      "$type": "ThunderRoad.Modules.CrystalHuntLevelInstancesModule+LevelInfo, ThunderRoad",
      "levelId": "Sanctuary",
      "modId": "WaveAssault"
    },
    {
      "$type": "ThunderRoad.Modules.CrystalHuntLevelInstancesModule+LevelInfo, ThunderRoad",
      "levelId": "Canyon",
      "modId": "WaveAssault"
    },
    {
      "$type": "ThunderRoad.Modules.CrystalHuntLevelInstancesModule+LevelInfo, ThunderRoad",
      "levelId": "Citadel",
      "modId": "WaveAssault"
    },
    {
      "$type": "ThunderRoad.Modules.CrystalHuntLevelInstancesModule+LevelInfo, ThunderRoad",
      "levelId": "Market",
      "modId": "WaveAssault"
    }
  ],
  "minNumberOfArenasAllowedPerDay": 1,
  "maxNumberOfArenasAllowedPerDay": 2,
  "dalgarianDungeonLevelInfo": {
    "$type": "ThunderRoad.Modules.CrystalHuntLevelInstancesModule+LevelInfo, ThunderRoad",
    "levelId": "DungeonDalgarian",
    "modId": "CrystalHunt"
  },
  "dalgarianEnemyConfigs": [
    "DalgarianEnemyConfigT1",
    "DalgarianEnemyConfigT1",
    "DalgarianEnemyConfigT2",
    "DalgarianEnemyConfigT3"
  ],
  "dalgarianLootConfigs": [
    "DalgarianLootConfigT0",
    "DalgarianLootConfigT1",
    "DalgarianLootConfigT2",
    "DalgarianLootConfigT3"
  ],
  "dalgarianMapLocationRandomNearest": 3,
  "tutorialDungeonLevelInfo": {
    "$type": "ThunderRoad.Modules.CrystalHuntLevelInstancesModule+LevelInfo, ThunderRoad",
    "levelId": "DungeonTutorial",
    "modId": "CrystalHunt"
  },
  "tutorialEnemyConfig": "OutpostEnemyConfigT0",
  "tutorialLootConfig": "OutpostLootConfigT0",
  "outpostDungeonLevelInfo": {
    "$type": "ThunderRoad.Modules.CrystalHuntLevelInstancesModule+LevelInfo, ThunderRoad",
    "levelId": "DungeonOutpost",
    "modId": "CrystalHunt"
  },
  "outpostEnemyConfigs": [
    "OutpostEnemyConfigT0",
    "OutpostEnemyConfigT1",
    "OutpostEnemyConfigT2",
    "OutpostEnemyConfigT3"
  ],
  "outpostLootConfigs": [
    "OutpostLootConfigT0",
    "OutpostLootConfigT1",
    "OutpostLootConfigT2",
    "OutpostLootConfigT3"
  ],
  "outpostMapLocationRandomNearest": 5,
  "shopID": "Shop",
  "endRewardBalanceAddress": "Bas.Config.CrystalHunt.DungeonEndReward",
  "dungeonLengthBalanceAddress": "Bas.Config.CrystalHunt.DungeonLength",
  "dungeonLootMultiplierBalanceAddress": "Bas.Config.CrystalHunt.DungeonLootMultiplier",
  "dungeonTypeBalanceAddress": "Bas.Config.CrystalHunt.DungeonType",
  "outpostFactionTierBalanceAddress": "Bas.Config.CrystalHunt.DungeonOutpostFactionTiers",
  "dalgarianFactionTierBalanceAddress": "Bas.Config.CrystalHunt.DungeonDalgarianFactionTiers"
}