In-game Functions: Difference between revisions
Silverfyree (talk | contribs) No edit summary |
(→Adjust Currencies (GP, AP, Slayer Coins, Abyssal Slayer Coins, and Raid Coins): Fixed incorrect abyssal currency acronyms) Tags: Mobile edit Mobile web edit |
||
(50 intermediate revisions by 8 users not shown) | |||
Line 1: | Line 1: | ||
{{ | {{UserContentVersion|1.3}} | ||
In-game functions are responsible for most things in the game. It is possible to interact directly with them through the console. This can be used to add items, levels, GP and more. These functions can be executed though the console. To access the console open Developer Tools (usually by pressing F12) in your browser and navigate to the console. Then, simply paste the code in the input field and press enter. Most functions will require you to fill out variables in the code before executing them. Note that all code is case sensitive. | In-game functions are responsible for most things in the game. It is possible to interact directly with them through the console. This can be used to add items, levels, GP and more. These functions can be executed though the console. To access the console open Developer Tools (usually by pressing F12) in your browser and navigate to the console. Then, simply paste the code in the input field and press enter. Most functions will require you to fill out variables in the code before executing them. Note that all code is case sensitive. | ||
'''Disclaimer:''' Blindly adding items and experience will most likely take away game enjoyment. It is highly encouraged only to use this to either test things or recoup lost items/progress due to lost saves. | '''Disclaimer:''' Blindly adding items and experience will most likely take away game enjoyment. It is highly encouraged only to use this to either test things or recoup lost items/progress due to lost saves. | ||
<div class="warningbox">You are playing around with the code of the game, as such if you make mistakes it is possible that could corrupt your game. It is highly recommended to '''BACKUP YOUR SAVE''' before running any in-game functions.</div> | |||
== | ==Using In-game Functions== | ||
The | Players can use the [https://mod.io/g/melvoridle/m/devconsole dev.Console mod] to execute these commands within the Steam, Epic, Android, and iOS versions of Melvor Idle. | ||
< | |||
On Web, Steam, and Epic, the console can be opened with F12. If using Steam or Epic, you must [[Mod_Creation/Enabling_DevTools_for_the_Steam_and_Epic_Clients|enable the dev console first]] before you are able to open it. | |||
== Add Item to Bank == | |||
The <code>addItemByID</code> function can be used to add any item in the game to the bank. | |||
<syntaxhighlight lang="js">game.bank.addItemByID(itemID, quantity, logLost, found, ignoreSpace, notify)</syntaxhighlight> | |||
=== Attributes === | === Attributes === | ||
Line 15: | Line 20: | ||
! Attribute !! Type !! Optional? !! Default Value !! Description | ! Attribute !! Type !! Optional? !! Default Value !! Description | ||
|- | |- | ||
| itemID || | | itemID || string || No || || The ID of the item. | ||
For a complete list of items, see: [[Table of Items]]. Item IDs are on their respective wiki page. | |||
Item IDs can also be searched through the console with the following command: <code>console.log(game.items.filter(x => x.name.toLowerCase().includes('SEARCHTERM'.toLowerCase())).map((a) => a.id + ' - ' + a.name).join('\n'))</code>. Replace <code>SEARCHTERM</code> with any part of the item's name. | |||
|- | |- | ||
| quantity || int || No || || Quantity of item to add. | | quantity || int || No || || Quantity of item to add. | ||
|- | |- | ||
| | | logLost || boolean || Yes || false || If <code>true</code>, items that did not fit into the bank will be logged as lost | ||
|- | |- | ||
| | | found || boolean || Yes || false || Determines if items added by this function will be included within the "Times Found" statistic for that item within the completion log. Therefore, unless this parameter is set to <code>true</code>, any items added in this way will not contribute towards the player's item completion percentage. | ||
<br/><br/>{{Disclaimer|'''Note:''' When adding {{ItemIcon|Bank Slot Token|Bank Slot Tokens}}, it is suggested that this parameter is set to <code>true</code>, otherwise this may cause issues with the way the game calculates the amount of bank space a player has.}} | |||
|- | |- | ||
| | | ignoreSpace || boolean || Yes || false || If <code>true</code>, the item will be added to the bank even if the bank is already full | ||
|- | |||
| notify || boolean || Yes || true || If <code>true</code>, there will be a notification that the item was added along with the quantity. | |||
|} | |} | ||
=== Examples === | === Examples === | ||
< | <syntaxhighlight lang="js">game.bank.addItemByID("melvorD:Oak_Logs", 10, true, true, false);</syntaxhighlight> | ||
The above code will result in 10 items | The above code will result in attempting to add 10 {{ItemIcon|Oak Logs}} to the Bank. If they do not fit, 10 will be added to the # of Oak Logs lost on the item's stats. Additionally, Oak Logs will be marked as discovered in the Completion Log. | ||
<syntaxhighlight lang="js">game.items.forEach((item) => game.bank.addItem(item, 1000000, false, true, true, false));</syntaxhighlight> | |||
The above code will add 1,000,000 of every item in the game. The items will be forced into the bank even if you do not have room and there will be no notifications upon adding the items. | |||
== Remove Item from Bank == | |||
The <code>removeItemQuantityByID</code> function can be used to remove any item from the bank | |||
<syntaxhighlight lang="js">game.bank.removeItemQuantityByID(itemID, quantity, removeItemCharges)</syntaxhighlight> | |||
Note that if an item's quantity is in an invalid state, such as <syntaxhighlight lang="js" inline>NaN</syntaxhighlight> or <syntaxhighlight lang="js" inline>Infinity</syntaxhighlight>, then this function will not be able to remove that item from the bank. For any such items, use the below snippet instead: | |||
{{SpoilerBox | |||
|color=default | |||
|title=Code | |||
|text=First, enter the below into the console: | |||
<syntaxhighlight lang="js">function removeItemByID(itemID) { | |||
const item = game.items.getObjectByID(itemID); | |||
if (item === undefined) | |||
throw new Error( | |||
`Error removing item from bank by id. Item with id: ${ itemID } is not registered.` | |||
); | |||
const bankItem = game.bank.items.get(item); | |||
if (bankItem === undefined) | |||
throw new Error( | |||
`Tried to remove quantity from bank, but item is not in bank.` | |||
); | |||
bankItem.quantity = 1; | |||
game.bank.removeItemQuantity(item, 1, true); | |||
}</syntaxhighlight> | |||
After this, invoke the newly-created function with the appropriate item ID to remove items from the bank. For example: <syntaxhighlight lang="js" inline>removeItemByID('melvorD:Oak_Logs');</syntaxhighlight> | |||
}} | |||
=== Attributes === | === Attributes === | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 38: | Line 75: | ||
! Attribute !! Type !! Optional? !! Default Value !! Description | ! Attribute !! Type !! Optional? !! Default Value !! Description | ||
|- | |- | ||
| | | itemID || string || No || || The ID of the item.<br />For a complete list of items and their IDs, see: [[Table of Items]] | ||
|- | |- | ||
| | | quantity || int || No || || The number of items to remove. | ||
|- | |- | ||
| | | removeItemCharges || boolean || Yes || true || If <code>true</code>, the count of glove charges will be set to 0 if the itemID is for a pair of gloves with charges. | ||
|} | |||
=== Examples === | |||
<syntaxhighlight lang="js">game.bank.removeItemQuantityByID('melvorD:Oak_Logs', 10);</syntaxhighlight> | |||
The above code will result in 10 {{ItemIcon|Oak Logs}} being removed from the bank. | |||
== Adjust Currencies (GP, AP, Slayer Coins, Abyssal Slayer Coins, and Raid Coins) == | |||
All [[Currency|Currencies]] within the game, being {{GP}} [[GP]], {{AP}} [[Abyssal Pieces]] (AP), {{SC}} [[Slayer Coins]] (SC), {{ASC}} [[Abyssal Slayer Coins]] (ASC), and {{RC}} [[Raid Coins]] (RC) can be adjusted using the same set of functions: | |||
* To adjust GP, use <syntaxhighlight lang="js" inline>game.gp</syntaxhighlight> | |||
* To adjust AP, use <syntaxhighlight lang="js" inline>game.abyssalPieces</syntaxhighlight> | |||
* To adjust SC, use <syntaxhighlight lang="js" inline>game.slayerCoins</syntaxhighlight> | |||
* To adjust ASC, use <syntaxhighlight lang="js" inline>game.abyssalSlayerCoins</syntaxhighlight> | |||
* To adjust RC, use <syntaxhighlight lang="js" inline>game.raidCoins</syntaxhighlight> | |||
=== Add Currency === | |||
The game.<currency>.add function can be used to add to the player's current balance of that currency. | |||
<syntaxhighlight lang="js">game.<currency>.add(amount)</syntaxhighlight> | |||
==== Attributes ==== | |||
{| class="wikitable" | |||
|- | |||
! Attribute !! Type !! Optional? !! Default Value !! Description | |||
|- | |||
| amount || int || No || || The amount to increase the specified currency's balance by | |||
|} | |||
==== Examples ==== | |||
<nowiki>game.gp.add(1);</nowiki> | |||
The above code will add 1 [[Currency#Gold Pieces|GP]] to the player. | |||
=== Remove Currency === | |||
The game.<currency>.remove function can be used to subtract from the player's current balance of that currency. If the amount specified is greater than the amount the player currently has, then the currency's balance will become negative. | |||
<syntaxhighlight lang="js">game.<currency>.remove(amount)</syntaxhighlight> | |||
==== Attributes ==== | |||
{| class="wikitable" | |||
|- | |||
! Attribute !! Type !! Optional? !! Default Value !! Description | |||
|- | |- | ||
| | | amount || int || No || || The quantity to decrease the specified currency's balance by | ||
|} | |||
==== Examples ==== | |||
<syntaxhighlight lang="js">game.abyssalSlayerCoins.remove(2);</syntaxhighlight> | |||
The above code will remove 2 [[Abyssal Slayer Coins]] from the player. | |||
=== Set Currency === | |||
The game.<currency>.set function can be used to set the player's balance of that currency to the specified amount. This function may be of particular use to players who have inadvertently found their GP or SC balance is set to an invalid value such as <code>NaN</code>. | |||
<syntaxhighlight lang="js">game.<currency>.set(amount)</syntaxhighlight> | |||
==== Attributes ==== | |||
{| class="wikitable" | |||
|- | |||
! Attribute !! Type !! Optional? !! Default Value !! Description | |||
|- | |||
| amount || int || No || || The amount to set the specified currency's balance to | |||
|} | |||
==== Examples ==== | |||
<syntaxhighlight lang="js">game.raidCoins.set(999);</syntaxhighlight> | |||
The above code will set the player's [[Raid Coins|Raid Coin]] balance to 999, regardless of what the previous balance of raid coins owned was. | |||
== Add or Remove Prayer Points or Soul Points == | |||
The <code>addPrayerPoints</code> and <code>addSoulPoints</code> functions can be used to add prayer points or soul points to a player. | |||
<syntaxhighlight lang="js"> | |||
game.combat.player.addPrayerPoints(amount); | |||
game.combat.player.addSoulPoints(amount); | |||
</syntaxhighlight> | |||
=== Attributes === | |||
{| class="wikitable" | |||
|- | |||
! Attribute !! Type !! Optional? !! Default Value !! Description | |||
|- | |||
| amount || int || No || || The quantity of prayer or soul points to add. A negative value will remove points. | |||
|} | |} | ||
=== Examples === | === Examples === | ||
< | <syntaxhighlight lang="js"> | ||
The | game.combat.player.addPrayerPoints(1); | ||
game.combat.player.addSoulPoints(-50); | |||
</syntaxhighlight> | |||
The first line will add 1 prayer point to the player while the second will remove 50 soul points. | |||
== | == Add or Remove XP or Abyssal XP == | ||
The | The <code>addXP</code> and <code>addAbyssalXP</code> functions can be used to add experience and abyssal experience to any skill. | ||
<syntaxhighlight lang="js"> | |||
game.<skill>.addXP(xp); | |||
game.<skill>.addAbyssalXP(xp); | |||
</syntaxhighlight> | |||
where <code><skill></code> is the lowercase name of the skill you are adding experience to. | |||
=== Attributes === | === Attributes === | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 58: | Line 174: | ||
! Attribute !! Type !! Optional? !! Default Value !! Description | ! Attribute !! Type !! Optional? !! Default Value !! Description | ||
|- | |- | ||
| | | xp || int || No || || Amount of experience to add. A negative value will remove experience. | ||
|} | |||
=== Examples === | |||
<syntaxhighlight lang="js"> | |||
game.thieving.addXP(1000); | |||
game.thieving.addAbyssalXP(-700); | |||
</syntaxhighlight> | |||
The first line will result in 1000 experience being added to {{Skill|Thieving}} while the second line will remove 700 abyssal xp from Thieving. | |||
== Add or Remove Mastery XP == | |||
The <code>addMasteryXP</code> function can be used to add experience to any specific {{Icon|Mastery}} in a skill. | |||
<syntaxhighlight lang="js">game.<skill>.addMasteryXP(masteryAction, xp)</syntaxhighlight> | |||
where <code><skill></code> is the lowercase name of the skill you are adding mastery experience to. | |||
=== Attributes === | |||
{| class="wikitable" | |||
|- | |- | ||
! Attribute !! Type !! Optional? !! Default Value !! Description | |||
|- | |- | ||
| | | masteryAction || object || No || || The action to add Mastery XP to. Obtained with <syntaxhighlight lang="js" inline>game.skill.actions.getObjectByID(id)</syntaxhighlight> where <code>skill</code> is to be replaced with the name of the skill (all lowercase), and <code>id</code> is the ID of the action. | ||
A list of action IDs can be obtained by entering the following into the console: <syntaxhighlight lang="js" inline>console.log(game.skill.actions.allObjects.map((a) => a.id + ' - ' + a.name).join('\n'))</syntaxhighlight>. | |||
|- | |- | ||
| | | xp || int || Yes || 0 || Amount of experience to add. A negative value will remove mastery xp. | ||
|} | |||
=== Examples === | |||
<syntaxhighlight lang="js"> | |||
game.farming.addMasteryXP(game.farming.actions.getObjectByID('melvorD:Carrot'), 300); | |||
game.farming.addMasteryXP(game.farming.actions.getObjectByID('melvorTotH:Starfruit'), -500); | |||
</syntaxhighlight> | |||
The first line will result in 300 {{Icon|Mastery}} XP being added to {{Skill|Farming}} for {{ItemIcon|Carrot Seeds}} whereas the second line will remove 500 Mastery XP from {{ItemIcon|Starfruit}}. | |||
<syntaxhighlight lang="js">game.masterySkills.forEach(skill => skill.actions.forEach(action => skill.addMasteryXP(action, 5000)));</syntaxhighlight> | |||
The above code will result in 5,000 {{Icon|Mastery}} XP being added to every action within every skill with a mastery action. | |||
== Add or Remove Mastery XP to Pool== | |||
The <code>addMasteryPoolXP</code> function can be used to add [[Mastery#The_Mastery_Pool|Mastery Pool]] experience to a skill | |||
<syntaxhighlight lang="js">game.<skill>.addMasteryPoolXP(realm, xp)</syntaxhighlight> | |||
where <code><skill></code> is the lowercase name of the skill you are adding mastery experience to. | |||
=== Attributes === | |||
{| class="wikitable" | |||
|- | |- | ||
! Attribute !! Type !! Optional? !! Default Value !! Description | |||
|- | |- | ||
| | | realm || object || No || || The realm to add the Mastery Pool XP to. Obtained with <code>game.realms.getObjectByID(realmID)</code>. | ||
A list of realm IDs can be obtained by entering the following into the console: <code>console.log(game.realms.allObjects.map((a) => a.id + ' - ' + a.name).join('\n'))</code>. | |||
|- | |- | ||
| | | xp || int || Yes || 0 || Amount of experience to add. A negative value will remove mastery pool xp. | ||
|} | |} | ||
=== Mastery | === Examples === | ||
<syntaxhighlight lang="js"> | |||
game.woodcutting.addMasteryPoolXP(game.realms.getObjectByID('melvorD:Melvor'), 600); | |||
game.woodcutting.addMasteryPoolXP(game.realms.getObjectByID('melvorItA:Abyssal'), -400); | |||
</syntaxhighlight> | |||
The first line will result in 600 [[Mastery#The_Mastery_Pool|Mastery Pool]] XP being added to {{Skill|Woodcutting}} in the Melvor Realm whereas the second line will remove 400 mastery pool xp from Woodcutting in the abyssal realm. | |||
<syntaxhighlight lang="js">game.realms.forEach(realm => game.masterySkills.forEach(skill => skill.addMasteryPoolXP(realm, 1000)));</syntaxhighlight> | |||
The above code will result in 1,000 [[Mastery#The_Mastery_Pool|Mastery Pool]] XP being added to all skills in every realm. | |||
== Unlock Pet == | |||
The <code>unlockPetByID</code> function is used to unlock [[Pets]]. | |||
<syntaxhighlight lang="js">game.petManager.unlockPetByID(petID)</syntaxhighlight> | |||
=== Attributes === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! | ! Attribute !! Type !! Optional? !! Default Value !! Description | ||
|- | |- | ||
| {{ | | petID || string || No || || The ID of the pet, which can be found on the individual pet pages (such as {{PetIcon|Ty}} for example) or by using the following command: <code>console.log(game.pets.allObjects.map((a) => a.id + ' - ' + a.name).join('\n'))</code> | ||
| | |} | ||
=== Examples === | |||
<syntaxhighlight lang="js"> | |||
game.petManager.unlockPetByID('melvorD:CoolRock'); | |||
game.petManager.unlocked.delete(game.pets.getObjectByID('melvorD:CoolRock'));game.petManager.computeProvidedStats(); | |||
</syntaxhighlight> | |||
The fire line will result in the unlocking of {{PetIcon|Cool Rock}} while the second line will remove the Cool Rock then reload the player's stats. | |||
<syntaxhighlight lang="js">game.pets.forEach(pet => game.petManager.unlockPet(pet));</syntaxhighlight> | |||
The above code will unlock every single pet. | |||
== Discover Mark == | |||
The <code>discoverMark</code> function is used to discover [[Summoning#Summoning Marks|Summoning Marks]]. | |||
<syntaxhighlight lang="js">game.summoning.discoverMark(mark)</syntaxhighlight> | |||
=== Attributes === | |||
{| class="wikitable" | |||
|- | |- | ||
! Attribute !! Type !! Optional? !! Default Value !! Description | |||
|- | |- | ||
| {{ | | mark || object || No || || The mark to discover. Obtained with <syntaxhighlight lang="js" inline>game.summoning.actions.getObjectByID(markID)</syntaxhighlight> where <code>markID</code> is the ID of the mark. | ||
A list of mark IDs can be obtained by entering the following into the console: <syntaxhighlight lang="js" inline>console.log(game.summoning.actions.allObjects.map((a) => a.id + ' - ' + a.name).join('\n'))</syntaxhighlight>. | |||
|} | |||
=== Examples === | |||
<syntaxhighlight lang="js"> | |||
game.summoning.discoverMark(game.summoning.actions.getObjectByID('melvorF:Dragon')); | |||
game.summoning.marksUnlocked.delete(game.summoning.actions.getObjectByID('melvorF:Dragon')); | |||
</syntaxhighlight> | |||
The first line discovers a single mark for the {{ItemIcon|Dragon}} familiar whereas the second line removes all marks from the Dragon. | |||
<syntaxhighlight lang="js"> | |||
game.summoning.actions.forEach((mark) => { | |||
game.summoning.marksUnlocked.set(mark, (mark.realm.id === 'melvorD:Melvor') ? 61 : 31); | |||
game.summoning.renderQueue.markCount.add(mark); | |||
game.summoning.renderQueue.markState.add(mark); | |||
}); | |||
</syntaxhighlight> | |||
The above code will set every single mark to level 61 if it's in the Melvor Realm and 31 if it's in the Abyssal Realm then update the mark count and mark states. | |||
== Locate Ancient Relic == | |||
The <code>locateAncientRelic</code> function is used to locate [[Ancient Relics#List_of_Ancient_Relics|Ancient Relics]]. | |||
<syntaxhighlight lang="js">game.<skill>.locateAncientRelic(relicSet, relic)</syntaxhighlight> | |||
where <code><skill></code> is the lowercase name of the skill you wish to add a relic to. | |||
=== Attributes === | |||
{| class="wikitable" | |||
|- | |- | ||
! Attribute !! Type !! Optional? !! Default Value !! Description | |||
|- | |- | ||
| | | relicSet || object || No || || The relicSet that the relic belongs to. Obtained with <syntaxhighlight lang="js" inline>game.<skill>.ancientRelicSets.get(realm)</syntaxhighlight> | ||
A list of realms IDs can be obtained by entering the following into the console: <syntaxhighlight lang="js" inline>console.log(game.realms.allObjects.map((a) => a.id + ' - ' + a.name).join('\n'))</syntaxhighlight>. To convert the realmID into a realm object, use <syntaxhighlight lang="js" inline>game.realms.getObjectByID('realmID')</syntaxhighlight>. | |||
|- | |- | ||
| {{ | | relic || object || No || || The relic that you wish to add. | ||
The relic can be obtained with <syntaxhighlight lang="js" inline><relicSet>.relicDrops.find(x => x.relic.id.toLowerCase().includes('relic<#>')).relic;</syntaxhighlight> where <code><#></code> is replaced with the relic number, starting from 1 and ending with 5. | |||
|} | |||
=== Examples === | |||
<syntaxhighlight lang="js"> | |||
let realm = game.realms.getObjectByID('melvorD:Melvor'); | |||
let relicSet = game.woodcutting.ancientRelicSets.get(realm); | |||
let relic = relicSet.relicDrops.find(x => x.relic.id.toLowerCase().includes('relic1')).relic; | |||
if (!relicSet.foundRelics.has(relic)) | |||
game.woodcutting.locateAncientRelic(relicSet, relic); | |||
</syntaxhighlight> | |||
The above code locates Woodcutting Relic 1 in the Melvor Realm. | |||
<syntaxhighlight lang="js"> | |||
game.skills.forEach(skill => { | |||
game.realms.forEach(realm => { | |||
let relicSet = skill.ancientRelicSets.get(realm); | |||
if (skill.hasAncientRelics && relicSet !== undefined) | |||
relicSet.relicDrops.forEach(({ relic }) => { | |||
if (!relicSet.foundRelics.has(relic)) | |||
skill.locateAncientRelic(relicSet, relic) | |||
}); | |||
}); | |||
}); | |||
</syntaxhighlight> | |||
The above will add all ancient relics to every skill, including modded skills, from all realms. | |||
== Reset all Equipment Quick Equip Items == | |||
The below script will reset the Equipment Quick Equip items back to an empty item. These are the Quick Equip items that are found when clicking on an equipment slot, not the ones found in the skilling minibar (that are set through the bank). | |||
=== Examples === | |||
<syntaxhighlight lang="js"> | |||
game.combat.player.equipment.equippedArray.forEach(equipped => { | |||
equipped.quickEquipItems = [game.emptyEquipmentItem, game.emptyEquipmentItem, game.emptyEquipmentItem]; | |||
equipped.trimQuickEquipItems(); | |||
}); | |||
</syntaxhighlight> | |||
The above code will reset all the quick equip items for the '''current''' equipment set. | |||
<syntaxhighlight lang="js"> | |||
game.combat.player.equipmentSets.forEach(({ equipment }) => { | |||
equipment.equippedArray.forEach(equipped => { | |||
equipped.quickEquipItems = [game.emptyEquipmentItem, game.emptyEquipmentItem, game.emptyEquipmentItem]; | |||
equipped.trimQuickEquipItems(); | |||
}); | |||
}); | |||
</syntaxhighlight> | |||
The above code will reset all the quick equip items for '''all''' equipment sets. | |||
== Dungeon Completions == | |||
The <code>addDungeonCompletion</code> and <code>setDungeonCompleteCount</code> functions are used to modify a dungeon's completion count. | |||
<syntaxhighlight lang="js"> | |||
game.combat.player.manager.addDungeonCompletion(dungeon); | |||
game.combat.player.manager.setDungeonCompleteCount(dungeon, amount); | |||
</syntaxhighlight> | |||
=== Attributes === | |||
{| class="wikitable" | |||
|- | |- | ||
! Attribute !! Type !! Optional? !! Default Value !! Description | |||
|- | |- | ||
| | | dungeon || object || No || || The dungeon you wish to add a completion to. Obtained with <syntaxhighlight lang="js" inline>game.dungeons.getObjectByID(dungeonID);</syntaxhighlight> where <code>dungeonID</code> is the ID of the dungeon. | ||
| | |||
| | A list of dungeon IDs can be obtained by entering the following into the console: <syntaxhighlight lang="js" inline>console.log(game.dungeons.allObjects.map((a) => a.id + ' - ' + a.name).join('\n'))</syntaxhighlight>. | ||
If an invalid dungeonID is entered, your game will be unable to be saved until the entry is either removed or the game is reloaded. You can remove the undefined entry with <code>game.combat.player.manager.dungeonCompletion.delete(undefined)</code> which should return <code>true</code> and the errors should stop appearing. | |||
|- | |- | ||
| | | amount || number || No || || The amount of dungeons clears you wish to add when using <code>setDungeonCompleteCount</code>. An amount is only required for setDungeonCompleteCount. | ||
|} | |} | ||
=== Examples === | === Examples === | ||
< | <syntaxhighlight lang="js"> | ||
The | game.combat.player.manager.addDungeonCompletion(game.dungeons.getObjectByID('melvorF:Into_the_Mist')); | ||
game.combat.player.manager.setDungeonCompleteCount(game.dungeons.getObjectByID('melvorItA:Into_The_Abyss'), 15); | |||
</syntaxhighlight> | |||
The first line will add a single completion to {{ZoneIcon|Into the Mist}} while the second line will set {{ZoneIcon|Into the Abyss}} completions to 15. | |||
After modifying the dungeon completion count, run <code>game.queueRequirementRenders();</code> to apply UI updates without having to restart the game. | |||
== Ancient Relics Level Caps == | |||
=== Increasing or Setting level caps === | |||
The <code>increaseLevelCap</code> and <code>setLevelCap</code> functions are used to modify the current level cap of a given skill in the {{AoD}} {{Icon|Ancient Relics}} [[gamemode]]. | |||
<syntaxhighlight lang="js"> | |||
game.<skill>.increaseLevelCap(value); | |||
game.<skill>.setLevelCap(value); | |||
game.<skill>.increaseAbyssalLevelCap(value); | |||
game.<skill>.setAbyssalLevelCap(value); | |||
</syntaxhighlight> | |||
==== Attributes ==== | |||
{| class="wikitable" | |||
|- | |||
! Attribute !! Type !! Optional? !! Default Value !! Description | |||
|- | |||
| value || int || No || || The value to increase the level cap by, or set the level cap to | |||
|} | |||
< | ==== Examples ==== | ||
The above code will | <syntaxhighlight lang="js"> | ||
game.slayer.increaseLevelCap(20); | |||
game.thieving.setAbyssalLevelCap(45); | |||
</syntaxhighlight> | |||
The first line will increase {{Skill|Slayer|Slayer's}} level cap by 20 levels whereas the second line will set {{AbyssalSkill|Thieving|Thieving's}} level cap to 45. | |||
<syntaxhighlight lang="js"> | |||
game.skills.forEach(skill => { | |||
skill.setLevelCap(skill.maxLevelCap); | |||
if (skill.hasAbyssalLevels) | |||
skill.setAbyssalLevelCap(skill.maxAbyssalLevelCap); | |||
}); | |||
</syntaxhighlight> | |||
The above code will set both the level caps and abyssal level caps of all skills to their maximum value. | |||
=== Awarding random level caps === | |||
The below script will award random level cap increases without increasing combat level caps. The only value that must be changed is the <code>capType</code> at the beginning of the script. 0 is a pre-Bane level cap increase, 2 is a TotH level cap increase, and 4 is an ItA level cap increase. | |||
<syntaxhighlight lang="js"> | |||
let capType = 0; // 0 = pre-Bane, 2 = TotH, 4 = ItA | |||
let capIncrease = game.currentGamemode.levelCapIncreases[capType]; | |||
game.validateRandomLevelCapIncreases(); | |||
if (capIncrease.randomIncreases.length > 0 && capIncrease.randomCount > 0) { | |||
if (capIncrease.randomIncreasesLeft === 0) | |||
game.levelCapIncreasesBeingSelected.push(capIncrease); | |||
capIncrease.randomIncreasesLeft += capIncrease.randomCount; | |||
game.renderQueue.sidebarSkillUnlock = true; | |||
game.queueNextRandomLevelCapModal(); | |||
} | |||
</syntaxhighlight> | |||
If you wish to also increase combat level caps then the following can be used. | |||
<syntaxhighlight lang="js"> | |||
let capType = 0; // 0 = pre-Bane, 2 = TotH, 4 = ItA | |||
let capIncrease = game.currentGamemode.levelCapIncreases[capType]; | |||
game.increaseSkillLevelCaps(capIncrease, capIncrease.requirementSets.get(0)); | |||
</syntaxhighlight> | |||
{{Menu}} |
Latest revision as of 22:07, 12 July 2024
In-game functions are responsible for most things in the game. It is possible to interact directly with them through the console. This can be used to add items, levels, GP and more. These functions can be executed though the console. To access the console open Developer Tools (usually by pressing F12) in your browser and navigate to the console. Then, simply paste the code in the input field and press enter. Most functions will require you to fill out variables in the code before executing them. Note that all code is case sensitive.
Disclaimer: Blindly adding items and experience will most likely take away game enjoyment. It is highly encouraged only to use this to either test things or recoup lost items/progress due to lost saves.
Using In-game Functions
Players can use the dev.Console mod to execute these commands within the Steam, Epic, Android, and iOS versions of Melvor Idle.
On Web, Steam, and Epic, the console can be opened with F12. If using Steam or Epic, you must enable the dev console first before you are able to open it.
Add Item to Bank
The addItemByID
function can be used to add any item in the game to the bank.
game.bank.addItemByID(itemID, quantity, logLost, found, ignoreSpace, notify)
Attributes
Attribute | Type | Optional? | Default Value | Description |
---|---|---|---|---|
itemID | string | No | The ID of the item.
For a complete list of items, see: Table of Items. Item IDs are on their respective wiki page. Item IDs can also be searched through the console with the following command: | |
quantity | int | No | Quantity of item to add. | |
logLost | boolean | Yes | false | If true , items that did not fit into the bank will be logged as lost
|
found | boolean | Yes | false | Determines if items added by this function will be included within the "Times Found" statistic for that item within the completion log. Therefore, unless this parameter is set to true , any items added in this way will not contribute towards the player's item completion percentage.
Note: When adding
![]() true , otherwise this may cause issues with the way the game calculates the amount of bank space a player has. |
ignoreSpace | boolean | Yes | false | If true , the item will be added to the bank even if the bank is already full
|
notify | boolean | Yes | true | If true , there will be a notification that the item was added along with the quantity.
|
Examples
game.bank.addItemByID("melvorD:Oak_Logs", 10, true, true, false);
The above code will result in attempting to add 10 Oak Logs to the Bank. If they do not fit, 10 will be added to the # of Oak Logs lost on the item's stats. Additionally, Oak Logs will be marked as discovered in the Completion Log.
game.items.forEach((item) => game.bank.addItem(item, 1000000, false, true, true, false));
The above code will add 1,000,000 of every item in the game. The items will be forced into the bank even if you do not have room and there will be no notifications upon adding the items.
Remove Item from Bank
The removeItemQuantityByID
function can be used to remove any item from the bank
game.bank.removeItemQuantityByID(itemID, quantity, removeItemCharges)
Note that if an item's quantity is in an invalid state, such as NaN
or Infinity
, then this function will not be able to remove that item from the bank. For any such items, use the below snippet instead:
Code |
---|
First, enter the below into the console:
function removeItemByID(itemID) {
const item = game.items.getObjectByID(itemID);
if (item === undefined)
throw new Error(
`Error removing item from bank by id. Item with id: ${ itemID } is not registered.`
);
const bankItem = game.bank.items.get(item);
if (bankItem === undefined)
throw new Error(
`Tried to remove quantity from bank, but item is not in bank.`
);
bankItem.quantity = 1;
game.bank.removeItemQuantity(item, 1, true);
}
After this, invoke the newly-created function with the appropriate item ID to remove items from the bank. For example: |
Attributes
Attribute | Type | Optional? | Default Value | Description |
---|---|---|---|---|
itemID | string | No | The ID of the item. For a complete list of items and their IDs, see: Table of Items | |
quantity | int | No | The number of items to remove. | |
removeItemCharges | boolean | Yes | true | If true , the count of glove charges will be set to 0 if the itemID is for a pair of gloves with charges.
|
Examples
game.bank.removeItemQuantityByID('melvorD:Oak_Logs', 10);
The above code will result in 10 Oak Logs being removed from the bank.
Adjust Currencies (GP, AP, Slayer Coins, Abyssal Slayer Coins, and Raid Coins)
All Currencies within the game, being GP,
Abyssal Pieces (AP),
Slayer Coins (SC),
Abyssal Slayer Coins (ASC), and
Raid Coins (RC) can be adjusted using the same set of functions:
- To adjust GP, use
game.gp
- To adjust AP, use
game.abyssalPieces
- To adjust SC, use
game.slayerCoins
- To adjust ASC, use
game.abyssalSlayerCoins
- To adjust RC, use
game.raidCoins
Add Currency
The game.<currency>.add function can be used to add to the player's current balance of that currency.
game.<currency>.add(amount)
Attributes
Attribute | Type | Optional? | Default Value | Description |
---|---|---|---|---|
amount | int | No | The amount to increase the specified currency's balance by |
Examples
game.gp.add(1);
The above code will add 1 GP to the player.
Remove Currency
The game.<currency>.remove function can be used to subtract from the player's current balance of that currency. If the amount specified is greater than the amount the player currently has, then the currency's balance will become negative.
game.<currency>.remove(amount)
Attributes
Attribute | Type | Optional? | Default Value | Description |
---|---|---|---|---|
amount | int | No | The quantity to decrease the specified currency's balance by |
Examples
game.abyssalSlayerCoins.remove(2);
The above code will remove 2 Abyssal Slayer Coins from the player.
Set Currency
The game.<currency>.set function can be used to set the player's balance of that currency to the specified amount. This function may be of particular use to players who have inadvertently found their GP or SC balance is set to an invalid value such as NaN
.
game.<currency>.set(amount)
Attributes
Attribute | Type | Optional? | Default Value | Description |
---|---|---|---|---|
amount | int | No | The amount to set the specified currency's balance to |
Examples
game.raidCoins.set(999);
The above code will set the player's Raid Coin balance to 999, regardless of what the previous balance of raid coins owned was.
Add or Remove Prayer Points or Soul Points
The addPrayerPoints
and addSoulPoints
functions can be used to add prayer points or soul points to a player.
game.combat.player.addPrayerPoints(amount);
game.combat.player.addSoulPoints(amount);
Attributes
Attribute | Type | Optional? | Default Value | Description |
---|---|---|---|---|
amount | int | No | The quantity of prayer or soul points to add. A negative value will remove points. |
Examples
game.combat.player.addPrayerPoints(1);
game.combat.player.addSoulPoints(-50);
The first line will add 1 prayer point to the player while the second will remove 50 soul points.
Add or Remove XP or Abyssal XP
The addXP
and addAbyssalXP
functions can be used to add experience and abyssal experience to any skill.
game.<skill>.addXP(xp);
game.<skill>.addAbyssalXP(xp);
where <skill>
is the lowercase name of the skill you are adding experience to.
Attributes
Attribute | Type | Optional? | Default Value | Description |
---|---|---|---|---|
xp | int | No | Amount of experience to add. A negative value will remove experience. |
Examples
game.thieving.addXP(1000);
game.thieving.addAbyssalXP(-700);
The first line will result in 1000 experience being added to Thieving while the second line will remove 700 abyssal xp from Thieving.
Add or Remove Mastery XP
The addMasteryXP
function can be used to add experience to any specific Mastery in a skill.
game.<skill>.addMasteryXP(masteryAction, xp)
where <skill>
is the lowercase name of the skill you are adding mastery experience to.
Attributes
Attribute | Type | Optional? | Default Value | Description |
---|---|---|---|---|
masteryAction | object | No | The action to add Mastery XP to. Obtained with game.skill.actions.getObjectByID(id) where skill is to be replaced with the name of the skill (all lowercase), and id is the ID of the action.
A list of action IDs can be obtained by entering the following into the console: | |
xp | int | Yes | 0 | Amount of experience to add. A negative value will remove mastery xp. |
Examples
game.farming.addMasteryXP(game.farming.actions.getObjectByID('melvorD:Carrot'), 300);
game.farming.addMasteryXP(game.farming.actions.getObjectByID('melvorTotH:Starfruit'), -500);
The first line will result in 300 Mastery XP being added to
Farming for
Carrot Seeds whereas the second line will remove 500 Mastery XP from
Starfruit.
game.masterySkills.forEach(skill => skill.actions.forEach(action => skill.addMasteryXP(action, 5000)));
The above code will result in 5,000 Mastery XP being added to every action within every skill with a mastery action.
Add or Remove Mastery XP to Pool
The addMasteryPoolXP
function can be used to add Mastery Pool experience to a skill
game.<skill>.addMasteryPoolXP(realm, xp)
where <skill>
is the lowercase name of the skill you are adding mastery experience to.
Attributes
Attribute | Type | Optional? | Default Value | Description |
---|---|---|---|---|
realm | object | No | The realm to add the Mastery Pool XP to. Obtained with game.realms.getObjectByID(realmID) .
A list of realm IDs can be obtained by entering the following into the console: | |
xp | int | Yes | 0 | Amount of experience to add. A negative value will remove mastery pool xp. |
Examples
game.woodcutting.addMasteryPoolXP(game.realms.getObjectByID('melvorD:Melvor'), 600);
game.woodcutting.addMasteryPoolXP(game.realms.getObjectByID('melvorItA:Abyssal'), -400);
The first line will result in 600 Mastery Pool XP being added to Woodcutting in the Melvor Realm whereas the second line will remove 400 mastery pool xp from Woodcutting in the abyssal realm.
game.realms.forEach(realm => game.masterySkills.forEach(skill => skill.addMasteryPoolXP(realm, 1000)));
The above code will result in 1,000 Mastery Pool XP being added to all skills in every realm.
Unlock Pet
The unlockPetByID
function is used to unlock Pets.
game.petManager.unlockPetByID(petID)
Attributes
Attribute | Type | Optional? | Default Value | Description |
---|---|---|---|---|
petID | string | No | The ID of the pet, which can be found on the individual pet pages (such as console.log(game.pets.allObjects.map((a) => a.id + ' - ' + a.name).join('\n'))
|
Examples
game.petManager.unlockPetByID('melvorD:CoolRock');
game.petManager.unlocked.delete(game.pets.getObjectByID('melvorD:CoolRock'));game.petManager.computeProvidedStats();
The fire line will result in the unlocking of Cool Rock while the second line will remove the Cool Rock then reload the player's stats.
game.pets.forEach(pet => game.petManager.unlockPet(pet));
The above code will unlock every single pet.
Discover Mark
The discoverMark
function is used to discover Summoning Marks.
game.summoning.discoverMark(mark)
Attributes
Attribute | Type | Optional? | Default Value | Description |
---|---|---|---|---|
mark | object | No | The mark to discover. Obtained with game.summoning.actions.getObjectByID(markID) where markID is the ID of the mark.
A list of mark IDs can be obtained by entering the following into the console: |
Examples
game.summoning.discoverMark(game.summoning.actions.getObjectByID('melvorF:Dragon'));
game.summoning.marksUnlocked.delete(game.summoning.actions.getObjectByID('melvorF:Dragon'));
The first line discovers a single mark for the Dragon familiar whereas the second line removes all marks from the Dragon.
game.summoning.actions.forEach((mark) => {
game.summoning.marksUnlocked.set(mark, (mark.realm.id === 'melvorD:Melvor') ? 61 : 31);
game.summoning.renderQueue.markCount.add(mark);
game.summoning.renderQueue.markState.add(mark);
});
The above code will set every single mark to level 61 if it's in the Melvor Realm and 31 if it's in the Abyssal Realm then update the mark count and mark states.
Locate Ancient Relic
The locateAncientRelic
function is used to locate Ancient Relics.
game.<skill>.locateAncientRelic(relicSet, relic)
where <skill>
is the lowercase name of the skill you wish to add a relic to.
Attributes
Attribute | Type | Optional? | Default Value | Description |
---|---|---|---|---|
relicSet | object | No | The relicSet that the relic belongs to. Obtained with game.<skill>.ancientRelicSets.get(realm)
A list of realms IDs can be obtained by entering the following into the console: | |
relic | object | No | The relic that you wish to add.
The relic can be obtained with |
Examples
let realm = game.realms.getObjectByID('melvorD:Melvor');
let relicSet = game.woodcutting.ancientRelicSets.get(realm);
let relic = relicSet.relicDrops.find(x => x.relic.id.toLowerCase().includes('relic1')).relic;
if (!relicSet.foundRelics.has(relic))
game.woodcutting.locateAncientRelic(relicSet, relic);
The above code locates Woodcutting Relic 1 in the Melvor Realm.
game.skills.forEach(skill => {
game.realms.forEach(realm => {
let relicSet = skill.ancientRelicSets.get(realm);
if (skill.hasAncientRelics && relicSet !== undefined)
relicSet.relicDrops.forEach(({ relic }) => {
if (!relicSet.foundRelics.has(relic))
skill.locateAncientRelic(relicSet, relic)
});
});
});
The above will add all ancient relics to every skill, including modded skills, from all realms.
Reset all Equipment Quick Equip Items
The below script will reset the Equipment Quick Equip items back to an empty item. These are the Quick Equip items that are found when clicking on an equipment slot, not the ones found in the skilling minibar (that are set through the bank).
Examples
game.combat.player.equipment.equippedArray.forEach(equipped => {
equipped.quickEquipItems = [game.emptyEquipmentItem, game.emptyEquipmentItem, game.emptyEquipmentItem];
equipped.trimQuickEquipItems();
});
The above code will reset all the quick equip items for the current equipment set.
game.combat.player.equipmentSets.forEach(({ equipment }) => {
equipment.equippedArray.forEach(equipped => {
equipped.quickEquipItems = [game.emptyEquipmentItem, game.emptyEquipmentItem, game.emptyEquipmentItem];
equipped.trimQuickEquipItems();
});
});
The above code will reset all the quick equip items for all equipment sets.
Dungeon Completions
The addDungeonCompletion
and setDungeonCompleteCount
functions are used to modify a dungeon's completion count.
game.combat.player.manager.addDungeonCompletion(dungeon);
game.combat.player.manager.setDungeonCompleteCount(dungeon, amount);
Attributes
Attribute | Type | Optional? | Default Value | Description |
---|---|---|---|---|
dungeon | object | No | The dungeon you wish to add a completion to. Obtained with game.dungeons.getObjectByID(dungeonID); where dungeonID is the ID of the dungeon.
A list of dungeon IDs can be obtained by entering the following into the console: If an invalid dungeonID is entered, your game will be unable to be saved until the entry is either removed or the game is reloaded. You can remove the undefined entry with | |
amount | number | No | The amount of dungeons clears you wish to add when using setDungeonCompleteCount . An amount is only required for setDungeonCompleteCount.
|
Examples
game.combat.player.manager.addDungeonCompletion(game.dungeons.getObjectByID('melvorF:Into_the_Mist'));
game.combat.player.manager.setDungeonCompleteCount(game.dungeons.getObjectByID('melvorItA:Into_The_Abyss'), 15);
After modifying the dungeon completion count, run game.queueRequirementRenders();
to apply UI updates without having to restart the game.
Ancient Relics Level Caps
Increasing or Setting level caps
The increaseLevelCap
and setLevelCap
functions are used to modify the current level cap of a given skill in the
Ancient Relics gamemode.
game.<skill>.increaseLevelCap(value);
game.<skill>.setLevelCap(value);
game.<skill>.increaseAbyssalLevelCap(value);
game.<skill>.setAbyssalLevelCap(value);
Attributes
Attribute | Type | Optional? | Default Value | Description |
---|---|---|---|---|
value | int | No | The value to increase the level cap by, or set the level cap to |
Examples
game.slayer.increaseLevelCap(20);
game.thieving.setAbyssalLevelCap(45);
The first line will increase Slayer's level cap by 20 levels whereas the second line will set Thieving level cap to 45.
game.skills.forEach(skill => {
skill.setLevelCap(skill.maxLevelCap);
if (skill.hasAbyssalLevels)
skill.setAbyssalLevelCap(skill.maxAbyssalLevelCap);
});
The above code will set both the level caps and abyssal level caps of all skills to their maximum value.
Awarding random level caps
The below script will award random level cap increases without increasing combat level caps. The only value that must be changed is the capType
at the beginning of the script. 0 is a pre-Bane level cap increase, 2 is a TotH level cap increase, and 4 is an ItA level cap increase.
let capType = 0; // 0 = pre-Bane, 2 = TotH, 4 = ItA
let capIncrease = game.currentGamemode.levelCapIncreases[capType];
game.validateRandomLevelCapIncreases();
if (capIncrease.randomIncreases.length > 0 && capIncrease.randomCount > 0) {
if (capIncrease.randomIncreasesLeft === 0)
game.levelCapIncreasesBeingSelected.push(capIncrease);
capIncrease.randomIncreasesLeft += capIncrease.randomCount;
game.renderQueue.sidebarSkillUnlock = true;
game.queueNextRandomLevelCapModal();
}
If you wish to also increase combat level caps then the following can be used.
let capType = 0; // 0 = pre-Bane, 2 = TotH, 4 = ItA
let capIncrease = game.currentGamemode.levelCapIncreases[capType];
game.increaseSkillLevelCaps(capIncrease, capIncrease.requirementSets.get(0));
Melvor Idle version v1.3 (Released: 13th June 2024) | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||
Skills:
| ||||||||||||||||||||
Other:
| ||||||||||||||||||||
Reference Tables: Items, Equipment, Experience Table, Upgrading Items, Combat Areas, Slayer Areas, Dungeons, Strongholds, The Abyss, Monsters |