💾 Archived View for dio9sys.fun › writeups › dialog › reminders › index.gmi captured on 2024-07-08 at 23:06:40. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2023-05-24)

-=-=-=-=-=-=-

Home

Quick reminders and hints for writing in Dialog

Dialog home

Objects, Rooms, Items

It's way way easier to define something by first writing #thing and then adding the traits below it with (trait *)

If you want to set up a custom trait for something (like a cateogry or region), assign it with (trait *) and then

invoke it where needed with (action (trait $))

If you want to add everything with a certain trait to a category, use * before the trait. Example:

(room *(trait $))

Rooms

When you want to have multiple rooms, you need to specify exits in both rooms to each other to not make one-way doors!

(from * go #direction to #room) needs to be in both rooms to connect to each other

You can use (look *) to add a room description but, by default, when you look in the direction of another room it will

just show the name of that room. You have to be IN the room to see the full description

By default, when you have not entered a room yet it will not have a room name for the player

Doors

(door *) is how you say that something is a door.

When you want to have a door between rooms, go into the exit lines for both rooms and add "through #door to #room" to the

end instead of just "to #room"

Doors are, by default, not able to be opened. Set the door to be openable by adding (openable *) to your door

Lockable doors are locked by default and openable by default. If you have a locked door you can specify it with

(lockable *) without needing any further lines to describe it as locked or physically capable of opening.

Lockable doors need a key that is then described with (* unlocks #door) in the item description

Newlines

By default, Dialog aggregates multiple line breaks and paragraph breaks into one. This is meant to avoid formatting

mistakes by the author. However, sometimes it's desirable to have multiple newlines for things such as setting multiple

lines between game text and game over screen. You can't just do (line) (line) as that turns into one line break, and

you can't do (space) by itself between lines as (space) with no arguments waits for text to appear on the screen to add

a space to it. If you try to throw in some random spaces in between (line) and (line) then it simply will not work due

to the whitespace collector.

However, if you do something like (space 5) in between breaks, it will insert that number of spaces into the new line

before setting a new one.

So, for example, you can add the following to add a little extra padding between game and game over:

(par)

(space 5)

(par)

(space 5)

(game over {YOU WIN})