Skip to content

Feature: Custom Placement

thezerothcat edited this page Dec 16, 2021 · 13 revisions

By creating a file called custom-placement.txt in the folder where you run the randomizer jar, you can specify some item placement details for the randomizer.

For easier usage, a template file has been created with everything placed in its original location and then disabled. The file should have additional comments for clarification if needed.

Placing Items

Map (Surface)=Pepper

Origin Seal=reader.exe

Putting these lines in the file will cause the randomizer to place Pepper as the item you receive for scanning the Map-giving skeleton on the Surface, and will cause you to receive the Glyph Reader from the Origin Seal chest.

Shop 7 (Graveyard) Item 1=Weights

Shop 12 Alt (Spring) Item 3=Pistol Ammo

Shop inventories can also be determined. You'll need to indicate the name of the shop and which slot (numbered left to right). Use the name of the subweapon followed by " Ammo" if you want a shop to sell a specific type of subweapon ammo.

Shop 7 (Graveyard) Item 1=Weights {20}

Shop 12 Alt (Spring) Item 3=Pistol Ammo {1, 400}

It's also possible to declare the amount and price for a shop item. If only one number is specified, it will be the price, and the count will be the default for that item (5 for Weights, 2 for Chakram Ammo, 1 clip for Pistol Ammo, 10 for other subweapon ammo, and 1 for anything else).

Keep in mind that Pistol Ammo is specified in clips, not bullets.

Location/Item Names

The randomizer should provide an error message if you use an invalid item or location name. The names used by the randomizer can be found in the following files:

Trap items are not listed in a file, but there are only 4 of them:

  • Trap: Graveyard
  • Trap: Inferno Orb
  • Trap: Twin Ankh
  • Trap: Exploding

Items appearing in a shop cannot be used as a location; instead, you should use the shop inventory name for items appearing in this file:

Shop names can be found here:

The shop names are, unfortunately, not very friendly; the shops in Temple of the Sun are particularly ambiguous. Shop 8 is the one tied to the Aim and Shoot puzzle, Shop 9 is the one at the bottom of the area which has no requirements for access, and Shop 10 is the one which requires the Death Seal.

A future update may eventually provide an alternate naming scheme for shops, but at this time, using the existing names is the only option.

NPC doors

NPC: Modro=Philosopher Fobos

The randomizer allows specifying which NPCs (conversation or shop) can be found at a door. The above example would put Fobos inside Modro's tent on the Surface.

NPC names match what gets recorded by TextTrax software.

Determining Starting Items

Weapon: Axe

This determines which starting weapon will be used for the seed. Subweapons can be used if enabled, and Chain Whip and Flail Whip are also valid options, even though you can't get them randomly.

Start: move.exe

This gives the declared item immediately at the start of the game, as if you'd selected "Given at start" for the item on the "Things to randomize" tab. Any item is valid here, even if it doesn't appear on the randomizer normally.

Determining Starting Location

Location: Gate of Time (Surface)

This determines the starting location for those using a random starting location. Not all locations are supported at this time. It's expected to use the name of the area (Inferno Cavern, Gate of Illusion, etc.) or in some cases a shortened form (such as Illusion).

Removing Items

!Sacred Orb (Gate of Guidance)

will ensure that the Sacred Orb normally found in Gate of Guidance is treated as a removed item.

Removed items cannot be given by NPCs or torude.exe scans, so if you declare an item removed, make sure to place it in a chest, as a floating item, or in a shop. If you prefer not to keep track of that, feel free to let the randomizer decide on the location for you.

Cursing chests

Curse Coin: Guidance (Trap)

will turn the coin chest below the trapdoor in Gate of Guidance into a cursed chest.

Although the game normally only contains 4 cursed chests, custom placements ignore this count. Instead all chests declared cursed in the file will be cursed, and no additional random cursed chests will be added.

Trap item graphics

Shuriken=Trap: Inferno Orb {Feather}

If you want your trap item to look like a specific item, you may declare it surrounded by {}. In this example, the fake Sacred Orb from Inferno Cavern is placed at the location of the Shuriken and given the appearance of the Feather. When touched, it will turn into bats.

The behavior of trap item chests is a bit different when trap items are placed in this manner. The exploding chest remains the same and will simply explode when the chest is opened, but the other three trap items, rather than immediately spawning bats when opened, will spawn a fake item when opened which turns into bats when touched.

Special instructions

Alternate Mother Ankh

This introduces an extra Ankh Jewel into the shuffle (shops will have one more item than usual). Mother's ankh will be changed to require an Ankh Jewel instead of the usual empowered Key Sword.

Skip Mantras

This automatically recites mantras for you, so your Key Sword is powered up as soon as you receive it.

Fill Vessel Yellow

With this included, you will receive the yellow Medicine of the Mind in place of the Vessel. You can do the same with Green or Red medicine (which forces talking to Fobos in Dimensional Corridor to reset).

Setting Interactions

Many invalid combinations of item placements and user settings will trigger an error message, but the randomizer will not catch everything for you. If you attempt to create a custom seed and it takes an unusually long time to resolve, there may be a problem with your placement logic.

Custom Requirements

If the randomizer's logic is too strict for your liking, you can add your own logic by creating a file called custom-reqs.txt in the folder where you run the randomizer jar. The file format matches that of other requirements files. Existing logic will not be replaced, but you could provide alternate logic, such as glitches not recognized by the randomizer, or override a more generous requirement, such as allowing a boss to be fought with fewer Sacred Orbs.

If the randomizer's logic is not strict enough for your liking, you can add your own logic to custom-reqs.txt and additionally include a line in custom-placement.txt to remove the randomizer's provide logic.

Remove Logic: Event: Tiamat Defeated

The above would remove all logic for defeating Tiamat, allowing you to provide your own. Note that if you do this but do not provide any alternative logic of your own, the randomizer will be unable to determine a valid seed.