/// Does 4 spaces. Used as a makeshift tabulator. #define FOURSPACES "    " /// Standard maptext /// Prepares a text to be used for maptext. Use this so it doesn't look hideous. #define MAPTEXT(text) {"[##text]"} /** * Pixel-perfect scaled fonts for use in the MAP element as defined in skin.dmf * * Four sizes to choose from, use the sizes as mentioned below. * Between the variations and a step there should be an option that fits your use case. * BYOND uses pt sizing, different than px used in TGUI. Using px will make it look blurry due to poor antialiasing. * * Default sizes are prefilled in the macro for ease of use and a consistent visual look. * To use a step other than the default in the macro, specify it in a span style. * For example: MAPTEXT_PIXELLARI("Some large maptext here") */ /// Large size (ie: context tooltips) - Size options: 12pt 24pt. #define MAPTEXT_PIXELLARI(text) {"[##text]"} /// Standard size (ie: normal runechat) - Size options: 6pt 12pt 18pt. #define MAPTEXT_GRAND9K(text) {"[##text]"} #define MAPTEXT_SELAWIK(text) {"[##text]"} // BUBBER EDIT ADDITION /// Small size. (ie: context subtooltips, spell delays) - Size options: 12pt 24pt. #define MAPTEXT_TINY_UNICODE(text) {"[##text]"} /// Smallest size. (ie: whisper runechat) - Size options: 6pt 12pt 18pt. #define MAPTEXT_SPESSFONT(text) {"[##text]"} /** * Prepares a text to be used for maptext, using a variable size font. * * More flexible but doesn't scale pixel perfect to BYOND icon resolutions. * (May be blurry.) Can use any size in pt or px. * * You MUST Specify the size when using the macro * For example: MAPTEXT_VCR_OSD_MONO("Some large maptext here") */ /// Prepares a text to be used for maptext, using a variable size font. /// Variable size font. More flexible but doesn't scale pixel perfect to BYOND icon resolutions. (May be blurry.) Can use any size in pt or px. #define MAPTEXT_VCR_OSD_MONO(text) {"[##text]"} /// Macro from Lummox used to get height from a MeasureText proc. /// resolves the MeasureText() return value once, then resolves the height, then sets return_var to that. #define WXH_TO_HEIGHT(measurement, return_var) \ do { \ var/_measurement = measurement; \ return_var = text2num(copytext(_measurement, findtextEx(_measurement, "x") + 1)); \ } while(FALSE); /// Removes characters incompatible with file names. #define SANITIZE_FILENAME(text) (GLOB.filename_forbidden_chars.Replace(text, "")) /// Simply removes the < and > characters, and limits the length of the message. #define STRIP_HTML_SIMPLE(text, limit) (GLOB.angular_brackets.Replace(copytext(text, 1, limit), "")) /// Removes everything enclose in < and > inclusive of the bracket, and limits the length of the message. #define STRIP_HTML_FULL(text, limit) (GLOB.html_tags.Replace(copytext(text, 1, limit), "")) /** * stuff like `copytext(input, length(input))` will trim the last character of the input, * because DM does it so it copies until the char BEFORE the `end` arg, so we need to bump `end` by 1 in these cases. */ #define PREVENT_CHARACTER_TRIM_LOSS(integer) (integer + 1) /// BYOND's string procs don't support being used on datum references (as in it doesn't look for a name for stringification) /// We just use this macro to ensure that we will only pass strings to this BYOND-level function without developers needing to really worry about it. #define LOWER_TEXT(thing) lowertext(UNLINT("[thing]")) /// Folder directory for strings #define STRING_DIRECTORY "strings" // JSON text files found in the tgstation/strings folder /// File location for brain damage traumas #define BRAIN_DAMAGE_FILE "traumas.json" /// File location for AI ion laws #define ION_FILE "ion_laws.json" /// File location for pirate names #define PIRATE_NAMES_FILE "pirates.json" /// File location for redpill questions #define REDPILL_FILE "redpill.json" /// File location for arcade names #define ARCADE_FILE "arcade.json" /// File location for boomer meme catchphrases #define BOOMER_FILE "boomer.json" /// File location for locations on the station #define LOCATIONS_FILE "locations.json" /// File location for wanted posters messages #define WANTED_FILE "wanted_message.json" /// File location for really dumb suggestions memes #define VISTA_FILE "steve.json" /// File location for flesh wound descriptions #define FLESH_SCAR_FILE "wounds/flesh_scar_desc.json" /// File location for bone wound descriptions #define BONE_SCAR_FILE "wounds/bone_scar_desc.json" // SKYRAT EDIT ADDITION BEGIN - SYNTH WOUNDS /// File location for metalic wound descriptions #define METAL_SCAR_FILE "wounds/metal_scar_desc.json" // SKYRAT EDIT ADDITION END /// File location for scar wound descriptions #define SCAR_LOC_FILE "wounds/scar_loc.json" /// File location for exodrone descriptions #define EXODRONE_FILE "exodrone.json" /// File location for clown honk descriptions #define CLOWN_NONSENSE_FILE "clown_nonsense.json" /// File location for cult shuttle curse descriptions #define CULT_SHUTTLE_CURSE "cult_shuttle_curse.json" /// File location for eigenstasium lines #define EIGENSTASIUM_FILE "eigenstasium.json" /// File location for hallucination lines #define HALLUCINATION_FILE "hallucination.json" /// File location for ninja lines #define NINJA_FILE "ninja.json" /// File loation for title splashes #define SPLASH_FILE "splashes.json" ///File location for mother hallucination lines #define MOTHER_FILE "mother.json" #define ALPHABET list("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z") #define VOWELS list("a", "e", "i", "o", "u") #define CONSONANTS (ALPHABET - VOWELS)