/tg/ Station 13 - Modules - Types — Define Details

code/__DEFINES/~aphelion_defines/graffiti.dm

GRAFFITI_MAX_LAYERSMost layers one graffiti piece holds.
GRAFFITI_MAX_LAYER_NAMELongest layer name, in characters.
GRAFFITI_MAX_NAMELongest piece name, in characters.
GRAFFITI_MAX_DESCRIPTIONLongest piece description, in characters.
GRAFFITI_WIDTHWidth of a piece that covers one tile.
GRAFFITI_WIDE_WIDTHWidth of a piece that covers two tiles side by side.
GRAFFITI_HEIGHTHeight of every piece.
GRAFFITI_MAX_COLORSMost colours one piece's palette may hold: as many as one grid character can index.
GRAFFITI_ALPHA_CEILINGThe most alpha placed graffiti is drawn with, 80%, so the surface shows through: a colour this opaque or more is stored opaque, and opaque paint is drawn at it.
GRAFFITI_LIBRARY_CAPMost pieces an account's library keeps, besides its Unfinished slot.
GRAFFITI_STACK_CAPMost pieces stacked on one tile. A full stack refuses new paint.
GRAFFITI_COSTSpraycan charges a finished piece costs, halved for taggers.
GRAFFITI_COMPOSITE_SHARE_BURSTHow many ms of composites may build up for a burst.
GRAFFITI_REVEAL_STRIPWidth of the column strip one paint job step reveals, in pixels.
GRAFFITI_MISS_LIMITRounds in a row a placement may miss its surface: the last of them drops it.
GRAFFITI_PIECE_MAX_BYTESSize limit of one exported or imported piece.
GRAFFITI_LIBRARY_WRITE_PACEA player's library write waits this many times as long as the account's last write took, and at least a second, so one account's writes take at most a twentieth of the server's time: 50 adversarial pieces take 139 ms to write on average and 209 ms at most (measured), 14-21% of the time at one write a second.
GRAFFITI_MAP_MAX_BYTESSize limit of a map's graffiti file.
GRAFFITI_MAP_DIRECTORYWhere each map's graffiti file lives.
GRAFFITI_SHEET_DIRECTORYWhere each map's sprite sheet files live, in a directory per map.
GRAFFITI_LIBRARY_DIRECTORYWhere each account's library file lives.
GRAFFITI_MAP_UNIQUE_CAPMost unique arts one map file keeps: 2,000 dense art records of 3,670 bytes take 7.3 MB, as measured, and a sparse one takes 680 bytes.
GRAFFITI_MAP_PLACEMENT_CAPMost placements one map file keeps: 4,000 placements packed as JSON strings take about 1.2 MB (measured on a full map), and their decals at 2,261 bytes each 9 MB at worst. With the arts (at most about 5.4 MB under GRAFFITI_MAP_ART_BYTES) and the GRAFFITI_ICON_CACHE caches (1.5 MB) that is about 17 MB at worst, besides the placement indexes (not measured), since sheet files keep every other icon at 0 bytes of server memory; a load adds GRAFFITI_DECODE_BUDGET while it runs.
GRAFFITI_MAP_ART_BYTESMost bytes of art one map keeps, counting each unique art's pal, grid and glow text: about 1,500 dense one-tile arts, or 400 translucent ones of 1,000 colours at 12-14 KB a tile, while typical art meets GRAFFITI_MAP_UNIQUE_CAP first. The owner's ruling (2026-10-20) halved it from 10 MiB, which takes the worst case at the caps from about 22.5 to 17 MB; 10 MiB of art and 4,000 placements wrote about 13.5 MB, so 5 MiB writes about 8 MB. Both new figures are worked out from the measured ones at 10 MiB.
GRAFFITI_DISPLAY_BUDGETMost unique arts shown in one round: everything within the map caps. Ranking still orders evictions and loading.
GRAFFITI_CKEY_PLACEMENT_CAPMost placements one account keeps on one map: a tenth of GRAFFITI_MAP_PLACEMENT_CAP.
GRAFFITI_FORMATThe format every piece file carries. A file with any other is refused.
GRAFFITI_FORMAT_VERSIONThe piece file version this server writes and accepts.
GRAFFITI_MAP_VERSIONThe map file version this server writes: anchors record their surface, and placements carry no name or description.
GRAFFITI_ANCHOR_STATIONAnchor kind of a placement on a fixed station tile.
GRAFFITI_ANCHOR_RESERVEDAnchor kind of a placement in reserved space, such as a condo.
GRAFFITI_KIND_WALLgraffiti_surface_kind() of a wall. Anchors keep the kind as their surface, and decals as their kind.
GRAFFITI_KIND_FLOORgraffiti_surface_kind() of a floor with ground.
GRAFFITI_KIND_WINDOWgraffiti_surface_kind() of a tile under a full-tile window fastened down, whose graffiti is on the glass.
GRAFFITI_ADMIN_PAGEPlacements per page of the admin panel.
GRAFFITI_GLOW_NONEgraffiti_art_glow_kind() of an art with no glowing paint.
GRAFFITI_GLOW_ALLgraffiti_art_glow_kind() of an art whose paint all glows.
GRAFFITI_GLOW_MIXEDgraffiti_art_glow_kind() of an art with both glowing and unlit paint.
GRAFFITI_INFO_CKEYA placement's ckey, in its SSgraffiti.placement_info entry.
GRAFFITI_INFO_ARTA placement's art hash, in its SSgraffiti.placement_info entry.
GRAFFITI_INFO_ATWhen a placement was placed, in its SSgraffiti.placement_info entry: ten-digit unix seconds in text.
GRAFFITI_INFO_PIDA placement's id, in its SSgraffiti.placement_info entry.
GRAFFITI_INFO_WHOA placement's painter's character name, in its SSgraffiti.placement_info entry.
GRAFFITI_INFO_ROUND_ONLYWhether a placement lasts this round only, in its SSgraffiti.placement_info entry.

Define Details

GRAFFITI_ADMIN_PAGE

Placements per page of the admin panel.

GRAFFITI_ALPHA_CEILING

The most alpha placed graffiti is drawn with, 80%, so the surface shows through: a colour this opaque or more is stored opaque, and opaque paint is drawn at it.

GRAFFITI_ANCHOR_RESERVED

Anchor kind of a placement in reserved space, such as a condo.

GRAFFITI_ANCHOR_STATION

Anchor kind of a placement on a fixed station tile.

GRAFFITI_CKEY_PLACEMENT_CAP

Most placements one account keeps on one map: a tenth of GRAFFITI_MAP_PLACEMENT_CAP.

GRAFFITI_COMPOSITE_SHARE_BURST

How many ms of composites may build up for a burst.

GRAFFITI_COST

Spraycan charges a finished piece costs, halved for taggers.

GRAFFITI_DISPLAY_BUDGET

Most unique arts shown in one round: everything within the map caps. Ranking still orders evictions and loading.

GRAFFITI_FORMAT

The format every piece file carries. A file with any other is refused.

GRAFFITI_FORMAT_VERSION

The piece file version this server writes and accepts.

GRAFFITI_GLOW_ALL

graffiti_art_glow_kind() of an art whose paint all glows.

GRAFFITI_GLOW_MIXED

graffiti_art_glow_kind() of an art with both glowing and unlit paint.

GRAFFITI_GLOW_NONE

graffiti_art_glow_kind() of an art with no glowing paint.

GRAFFITI_HEIGHT

Height of every piece.

GRAFFITI_INFO_ART

A placement's art hash, in its SSgraffiti.placement_info entry.

GRAFFITI_INFO_AT

When a placement was placed, in its SSgraffiti.placement_info entry: ten-digit unix seconds in text.

GRAFFITI_INFO_CKEY

A placement's ckey, in its SSgraffiti.placement_info entry.

GRAFFITI_INFO_PID

A placement's id, in its SSgraffiti.placement_info entry.

GRAFFITI_INFO_ROUND_ONLY

Whether a placement lasts this round only, in its SSgraffiti.placement_info entry.

GRAFFITI_INFO_WHO

A placement's painter's character name, in its SSgraffiti.placement_info entry.

GRAFFITI_KIND_FLOOR

graffiti_surface_kind() of a floor with ground.

GRAFFITI_KIND_WALL

graffiti_surface_kind() of a wall. Anchors keep the kind as their surface, and decals as their kind.

GRAFFITI_KIND_WINDOW

graffiti_surface_kind() of a tile under a full-tile window fastened down, whose graffiti is on the glass.

GRAFFITI_LIBRARY_CAP

Most pieces an account's library keeps, besides its Unfinished slot.

GRAFFITI_LIBRARY_DIRECTORY

Where each account's library file lives.

GRAFFITI_LIBRARY_WRITE_PACE

A player's library write waits this many times as long as the account's last write took, and at least a second, so one account's writes take at most a twentieth of the server's time: 50 adversarial pieces take 139 ms to write on average and 209 ms at most (measured), 14-21% of the time at one write a second.

GRAFFITI_MAP_ART_BYTES

Most bytes of art one map keeps, counting each unique art's pal, grid and glow text: about 1,500 dense one-tile arts, or 400 translucent ones of 1,000 colours at 12-14 KB a tile, while typical art meets GRAFFITI_MAP_UNIQUE_CAP first. The owner's ruling (2026-10-20) halved it from 10 MiB, which takes the worst case at the caps from about 22.5 to 17 MB; 10 MiB of art and 4,000 placements wrote about 13.5 MB, so 5 MiB writes about 8 MB. Both new figures are worked out from the measured ones at 10 MiB.

GRAFFITI_MAP_DIRECTORY

Where each map's graffiti file lives.

GRAFFITI_MAP_MAX_BYTES

Size limit of a map's graffiti file.

GRAFFITI_MAP_PLACEMENT_CAP

Most placements one map file keeps: 4,000 placements packed as JSON strings take about 1.2 MB (measured on a full map), and their decals at 2,261 bytes each 9 MB at worst. With the arts (at most about 5.4 MB under GRAFFITI_MAP_ART_BYTES) and the GRAFFITI_ICON_CACHE caches (1.5 MB) that is about 17 MB at worst, besides the placement indexes (not measured), since sheet files keep every other icon at 0 bytes of server memory; a load adds GRAFFITI_DECODE_BUDGET while it runs.

GRAFFITI_MAP_UNIQUE_CAP

Most unique arts one map file keeps: 2,000 dense art records of 3,670 bytes take 7.3 MB, as measured, and a sparse one takes 680 bytes.

GRAFFITI_MAP_VERSION

The map file version this server writes: anchors record their surface, and placements carry no name or description.

GRAFFITI_MAX_COLORS

Most colours one piece's palette may hold: as many as one grid character can index.

GRAFFITI_MAX_DESCRIPTION

Longest piece description, in characters.

GRAFFITI_MAX_LAYERS

Most layers one graffiti piece holds.

GRAFFITI_MAX_LAYER_NAME

Longest layer name, in characters.

GRAFFITI_MAX_NAME

Longest piece name, in characters.

GRAFFITI_MISS_LIMIT

Rounds in a row a placement may miss its surface: the last of them drops it.

GRAFFITI_PIECE_MAX_BYTES

Size limit of one exported or imported piece.

GRAFFITI_REVEAL_STRIP

Width of the column strip one paint job step reveals, in pixels.

GRAFFITI_SHEET_DIRECTORY

Where each map's sprite sheet files live, in a directory per map.

GRAFFITI_STACK_CAP

Most pieces stacked on one tile. A full stack refuses new paint.

GRAFFITI_WIDE_WIDTH

Width of a piece that covers two tiles side by side.

GRAFFITI_WIDTH

Width of a piece that covers one tile.