Automatic Data Migration

To assist in the transition between v1.2.2 and v1.3's data formats we have created an automatic data migration script. To use it, simply hit the button below and select a data package you wish to upgrade. An upgraded version of the file will be downloaded, as well as a log about any data that could not be automatically upgraded (if any).

Using this guide

This guide outlines the changes that have been made to the data package format. Each change is outlined with a severity level, and markers for if automatic data migration can fix them.

Severity Levels

  • BREAKING: Indicates a change to the format that breaks the previous functionality
  • DEPRECATED: Indicates a change to the format where properties have been superseded by new properties. The old properties will be removed in a future game update
  • OTHER: Indicates a change to the format that does not break existing functionality, and generally requires no action

Markers

  • 🛠: Indicates that the change is automatically fixed by the data upgrade script
  • ❗: Indicates that the change cannot be automatically fixed, and requires manual editing
  • 🛠❗: Indicates that the change is partially fixed by automatic data migration, and may require manual fixes

Changes to the Data Package Format

Ancient Relics

  • 🛠 OTHER: The unused description property has been removed

Combat/Slayer Areas & Dungeons

  • ❗ BREAKING: Removed the skillUnlockCompletions property from Dungeons, as this is now controlled by Gamemode data
  • 🛠 DEPRECATED: Slayer Area Effects modifier property -> modifiers (Uses standard modifier format)
  • 🛠 DEPRECATED: The combatAreaDisplayOrder, slayerAreaDisplayOrder and dungeonDisplayOrder game data properties should be replaced by the areas property of a modification for a Combat Area Category

Conditional Modifiers

  • 🛠 BREAKING: Removed the DOT, Effect, IsStunned, IsSleeping conditions in favour of the new CombatEffectGroup and CombatEffect conditions
  • ❗ BREAKING: Removed the IsFighting condition

Gamemodes

  • ❗ BREAKING: Skill Level Cap increases and unlocks have been refactored for Ancient Relic like gamemodes.
    • The following properties have been removed: overrideLevelCap, allowDungeonLevelCapIncrease, skillCapIncreasesPre99, skillCapIncreasesPost99, autoLevelSkillsPre99, autoLevelSkillsPost99, skillCapRollsPre99, skillCapRollsPost99
    • To set the initial level caps of skills use the defaultInitialLevelCap and initialLevelCaps properties
    • To allow the increase of skill level caps when meeting requirements, use the levelCapIncreases property in conjunction with the skillLevelCapIncreases game data property
    • To allow the purchase of skill level caps, use the levelCapCost and abyssalLevelCapCost properties
    • To control when skills are unlocked in the gamemode use the useDefaultSkillUnlockRequirements and skillUnlockRequirements properties
    • In order to facilitate the conversion between the old and new formats in saves:
      • set the pre99RollConversion property to a level cap increase equivalent to the old skillCapRollsPre99 and skillCapIncreasesPre99 properties
      • set the post99RollConversion property to a level cap increase equivalent to the old skillCapRollsPost99 and skillCapIncreasesPost99 properties
    • Note: To prevent save data loss, gamemodes with the allowDungeonLevelCapIncrease property set to true will throw an error when attempted to be loaded

Items

Equipment/Weapon Items
  • 🛠 DEPRECATED: The damageReduction equipment stat should be replaced by the resistance equipment stat with the damageType property set to melvorD:Normal
Readable Items
  • 🛠 BREAKING: The title property of the swalData property now uses a single lang string id instead of the old category + id format
Token Items
  • 🛠 BREAKING: Token items that were able to be claimed for Mastery Pool XP are now their own item type of MasteryToken

Item Upgrades

  • 🛠 DEPRECATED: gpCost and scCost -> currencyCosts

Magic Spells

  • 🛠 BREAKING: The spellType and spellTier properties have been removed from Attack Spells, and should be replaced with the categories property
  • 🛠 BREAKING: The targetModifiers property of Curse spells has been removed and should be replaced with the effect property
  • 🛠 BREAKING: The specialAttack property of Archaic Spells has been renamed to specialAttackID
  • 🛠 DEPRECATED: The standardSpells, ancientSpells and archaicSpells game data properties have been replaced with a new unified attackSpells property

Modifiers

  • 🛠❗ BREAKING: The modifier system has been refactored and many modifiers have been removed
    • Any modifiers that provided a chance to apply an effect in combat have been removed in favour of the new Combat Effects system. Most data types that support modifiers now support an optional combatEffects property for this purpose
      • Automatic Data Migration is able to convert these, with the exception of conditional modifiers, and data types that do not support combat effects. These will be logged in the data migration output
    • Modifiers that were providing bonuses to the combat stats of a character's target have been removed. Most data types that support modifiers now support an optional enemyModifiers (or an equivalent) property for this purpose instead
      • Automatic Data Migration is able to convert these, with the exception of data types that do not support enemyModifiers (or an equivalent) property. These will be logged in the data migration output
    • Some modifiers have been removed as their implementation was better suited for the conditional modifiers system. Most data types that support modifiers now also support conditional modifiers.
      • Automatic Data Migration is able to convert these, with the exception of data types that do not support conditionalModifiers. These will be logged in the data migration output
    • Modifiers which did not have any functionality, or were providing one off effects to items have been removed
  • 🛠 DEPRECATED: Several modifiers have been renamed or combined together. The old names of these modifiers are still valid and can be loaded via a data package

Monsters

  • 🛠 DEPRECATED: gpDrops -> currencyDrops

Pets

  • 🛠 BREAKING: The langHint property now uses a single lang string id instead of the old category + id format

Shop Purchases

  • 🛠 DEPRECATED: For the cost property: gp, slayerCoins, raidCoins -> currencies

Skill Data

All Skills
  • 🛠 DEPRECATED: ancientRelics, completedAncientRelic -> ancientRelicSets
Agility
  • 🛠 BREAKING: Agility Skill Data no longer has an elitePillars property. All pillars should now be defined using the pillars property. Pillars are now distinguished by the new mandatory slot property.
  • 🛠 DEPRECATED: Agility Obstacles and Pillars gpCost and scCost -> currencyCosts
  • 🛠 DEPRECATED: Agility Obstacles gpReward and scReward -> currencyRewards
Archaeology
Archaeology Dig Sites
  • 🛠 DEPRECATED: mapCreationCost.gp and mapCreationCost.sc -> mapCreationCost.currencies
  • 🛠 DEPRECATED: mapUpgradeCost[i].gp and mapUpgradeCost[i].sc -> mapUpgradeCost[i].currencies
Archaeology Museum Rewards
  • 🛠 DEPRECATED: gp and sc -> currencies
Astrology
Constellations
  • 🛠 BREAKING: The modifiers property now uses the standard modifier data format, and the incrementValue property has been removed
  • 🛠 OTHER: The unused gpReward, scReward and itemRewards properties have been removed
Cartography
Points of Interest
  • 🛠 BREAKING: The activeModifiers property has been replaced by the activeStats property
  • 🛠 DEPRECATED: For the fastTravel.unlockCosts property: gp and sc -> currencies
  • 🛠 DEPRECATED: For the discoveryRewards property: gp and sc -> currencies
Hexes
  • 🛠 DEPRECATED: For the travelCost property: gp and sc -> currencies
World Map Mastery Bonuses
  • 🛠 DEPRECATED: gp and sc -> currencies
Paper Making Recipes
  • 🛠 DEPRECATED: For the costs property: gp and sc -> currencies
Refinement Slot Costs
  • 🛠 DEPRECATED: gp and sc -> currencies
Random Travel Events
  • 🛠 DEPRECATED: For the rewards property: gp and sc -> currencies
Cooking
Cooking Recipes
  • 🛠 DEPRECATED: gpCost and scCost -> currencyCosts
Cooking Categories
  • 🛠❗ BREAKING: Now require a modifierName property, which is the name used for a category in modifier descriptions. An optional modifierNameLang property has also been added for lang string use. Automatic data migration adds a placeholder property value that you will need to manually set.
Crafting
Crafting Recipes
  • 🛠 DEPRECATED: gpCost and scCost -> currencyCosts
Farming
Farming Recipes
  • 🛠 BREAKING: grownNameLang property now uses a single lang string ID instead of the old category + id format
Farming Plots
  • 🛠 DEPRECATED: gpCost -> currencyCosts
Fishing
  • 🛠 BREAKING: specialItems are now defined on a per Realm basis, and now must be defined as an array of realm + drops
Fletching
Fletching Recipes
  • 🛠 DEPRECATED: gpCost and scCost -> currencyCosts
Mining
Mining Rocks
  • 🛠 DEPRECATED: type -> category
Action Event Matchers
  • 🛠 DEPRECATED: Mining Action Event Matchers oreTypes -> categories
Runecrafting
Runecrafting Recipes
  • 🛠 DEPRECATED: gpCost and scCost -> currencyCosts
Action Event Matchers
  • 🛠 DEPRECATED: subcategories -> subcategoryIDs
Herblore
Herblore Recipes
  • 🛠 DEPRECATED: gpCost and scCost -> currencyCosts
Slayer
  • 🛠 DEPRECATED: Slayer Task Requirements tier -> category
Smithing
Smithing Recipes
  • 🛠 DEPRECATED: gpCost and scCost -> currencyCosts
Summoning
Summoning Recipes
  • 🛠 DEPRECATED: gpCost and scCost -> currencyCosts
Thieving
Thieving NPCs
  • 🛠 DEPRECATED: maxGP -> currencyDrops
Township
Tasks
  • 🛠 BREAKING: Normal Tasks and Casual Tasks now have separate data formats
    • Normal Tasks now only support items, monsters, skillXP, numPOIs and numRefinements as goals
    • Casual Tasks now only support items, monsters, monsterWithItems and skillXP as goals
    • Normal Tasks category property now accepts the ID of a task category
    • Casual Tasks no longer have a category property
    • Normal Tasks no longer have a requirements property
    • The unused name property has been removed
    • The unused Tutorial task category has been removed
  • 🛠 DEPRECATED: rewards property for Township Casual/Normal tasks: gp and slayerCoins -> currencies
Woodcutting
Trees
  • 🛠 BREAKING: Removed the canDropRavenNest property in favour of the randomProducts property

Special Attacks

  • 🛠 BREAKING: The format for the prehitEffects and onhitEffects properties of Special Attacks no longer define combat effects, and instead reference registered combat effects and their configuration
  • 🛠 BREAKING: The consumesStacks property has been replaced with a new consumesEffect property
  • 🛠 BREAKING: The mechanism for performing a Normal Attack when a Special Attack's effects are active has been changed from being automatic based on the effects + damage to an optional canNormalAttack property