diff --git a/code/__DEFINES/MC.dm b/code/__DEFINES/MC.dm index 128d32fa9c0..47fd93d3594 100644 --- a/code/__DEFINES/MC.dm +++ b/code/__DEFINES/MC.dm @@ -22,6 +22,9 @@ #define START_PROCESSING(Processor, Datum) if (!(Datum.datum_flags & DF_ISPROCESSING)) {Datum.datum_flags |= DF_ISPROCESSING;Processor.processing += Datum} #define STOP_PROCESSING(Processor, Datum) Datum.datum_flags &= ~DF_ISPROCESSING;Processor.processing -= Datum;Processor.currentrun -= Datum +/// Used to trigger object removal from a processing list +#define PROCESS_KILL 26 + //! SubSystem flags (Please design any new flags so that the default is off, to make adding flags to subsystems easier) /// subsystem does not initialize. diff --git a/code/__DEFINES/_click.dm b/code/__DEFINES/_click.dm index 6dff5a063e9..453707355b0 100644 --- a/code/__DEFINES/_click.dm +++ b/code/__DEFINES/_click.dm @@ -1,7 +1,6 @@ //Defines file for byond click related parameters //this is mostly for ease of use and for finding all the things that use say RIGHT_CLICK rather then just searching "right" - //Mouse buttons pressed/held/released #define RIGHT_CLICK "right" #define MIDDLE_CLICK "middle" @@ -32,3 +31,11 @@ //Pixel coordinates in screen_loc format ("[tile_x]:[pixel_x],[tile_y]:[pixel_y]") #define SCREEN_LOC "screen-loc" + +//https://secure.byond.com/docs/ref/info.html#/atom/var/mouse_opacity +/// Objects will ignore being clicked on regardless of their transparency (used in parallax, lighting effects, holograms, lasers, etc.) +#define MOUSE_OPACITY_TRANSPARENT 0 +/// Objects will be clicked on if it is the topmost object and the pixel isn't transparent at the position of the mouse (default behavior for 99.99% of game objects) +#define MOUSE_OPACITY_ICON 1 +/// Objects will be always be clicked on regardless of pixel transparency or other objects at that location (used in space vines, megafauna, storage containers) +#define MOUSE_OPACITY_OPAQUE 2 diff --git a/code/__DEFINES/_helpers.dm b/code/__DEFINES/_helpers.dm index bcea96cc598..574c4da8dc7 100644 --- a/code/__DEFINES/_helpers.dm +++ b/code/__DEFINES/_helpers.dm @@ -10,3 +10,6 @@ /// Stringifies whatever you put into it. #define STRINGIFY(argument) #argument + +/// subtypesof(), typesof() without the parent path +#define subtypesof(typepath) ( typesof(typepath) - typepath ) diff --git a/code/__DEFINES/achievements.dm b/code/__DEFINES/achievements.dm index b1251b2ee26..bef191f217e 100644 --- a/code/__DEFINES/achievements.dm +++ b/code/__DEFINES/achievements.dm @@ -1,5 +1,8 @@ // Keep the identifiers here below 32 characters, you can put the full display name in the actual achievement datum +/// Achievements icon set +#define ACHIEVEMENTS_SET 'icons/ui_icons/achievements/achievements.dmi' + #define ACHIEVEMENT_DEFAULT "default" #define ACHIEVEMENT_SCORE "score" diff --git a/code/__DEFINES/blood.dm b/code/__DEFINES/blood.dm new file mode 100644 index 00000000000..b3b8c0d1f3d --- /dev/null +++ b/code/__DEFINES/blood.dm @@ -0,0 +1,24 @@ +/// Checks if an object is covered in blood +#define HAS_BLOOD_DNA(thing) (length(thing.GetComponent(/datum/component/forensics)?.blood_DNA)) + +//Bloody shoes/footprints +/// Minimum alpha of footprints +#define BLOODY_FOOTPRINT_BASE_ALPHA 20 +/// How much blood a regular blood splatter contains +#define BLOOD_AMOUNT_PER_DECAL 50 +/// How much blood an item can have stuck on it +#define BLOOD_ITEM_MAX 200 +/// How much blood a blood decal can contain +#define BLOOD_POOL_MAX 300 +/// How much blood a footprint need to at least contain +#define BLOOD_FOOTPRINTS_MIN 5 + +//Bloody shoe blood states +/// Red blood +#define BLOOD_STATE_HUMAN "blood" +/// Green xeno blood +#define BLOOD_STATE_XENO "xeno" +/// Black robot oil +#define BLOOD_STATE_OIL "oil" +/// No blood is present +#define BLOOD_STATE_NOT_BLOODY "no blood whatsoever" diff --git a/code/__DEFINES/botany.dm b/code/__DEFINES/botany.dm index f1e7e04e3fc..17c819cdd0e 100644 --- a/code/__DEFINES/botany.dm +++ b/code/__DEFINES/botany.dm @@ -75,3 +75,6 @@ #define HYDROTRAY_PLANT_DEAD "dead" #define HYDROTRAY_PLANT_GROWING "growing" #define HYDROTRAY_PLANT_HARVESTABLE "harvestable" + +/// A list of possible egg laying descriptions +#define EGG_LAYING_MESSAGES list("lays an egg.","squats down and croons.","begins making a huge racket.","begins clucking raucously.") diff --git a/code/__DEFINES/chat.dm b/code/__DEFINES/chat.dm index c96598ae729..78a3c993b2c 100644 --- a/code/__DEFINES/chat.dm +++ b/code/__DEFINES/chat.dm @@ -18,3 +18,19 @@ #define MESSAGE_TYPE_ADMINLOG "adminlog" #define MESSAGE_TYPE_ATTACKLOG "attacklog" #define MESSAGE_TYPE_DEBUG "debug" + +//debug printing macros (for development and testing) +/// Used for debug messages to the world +#define debug_world(msg) if (GLOB.Debug2) to_chat(world, \ + type = MESSAGE_TYPE_DEBUG, \ + text = "DEBUG: [msg]") +/// Used for debug messages to the player +#define debug_usr(msg) if (GLOB.Debug2&&usr) to_chat(usr, \ + type = MESSAGE_TYPE_DEBUG, \ + text = "DEBUG: [msg]") +/// Used for debug messages to the admins +#define debug_admins(msg) if (GLOB.Debug2) to_chat(GLOB.admins, \ + type = MESSAGE_TYPE_DEBUG, \ + text = "DEBUG: [msg]") +/// Used for debug messages to the server +#define debug_world_log(msg) if (GLOB.Debug2) log_world("DEBUG: [msg]") diff --git a/code/__DEFINES/clothing.dm b/code/__DEFINES/clothing.dm new file mode 100644 index 00000000000..be3e4ec9a4d --- /dev/null +++ b/code/__DEFINES/clothing.dm @@ -0,0 +1,27 @@ +//stages of shoe tying-ness +/// Shoes are untied +#define SHOES_UNTIED 0 +/// Shoes are tied normally +#define SHOES_TIED 1 +/// Shoes have been tied in knots +#define SHOES_KNOTTED 2 + +//suit sensors: sensor_mode defines +/// Suit sensor is turned off +#define SENSOR_OFF 0 +/// Suit sensor displays the mob as alive or dead +#define SENSOR_LIVING 1 +/// Suit sensor displays the mob damage values +#define SENSOR_VITALS 2 +/// Suit sensor displays the mob damage values and exact location +#define SENSOR_COORDS 3 + +//suit sensors: has_sensor defines +/// Suit sensor has been EMP'd and cannot display any information (can be fixed) +#define BROKEN_SENSORS -1 +/// Suit sensor is not present and cannot display any information +#define NO_SENSORS 0 +/// Suit sensor is present and can display information +#define HAS_SENSORS 1 +/// Suit sensor is present and is forced to display information (used on prisoner jumpsuits) +#define LOCKED_SENSORS 2 diff --git a/code/__DEFINES/colors.dm b/code/__DEFINES/colors.dm index 423416ff4e7..7d7325e6007 100644 --- a/code/__DEFINES/colors.dm +++ b/code/__DEFINES/colors.dm @@ -1,5 +1,17 @@ // This is eventually for wjohn to add more color standardization stuff like I keep asking him >:( +//different types of atom colorations +/// Only used by rare effects like greentext coloring mobs and when admins varedit color +#define ADMIN_COLOUR_PRIORITY 1 +/// e.g. purple effect of the revenant on a mob, black effect when mob electrocuted +#define TEMPORARY_COLOUR_PRIORITY 2 +/// Color splashed onto an atom (e.g. paint on turf) +#define WASHABLE_COLOUR_PRIORITY 3 +/// Color inherent to the atom (e.g. blob color) +#define FIXED_COLOUR_PRIORITY 4 +///how many colour priority levels there are. +#define COLOUR_PRIORITY_AMOUNT 4 + #define COLOR_INPUT_DISABLED "#F0F0F0" #define COLOR_INPUT_ENABLED "#D3B5B5" @@ -201,3 +213,9 @@ #define DEFAULT_ASAY_COLOR COLOR_MOSTLY_PURE_RED #define DEFAULT_HEX_COLOR_LEN 6 + +// Color filters +/// Icon filter that creates ambient occlusion +#define AMBIENT_OCCLUSION filter(type="drop_shadow", x=0, y=-2, size=4, color="#04080FAA") +/// Icon filter that creates gaussian blur +#define GAUSSIAN_BLUR(filter_size) filter(type="blur", size=filter_size) diff --git a/code/__DEFINES/communications.dm b/code/__DEFINES/communications.dm index c8403bade30..9d4a0345ee4 100644 --- a/code/__DEFINES/communications.dm +++ b/code/__DEFINES/communications.dm @@ -1,2 +1,14 @@ /// The time an admin has to cancel a cross-sector message #define CROSS_SECTOR_CANCEL_TIME (10 SECONDS) + +/* SKYRAT EDIT REMOVAL +//Security levels affect the escape shuttle timer +/// Security level is green. (no threats) +#define SEC_LEVEL_GREEN 0 +/// Security level is blue. (caution advised) +#define SEC_LEVEL_BLUE 1 +/// Security level is red. (hostile threats) +#define SEC_LEVEL_RED 2 +/// Security level is delta. (station destruction immiment) +#define SEC_LEVEL_DELTA 3 +*/ //SKYRAT EDIT END diff --git a/code/__DEFINES/configuration.dm b/code/__DEFINES/configuration.dm index 3fbc6d098f3..2b294db208d 100644 --- a/code/__DEFINES/configuration.dm +++ b/code/__DEFINES/configuration.dm @@ -1,3 +1,7 @@ +// TODO these two should be config options +#define PR_ANNOUNCEMENTS_PER_ROUND 5 //The number of unique PR announcements allowed per round +#define STATION_GOAL_BUDGET 1 + //config files #define CONFIG_GET(X) global.config.Get(/datum/config_entry/##X) #define CONFIG_SET(X, Y) global.config.Set(/datum/config_entry/##X, ##Y) @@ -9,3 +13,6 @@ #define CONFIG_ENTRY_LOCKED 1 /// can't see value #define CONFIG_ENTRY_HIDDEN 2 + +/// Force the config directory to be something other than "config" +#define OVERRIDE_CONFIG_DIRECTORY_PARAMETER "config-directory" diff --git a/code/__DEFINES/directional.dm b/code/__DEFINES/directional.dm index 953228ed422..bfde544b447 100644 --- a/code/__DEFINES/directional.dm +++ b/code/__DEFINES/directional.dm @@ -1,3 +1,21 @@ +// Byond direction defines, because I want to put them somewhere. +// #define NORTH 1 +// #define SOUTH 2 +// #define EAST 4 +// #define WEST 8 + +/// North direction as a string "[1]" +#define TEXT_NORTH "[NORTH]" +/// South direction as a string "[2]" +#define TEXT_SOUTH "[SOUTH]" +/// East direction as a string "[4]" +#define TEXT_EAST "[EAST]" +/// West direction as a string "[8]" +#define TEXT_WEST "[WEST]" + +/// Inverse direction, taking into account UP|DOWN if necessary. +#define REVERSE_DIR(dir) ( ((dir & 85) << 1) | ((dir & 170) >> 1) ) + /// Create directional subtypes for a path to simplify mapping. #define MAPPING_DIRECTIONAL_HELPERS(path, offset) ##path/directional/north {\ dir = NORTH; \ diff --git a/code/__DEFINES/explosions.dm b/code/__DEFINES/explosions.dm index f8ecf51267c..cd30f89f1b0 100644 --- a/code/__DEFINES/explosions.dm +++ b/code/__DEFINES/explosions.dm @@ -8,6 +8,19 @@ /// The default explosion severity used to mark that an object is beyond the impact range of the explosion. #define EXPLODE_NONE 0 +//gibtonite state defines +/// Gibtonite has not been mined +#define GIBTONITE_UNSTRUCK 0 +/// Gibtonite has been mined and will explode soon +#define GIBTONITE_ACTIVE 1 +/// Gibtonite has been stablized preventing an explosion +#define GIBTONITE_STABLE 2 +/// Gibtonite will now explode +#define GIBTONITE_DETONATE 3 + +/// For object explosion block calculation +#define EXPLOSION_BLOCK_PROC -1 + /// A wrapper for [/atom/proc/ex_act] to ensure that the explosion propagation and attendant signal are always handled. #define EX_ACT(target, args...)\ if(!(target.flags_1 & PREVENT_CONTENTS_EXPLOSION_1)) { \ diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index 9ab5584cd67..18d182a3cb9 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -256,3 +256,14 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 /// 33554431 (2^24 - 1) is the maximum value our bitflags can reach. #define MAX_BITFLAG_DIGITS 8 +// timed_action_flags parameter for `/proc/do_after_mob`, `/proc/do_mob` and `/proc/do_after` +/// Can do the action even if mob moves location +#define IGNORE_USER_LOC_CHANGE (1<<0) +/// Can do the action even if the target moves location +#define IGNORE_TARGET_LOC_CHANGE (1<<1) +/// Can do the action even if the item is no longer being held +#define IGNORE_HELD_ITEM (1<<2) +/// Can do the action even if the mob is incapacitated (ex. handcuffed) +#define IGNORE_INCAPACITATED (1<<3) +/// Used to prevent important slowdowns from being abused by drugs like kronkaine +#define IGNORE_SLOWDOWNS (1<<4) diff --git a/code/__DEFINES/fonts.dm b/code/__DEFINES/fonts.dm new file mode 100644 index 00000000000..9c823992d20 --- /dev/null +++ b/code/__DEFINES/fonts.dm @@ -0,0 +1,24 @@ +//FONTS: Used by Paper, PhotoCopier, PDA's Notekeeper, NewsCaster, NewsPaper, ModularComputers (and PaperBin once a year). +/// Font used by regular pens +#define PEN_FONT "Verdana" +/// Font used by fancy pens +#define FOUNTAIN_PEN_FONT "Segoe Script" +/// Font used by crayons +#define CRAYON_FONT "Comic Sans MS" +/// Font used by printers +#define PRINTER_FONT "Times New Roman" +/// Font used when a player signs their name +#define SIGNFONT "Times New Roman" +/// Font used by charcoal pens +#define CHARCOAL_FONT "Candara" + +//pda fonts +#define MONO "Monospaced" +#define VT "VT323" +#define ORBITRON "Orbitron" +#define SHARE "Share Tech Mono" + +GLOBAL_LIST_INIT(pda_styles, sort_list(list(MONO, VT, ORBITRON, SHARE))) + +/// Emoji icon set +#define EMOJI_SET 'icons/emoji.dmi' diff --git a/code/__DEFINES/forensics.dm b/code/__DEFINES/forensics.dm deleted file mode 100644 index 8d0647cb1ed..00000000000 --- a/code/__DEFINES/forensics.dm +++ /dev/null @@ -1 +0,0 @@ -#define HAS_BLOOD_DNA(thing) (length(thing.GetComponent(/datum/component/forensics)?.blood_DNA)) diff --git a/code/__DEFINES/fov.dm b/code/__DEFINES/fov.dm index 1a10b84be91..164dd1ead99 100644 --- a/code/__DEFINES/fov.dm +++ b/code/__DEFINES/fov.dm @@ -9,3 +9,9 @@ /// Range at which FOV effects treat nearsightness as blind and play #define NEARSIGHTNESS_FOV_BLINDNESS 2 + +//Fullscreen overlay resolution in tiles for the clients view. +/// The fullscreen overlay in tiles for x axis +#define FULLSCREEN_OVERLAY_RESOLUTION_X 15 +/// The fullscreen overlay in tiles for y axis +#define FULLSCREEN_OVERLAY_RESOLUTION_Y 15 diff --git a/code/__DEFINES/ghost.dm b/code/__DEFINES/ghost.dm new file mode 100644 index 00000000000..84b6cdc7e33 --- /dev/null +++ b/code/__DEFINES/ghost.dm @@ -0,0 +1,58 @@ +//Ghost orbit types: +/// Ghosts will orbit objects in a circle +#define GHOST_ORBIT_CIRCLE "circle" +/// Ghosts will orbit objects in a triangle +#define GHOST_ORBIT_TRIANGLE "triangle" +/// Ghosts will orbit objects in a hexagon +#define GHOST_ORBIT_HEXAGON "hexagon" +/// Ghosts will orbit objects in a square +#define GHOST_ORBIT_SQUARE "square" +/// Ghosts will orbit objects in a pentagon +#define GHOST_ORBIT_PENTAGON "pentagon" + +//Ghost showing preferences: +/// The main player's ghost will display as a simple white ghost +#define GHOST_ACCS_NONE "Default sprites" +/// The main player's ghost will display as a transparent mob +#define GHOST_ACCS_DIR "Only directional sprites" +/// The main player's ghost will display as a transparent mob with clothing +#define GHOST_ACCS_FULL "Full accessories" + +/// The default ghost display selection for the main player +#define GHOST_ACCS_DEFAULT_OPTION GHOST_ACCS_FULL + +/// The other players ghosts will display as a simple white ghost +#define GHOST_OTHERS_SIMPLE "White ghosts" +/// The other players ghosts will display as transparent mobs +#define GHOST_OTHERS_DEFAULT_SPRITE "Default sprites" +/// The other players ghosts will display as transparent mobs with clothing +#define GHOST_OTHERS_THEIR_SETTING "Their sprites" + +/// The default ghost display selection when viewing other players +#define GHOST_OTHERS_DEFAULT_OPTION GHOST_OTHERS_THEIR_SETTING + +/// A ghosts max view range if they are a BYOND guest or regular account +#define GHOST_MAX_VIEW_RANGE_DEFAULT 10 +/// A ghosts max view range if they are a BYOND paid member account (P2W feature) +#define GHOST_MAX_VIEW_RANGE_MEMBER 14 + +// DEADCHAT MESSAGE TYPES // +/// Deadchat notification for important round events (RED_ALERT, shuttle EVAC, communication announcements, etc.) +#define DEADCHAT_ANNOUNCEMENT "announcement" +/// Deadchat notification for new players who join the round at arrivals +#define DEADCHAT_ARRIVALRATTLE "arrivalrattle" +/// Deadchat notification for players who die during the round +#define DEADCHAT_DEATHRATTLE "deathrattle" +/// Deadchat notification for when there is an AI law change +#define DEADCHAT_LAWCHANGE "lawchange" +/// Deadchat notification for when players enter/leave the server (ignores stealth admins) +#define DEADCHAT_LOGIN_LOGOUT "loginlogout" +/// Deadchat regular ghost chat +#define DEADCHAT_REGULAR "regular-deadchat" + +/// Pictures taken by a camera will not display ghosts +#define CAMERA_NO_GHOSTS 0 +/// Pictures taken by a camera will display ghosts in the photo +#define CAMERA_SEE_GHOSTS_BASIC 1 +/// Pictures taken by a camera will display ghosts and their orbits +#define CAMERA_SEE_GHOSTS_ORBIT 2 // this doesn't do anything right now as of Jan 2022 diff --git a/code/__DEFINES/gravity.dm b/code/__DEFINES/gravity.dm new file mode 100644 index 00000000000..14927d555fc --- /dev/null +++ b/code/__DEFINES/gravity.dm @@ -0,0 +1,40 @@ +//singularity defines +/// Singularity is stage 1 (1x1) +#define STAGE_ONE 1 +/// Singularity is stage 2 (3x3) +#define STAGE_TWO 3 +/// Singularity is stage 3 (5x5) +#define STAGE_THREE 5 +/// Singularity is stage 4 (7x7) +#define STAGE_FOUR 7 +/// Singularity is stage 5 (9x9) +#define STAGE_FIVE 9 +/// Singularity is stage 6 (11x11) +#define STAGE_SIX 11 //From supermatter shard + +///range of values where you suffer from negative gravity +#define NEGATIVE_GRAVITY_RANGE -INFINITY to NEGATIVE_GRAVITY +///range of values where you have no gravity +#define WEIGHTLESS_RANGE NEGATIVE_GRAVITY + 0.01 to 0 +///range of values where you have normal gravity +#define STANDRARD_GRAVITY_RANGE 0.01 to STANDARD_GRAVITY +///range of values where you have heavy gravity +#define HIGH_GRAVITY_RANGE STANDARD_GRAVITY + 0.01 to GRAVITY_DAMAGE_THRESHOLD - 0.01 +///range of values where you suffer from crushing gravity +#define CRUSHING_GRAVITY_RANGE GRAVITY_DAMAGE_THRESHOLD to INFINITY + +/** + * The point where gravity is negative enough to pull you upwards. + * That means walking checks for a ceiling instead of a floor, and you can fall "upwards" + * + * This should only be possible on multi-z maps because it works like shit on maps that aren't. + */ +#define NEGATIVE_GRAVITY -1 + +#define STANDARD_GRAVITY 1 //Anything above this is high gravity, anything below no grav until negative gravity +/// The gravity strength threshold for high gravity damage. +#define GRAVITY_DAMAGE_THRESHOLD 3 +/// The scaling factor for high gravity damage. +#define GRAVITY_DAMAGE_SCALING 0.5 +/// The maximum [BRUTE] damage a mob can take from high gravity per second. +#define GRAVITY_DAMAGE_MAXIMUM 1.5 diff --git a/code/__DEFINES/hud.dm b/code/__DEFINES/hud.dm index b000467850f..60b7c308be4 100644 --- a/code/__DEFINES/hud.dm +++ b/code/__DEFINES/hud.dm @@ -8,3 +8,9 @@ /// Used in show_hud(); Please ensure this is the same as the maximum index. #define HUD_VERSIONS 3 + +// Consider these images/atoms as part of the UI/HUD (apart of the appearance_flags) +/// Used for progress bars and chat messages +#define APPEARANCE_UI_IGNORE_ALPHA (RESET_COLOR|RESET_TRANSFORM|NO_CLIENT_COLOR|RESET_ALPHA|PIXEL_SCALE) +/// Used for HUD objects +#define APPEARANCE_UI (RESET_COLOR|RESET_TRANSFORM|NO_CLIENT_COLOR|PIXEL_SCALE) diff --git a/code/__DEFINES/magic.dm b/code/__DEFINES/magic.dm index 7ae14913f02..9d9885686f6 100644 --- a/code/__DEFINES/magic.dm +++ b/code/__DEFINES/magic.dm @@ -27,3 +27,8 @@ #define INVOCATION_EMOTE "emote" ///Forces the wizard to whisper (and be able to) to cast the spell. #define INVOCATION_WHISPER "whisper" + +///Spawns random guns near players and gives some players antag objectives +#define SUMMON_GUNS "guns" +///Spawns random wands and spellbooks near players and gives some players antag objectives +#define SUMMON_MAGIC "magic" diff --git a/code/__DEFINES/maps.dm b/code/__DEFINES/maps.dm index dc0b1df3a50..992c689e225 100644 --- a/code/__DEFINES/maps.dm +++ b/code/__DEFINES/maps.dm @@ -26,6 +26,22 @@ require only minor tweaks. #define SPACERUIN_MAP_EDGE_PAD 15 +/// Distance from edge to move to another z-level +#define TRANSITIONEDGE 7 + +// Maploader bounds indices +/// The maploader index for the maps minimum x +#define MAP_MINX 1 +/// The maploader index for the maps minimum y +#define MAP_MINY 2 +/// The maploader index for the maps minimum z +#define MAP_MINZ 3 +/// The maploader index for the maps maximum x +#define MAP_MAXX 4 +/// The maploader index for the maps maximum y +#define MAP_MAXY 5 +/// The maploader index for the maps maximum z +#define MAP_MAXZ 6 /// Path for the next_map.json file, if someone, for some messed up reason, wants to change it. #define PATH_TO_NEXT_MAP_JSON "data/next_map.json" @@ -138,7 +154,6 @@ require only minor tweaks. #define PLACE_BELOW "below" //On z levl below - centered on same tile #define PLACE_ISOLATED "isolated" //On isolated ruin z level - ///Map generation defines #define PERLIN_LAYER_HEIGHT "perlin_height" #define PERLIN_LAYER_HUMIDITY "perlin_humidity" @@ -153,3 +168,15 @@ require only minor tweaks. #define BIOME_LOWMEDIUM_HUMIDITY "lowmedium_humidity" #define BIOME_HIGHMEDIUM_HUMIDITY "highmedium_humidity" #define BIOME_HIGH_HUMIDITY "high_humidity" + +// Bluespace shelter deploy checks for survival capsules +/// Shelter spot is allowed +#define SHELTER_DEPLOY_ALLOWED "allowed" +/// Shelter spot has turfs that restrict deployment +#define SHELTER_DEPLOY_BAD_TURFS "bad turfs" +/// Shelter spot has areas that restrict deployment +#define SHELTER_DEPLOY_BAD_AREA "bad area" +/// Shelter spot has anchored objects that restrict deployment +#define SHELTER_DEPLOY_ANCHORED_OBJECTS "anchored objects" +/// Shelter spot is out of bounds from the maps x/y coordinates +#define SHELTER_DEPLOY_OUTSIDE_MAP "outside map" diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm deleted file mode 100644 index 40591f3ebb4..00000000000 --- a/code/__DEFINES/misc.dm +++ /dev/null @@ -1,546 +0,0 @@ -// Byond direction defines, because I want to put them somewhere. -// #define NORTH 1 -// #define SOUTH 2 -// #define EAST 4 -// #define WEST 8 - -#define TEXT_NORTH "[NORTH]" -#define TEXT_SOUTH "[SOUTH]" -#define TEXT_EAST "[EAST]" -#define TEXT_WEST "[WEST]" - -/// Inverse direction, taking into account UP|DOWN if necessary. -#define REVERSE_DIR(dir) ( ((dir & 85) << 1) | ((dir & 170) >> 1) ) - -//Human Overlays Indexes///////// -#define MUTATIONS_LAYER 36 //mutations. Tk headglows, cold resistance glow, etc -#define BODY_BEHIND_LAYER 35 //certain mutantrace features (tail when looking south) that must appear behind the body parts -#define BODYPARTS_LAYER 34 //Initially "AUGMENTS", this was repurposed to be a catch-all bodyparts flag -#define BODY_ADJ_LAYER 33 //certain mutantrace features (snout, body markings) that must appear above the body parts -#define BODY_LAYER 32 //underwear, undershirts, socks, eyes, lips(makeup) -#define FRONT_MUTATIONS_LAYER 31 //mutations that should appear above body, body_adj and bodyparts layer (e.g. laser eyes) -#define DAMAGE_LAYER 30 //damage indicators (cuts and burns) -#define UNIFORM_LAYER 29 -//SKYRAT EDIT ADDITION BEGIN - ERP UPDATE -#define ANUS_LAYER 28 -#define VAGINA_LAYER 27 -#define PENIS_LAYER 26 -#define NIPPLES_LAYER 25 -//SKYRAT EDIT ADDITION END -#define BANDAGE_LAYER 24 //Overlays related to wounds, bandages and splints too //SKYRAT EDIT ADDITION - MEDICAL -#define ID_LAYER 23 -#define ID_CARD_LAYER 22 -#define HANDS_PART_LAYER 21 -#define GLOVES_LAYER 20 -#define SHOES_LAYER 19 -#define EARS_LAYER 18 -#define SUIT_LAYER 17 -#define GLASSES_LAYER 16 -#define BELT_LAYER 15 //Possible make this an overlay of somethign required to wear a belt? -#define SUIT_STORE_LAYER 14 -#define NECK_LAYER 13 -#define BACK_LAYER 12 -#define HAIR_LAYER 11 //TODO: make part of head layer? -#define FACEMASK_LAYER 10 -#define HEAD_LAYER 9 -#define HANDCUFF_LAYER 8 -#define LEGCUFF_LAYER 7 -#define HANDS_LAYER 6 -#define BODY_FRONT_LAYER 5 // Usually used for mutant bodyparts that need to be in front of stuff (e.g. cat ears) -#define ABOVE_BODY_FRONT_GLASSES_LAYER 4 // For the special glasses that actually require to be above the hair (e.g. lifted welding goggles) -#define ABOVE_BODY_FRONT_HEAD_LAYER 3 // For the rare cases where something on the head needs to be above everything else (e.g. flowers) -#define HALO_LAYER 2 //blood cult ascended halo, because there's currently no better solution for adding/removing -#define FIRE_LAYER 1 //If you're on fire -#define TOTAL_LAYERS MUTATIONS_LAYER //KEEP THIS UP-TO-DATE OR SHIT WILL BREAK ;_; SKYRAT EDIT - Made it the final define so it updates on its own. - -//Bitflags for the layers an external organ can draw on -#define EXTERNAL_FRONT (1 << 1) -#define EXTERNAL_ADJACENT (1 << 2) -#define EXTERNAL_BEHIND (1 << 3) -#define ALL_EXTERNAL_OVERLAYS EXTERNAL_FRONT | EXTERNAL_ADJACENT | EXTERNAL_BEHIND - - -//Human Overlay Index Shortcuts for alternate_worn_layer, layers -//Because I *KNOW* somebody will think layer+1 means "above" -//IT DOESN'T OK, IT MEANS "UNDER" -#define UNDER_SUIT_LAYER (SUIT_LAYER+1) -#define UNDER_HEAD_LAYER (HEAD_LAYER+1) - -//AND -1 MEANS "ABOVE", OK?, OK!?! -#define ABOVE_SHOES_LAYER (SHOES_LAYER-1) -#define ABOVE_BODY_FRONT_LAYER (BODY_FRONT_LAYER-1) - - -//SKYRAT EDIT REMOVAL BEGIN - ALERTS (moved to modular defines) -/* -//Security levels -#define SEC_LEVEL_GREEN 0 -#define SEC_LEVEL_BLUE 1 -#define SEC_LEVEL_RED 2 -#define SEC_LEVEL_DELTA 3 -*/ -//SKYRAT EDIT END -//some arbitrary defines to be used by self-pruning global lists. (see master_controller) -#define PROCESS_KILL 26 //Used to trigger removal from a processing list - -// Cargo-related stuff. -#define MANIFEST_ERROR_CHANCE 5 -#define MANIFEST_ERROR_NAME 1 -#define MANIFEST_ERROR_CONTENTS 2 -#define MANIFEST_ERROR_ITEM 4 - -#define TRANSITIONEDGE 7 //Distance from edge to move to another z-level - -//used by canUseTopic() -#define BE_CLOSE TRUE //in the case of a silicon, to select if they need to be next to the atom -#define NO_DEXTERITY TRUE //if other mobs (monkeys, aliens, etc) can use this // I had to change 20+ files because some non-dnd-playing fuckchumbis can't spell "dexterity" -#define NO_TK TRUE // if you can't use it from a distance with telekinesis -#define FLOOR_OKAY TRUE // if you can use it while resting - -//singularity defines -#define STAGE_ONE 1 -#define STAGE_TWO 3 -#define STAGE_THREE 5 -#define STAGE_FOUR 7 -#define STAGE_FIVE 9 -#define STAGE_SIX 11 //From supermatter shard - -//SSticker.current_state values -#define GAME_STATE_STARTUP 0 -#define GAME_STATE_PREGAME 1 -#define GAME_STATE_SETTING_UP 2 -#define GAME_STATE_PLAYING 3 -#define GAME_STATE_FINISHED 4 - -//FONTS: -// Used by Paper and PhotoCopier (and PaperBin once a year). -// Used by PDA's Notekeeper. -// Used by NewsCaster and NewsPaper. -// Used by Modular Computers -#define PEN_FONT "Verdana" -#define FOUNTAIN_PEN_FONT "Segoe Script" -#define CRAYON_FONT "Comic Sans MS" -#define PRINTER_FONT "Times New Roman" -#define SIGNFONT "Times New Roman" -#define CHARCOAL_FONT "Candara" - -#define RESIZE_DEFAULT_SIZE 1 - -//transfer_ai() defines. Main proc in ai_core.dm -#define AI_TRANS_TO_CARD 1 //Downloading AI to InteliCard. -#define AI_TRANS_FROM_CARD 2 //Uploading AI from InteliCard -#define AI_MECH_HACK 3 //Malfunctioning AI hijacking mecha - -//check_target_facings() return defines -#define FACING_SAME_DIR 1 -#define FACING_EACHOTHER 2 -#define FACING_INIT_FACING_TARGET_TARGET_FACING_PERPENDICULAR 3 //Do I win the most informative but also most stupid define award? - -//stages of shoe tying-ness -#define SHOES_UNTIED 0 -#define SHOES_TIED 1 -#define SHOES_KNOTTED 2 - -//how fast a disposal machinery thing is ejecting things -#define EJECT_SPEED_SLOW 1 -#define EJECT_SPEED_MED 2 -#define EJECT_SPEED_FAST 4 -#define EJECT_SPEED_YEET 6 - -//Cache of bloody footprint images -//Key: -//"entered-[blood_state]-[dir_of_image]" -//or: "exited-[blood_state]-[dir_of_image]" -GLOBAL_LIST_EMPTY(bloody_footprints_cache) - -//Bloody shoes/footprints -#define BLOODY_FOOTPRINT_BASE_ALPHA 20 /// Minimum alpha of footprints -#define BLOOD_AMOUNT_PER_DECAL 50 /// How much blood a regular blood splatter contains -#define BLOOD_ITEM_MAX 200 /// How much blood an item can have stuck on it -#define BLOOD_POOL_MAX 300 /// How much blood a blood decal can contain -#define BLOOD_FOOTPRINTS_MIN 5 /// How much blood a footprint need to at least contain - -//Bloody shoe blood states -#define BLOOD_STATE_HUMAN "blood" -#define BLOOD_STATE_XENO "xeno" -#define BLOOD_STATE_OIL "oil" -#define BLOOD_STATE_NOT_BLOODY "no blood whatsoever" - -//suit sensors: sensor_mode defines - -#define SENSOR_OFF 0 -#define SENSOR_LIVING 1 -#define SENSOR_VITALS 2 -#define SENSOR_COORDS 3 - -//suit sensors: has_sensor defines - -#define BROKEN_SENSORS -1 -#define NO_SENSORS 0 -#define HAS_SENSORS 1 -#define LOCKED_SENSORS 2 - -//Wet floor type flags. Stronger ones should be higher in number. -#define TURF_DRY (0) -#define TURF_WET_WATER (1<<0) -#define TURF_WET_PERMAFROST (1<<1) -#define TURF_WET_ICE (1<<2) -#define TURF_WET_LUBE (1<<3) -#define TURF_WET_SUPERLUBE (1<<4) - -#define IS_WET_OPEN_TURF(O) O.GetComponent(/datum/component/wet_floor) - -//Maximum amount of time, (in deciseconds) a tile can be wet for. -#define MAXIMUM_WET_TIME 5 MINUTES - -//subtypesof(), typesof() without the parent path -#define subtypesof(typepath) ( typesof(typepath) - typepath ) - -/** - * Get the turf that `A` resides in, regardless of any containers. - * - * Use in favor of `A.loc` or `src.loc` so that things work correctly when - * stored inside an inventory, locker, or other container. - */ -#define get_turf(A) (get_step(A, 0)) - -/** - * Get the ultimate area of `A`, similarly to [get_turf]. - * - * Use instead of `A.loc.loc`. - */ -#define get_area(A) (isarea(A) ? A : get_step(A, 0)?.loc) - -//Ghost orbit types: -#define GHOST_ORBIT_CIRCLE "circle" -#define GHOST_ORBIT_TRIANGLE "triangle" -#define GHOST_ORBIT_HEXAGON "hexagon" -#define GHOST_ORBIT_SQUARE "square" -#define GHOST_ORBIT_PENTAGON "pentagon" - -//Ghost showing preferences: -#define GHOST_ACCS_NONE "Default sprites" -#define GHOST_ACCS_DIR "Only directional sprites" -#define GHOST_ACCS_FULL "Full accessories" - -#define GHOST_ACCS_DEFAULT_OPTION GHOST_ACCS_FULL - -#define GHOST_OTHERS_SIMPLE "White ghosts" -#define GHOST_OTHERS_DEFAULT_SPRITE "Default sprites" -#define GHOST_OTHERS_THEIR_SETTING "Their sprites" - -#define GHOST_OTHERS_DEFAULT_OPTION GHOST_OTHERS_THEIR_SETTING - -#define GHOST_MAX_VIEW_RANGE_DEFAULT 10 -#define GHOST_MAX_VIEW_RANGE_MEMBER 14 - -//pda fonts -#define MONO "Monospaced" -#define VT "VT323" -#define ORBITRON "Orbitron" -#define SHARE "Share Tech Mono" - -GLOBAL_LIST_INIT(pda_styles, sort_list(list(MONO, VT, ORBITRON, SHARE))) - -///////////////////////////////////// -// atom.appearence_flags shortcuts // -///////////////////////////////////// - -/* - -// Disabling certain features -#define APPEARANCE_IGNORE_TRANSFORM RESET_TRANSFORM -#define APPEARANCE_IGNORE_COLOUR RESET_COLOR -#define APPEARANCE_IGNORE_CLIENT_COLOUR NO_CLIENT_COLOR -#define APPEARANCE_IGNORE_COLOURING (RESET_COLOR|NO_CLIENT_COLOR) -#define APPEARANCE_IGNORE_ALPHA RESET_ALPHA -#define APPEARANCE_NORMAL_GLIDE ~LONG_GLIDE - -// Enabling certain features -#define APPEARANCE_CONSIDER_TRANSFORM ~RESET_TRANSFORM -#define APPEARANCE_CONSIDER_COLOUR ~RESET_COLOUR -#define APPEARANCE_CONSIDER_CLIENT_COLOUR ~NO_CLIENT_COLOR -#define APPEARANCE_CONSIDER_COLOURING (~RESET_COLOR|~NO_CLIENT_COLOR) -#define APPEARANCE_CONSIDER_ALPHA ~RESET_ALPHA -#define APPEARANCE_LONG_GLIDE LONG_GLIDE - -*/ - -// Consider these images/atoms as part of the UI/HUD -#define APPEARANCE_UI_IGNORE_ALPHA (RESET_COLOR|RESET_TRANSFORM|NO_CLIENT_COLOR|RESET_ALPHA|PIXEL_SCALE) -#define APPEARANCE_UI (RESET_COLOR|RESET_TRANSFORM|NO_CLIENT_COLOR|PIXEL_SCALE) - -//Just space -#define SPACE_ICON_STATE "[((x + y) ^ ~(x * y) + z) % 25]" - -// Maploader bounds indices -#define MAP_MINX 1 -#define MAP_MINY 2 -#define MAP_MINZ 3 -#define MAP_MAXX 4 -#define MAP_MAXY 5 -#define MAP_MAXZ 6 - -// Diagonal movement -#define FIRST_DIAG_STEP 1 -#define SECOND_DIAG_STEP 2 - -#define DEADCHAT_ANNOUNCEMENT "announcement" -#define DEADCHAT_ARRIVALRATTLE "arrivalrattle" -#define DEADCHAT_DEATHRATTLE "deathrattle" -#define DEADCHAT_LAWCHANGE "lawchange" -#define DEADCHAT_REGULAR "regular-deadchat" -#define DEADCHAT_LOGIN_LOGOUT "loginlogout" - -// Bluespace shelter deploy checks -#define SHELTER_DEPLOY_ALLOWED "allowed" -#define SHELTER_DEPLOY_BAD_TURFS "bad turfs" -#define SHELTER_DEPLOY_BAD_AREA "bad area" -#define SHELTER_DEPLOY_ANCHORED_OBJECTS "anchored objects" -#define SHELTER_DEPLOY_OUTSIDE_MAP "outside map" - -//debug printing macros -#define debug_world(msg) if (GLOB.Debug2) to_chat(world, \ - type = MESSAGE_TYPE_DEBUG, \ - text = "DEBUG: [msg]") -#define debug_usr(msg) if (GLOB.Debug2&&usr) to_chat(usr, \ - type = MESSAGE_TYPE_DEBUG, \ - text = "DEBUG: [msg]") -#define debug_admins(msg) if (GLOB.Debug2) to_chat(GLOB.admins, \ - type = MESSAGE_TYPE_DEBUG, \ - text = "DEBUG: [msg]") -#define debug_world_log(msg) if (GLOB.Debug2) log_world("DEBUG: [msg]") - -#define INCREMENT_TALLY(L, stat) if(L[stat]){L[stat]++}else{L[stat] = 1} - -//TODO Move to a pref -#define STATION_GOAL_BUDGET 1 - -//Luma coefficients suggested for HDTVs. If you change these, make sure they add up to 1. -#define LUMA_R 0.213 -#define LUMA_G 0.715 -#define LUMA_B 0.072 - -//different types of atom colorations -#define ADMIN_COLOUR_PRIORITY 1 //only used by rare effects like greentext coloring mobs and when admins varedit color -#define TEMPORARY_COLOUR_PRIORITY 2 //e.g. purple effect of the revenant on a mob, black effect when mob electrocuted -#define WASHABLE_COLOUR_PRIORITY 3 //color splashed onto an atom (e.g. paint on turf) -#define FIXED_COLOUR_PRIORITY 4 //color inherent to the atom (e.g. blob color) -#define COLOUR_PRIORITY_AMOUNT 4 //how many priority levels there are. - -//Endgame Results -#define NUKE_NEAR_MISS 1 -#define NUKE_MISS_STATION 2 -#define NUKE_SYNDICATE_BASE 3 -#define STATION_DESTROYED_NUKE 4 -#define STATION_EVACUATED 5 -#define BLOB_WIN 8 -#define BLOB_NUKE 9 -#define BLOB_DESTROYED 10 -#define CULT_ESCAPE 11 -#define CULT_FAILURE 12 -#define CULT_SUMMON 13 -#define NUKE_MISS 14 -#define OPERATIVES_KILLED 15 -#define OPERATIVE_SKIRMISH 16 -#define REVS_WIN 17 -#define REVS_LOSE 18 -#define WIZARD_KILLED 19 -#define STATION_NUKED 20 -#define CLOCK_SUMMON 21 -#define CLOCK_SILICONS 22 -#define CLOCK_PROSELYTIZATION 23 -#define SHUTTLE_HIJACK 24 -#define GANG_DESTROYED 25 -#define GANG_OPERATING 26 - -#define FIELD_TURF 1 -#define FIELD_EDGE 2 - -//gibtonite state defines -#define GIBTONITE_UNSTRUCK 0 -#define GIBTONITE_ACTIVE 1 -#define GIBTONITE_STABLE 2 -#define GIBTONITE_DETONATE 3 - -//for obj explosion block calculation -#define EXPLOSION_BLOCK_PROC -1 - -//for determining which type of heartbeat sound is playing -#define BEAT_FAST 1 -#define BEAT_SLOW 2 -#define BEAT_NONE 0 - -//https://secure.byond.com/docs/ref/info.html#/atom/var/mouse_opacity -#define MOUSE_OPACITY_TRANSPARENT 0 -#define MOUSE_OPACITY_ICON 1 -#define MOUSE_OPACITY_OPAQUE 2 - -//world/proc/shelleo -#define SHELLEO_ERRORLEVEL 1 -#define SHELLEO_STDOUT 2 -#define SHELLEO_STDERR 3 - -//server security mode -#define SECURITY_SAFE 1 -#define SECURITY_ULTRASAFE 2 -#define SECURITY_TRUSTED 3 - -//Dummy mob reserve slots -#define DUMMY_HUMAN_SLOT_ADMIN "admintools" -#define DUMMY_HUMAN_SLOT_MANIFEST "dummy_manifest_generation" -#define DUMMY_HUMAN_SLOT_CTF "dummy_ctf_preview_generation" - -#define PR_ANNOUNCEMENTS_PER_ROUND 5 //The number of unique PR announcements allowed per round - //This makes sure that a single person can only spam 3 reopens and 3 closes before being ignored - -#define MAX_PROC_DEPTH 195 // 200 proc calls deep and shit breaks, this is a bit lower to give some safety room - -//gold slime core spawning -#define NO_SPAWN 0 -#define HOSTILE_SPAWN 1 -#define FRIENDLY_SPAWN 2 - -//slime core activation type -#define SLIME_ACTIVATE_MINOR 1 -#define SLIME_ACTIVATE_MAJOR 2 - -#define LUMINESCENT_DEFAULT_GLOW 2 - -#define RIDING_OFFSET_ALL "ALL" - -//stack recipe placement check types -#define STACK_CHECK_CARDINALS "cardinals" //checks if there is an object of the result type in any of the cardinal directions -#define STACK_CHECK_ADJACENT "adjacent" //checks if there is an object of the result type within one tile - -//text files -#define BRAIN_DAMAGE_FILE "traumas.json" -#define ION_FILE "ion_laws.json" -#define PIRATE_NAMES_FILE "pirates.json" -#define REDPILL_FILE "redpill.json" -#define ARCADE_FILE "arcade.json" -#define BOOMER_FILE "boomer.json" -#define LOCATIONS_FILE "locations.json" -#define WANTED_FILE "wanted_message.json" -#define VISTA_FILE "steve.json" -#define FLESH_SCAR_FILE "wounds/flesh_scar_desc.json" -#define BONE_SCAR_FILE "wounds/bone_scar_desc.json" -#define SCAR_LOC_FILE "wounds/scar_loc.json" -#define EXODRONE_FILE "exodrone.json" -#define CLOWN_NONSENSE_FILE "clown_nonsense.json" -#define CULT_SHUTTLE_CURSE "cult_shuttle_curse.json" - -//Fullscreen overlay resolution in tiles. -#define FULLSCREEN_OVERLAY_RESOLUTION_X 15 -#define FULLSCREEN_OVERLAY_RESOLUTION_Y 15 - -#define SUMMON_GUNS "guns" -#define SUMMON_MAGIC "magic" - -#define TELEPORT_CHANNEL_BLUESPACE "bluespace" //Classic bluespace teleportation, requires a sender but no receiver -#define TELEPORT_CHANNEL_QUANTUM "quantum" //Quantum-based teleportation, requires both sender and receiver, but is free from normal disruption -#define TELEPORT_CHANNEL_WORMHOLE "wormhole" //Wormhole teleportation, is not disrupted by bluespace fluctuations but tends to be very random or unsafe -#define TELEPORT_CHANNEL_MAGIC "magic" //Magic teleportation, does whatever it wants (unless there's antimagic) -#define TELEPORT_CHANNEL_CULT "cult" //Cult teleportation, does whatever it wants (unless there's holiness) -#define TELEPORT_CHANNEL_FREE "free" //Anything else - -//Force the log directory to be something specific in the data/logs folder -#define OVERRIDE_LOG_DIRECTORY_PARAMETER "log-directory" -//Prevent the master controller from starting automatically -#define NO_INIT_PARAMETER "no-init" -//Force the config directory to be something other than "config" -#define OVERRIDE_CONFIG_DIRECTORY_PARAMETER "config-directory" - -#define EGG_LAYING_MESSAGES list("lays an egg.","squats down and croons.","begins making a huge racket.","begins clucking raucously.") - -//Filters -#define AMBIENT_OCCLUSION filter(type="drop_shadow", x=0, y=-2, size=4, color="#04080FAA") -#define GAUSSIAN_BLUR(filter_size) filter(type="blur", size=filter_size) - -///range of values where you suffer from negative gravity -#define NEGATIVE_GRAVITY_RANGE -INFINITY to NEGATIVE_GRAVITY -///range of values where you have no gravity -#define WEIGHTLESS_RANGE NEGATIVE_GRAVITY + 0.01 to 0 -///range of values where you have normal gravity -#define STANDRARD_GRAVITY_RANGE 0.01 to STANDARD_GRAVITY -///range of values where you have heavy gravity -#define HIGH_GRAVITY_RANGE STANDARD_GRAVITY + 0.01 to GRAVITY_DAMAGE_THRESHOLD - 0.01 -///range of values where you suffer from crushing gravity -#define CRUSHING_GRAVITY_RANGE GRAVITY_DAMAGE_THRESHOLD to INFINITY - -/** - * The point where gravity is negative enough to pull you upwards. - * That means walking checks for a ceiling instead of a floor, and you can fall "upwards" - * - * This should only be possible on multi-z maps because it works like shit on maps that aren't. - */ -#define NEGATIVE_GRAVITY -1 - -#define STANDARD_GRAVITY 1 //Anything above this is high gravity, anything below no grav until negative gravity -/// The gravity strength threshold for high gravity damage. -#define GRAVITY_DAMAGE_THRESHOLD 3 -/// The scaling factor for high gravity damage. -#define GRAVITY_DAMAGE_SCALING 0.5 -/// The maximum [BRUTE] damage a mob can take from high gravity per second. -#define GRAVITY_DAMAGE_MAXIMUM 1.5 - -#define CAMERA_NO_GHOSTS 0 -#define CAMERA_SEE_GHOSTS_BASIC 1 -#define CAMERA_SEE_GHOSTS_ORBIT 2 - -#define CLIENT_FROM_VAR(I) (ismob(I) ? I:client : (istype(I, /client) ? I : (istype(I, /datum/mind) ? I:current?:client : null))) - -#define AREASELECT_CORNERA "corner A" -#define AREASELECT_CORNERB "corner B" - -#define DICE_NOT_RIGGED 1 -#define DICE_BASICALLY_RIGGED 2 -#define DICE_TOTALLY_RIGGED 3 - -#define VOMIT_TOXIC 1 -#define VOMIT_PURPLE 2 -#define VOMIT_NANITE 3 //SKYRAT EDIT ADD - Nanite Slurry - -//chem grenades defines -#define GRENADE_EMPTY 1 -#define GRENADE_WIRED 2 -#define GRENADE_READY 3 - -//Misc text define. Does 4 spaces. Used as a makeshift tabulator. -#define FOURSPACES "    " - - -// Play time / EXP -#define PLAYTIME_HARDCORE_RANDOM 120 -#define PLAYTIME_VETERAN 300000 //Playtime is tracked in minutes. 300,000 minutes = 5,000 hours - -// The alpha we give to stuff under tiles, if they want it -#define ALPHA_UNDERTILE 128 - -// Anonymous names defines (used in the secrets panel) - -#define ANON_DISABLED "" //so it's falsey -#define ANON_RANDOMNAMES "Random Default" - -/// Possible value of [/atom/movable/buckle_lying]. If set to a different (positive-or-zero) value than this, the buckling thing will force a lying angle on the buckled. -#define NO_BUCKLE_LYING -1 - - -// timed_action_flags parameter for `/proc/do_after_mob`, `/proc/do_mob` and `/proc/do_after` -#define IGNORE_USER_LOC_CHANGE (1<<0) -#define IGNORE_TARGET_LOC_CHANGE (1<<1) -#define IGNORE_HELD_ITEM (1<<2) -#define IGNORE_INCAPACITATED (1<<3) -///Used to prevent important slowdowns from being abused by drugs like kronkaine -#define IGNORE_SLOWDOWNS (1<<4) - -// Skillchip categories -//Various skillchip categories. Use these when setting which categories a skillchip restricts being paired with -//while using the SKILLCHIP_RESTRICTED_CATEGORIES flag -#define SKILLCHIP_CATEGORY_GENERAL "general" -#define SKILLCHIP_CATEGORY_JOB "job" - -/// Emoji icon set -#define EMOJI_SET 'modular_skyrat/master_files/icons/emoji.dmi' // SKYRAT EDIT -/// Achievements icon set -#define ACHIEVEMENTS_SET 'icons/ui_icons/achievements/achievements.dmi' diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index a66b97a9f8c..07fcf30886f 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -74,6 +74,14 @@ // Health/damage defines #define MAX_LIVING_HEALTH 100 +//for determining which type of heartbeat sound is playing +///Heartbeat is beating fast for hard crit +#define BEAT_FAST 1 +///Heartbeat is beating slow for soft crit +#define BEAT_SLOW 2 +///Heartbeat is gone... He's dead Jim :( +#define BEAT_NONE 0 + #define HUMAN_MAX_OXYLOSS 3 #define HUMAN_CRIT_MAX_OXYLOSS (SSMOBS_DT/3) @@ -503,3 +511,124 @@ #define SIGN_ARMLESS 2 #define SIGN_TRAIT_BLOCKED 3 #define SIGN_CUFFED 4 + +// Mob Overlays Indexes +/// Total number of layers for mob overlays +#define TOTAL_LAYERS 36 //KEEP THIS UP-TO-DATE OR SHIT WILL BREAK ;_; +/// Mutations layer - Tk headglows, cold resistance glow, etc +#define MUTATIONS_LAYER 36 +/// Mutantrace features (tail when looking south) that must appear behind the body parts +#define BODY_BEHIND_LAYER 35 +/// Initially "AUGMENTS", this was repurposed to be a catch-all bodyparts flag +#define BODYPARTS_LAYER 34 +/// Mutantrace features (snout, body markings) that must appear above the body parts +#define BODY_ADJ_LAYER 33 +/// Underwear, undershirts, socks, eyes, lips(makeup) +#define BODY_LAYER 32 +/// Mutations that should appear above body, body_adj and bodyparts layer (e.g. laser eyes) +#define FRONT_MUTATIONS_LAYER 31 +/// Damage indicators (cuts and burns) +#define DAMAGE_LAYER 30 +/// Jumpsuit clothing layer +#define UNIFORM_LAYER 29 +//SKYRAT EDIT ADDITION BEGIN - BUMPED UP ^ +#define ANUS_LAYER 28 +#define VAGINA_LAYER 27 +#define PENIS_LAYER 26 +#define NIPPLES_LAYER 25 +#define BANDAGE_LAYER 24 +//SKYRAT EDIT ADDITION END +/// ID card layer (might be deprecated) +#define ID_LAYER 23 +/// ID card layer +#define ID_CARD_LAYER 22 +/// Hands body part layer (or is this for the arm? not sure...) +#define HANDS_PART_LAYER 21 +/// Gloves layer +#define GLOVES_LAYER 20 +/// Shoes layer +#define SHOES_LAYER 19 +/// Ears layer (Spessmen have ears? Wow) +#define EARS_LAYER 18 +/// Suit layer (armor, hardsuits, etc.) +#define SUIT_LAYER 17 +/// Glasses layer +#define GLASSES_LAYER 16 +/// Belt layer +#define BELT_LAYER 15 //Possible make this an overlay of somethign required to wear a belt? +/// Suit storage layer (tucking a gun or baton underneath your armor) +#define SUIT_STORE_LAYER 14 +/// Neck layer (for wearing ties and bedsheets) +#define NECK_LAYER 13 +/// Back layer (for backpacks and equipment on your back) +#define BACK_LAYER 12 +/// Hair layer (mess with the fro and you got to go!) +#define HAIR_LAYER 11 //TODO: make part of head layer? +/// Facemask layer (gas masks, breath masks, etc.) +#define FACEMASK_LAYER 10 +/// Head layer (hats, helmets, etc.) +#define HEAD_LAYER 9 +/// Handcuff layer (when your hands are cuffed) +#define HANDCUFF_LAYER 8 +/// Legcuff layer (when your feet are cuffed) +#define LEGCUFF_LAYER 7 +/// Hands layer (for the actual hand, not the arm... I think?) +#define HANDS_LAYER 6 +/// Body front layer. Usually used for mutant bodyparts that need to be in front of stuff (e.g. cat ears) +#define BODY_FRONT_LAYER 5 +/// Special body layer that actually require to be above the hair (e.g. lifted welding goggles) +#define ABOVE_BODY_FRONT_GLASSES_LAYER 4 +/// Special body layer for the rare cases where something on the head needs to be above everything else (e.g. flowers) +#define ABOVE_BODY_FRONT_HEAD_LAYER 3 +/// Blood cult ascended halo layer, because there's currently no better solution for adding/removing +#define HALO_LAYER 2 +/// Fire layer when you're on fire +#define FIRE_LAYER 1 + +//Bitflags for the layers an external organ can draw on (organs can be drawn on multiple layers) +/// Draws organ on the BODY_FRONT_LAYER +#define EXTERNAL_FRONT (1 << 1) +/// Draws organ on the BODY_ADJ_LAYER +#define EXTERNAL_ADJACENT (1 << 2) +/// Draws organ on the BODY_BEHIND_LAYER +#define EXTERNAL_BEHIND (1 << 3) +/// Draws organ on all EXTERNAL layers +#define ALL_EXTERNAL_OVERLAYS EXTERNAL_FRONT | EXTERNAL_ADJACENT | EXTERNAL_BEHIND + +//Mob Overlay Index Shortcuts for alternate_worn_layer, layers +//Because I *KNOW* somebody will think layer+1 means "above" +//IT DOESN'T OK, IT MEANS "UNDER" +/// The layer underneath the suit +#define UNDER_SUIT_LAYER (SUIT_LAYER+1) +/// The layer underneath the head (for hats) +#define UNDER_HEAD_LAYER (HEAD_LAYER+1) + +//AND -1 MEANS "ABOVE", OK?, OK!?! +/// The layer above shoes +#define ABOVE_SHOES_LAYER (SHOES_LAYER-1) +/// The layer above mutant body parts +#define ABOVE_BODY_FRONT_LAYER (BODY_FRONT_LAYER-1) + +//used by canUseTopic() +/// If silicons need to be next to the atom to use this +#define BE_CLOSE TRUE +/// If other mobs (monkeys, aliens, etc) can use this +#define NO_DEXTERITY TRUE // I had to change 20+ files because some non-dnd-playing fuckchumbis can't spell "dexterity" +// If telekinesis you can use it from a distance +#define NO_TK TRUE +/// If mobs can use this while resting +#define FLOOR_OKAY TRUE + +/// The default mob sprite size (used for shrinking or enlarging the mob sprite to regular size) +#define RESIZE_DEFAULT_SIZE 1 + +/// Get the client from the var +#define CLIENT_FROM_VAR(I) (ismob(I) ? I:client : (istype(I, /client) ? I : (istype(I, /datum/mind) ? I:current?:client : null))) + +/// The mob will vomit a green color +#define VOMIT_TOXIC 1 +/// The mob will vomit a purple color +#define VOMIT_PURPLE 2 + +/// Possible value of [/atom/movable/buckle_lying]. If set to a different (positive-or-zero) value than this, the buckling thing will force a lying angle on the buckled. +#define NO_BUCKLE_LYING -1 diff --git a/code/__DEFINES/movement.dm b/code/__DEFINES/movement.dm index b6e612e6c7b..f47033ba233 100644 --- a/code/__DEFINES/movement.dm +++ b/code/__DEFINES/movement.dm @@ -82,3 +82,22 @@ GLOBAL_VAR_INIT(glide_size_multiplier, 1.0) #define ZMOVE_STAIRS_FLAGS (ZMOVE_CHECK_PULLEDBY|ZMOVE_ALLOW_BUCKLED) /// Used for falling down open space. #define ZMOVE_FALL_FLAGS (ZMOVE_FALL_CHECKS|ZMOVE_ALLOW_BUCKLED) + +//Diagonal movement is split into two cardinal moves +/// The first step of the diagnonal movement +#define FIRST_DIAG_STEP 1 +/// The second step of the diagnonal movement +#define SECOND_DIAG_STEP 2 + +/// Classic bluespace teleportation, requires a sender but no receiver +#define TELEPORT_CHANNEL_BLUESPACE "bluespace" +/// Quantum-based teleportation, requires both sender and receiver, but is free from normal disruption +#define TELEPORT_CHANNEL_QUANTUM "quantum" +/// Wormhole teleportation, is not disrupted by bluespace fluctuations but tends to be very random or unsafe +#define TELEPORT_CHANNEL_WORMHOLE "wormhole" +/// Magic teleportation, does whatever it wants (unless there's antimagic) +#define TELEPORT_CHANNEL_MAGIC "magic" +/// Cult teleportation, does whatever it wants (unless there's holiness) +#define TELEPORT_CHANNEL_CULT "cult" +/// Anything else +#define TELEPORT_CHANNEL_FREE "free" diff --git a/code/__DEFINES/preferences.dm b/code/__DEFINES/preferences.dm index 3835a1c0a26..de5eec66bc3 100644 --- a/code/__DEFINES/preferences.dm +++ b/code/__DEFINES/preferences.dm @@ -145,3 +145,9 @@ /// These are preferences that are supplementary for main features, /// such as hair color being affixed to hair. #define PREFERENCE_CATEGORY_SUPPLEMENTAL_FEATURES "supplemental_features" + +// Playtime is tracked in minutes +/// The time needed to unlock hardcore random mode in preferences +#define PLAYTIME_HARDCORE_RANDOM 120 // 2 hours +/// The time needed to unlock the gamer cloak in preferences +#define PLAYTIME_VETERAN 300000 // 5,000 hours diff --git a/code/__DEFINES/reagents.dm b/code/__DEFINES/reagents.dm index 03bb57f017b..0867c1becba 100644 --- a/code/__DEFINES/reagents.dm +++ b/code/__DEFINES/reagents.dm @@ -191,3 +191,11 @@ ///This is the center of a 1 degree deadband in which water will neither freeze to ice nor melt to liquid #define WATER_MATTERSTATE_CHANGE_TEMP 274.5 + +//chem grenades defines +/// Grenade is empty +#define GRENADE_EMPTY 1 +/// Grenade has a activation trigger +#define GRENADE_WIRED 2 +/// Grenade is ready to be finished +#define GRENADE_READY 3 diff --git a/code/__DEFINES/robots.dm b/code/__DEFINES/robots.dm index c03982f3f1a..47b51332f6c 100644 --- a/code/__DEFINES/robots.dm +++ b/code/__DEFINES/robots.dm @@ -19,6 +19,14 @@ ///Alert when a Cyborg gets disconnected from their AI. #define AI_NOTIFICATION_CYBORG_DISCONNECTED 5 +//transfer_ai() defines. Main proc in ai_core.dm +///Downloading AI to InteliCard +#define AI_TRANS_TO_CARD 1 +///Uploading AI from InteliCard +#define AI_TRANS_FROM_CARD 2 +///Malfunctioning AI hijacking mecha +#define AI_MECH_HACK 3 + /** Cyborg defines */ /// Special value to reset cyborg's lamp_cooldown diff --git a/code/__DEFINES/roundend.dm b/code/__DEFINES/roundend.dm new file mode 100644 index 00000000000..bf336751021 --- /dev/null +++ b/code/__DEFINES/roundend.dm @@ -0,0 +1,43 @@ +//Endgame Results +/// Nuke was detonated in space on same z-level as station +#define NUKE_NEAR_MISS 1 +/// Nuke was detonated on another z-level +#define NUKE_MISS_STATION 2 +/// Nuke was detonated on the syndicate base +#define NUKE_SYNDICATE_BASE 3 +/// Nuke was detonated on the station +#define STATION_DESTROYED_NUKE 4 +/// The emergency shuttle arrived and evacuated the crew +#define STATION_EVACUATED 5 +/// The blob has reached critical mass and overtaken the station +#define BLOB_WIN 8 +/// The station's nuke was detonated destroying the blob +#define BLOB_NUKE 9 +/// The blob was destroyed by the crew +#define BLOB_DESTROYED 10 +/// The cult managed to escape alive on the shuttle +#define CULT_ESCAPE 11 +/// The cult was destroyed by the crew +#define CULT_FAILURE 12 +/// The cult was able to summon Nar-Sie +#define CULT_SUMMON 13 +/// The nuke was detonated on another station? +#define NUKE_MISS 14 +/// The nuclear operatives were killed by the crew +#define OPERATIVES_KILLED 15 +/// The nuclear operatives forced the crew to evacuate without securing the disk +#define OPERATIVE_SKIRMISH 16 +/// The revolution successfully killed or exiled all the station heads of staff +#define REVS_WIN 17 +/// The revolution failed and all the head revs were killed or exiled +#define REVS_LOSE 18 +/// The wizard was killed by the crew +#define WIZARD_KILLED 19 +/// The station was destroyed by it's own self-destruct nuclear device +#define STATION_NUKED 20 +/// The emergency shuttle was successfully hijacked +#define SHUTTLE_HIJACK 24 +/// The gangs on the station were thwarted +#define GANG_DESTROYED 25 // Looks like it was deprecated at some point - Jan 2022 +/// The gangs on the station still exist +#define GANG_OPERATING 26 diff --git a/code/__DEFINES/space.dm b/code/__DEFINES/space.dm index df9214fd6c1..a957f97d370 100644 --- a/code/__DEFINES/space.dm +++ b/code/__DEFINES/space.dm @@ -1 +1,4 @@ #define SPACE_SIGNAL_GPSTAG "Distant Signal" + +///The icon_state for space. There is 25 total icon states that vary based on the x/y/z position of the turf +#define SPACE_ICON_STATE "[((x + y) ^ ~(x * y) + z) % 25]" diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm index a3d5ecdcd82..d428fb6a009 100644 --- a/code/__DEFINES/subsystems.dm +++ b/code/__DEFINES/subsystems.dm @@ -218,7 +218,17 @@ #define RUNLEVELS_DEFAULT (RUNLEVEL_SETUP | RUNLEVEL_GAME | RUNLEVEL_POSTGAME) - +//SSticker.current_state values +/// Game is loading +#define GAME_STATE_STARTUP 0 +/// Game is loaded and in pregame lobby +#define GAME_STATE_PREGAME 1 +/// Game is attempting to start the round +#define GAME_STATE_SETTING_UP 2 +/// Game has round in progress +#define GAME_STATE_PLAYING 3 +/// Game has round finished +#define GAME_STATE_FINISHED 4 //! ## Overlays subsystem diff --git a/code/__DEFINES/text.dm b/code/__DEFINES/text.dm index b3b4c2a0880..e2479598c46 100644 --- a/code/__DEFINES/text.dm +++ b/code/__DEFINES/text.dm @@ -1,3 +1,6 @@ +/// Does 4 spaces. Used as a makeshift tabulator. +#define FOURSPACES "    " + /// Prepares a text to be used for maptext. Use this so it doesn't look hideous. #define MAPTEXT(text) {"[##text]"} @@ -20,3 +23,35 @@ /// 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" +/// 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" diff --git a/code/__DEFINES/toys.dm b/code/__DEFINES/toys.dm new file mode 100644 index 00000000000..b13b1d18f1d --- /dev/null +++ b/code/__DEFINES/toys.dm @@ -0,0 +1,7 @@ +// Affects the probability of a dice roll +/// Dice has a normal chance to land on any value +#define DICE_NOT_RIGGED 1 +/// Dice has a higher chance to land on a rigged value +#define DICE_BASICALLY_RIGGED 2 +/// Dice has a 100% chance to land on a rigged value +#define DICE_TOTALLY_RIGGED 3 diff --git a/code/__DEFINES/turfs.dm b/code/__DEFINES/turfs.dm index b65eff683ac..846edb6e8d3 100644 --- a/code/__DEFINES/turfs.dm +++ b/code/__DEFINES/turfs.dm @@ -23,6 +23,44 @@ #define TURF_FROM_COORDS_LIST(List) (locate(List[1], List[2], List[3])) +/// The pipes, disposals, and wires are hidden #define UNDERFLOOR_HIDDEN 0 +/// The pipes, disposals, and wires are visible but cannot be interacted with #define UNDERFLOOR_VISIBLE 1 +/// The pipes, disposals, and wires are visible and can be interacted with #define UNDERFLOOR_INTERACTABLE 2 + +//Wet floor type flags. Stronger ones should be higher in number. +/// Turf is dry and mobs won't slip +#define TURF_DRY (0) +/// Turf has water on the floor and mobs will slip unless walking or using galoshes +#define TURF_WET_WATER (1<<0) +/// Turf has a thick layer of ice on the floor and mobs will slip in the direction until they bump into something +#define TURF_WET_PERMAFROST (1<<1) +/// Turf has a thin layer of ice on the floor and mobs will slip +#define TURF_WET_ICE (1<<2) +/// Turf has lube on the floor and mobs will slip +#define TURF_WET_LUBE (1<<3) +/// Turf has superlube on the floor and mobs will slip even if they are crawling +#define TURF_WET_SUPERLUBE (1<<4) + +/// Checks if a turf is wet +#define IS_WET_OPEN_TURF(O) O.GetComponent(/datum/component/wet_floor) + +/// Maximum amount of time, (in deciseconds) a tile can be wet for. +#define MAXIMUM_WET_TIME 5 MINUTES + +/** + * Get the turf that `A` resides in, regardless of any containers. + * + * Use in favor of `A.loc` or `src.loc` so that things work correctly when + * stored inside an inventory, locker, or other container. + */ +#define get_turf(A) (get_step(A, 0)) + +/** + * Get the ultimate area of `A`, similarly to [get_turf]. + * + * Use instead of `A.loc.loc`. + */ +#define get_area(A) (isarea(A) ? A : get_step(A, 0)?.loc) diff --git a/code/__DEFINES/vehicles.dm b/code/__DEFINES/vehicles.dm index dd2f2bc5e69..122be15c2cf 100644 --- a/code/__DEFINES/vehicles.dm +++ b/code/__DEFINES/vehicles.dm @@ -40,3 +40,6 @@ #define VIM_SOUND_COOLDOWN 1 SECONDS ///how much vim heals per weld #define VIM_HEAL_AMOUNT 20 + +/// The vehicle being ridden requires pixel offsets for all directions +#define RIDING_OFFSET_ALL "ALL" diff --git a/code/__DEFINES/xenobiology.dm b/code/__DEFINES/xenobiology.dm new file mode 100644 index 00000000000..2f7d0d04536 --- /dev/null +++ b/code/__DEFINES/xenobiology.dm @@ -0,0 +1,16 @@ +//gold slime core spawning (used with var/gold_core_spawnable) +/// Mob cannot be spawned with a gold slime core +#define NO_SPAWN 0 +/// Mob can spawned with a gold slime core with plasma reaction as a hostile creature +#define HOSTILE_SPAWN 1 +/// Mob can be spawned with a gold slime core with blood reaction as a friendly creature +#define FRIENDLY_SPAWN 2 + +//slime core activation type +/// Jelly species slime ability that causes simple effects that require energized jelly +#define SLIME_ACTIVATE_MINOR 1 +/// Jelly species slime ability that causes complex effects that require plasma jelly +#define SLIME_ACTIVATE_MAJOR 2 + +/// Determines how much light the jelly species emit +#define LUMINESCENT_DEFAULT_GLOW 2 diff --git a/code/__DEFINES/~skyrat_defines/mobs.dm b/code/__DEFINES/~skyrat_defines/mobs.dm index b7f20b5c550..48ea87a6863 100644 --- a/code/__DEFINES/~skyrat_defines/mobs.dm +++ b/code/__DEFINES/~skyrat_defines/mobs.dm @@ -1,3 +1,5 @@ #define BLOOD_VOLUME_OVERSIZED 1120 #define PULL_OVERSIZED_SLOWDOWN 2 + +#define VOMIT_NANITE 3 diff --git a/code/__HELPERS/matrices.dm b/code/__HELPERS/matrices.dm index 41bd7c89115..41b1796579b 100644 --- a/code/__HELPERS/matrices.dm +++ b/code/__HELPERS/matrices.dm @@ -1,3 +1,8 @@ +//Luma coefficients suggested for HDTVs. If you change these, make sure they add up to 1. +#define LUMA_R 0.213 +#define LUMA_G 0.715 +#define LUMA_B 0.072 + /// Datum which stores information about a matrix decomposed with decompose(). /datum/decompose_matrix ///? @@ -233,3 +238,6 @@ round(cos_inv_third+sqrt3_sin, 0.001), round(cos_inv_third-sqrt3_sin, 0.001), ro else CRASH("Invalid/unsupported color format argument in color_to_full_rgba_matrix()") +#undef LUMA_R +#undef LUMA_G +#undef LUMA_B diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 381a85a6bff..3a361d8665d 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -1,3 +1,11 @@ +//check_target_facings() return defines +/// Two mobs are facing the same direction +#define FACING_SAME_DIR 1 +/// Two mobs are facing each others +#define FACING_EACHOTHER 2 +/// Two mobs one is facing a person, but the other is perpendicular +#define FACING_INIT_FACING_TARGET_TARGET_FACING_PERPENDICULAR 3 //Do I win the most informative but also most stupid define award? + /proc/random_blood_type() return pick(4;"O-", 36;"O+", 3;"A-", 28;"A+", 1;"B-", 20;"B+", 1;"AB-", 5;"AB+") @@ -879,3 +887,7 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new) else . = invoked_callback.Invoke() usr = temp + +#undef FACING_SAME_DIR +#undef FACING_EACHOTHER +#undef FACING_INIT_FACING_TARGET_TARGET_FACING_PERPENDICULAR diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index df858a24c2a..f973d7172ef 100644 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -609,12 +609,6 @@ SUBSYSTEM_DEF(ticker) news_message = "Tensions have flared with the Space Wizard Federation following the death of one of their members aboard [decoded_station_name]." if(STATION_NUKED) news_message = "[decoded_station_name] activated its self-destruct device for unknown reasons. Attempts to clone the Captain for arrest and execution are underway." - if(CLOCK_SUMMON) - news_message = "The garbled messages about hailing a mouse and strange energy readings from [decoded_station_name] have been discovered to be an ill-advised, if thorough, prank by a clown." - if(CLOCK_SILICONS) - news_message = "The project started by [decoded_station_name] to upgrade their silicon units with advanced equipment have been largely successful, though they have thus far refused to release schematics in a violation of company policy." - if(CLOCK_PROSELYTIZATION) - news_message = "The burst of energy released near [decoded_station_name] has been confirmed as merely a test of a new weapon. However, due to an unexpected mechanical error, their communications system has been knocked offline." if(SHUTTLE_HIJACK) news_message = "During routine evacuation procedures, the emergency shuttle of [decoded_station_name] had its navigation protocols corrupted and went off course, but was recovered shortly after." if(GANG_OPERATING) diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm index fac1cf6a5a7..c09b8d4da65 100644 --- a/code/datums/datacore.dm +++ b/code/datums/datacore.dm @@ -1,3 +1,5 @@ +///Dummy mob reserve slot for manifest +#define DUMMY_HUMAN_SLOT_MANIFEST "dummy_manifest_generation" GLOBAL_DATUM_INIT(data_core, /datum/datacore, new) @@ -394,3 +396,5 @@ GLOBAL_DATUM_INIT(data_core, /datum/datacore, new) if(C) P = C.prefs return get_flat_human_icon(null, J, P, DUMMY_HUMAN_SLOT_MANIFEST, show_directions) + +#undef DUMMY_HUMAN_SLOT_MANIFEST diff --git a/code/datums/elements/undertile.dm b/code/datums/elements/undertile.dm index 441b57d351e..baa17c55ee7 100644 --- a/code/datums/elements/undertile.dm +++ b/code/datums/elements/undertile.dm @@ -1,3 +1,6 @@ +/// The alpha we give to stuff under tiles, if they want it +#define ALPHA_UNDERTILE 128 + ///Add to an object if you want to be able to be hidden under tiles /datum/element/undertile element_flags = ELEMENT_BESPOKE | COMPONENT_DUPE_HIGHLANDER @@ -59,3 +62,5 @@ . = ..() hide(AM, FALSE) + +#undef ALPHA_UNDERTILE diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index df898b0bb27..5c98cd6de08 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -269,6 +269,12 @@ . = ..() alpha = min(BLOODY_FOOTPRINT_BASE_ALPHA + (255 - BLOODY_FOOTPRINT_BASE_ALPHA) * bloodiness / (BLOOD_ITEM_MAX / 2), 255) +//Cache of bloody footprint images +//Key: +//"entered-[blood_state]-[dir_of_image]" +//or: "exited-[blood_state]-[dir_of_image]" +GLOBAL_LIST_EMPTY(bloody_footprints_cache) + /obj/effect/decal/cleanable/blood/footprints/update_overlays() . = ..() for(var/Ddir in GLOB.cardinals) diff --git a/code/game/objects/items/dice.dm b/code/game/objects/items/dice.dm index 20cd41277f4..606b34a6f26 100644 --- a/code/game/objects/items/dice.dm +++ b/code/game/objects/items/dice.dm @@ -1,4 +1,3 @@ - ///holding bag for dice /obj/item/storage/dice name = "bag of dice" diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index 50b334466bb..dde7606dc6e 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -1,3 +1,9 @@ +//stack recipe placement check types +/// Checks if there is an object of the result type in any of the cardinal directions +#define STACK_CHECK_CARDINALS "cardinals" +/// Checks if there is an object of the result type within one tile +#define STACK_CHECK_ADJACENT "adjacent" + /* Stack type objects! * Contains: * Stacks @@ -605,3 +611,6 @@ /datum/stack_recipe_list/New(title, recipes) src.title = title src.recipes = recipes + +#undef STACK_CHECK_CARDINALS +#undef STACK_CHECK_ADJACENT diff --git a/code/game/world.dm b/code/game/world.dm index 5920874ff0a..43fdde10e88 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -1,5 +1,10 @@ #define RESTART_COUNTER_PATH "data/round_counter.txt" +/// Force the log directory to be something specific in the data/logs folder +#define OVERRIDE_LOG_DIRECTORY_PARAMETER "log-directory" +/// Prevent the master controller from starting automatically +#define NO_INIT_PARAMETER "no-init" + GLOBAL_VAR(restart_counter) /** @@ -368,3 +373,6 @@ GLOBAL_VAR(restart_counter) /world/proc/on_tickrate_change() SStimer?.reset_buckets() + +#undef OVERRIDE_LOG_DIRECTORY_PARAMETER +#undef NO_INIT_PARAMETER diff --git a/code/modules/admin/verbs/ert.dm b/code/modules/admin/verbs/ert.dm index 079de9303e5..36fae597aaa 100644 --- a/code/modules/admin/verbs/ert.dm +++ b/code/modules/admin/verbs/ert.dm @@ -1,6 +1,9 @@ /// If we spawn an ERT with the "choose experienced leader" option, select the leader from the top X playtimes #define ERT_EXPERIENCED_LEADER_CHOOSE_TOP 3 +///Dummy mob reserve slot for admin use +#define DUMMY_HUMAN_SLOT_ADMIN "admintools" + // CENTCOM RESPONSE TEAM /datum/admins/proc/makeERTTemplateModified(list/settings) @@ -232,3 +235,4 @@ log_admin("[key_name(usr)] failed to create a CentCom response team.") #undef ERT_EXPERIENCED_LEADER_CHOOSE_TOP +#undef DUMMY_HUMAN_SLOT_ADMIN diff --git a/code/modules/admin/verbs/playsound.dm b/code/modules/admin/verbs/playsound.dm index ee54b0b76cb..b546a958081 100644 --- a/code/modules/admin/verbs/playsound.dm +++ b/code/modules/admin/verbs/playsound.dm @@ -1,3 +1,8 @@ +//world/proc/shelleo +#define SHELLEO_ERRORLEVEL 1 +#define SHELLEO_STDOUT 2 +#define SHELLEO_STDERR 3 + /client/proc/play_sound(S as sound) set category = "Admin.Fun" set name = "Play Global Sound" @@ -174,3 +179,8 @@ var/client/C = M.client C?.tgui_panel?.stop_music() SSblackbox.record_feedback("tally", "admin_verb", 1, "Stop All Playing Sounds") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + +//world/proc/shelleo +#undef SHELLEO_ERRORLEVEL +#undef SHELLEO_STDOUT +#undef SHELLEO_STDERR diff --git a/code/modules/buildmode/bm_mode.dm b/code/modules/buildmode/bm_mode.dm index ddc83ac2635..20e5f097538 100644 --- a/code/modules/buildmode/bm_mode.dm +++ b/code/modules/buildmode/bm_mode.dm @@ -1,3 +1,8 @@ +/// Corner A area section for buildmode +#define AREASELECT_CORNERA "corner A" +/// Corner B area selection for buildmode +#define AREASELECT_CORNERB "corner B" + /datum/buildmode_mode var/key = "oops" @@ -88,3 +93,6 @@ return /datum/buildmode_mode/proc/handle_selected_area(client/c, params) + +#undef AREASELECT_CORNERA +#undef AREASELECT_CORNERB diff --git a/code/modules/cargo/order.dm b/code/modules/cargo/order.dm index 500e43136fa..aadc9c95be8 100644 --- a/code/modules/cargo/order.dm +++ b/code/modules/cargo/order.dm @@ -1,3 +1,14 @@ +/// The chance for a manifest or crate to be created with errors +#define MANIFEST_ERROR_CHANCE 5 + +// MANIFEST BITFLAGS +/// Determines if the station name will be incorrect on the manifest +#define MANIFEST_ERROR_NAME (1 << 0) +/// Determines if contents will be deleted from the manifest but still be present in the crate +#define MANIFEST_ERROR_CONTENTS (1 << 1) +/// Determines if contents will be deleted from the crate but still be present in the manifest +#define MANIFEST_ERROR_ITEM (1 << 2) + /obj/item/paper/fluff/jobs/cargo/manifest var/order_cost = 0 var/order_id = 0 @@ -128,3 +139,8 @@ new I(miscbox) generateManifest(miscbox, misc_own, "", misc_cost) return + +#undef MANIFEST_ERROR_CHANCE +#undef MANIFEST_ERROR_NAME +#undef MANIFEST_ERROR_CONTENTS +#undef MANIFEST_ERROR_ITEM diff --git a/code/modules/library/skill_learning/job_skillchips/_job.dm b/code/modules/library/skill_learning/job_skillchips/_job.dm index 23381d06066..87f2d47ac9c 100644 --- a/code/modules/library/skill_learning/job_skillchips/_job.dm +++ b/code/modules/library/skill_learning/job_skillchips/_job.dm @@ -1,6 +1,11 @@ +/// Job related skillchip category +#define SKILLCHIP_CATEGORY_JOB "job" + /obj/item/skillchip/job skillchip_flags = SKILLCHIP_RESTRICTED_CATEGORIES chip_category = SKILLCHIP_CATEGORY_JOB incompatibility_list = list(SKILLCHIP_CATEGORY_JOB) abstract_parent_type = /obj/item/skillchip/job slot_use = 2 + +#undef SKILLCHIP_CATEGORY_JOB diff --git a/code/modules/library/skill_learning/skillchip.dm b/code/modules/library/skill_learning/skillchip.dm index efd7c73b4c8..cf2fbaef203 100644 --- a/code/modules/library/skill_learning/skillchip.dm +++ b/code/modules/library/skill_learning/skillchip.dm @@ -1,3 +1,10 @@ +// Skillchip categories +//Various skillchip categories. Use these when setting which categories a skillchip restricts being paired with +//while using the SKILLCHIP_RESTRICTED_CATEGORIES flag +/// General related skillchip category +#define SKILLCHIP_CATEGORY_GENERAL "general" + + /obj/item/skillchip name = "skillchip" desc = "This biochip integrates with user's brain to enable mastery of specific skill. Consult certified Nanotrasen neurosurgeon before use." @@ -451,3 +458,5 @@ to_chat(user, span_danger("You get a pounding headache as the chip sends corrupt memories into your head!")) user.adjustOrganLoss(ORGAN_SLOT_BRAIN, 20) . = ..() + +#undef SKILLCHIP_CATEGORY_GENERAL diff --git a/code/modules/recycling/disposal/outlet.dm b/code/modules/recycling/disposal/outlet.dm index 0b7da0aad41..1e27373184f 100644 --- a/code/modules/recycling/disposal/outlet.dm +++ b/code/modules/recycling/disposal/outlet.dm @@ -1,3 +1,13 @@ +//how fast disposal machinery is ejecting things (does not effect range) +/// The slowest setting for disposal eject speed +#define EJECT_SPEED_SLOW 1 +/// The default setting for disposal eject speed +#define EJECT_SPEED_MED 2 +/// The fast setting for disposal eject speed +#define EJECT_SPEED_FAST 4 +/// The fastest setting for disposal eject speed +#define EJECT_SPEED_YEET 6 + // the disposal outlet machine /obj/structure/disposaloutlet name = "disposal outlet" @@ -111,3 +121,8 @@ return to_chat(user, span_notice("You silently disable the sanity checking on \the [src]'s ejection force.")) obj_flags |= EMAGGED + +#undef EJECT_SPEED_SLOW +#undef EJECT_SPEED_MED +#undef EJECT_SPEED_FAST +#undef EJECT_SPEED_YEET diff --git a/code/modules/security_levels/security_levels.dm b/code/modules/security_levels/security_levels.dm index 80ccff438b9..4c52770e50c 100644 --- a/code/modules/security_levels/security_levels.dm +++ b/code/modules/security_levels/security_levels.dm @@ -1,12 +1,4 @@ -//SEC_LEVEL_GREEN = code green -//SEC_LEVEL_BLUE = code blue -//SEC_LEVEL_RED = code red -//SEC_LEVEL_DELTA = code delta - -//config.alert_desc_blue_downto - -//SKYRAT EDIT REMOVAL BEGIN - ALERTS (moved to modular) -/* +/* SKYRAT EDIT REMOVAL BEGIN /proc/set_security_level(level) switch(level) if("green") @@ -89,5 +81,6 @@ return SEC_LEVEL_RED if("delta") return SEC_LEVEL_DELTA + */ //SKYRAT EDIT END diff --git a/code/modules/surgery/organs/external/wings.dm b/code/modules/surgery/organs/external/wings.dm index 77d43b16b74..2db6c61f20f 100644 --- a/code/modules/surgery/organs/external/wings.dm +++ b/code/modules/surgery/organs/external/wings.dm @@ -2,7 +2,7 @@ /obj/item/organ/external/wings zone = BODY_ZONE_CHEST slot = ORGAN_SLOT_EXTERNAL_WINGS - layers = EXTERNAL_BEHIND | EXTERNAL_ADJACENT | EXTERNAL_FRONT + layers = ALL_EXTERNAL_OVERLAYS feature_key = "wings" diff --git a/config/config.txt b/config/config.txt index 772d52515c7..beedd2c2bf0 100644 --- a/config/config.txt +++ b/config/config.txt @@ -611,10 +611,8 @@ CACHE_ASSETS 0 ## You should only enable this if you can guarantee a station name doesn't break BYOND's TOS. ## BYOND staff have gotten upset at us in the past for inappropriate station names. #STATION_NAME_IN_HUB_ENTRY -<<<<<<< HEAD -======= ## The number of PR announcements allowed for the same pull request per round ## This makes sure that somebody can only spam a few reopens and closes before being ignored PR_ANNOUNCEMENTS_PER_ROUND 5 ->>>>>>> 397439f4ab2 (Improve pr config documentation. (#64390)) + diff --git a/config/game_options.txt b/config/game_options.txt index e9d801b8dc9..94b2695777e 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -77,7 +77,8 @@ ALERT_RED_UPTO There is an immediate serious threat to the station. Security may ALERT_RED_DOWNTO The station's destruction has been averted. There is still however an immediate serious threat to the station. Security may have weapons unholstered at all times, random searches are allowed and advised. ALERT_DELTA Destruction of the station is imminent. All crew are instructed to obey all instructions given by heads of staff. Any violations of these orders can be punished by death. This is not a drill. - +## The total weight of station goals possible for a round (allows multiple goals) +STATION_GOAL_BUDGET 1 ## GAME MODES ### diff --git a/strings/locations.json b/strings/locations.json index 0696718e198..8bcd3bdf68d 100644 --- a/strings/locations.json +++ b/strings/locations.json @@ -92,6 +92,6 @@ "Warehouse", "Waste Disposal", "Xenobiology Lab", - "Cytology Lab" + "Cytology Lab" ] } diff --git a/tgstation.dme b/tgstation.dme index 6ef6052dc7c..56db885f762 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -40,6 +40,7 @@ #include "code\__DEFINES\bitfields.dm" #include "code\__DEFINES\blackmarket.dm" #include "code\__DEFINES\blob_defines.dm" +#include "code\__DEFINES\blood.dm" #include "code\__DEFINES\botany.dm" #include "code\__DEFINES\callbacks.dm" #include "code\__DEFINES\cargo.dm" @@ -47,6 +48,7 @@ #include "code\__DEFINES\chat_filter.dm" #include "code\__DEFINES\cinematics.dm" #include "code\__DEFINES\cleaning.dm" +#include "code\__DEFINES\clothing.dm" #include "code\__DEFINES\colors.dm" #include "code\__DEFINES\combat.dm" #include "code\__DEFINES\communications.dm" @@ -73,10 +75,12 @@ #include "code\__DEFINES\fantasy_affixes.dm" #include "code\__DEFINES\firealarm.dm" #include "code\__DEFINES\flags.dm" +#include "code\__DEFINES\fonts.dm" #include "code\__DEFINES\food.dm" #include "code\__DEFINES\footsteps.dm" -#include "code\__DEFINES\forensics.dm" #include "code\__DEFINES\fov.dm" +#include "code\__DEFINES\ghost.dm" +#include "code\__DEFINES\gravity.dm" #include "code\__DEFINES\hud.dm" #include "code\__DEFINES\icon_smoothing.dm" #include "code\__DEFINES\id_cards.dm" @@ -103,7 +107,6 @@ #include "code\__DEFINES\mecha.dm" #include "code\__DEFINES\melee.dm" #include "code\__DEFINES\memory_defines.dm" -#include "code\__DEFINES\misc.dm" #include "code\__DEFINES\mob_spawn.dm" #include "code\__DEFINES\mobs.dm" #include "code\__DEFINES\mod.dm" @@ -134,6 +137,7 @@ #include "code\__DEFINES\research.dm" #include "code\__DEFINES\robots.dm" #include "code\__DEFINES\role_preferences.dm" +#include "code\__DEFINES\roundend.dm" #include "code\__DEFINES\rust_g.dm" #include "code\__DEFINES\rust_g_overrides.dm" #include "code\__DEFINES\say.dm" @@ -162,6 +166,7 @@ #include "code\__DEFINES\tgui.dm" #include "code\__DEFINES\time.dm" #include "code\__DEFINES\tools.dm" +#include "code\__DEFINES\toys.dm" #include "code\__DEFINES\traits.dm" #include "code\__DEFINES\turfs.dm" #include "code\__DEFINES\typeids.dm" @@ -173,6 +178,7 @@ #include "code\__DEFINES\wiremod.dm" #include "code\__DEFINES\wires.dm" #include "code\__DEFINES\wounds.dm" +#include "code\__DEFINES\xenobiology.dm" #include "code\__DEFINES\atmospherics\atmos_core.dm" #include "code\__DEFINES\atmospherics\atmos_helpers.dm" #include "code\__DEFINES\atmospherics\atmos_mapping_helpers.dm"