Custom match

From Scrolls Wiki
Jump to: navigation, search
The match setup interface

Custom Matches were introduced on June 9, 2015.[1] They are matches with modified rules. Custom matches can be played against other players similar to Challenges or against AI.


Set up custom matches

Custom match against another player

To initiate a multiplayer custom match, click someone's name in the lobby and choose "Custom Match". To enter an AI custom match, click the "Skirmish" button on the Arena screen and choose "Custom rules." In both cases (Multiplayer and AI), you are then presented with an interface that allows you to choose custom matches other players have created or set up your own using commands listed below.

List of Commands

Below you find a list of all existing commands.[2][3][4][5][6] Each command is separated by a semicolon, so make sure to include them!

Target can either be P1 or P2. P1 is the challenger, and P2 the receiver of the challenge. In case of AI matches, P1 is the human player and P2 the AI.


Sets who starts, either P1 or P2.
e.g. starts(P1); (challenger/human)
e.g. starts(P2); (challenged/AI)
Sets the difficulty of the AI opponent (easy, medium, hard or none). If set to none, the AI does not take any actions.
[Singleplayer only, mandatory]
Lets the user choose the AI difficulty of the challenge.
[Singleplayer only]
Takes amount Gold from both players at the start of the match, and awards it to the winner after the match.
[Multiplayer only]
Sets the description for this custom match. Remember that commas need to be escaped with \, or the description won't work.
mustComplete(authorName, customMatchName);
Lets you chain custom matches so that a previous one has to be completed to play this one.
[Singleplayer only]
nextGame(author, levelName);
Adds a 'Play next' button leading to another custom match, shown if you win.
Lets you hide your custom match from the public while working on it.
Sets the battlefield (background image) for the match. You can find their names in the Settings menu in-game or on the battlefield page.


Sets the duration of each turn (in seconds).
e.g. timer(30);
Removes the round timer (infinite time per turn).
[Multiplayer only]
When totalTime expires, the game is lost.
[Multiplayer only]
accumulationTimer(startTime, extraPerRound);
Each player has an accumulated time pool that increases when the turn ends. When a player runs out, the next player gets a turn.
[Multiplayer only]

Idol Health

idol(target, row, amount);
Sets the initial Health of an idol to amount.
e.g. idol(P1, 2, 20);
idols(target, amount);
Sets all idols on one side to start with amount Health.
e.g. idols(P1, 2);


resources(target, amount);
Sets the amount of starting resources (gets the full amount for each faction in the deck).
e.g. resources(P1, 3);
resources(playerSide, faction, amount);
Gives starting resources of a specific faction. Note: faction is either growth, order, decay, energy or special (Wild).
This unlocks Wild, so that you can freely sacrifice for Wild no matter how many other resources you have.


unit(target, name, row, column);
Creates a unit at row, column on target player’s side.
e.g. unit(P1, Bunny, 1, 2);
unit(target, name, row, column, ap, cd, hp);
Creates a unit at row, column on target player’s side and adds ap (Attack), cd (Countdown), hp (Health) to their base stats.
e.g. unit(P1, Bunny, 1, 2, 4, 1, 0);
boss(target, name, row, column, ap, hp, selectable);
Creates a boss unit at row, column with ap, hp added to their base stats. Selectable controls if they can be targeted by spells, enchantments and certain abilities (like Slayer);
e.g. boss(P1, Iron Ogre, 2, 1, 5, 4, true);

Spells and Enchantments

spell(target, name, everyRound);
Casts a spell every x rounds.
e.g. spell(P2, Horn of Ages, 4);
buffUnitCreated(target, enchantmentName);
Adds an enchantment to all units that spawn for target player.
e.g. buffUnitCreated(P2, Earthen Mirth);
buffUnit(playerSide, enchantmentName, row, column);
Buffs a specific unit at the start of the game.
playCard(playerSide, cardName, row, column, [optional playerCaster]);
Plays a scroll on target tile at the start of the game. Note: playerSide (P1/P2) defines which side it's cast on, and playerCaster who casts it. If playerCaster is undefined, the card is cast from the same side it's played on.


Multiple of the following commands for the same player (deck, chooseDeck, randomCards) are added together. For example, chooseDeck(P1) combined with deck(P1, 27) lets a player choose a deck, then shuffles in a Burn.

deck(playerSide, cardTypes...);
Example: deck(P1, 1, 19, 27) to give yourself a Gravelock Elder, a Metempsychosis and a Burn. Note: You can get the list of numbers from the 'export deck' dialog in the deck builder. You can also find the ID's for every scroll in the Scrolls Database.
Forces deck selection popup for one player.
randomCards(playerSide, amount);
Gives a player a number of random scrolls.

Win conditions

ecDestroyIdols(playerSide, numberOfIdols);
Match is won by player when numberOfIdols idols are destroyed.
Match is won by player when the opponent's side is cleared.
ecKillUnit(playerSide, row, column);
Match is won by player when the unit that started on a specific tile is destroyed.
Player wins the match if he survives until the specified round.

3rd party tools custom match tool has a Custom Match editor tool you can use to generate the code for your matches easily. You can then copy/paste the code into the game.

There is also a summoner mod made by NoHero that allows you to create custom matches with full easy to use UI. It can be found in his repository (