/* Protip: Prepending an underscore to this file puts it at the top of the compile order, // so that it already has the defines for the later files that use them. */ //#define IM_REALLY_IN_A_FUCKING_HURRY_HERE 1 //Uncomment this to just skip everything possible and get into the game asap. //#define GOTTA_GO_FAST_BUT_ZLEVELS_TOO_SLOW 1 // uncomment this to use atlas as the single map. will horribly break things but speeds up compile/boot times. #define SKIP_FEA_SETUP 0 //Skip atmos setup #define SKIP_Z5_SETUP 0 //Skip z5 gen #ifdef IM_REALLY_IN_A_FUCKING_HURRY_HERE #define SKIP_FEA_SETUP 1 #define SKIP_Z5_SETUP 1 #define IM_TESTING_SHIT_STOP_BARFING_CHANGELOGS_AT_ME 1 //Skip changelogs #define I_DONT_WANNA_WAIT_FOR_THIS_PREGAME_SHIT_JUST_GO 1 //Automatically ready up and start the game ASAP. No input required. #endif #ifdef GOTTA_GO_FAST_BUT_ZLEVELS_TOO_SLOW #warn Only using one z-level. This will fuck everything up. You're gonna have a bad time. #endif //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! // MATH! #define eulers 2.7182818284 #define pi 3.14159265 #define NETWORK_MACHINE_RESET_DELAY 40 //Time (in 1/10 of a second) before we can be manually reset again (machines). #define LEVEL_HOST 6 #define LEVEL_CODER 5 #define LEVEL_SHITGUY 4 #define LEVEL_PA 3 #define LEVEL_ADMIN 2 #define LEVEL_SA 1 #define LEVEL_MOD 0 #define LEVEL_BABBY -1 #define SAVEFILE_VERSION_MIN 3 #define SAVEFILE_VERSION_MAX 8 #define SAVEFILE_PROFILES_MAX 5 #define CUSTOMJOB_SAVEFILE_PROFILES_MAX 15 #define CUSTOMJOB_SAVEFILE_VERSION_MIN 1 #define CUSTOMJOB_SAVEFILE_VERSION_MAX 3 #define ITEM_RARITY_POOR 1 #define ITEM_RARITY_COMMON 2 #define ITEM_RARITY_UNCOMMON 3 #define ITEM_RARITY_RARE 4 #define ITEM_RARITY_EPIC 5 #define ITEM_RARITY_LEGENDARY 6 #define ITEM_RARITY_MYTHIC 7 #define DIALOGUE_CLOSE 1 #define DIALOGUE_HOLD 2 #define TIME_DILATION_ENABLED 1 #define MIN_TICKLAG 0.4 //min value ticklag can be #define OVERLOADED_WORLD_TICKLAG 0.8 //max value ticklag can be #define TICKLAG_DILATION_INC 0.2 //how much to increase by when appropriate #define TICKLAG_DILATION_DEC 0.2 //how much to decrease by when appropriate //MBCX I DONT KNOW WHY BUT MOST VALUES CAUSE ROUNDING ERRORS, ITS VERY IMPORTANT THAT THIS REMAINS 0.2 FIOR NOW #define TICKLAG_DILATION_THRESHOLD 6 //these values dont make sense to you? read the math in gameticker #define TICKLAG_NORMALIZATION_THRESHOLD 0.8 //these values dont make sense to you? read the math in gameticker #define TICKLAG_DILATE_INTERVAL 20 #define OVERLOAD_PLAYERCOUNT 95 //when pcount is above this number on round start, increase ticklag to OVERLOADED_WORLD_TICKLAG to try to maintain smoothness #define OSHAN_LIGHT_OVERLOAD 18 //when pcount is above this number on game load, dont generate lighting surrounding the station because it lags the map to heck #define DEFAULT_CLICK_DELAY MIN_TICKLAG //used to be 1 #define COMBAT_CLICK_DELAY 10 #define CLICK_GRACE_WINDOW 0//2.5 //Alignment around the turf. Any can be combined with center (top and bottom for horizontal centering, left and right for vertical). #define TOOLTIP_BOTTOM 0 #define TOOLTIP_TOP 1 #define TOOLTIP_RIGHT 2 #define TOOLTIP_LEFT 4 #define TOOLTIP_CENTER 8 #define TOOLTIP_ALWAYS 1 #define TOOLTIP_NEVER 2 #define TOOLTIP_ALT 3 var/list/RARITY_COLOR = list( "#9d9d9d", "#ffffff", "#1eff00", "#0070dd", "#a335ee", "#ff8000", "#ff0000" ) //Action defines #define INTERRUPT_ALWAYS -1 //Internal flag that will always interrupt any action. #define INTERRUPT_MOVE 1 //Interrupted when object moves #define INTERRUPT_ACT 2 //Interrupted when object does anything #define INTERRUPT_ATTACKED 4 //Interrupted when object is attacked #define INTERRUPT_STUNNED 8//Interrupted when owner is stunned or knocked out etc. #define INTERRUPT_ACTION 16 //Interrupted when another action is started. #define ACTIONSTATE_STOPPED 1 //Action has not been started yet. #define ACTIONSTATE_RUNNING 2 //Action is in progress #define ACTIONSTATE_INTERRUPTED 4 //Action was interrupted #define ACTIONSTATE_ENDED 8 //Action ended succesfully #define ACTIONSTATE_DELETE 16 //Action is ready to be deleted. #define ACTIONSTATE_FINISH 32 //Will finish action after next process. #define ACTIONSTATE_INFINITE 64 //Will not finish unless interrupted. //Action defines END //Material flag defines #define MATERIAL_CRYSTAL 1 //Crystals, Minerals #define MATERIAL_METAL 2 //Metals #define MATERIAL_CLOTH 4 //Cloth or cloth-like #define MATERIAL_ORGANIC 8 //Coal, meat and whatnot. #define MATERIAL_ENERGY 16 //Is energy or outputs energy. #define MATERIAL_RUBBER 32 //Rubber , latex etc #define MATERIAL_ALPHA_OPACITY 190 //At which alpha do opague objects become see-through? //--- //Very specific cruiser defines #define CRUISER_FIREMODE_LEFT 1 //Fire only left weapon #define CRUISER_FIREMODE_RIGHT 2//Fire only right weapon #define CRUISER_FIREMODE_BOTH 4 //Fire both weapons #define CRUISER_FIREMODE_ALT 8 //Alternate between the weapons. //MINING Z LEVEL #define AST_MINSIZE 7 //Min range before rng kicks in #define AST_REDUCTION 9 //prob reduction per 1 tile over min size #define AST_SIZERANGE 4 //+- mod on asteroid size, i.e. 4 = 4 tiles smaller to 4 tiles larger. #define AST_TILERNG 20 //+- range of flat rng applied to tile placement #define AST_SEEDS 40 //Base amount of asteroid seeds. Actual amount of asteroids works out to be significantly less. #define AST_RNGWALKCNT 7 //Amount of asteroid tiles to dig out during random walk. #define AST_RNGWALKINST 5 //How many random walks should we do per asteroid. #ifdef UNDERWATER_MAP #define AST_NUMPREFABS 18 //How many prefabs to place. It'll try it's hardest to place this many at the very least. You're basically guaranteed this amount of prefabs. #define AST_NUMPREFABSEXTRA 6//Up to how many extra prefabs to place randomly. You might or might not get these extra ones. #else #define AST_NUMPREFABS 5 //How many prefabs to place. It'll try it's hardest to place this many at the very least. You're basically guaranteed this amount of prefabs. #define AST_NUMPREFABSEXTRA 3//Up to how many extra prefabs to place randomly. You might or might not get these extra ones. #endif #define AST_MAPSEEDBORDER 10 //Min distance from map edge for seeds. #define AST_MAPBORDER 3 //Absolute map border around generated content #define AST_ZLEVEL 5 //Zlevel for generation. //END #define MIN_EFFECTIVE_RAD 3 //How many rads after resistances before it actually does anything. Example: This is set to 3, someone takes rad damage that is reduced to 2 by resistances. Nothing happens as its below the min. of 3. #define FIRE_DAMAGE_MODIFIER 0.0215 //Higher values result in more external fire damage to the skin (default 0.0215) #define AIR_DAMAGE_MODIFIER 2.025 //More means less damage from hot air scalding lungs, less = more damage. (default 2.025) #define INFINITY 1e31 //closer then enough //#define nround(x, n) round(x, 10 ** n) //#define floor(x) round(x) //#define ceiling(x) -round(-x) #define ceil(x) (-round(-(x))) #define nround(x) (((x % 1) >= 0.5)?round(x):ceil(x)) //Don't set this very much higher then 1024 unless you like inviting people in to dos your server with message spam #define MAX_MESSAGE_LEN 1024 #define R_IDEAL_GAS_EQUATION 8.31 //kPa*L/(K*mol) #define ONE_ATMOSPHERE 101.325 //kPa #define CELL_VOLUME 2500 //liters in a cell #define MOLES_CELLSTANDARD (ONE_ATMOSPHERE*CELL_VOLUME/(T20C*R_IDEAL_GAS_EQUATION)) //moles in a 2.5 m^3 cell at 101.325 Pa and 20 degC #define O2STANDARD 0.21 #define N2STANDARD 0.79 // #define MOLES_O2STANDARD MOLES_CELLSTANDARD*O2STANDARD // O2 standard value (21%) #define MOLES_N2STANDARD MOLES_CELLSTANDARD*N2STANDARD // N2 standard value (79%) #define MOLES_PLASMA_VISIBLE 2 //Moles in a standard cell after which plasma is visible #define BREATH_VOLUME 0.5 //liters in a normal breath #define BREATH_PERCENTAGE BREATH_VOLUME/CELL_VOLUME //Amount of air to take a from a tile #define HUMAN_NEEDED_OXYGEN MOLES_CELLSTANDARD*BREATH_PERCENTAGE*0.16 //Amount of air needed before pass out/suffocation commences #define MINIMUM_AIR_RATIO_TO_SUSPEND 0.08 //Minimum ratio of air that must move to/from a tile to suspend group processing #define MINIMUM_AIR_TO_SUSPEND MOLES_CELLSTANDARD*MINIMUM_AIR_RATIO_TO_SUSPEND //Minimum amount of air that has to move before a group processing can be suspended #define MINIMUM_WATER_TO_SUSPEND MOLAR_DENSITY_WATER*CELL_VOLUME*MINIMUM_AIR_RATIO_TO_SUSPEND #define MINIMUM_MOLES_DELTA_TO_MOVE MOLES_CELLSTANDARD*MINIMUM_AIR_RATIO_TO_SUSPEND //Either this must be active #define MINIMUM_TEMPERATURE_TO_MOVE (T20C+100) //or this (or both, obviously) #define MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND 0.012 #define MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND 5 //Minimum temperature difference before group processing is suspended #define MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER 1 //Minimum temperature difference before the gas temperatures are just set to be equal #define MINIMUM_TEMPERATURE_FOR_SUPERCONDUCTION (T20C+10) #define MINIMUM_TEMPERATURE_START_SUPERCONDUCTION (T20C+200) #define FLOOR_HEAT_TRANSFER_COEFFICIENT 0.15 #define WALL_HEAT_TRANSFER_COEFFICIENT 0.12 #define SPACE_HEAT_TRANSFER_COEFFICIENT 0.20 //a hack to partly simulate radiative heat #define OPEN_HEAT_TRANSFER_COEFFICIENT 0.40 #define WINDOW_HEAT_TRANSFER_COEFFICIENT 0.18 //a hack for now //Must be between 0 and 1. Values closer to 1 equalize temperature faster //Should not exceed 0.4 else strange heat flow occur #define FIRE_MINIMUM_TEMPERATURE_TO_SPREAD (120+T0C) #define FIRE_MINIMUM_TEMPERATURE_TO_EXIST (100+T0C) #define FIRE_SPREAD_RADIOSITY_SCALE 0.85 #define FIRE_CARBON_ENERGY_RELEASED 500000 //Amount of heat released per mole of burnt carbon into the tile #define FIRE_PLASMA_ENERGY_RELEASED 3000000 //Amount of heat released per mole of burnt plasma into the tile #define FIRE_GROWTH_RATE 25000 //For small fires //Plasma fire properties #define PLASMA_MINIMUM_BURN_TEMPERATURE (100+T0C) #define PLASMA_UPPER_TEMPERATURE (2370+T0C) #define PLASMA_MINIMUM_OXYGEN_NEEDED 2 #define PLASMA_MINIMUM_OXYGEN_PLASMA_RATIO 30 #define PLASMA_OXYGEN_FULLBURN 10 #define T0C 273.15 // 0degC #define T20C 293.15 // 20degC #define TCMB 2.7 // -270.3degC #define OCEAN_TEMP 321.15 //48degC -- Not super realistic, but there's underwater hot vents! #define TRENCH_TEMP 274 //Right above freezing. #define BURNING_LV1 0 //Lv1 starts at this duration. #define BURNING_LV2 200 //Lv2 ^^ #define BURNING_LV3 400 //Lv3 ^^ #define TANK_LEAK_PRESSURE (30.*ONE_ATMOSPHERE) // Tank starts leaking #define TANK_RUPTURE_PRESSURE (40.*ONE_ATMOSPHERE) // Tank spills all contents into atmosphere #define TANK_FRAGMENT_PRESSURE (50.*ONE_ATMOSPHERE) // Boom 3x3 base explosion #define TANK_FRAGMENT_SCALE (10.*ONE_ATMOSPHERE) // +1 for each SCALE kPa aboe threshold // was 2 atm #define NORMPIPERATE 30 //pipe-insulation rate divisor #define HEATPIPERATE 8 //heat-exch pipe insulation #define FLOWFRAC 0.99 // fraction of gas transfered per process #define OCEAN_COLOR "#4DA0FD" #define OCEAN_LIGHT rgb(0.160 * 255, 0.60 * 255, 1.00 * 255, 0.65 * 255) #define TRENCH_LIGHT rgb(0.025 * 255, 0.05 * 255, 0.15 * 255, 0.70 * 255) // Defines the Mining Z level, change this when the map changes // all this does is set the z-level to be ignored by erebite explosion admin log messages // if you want to see all erebite explosions set this to 0 or -1 or something #define MINING_Z 5 //FLAGS BITMASK #define ONBACK 1 // can be put in back slot #define TABLEPASS 2 // can pass by a table or rack #define NODRIFT 4 // thing doesn't drift in space #define USEDELAY 8 // put this on either a thing you don't want to be hit rapidly, or a thing you don't want people to hit other stuff rapidly with #define EXTRADELAY 16 // 1 second extra delay on use #define NOSHIELD 32 // weapon not affected by shield. MBC also put this flag on cloak/shield device to minimize istype checking, so consider this more SHIELD_ACT (rename? idk) #define CONDUCT 64 // conducts electricity (metal etc.) #define ONBELT 128 // can be put in belt slot #define FPRINT 256 // takes a fingerprint #define ON_BORDER 512 // item has priority to check when entering or leaving #define DOORPASS 1024 // can pass through a closed door #define TALK_INTO_HAND 2048 //automagically talk into this object when a human is holding it (Phone handset!) #define OPENCONTAINER 4096 // is an open container for chemistry purposes #define ISADVENTURE 8192 // is an atom spawned in an adventure area #define NOSPLASH 16384 //No beaker etc. splashing. For Chem machines etc. #define SUPPRESSATTACK 32768 //No attack when hitting stuff with this item. #define FLUID_SUBMERGE 65536 //gets an overlay when submerged in fluid #define IS_PERSPECTIVE_FLUID 131072 //gets a perspective overlay from adjacent fluids #define ALWAYS_SOLID_FLUID 262144 //specifically note this object as solid // bitflags for clothing parts #define HEAD 1 #define TORSO 2 #define LEGS 4 #define ARMS 8 // other clothing-specific bitflags, applied via the c_flags var #define SPACEWEAR 1 // combined HEADSPACE and SUITSPACE into this because seriously?? #define MASKINTERNALS 2 // mask allows internals #define COVERSEYES 4 // combined COVERSEYES, COVERSEYES and COVERSEYES into this #define COVERSMOUTH 8 // combined COVERSMOUTH and COVERSMOUTH into this. #define ONESIZEFITSALL 16 // can be worn by fatties (or children? ugh) #define NOSLIP 32 // for galoshes/magic sandals/etc that prevent slipping on things #define SLEEVELESS 64 // ain't got no sleeeeeves #define BLOCKSMOKE 128 //block smoke inhalations (gas mask) #define IS_JETPACK 256 #define EQUIPPED_WHILE_HELD 512 //doesn't need to be worn to appear in the 'get_equipped_items' list and apply itemproperties (protections resistances etc)! for stuff like shields //clothing dirty flags (not used for anything other than submerged overlay update currently. eventually merge into update_clothing) #define C_BACK 1 #define C_MASK 2 #define C_LHAND 4 #define C_RHAND 8 #define C_BELT 16 #define C_ID 32 #define C_EARS 64 #define C_GLASSES 128 #define C_GLOVES 256 #define C_HEAD 512 #define C_SHOES 1024 #define C_SUIT 2048 #define C_UNIFORM 4096 //Suit blood flags #define SUITBLOOD_ARMOR 1 #define SUITBLOOD_COAT 2 // tool bitflags on items #define TOOL_CLAMPING 1 #define TOOL_CUTTING 2 #define TOOL_PRYING 4 #define TOOL_PULSING 8 #define TOOL_SAWING 16 #define TOOL_SCREWING 32 #define TOOL_SNIPPING 64 #define TOOL_SPOONING 128 #define TOOL_WELDING 256 #define TOOL_WRENCHING 512 #define TOOL_CHOPPING 1024 // for firaxes, does additional damage to doors. //event_handler_flags #define USE_PROXIMITY 1 //Atom implements HasProximity() call in some way. #define USE_FLUID_ENTER 2 //Atom implements EnteredFluid() call in some way. #define USE_GRAB_CHOKE 4 //Atom can be held as an item and have a grab inside it to choke somebuddy #define HANDLE_STICKER 8 //Atom implements var/active = XXX and responds to sticker removal methods (burn-off + acetone). this atom MUST have an 'active' var. im sory. #define USE_HASENTERED 16 //Atom implements HasEntered() call in some way. #define USE_CHECKEXIT 32 //Atom implements CheckExit() call in some way. #define USE_CANPASS 64 //Atom implements CanPass() call in some way. (doesnt affect turfs, put this on mobs or objs) #define IMMUNE_MANTA_PUSH 128 //cannot be pushed by MANTAwaters #define IMMUNE_SINGULARITY 256 #define IMMUNE_SINGULARITY_INACTIVE 512 #define IS_TRINKET 1024 //used for trinkets GC //TBD the rest //temp_flags lol for atoms and im gonna be constantly adding and removing these //this doesn't entirely make sense, cause some other flags are temporary too! ok im runnign otu OF FUCKING SPACE #define SPACE_PUSHING 1 //used for removing us from mantapush list when we get deleted #define MANTA_PUSHING 2 //used for removing us from spacepush list when we get beleted #define HAS_PARTICLESYSTEM 4 //atom has a particlesystem right now - used for clean gc to clear refs to itself etc blah #define HAS_PARTICLESYSTEM_TARGET 8 //atom is a particlesystem target - " " #define HAS_BAD_SMOKE 16 //atom has a bad smoke pointing to it right now - used for clean gc to clear refs to itself etc blah #define IS_LIMB_ITEM 32 //im a limb #define HAS_KUDZU 64 //if a turf has kudzu. //various mob_flags go here #define MOB_HEARS_ALL 1 //For mobs who can hear everything (mainly observer ghossts) #define SPEECH_REVERSE 2 //God Ecaps #define SPEECH_INTRUDER 4 //thing #define SPEECH_BLOB 8 //yes #define SEE_THRU_CAMERAS 16 //for ai eye #define IS_BONER 32 //for skeletals #define AT_GUNPOINT 64 //quick check for guns holding me at gunpoint //object_flags #define BOTS_DIRBLOCK 1 //bot considers this solid in pathfinding DirBlockedWithAccess #define NO_ARM_ATTACH 2 //illegal for arm attaching #define CAN_REPROGRAM_ACCESS 4 //access gun can reprog //deconstruction_flags #define DECON_NONE 0 #define DECON_SIMPLE 1 //no reqs, just deconstruct! #define DECON_SCREWDRIVER 2 #define DECON_WRENCH 4 #define DECON_CROWBAR 8 #define DECON_WELDER 16 #define DECON_WIRECUTTERS 32 #define DECON_MULTITOOL 64 #define DECON_BUILT 128 //flag added to something that is player-built #define DECON_ACCESS 256 //can only be deconstructed if access required is null //THROW flags (what kind of throw, we can have ddifferent kinds of throws ok) #define THROW_NORMAL 1 #define THROW_CHAIRFLIP 2 #define THROW_GUNIMPACT 4 //various sprint flags go here #define SPRINT_NORMAL 0 #define SPRINT_BAT 1 #define SPRINT_BAT_CLOAKED 2 #define SPRINT_SNIPER 4 //sound mute #define SOUND_NONE 0 #define SOUND_SPEECH 1 #define SOUND_BLAH 2 #define SOUND_ALL 4 #define SOUND_VOX 8 //various turf flags go here (todo : port some more shit over to turf flags) #define MOB_SLIP 1 //simulated floor slippage #define MOB_STEP 2 //simulated floor steppage #define IS_TYPE_SIMULATED 4 //lol idk this kind of sucks, but i guess i can avoid some type checks in atmos processing #define CAN_BE_SPACE_SAMPLE 8 //can atmos use this tile as a space sample? #define MANTA_PUSH 16 //turf is pushy. for manta #define FLUID_MOVE 32 //fluid move gear suffers no penalty on these turfs #define SPACE_MOVE 64 //space move gear suffers no penalty on these turfs // channel numbers for power #define EQUIP 1 #define LIGHT 2 #define ENVIRON 3 #define TOTAL 4 //for total power used only // bitflags for machine stat variable #define BROKEN 1 // machine non-functional #define NOPOWER 2 // no available power #define POWEROFF 4 // machine shut down, but may still draw a trace amount #define MAINT 8 // under maintainance #define HIGHLOAD 16 // using a lot of power // Radio (headset etc) colors. #define RADIOC_STANDARD "#008000" #define RADIOC_INTERCOM "#006080" #define RADIOC_COMMAND "#334E6D" #define RADIOC_SECURITY "#E00000" #define RADIOC_ENGINEERING "#BD8F15" #define RADIOC_MEDICAL "#461B7E" #define RADIOC_RESEARCH "#153E7E" #define RADIOC_CIVILIAN "#A10082" #define RADIOC_SYNDICATE "#962121" #define RADIOC_OTHER "#800080" // Frequency defines for headsets & intercoms (Convair880). #define R_FREQ_MINIMUM 1441 // Minimum "selectable" freq #define R_FREQ_MAXIMUM 1489 // Maximum "selectable" freq #define R_FREQ_DEFAULT 1459 #define R_FREQ_COMMAND 1358 #define R_FREQ_SECURITY 1359 #define R_FREQ_ENGINEERING 1357 #define R_FREQ_RESEARCH 1354 #define R_FREQ_MEDICAL 1356 #define R_FREQ_CIVILIAN 1355 #define R_FREQ_SYNDICATE 1352 // Randomized for nuke rounds. #define R_FREQ_GANG 1400 // Placeholder, it's actually randomized in gang rounds. #define R_FREQ_MULTI 1451 #define R_FREQ_INTERCOM_COLOSSEUM 1403 #define R_FREQ_INTERCOM_MEDICAL 1445 #define R_FREQ_INTERCOM_SECURITY 1485 #define R_FREQ_INTERCOM_BRIG 1489 #define R_FREQ_INTERCOM_RESEARCH 1443 #define R_FREQ_LOUDSPEAKERS 1438 #define R_FREQ_INTERCOM_ENGINEERING 1441 #define R_FREQ_INTERCOM_CARGO 1455 #define R_FREQ_INTERCOM_CATERING 1485 #define R_FREQ_INTERCOM_AI 1447 #define R_FREQ_INTERCOM_BRIDGE 1442 // let's start putting adventure zone factions in here #define R_FREQ_WIZARD 1089 // magic number, used in many magic tricks #define R_FREQ_INTERCOM_WIZARD 1089 #define R_FREQ_INTERCOM_OWLERY 1291 #define R_FREQ_INTERCOM_SYNDCOMMAND 6174 // kaprekar's constant, a unique and weird number #define R_FREQ_INTERCOM_TERRA8 1156 // 34 squared, octahedral number, centered pentagonal number, centered hendecagonal number #define R_FREQ_INTERCOM_HEMERA 777 // heh // These are for the Syndicate headset randomizer proc. #define R_FREQ_BLACKLIST_HEADSET list(R_FREQ_DEFAULT, R_FREQ_COMMAND, R_FREQ_SECURITY, R_FREQ_ENGINEERING, R_FREQ_RESEARCH, R_FREQ_MEDICAL, R_FREQ_CIVILIAN, R_FREQ_SYNDICATE, R_FREQ_GANG, R_FREQ_MULTI) #define R_FREQ_BLACKLIST_INTERCOM list(R_FREQ_INTERCOM_COLOSSEUM, R_FREQ_INTERCOM_MEDICAL, R_FREQ_INTERCOM_SECURITY, R_FREQ_INTERCOM_BRIG, R_FREQ_INTERCOM_RESEARCH, R_FREQ_INTERCOM_ENGINEERING, R_FREQ_INTERCOM_CARGO, R_FREQ_INTERCOM_CATERING, R_FREQ_INTERCOM_AI, R_FREQ_INTERCOM_BRIDGE) // HOLIDAYS // #define HALLOWEEN 1 #define XMAS 1 //#define CANADADAY 1 // so that you can move things around easily, in theory // before you use any of these, please make sure the HUD you are using them in is actually related to the ones they're used on, // so that we dont move the human HUD around and half the robot HUD winds up being all over the place (again) #define ui_invtoggle "CENTER-5, SOUTH" #define ui_belt "CENTER-4, SOUTH" #define ui_storage1 "CENTER-3, SOUTH" #define ui_storage2 "CENTER-2, SOUTH" #define ui_back "CENTER-1, SOUTH" #define ui_lhand "CENTER, SOUTH" #define ui_rhand "CENTER+1, SOUTH" #define ui_twohand "CENTER+0:16, SOUTH" #define ui_shoes "CENTER-5, SOUTH+1" #define ui_gloves "CENTER-4, SOUTH+1" #define ui_id "CENTER-3, SOUTH+1" #define ui_clothing "CENTER-2, SOUTH+1" #define ui_suit "CENTER-1, SOUTH+1" #define ui_glasses "CENTER, SOUTH+1" #define ui_ears "CENTER+1, SOUTH+1" #define ui_mask "CENTER+2, SOUTH+1" #define ui_head "CENTER+3, SOUTH+1" #define ui_throwing "CENTER+2, SOUTH" #define ui_intent "CENTER+3, SOUTH" #define ui_mintent "CENTER+5, SOUTH" #define ui_resist "CENTER+5, SOUTH" #define ui_pulling "CENTER+6, SOUTH" #define ui_rest "CENTER+6, SOUTH" #define ui_abiltoggle "CENTER-6, SOUTH" #define ui_stats "CENTER+7, SOUTH" #define ui_zone_sel "CENTER+4, SOUTH" #define ui_storage_area "1,8 to 1,1" #define ui_storage_close "1,1" #define tg_ui_invtoggle "WEST:6,SOUTH:5" #define tg_ui_belt "CENTER-3:9,SOUTH:5" #define tg_ui_storage1 "CENTER+1:20,SOUTH:5" #define tg_ui_storage2 "CENTER+2:22,SOUTH:5" #define tg_ui_back "CENTER-2:11,SOUTH:5" #define tg_ui_lhand "CENTER-1:15, SOUTH:5" #define tg_ui_rhand "CENTER+0:15, SOUTH:5" #define tg_ui_twohand "CENTER-1:31, SOUTH:5" #define tg_ui_shoes "WEST+1:8,SOUTH:5" #define tg_ui_gloves "WEST+2:10,SOUTH+1:7" #define tg_ui_id "CENTER-4:7,SOUTH:5" #define tg_ui_clothing "WEST:6,SOUTH+1:7" #define tg_ui_suit "WEST+1:8,SOUTH+1:7" #define tg_ui_glasses "WEST:6,SOUTH+2:9" #define tg_ui_ears "WEST+2:10,SOUTH+2:9" #define tg_ui_mask "WEST+1:8,SOUTH+2:9" #define tg_ui_head "WEST+1:8,SOUTH+3:11" #define tg_ui_throwing "EAST-1:28,SOUTH+1:7" #define tg_ui_intent "EAST-3:24,SOUTH:5" #define tg_ui_mintent "EAST-2:26,SOUTH:5" #define tg_ui_resist "EAST-3:24, SOUTH+1:7" #define tg_ui_pulling "EAST-2:26, SOUTH+1:7" #define tg_ui_rest "EAST-2:26,SOUTH+1:7" #define tg_ui_abiltoggle "WEST+2:9,SOUTH:5" #define tg_ui_stats "WEST+2:10,SOUTH:5" #define tg_ui_sprint "EAST-2:26,SOUTH:5" #define tg_ui_swaphands "CENTER:-1, SOUTH+1:2" #define tg_ui_equip "CENTER:-18, SOUTH+1:2" #define tg_ui_zone_sel "EAST-1:28,SOUTH:5" #define tg_ui_extra_buttons "EAST-4:22,SOUTH:5:1" #define ui_oxygen "EAST-3, NORTH" #define ui_toxin "EAST-5, NORTH" #define ui_internal "EAST, NORTH-1" #define ui_fire "EAST-4, NORTH" #define ui_rad "EAST-6, NORTH" #define ui_temp "EAST-2, NORTH" #define ui_health "EAST, NORTH" #define ui_stamina "EAST-1, NORTH" #define ui_pull "SOUTH,14" #define ui_acti "SOUTH,11" #define ui_movi "SOUTH,13" #define ui_module "SOUTH-1,6" #define ui_botradio "SOUTH-1,7" #define ui_bothealth "EAST+1, NORTH" #define ui_boto2 "EAST+1, NORTH-2" #define ui_botfire "EAST+1, NORTH-3" #define ui_bottemp "EAST+1, NORTH-4" #define ui_cell "EAST+1, NORTH-6" #define ui_botpull "SOUTH-1,14" #define ui_botstore "SOUTH-1,4" #define ui_panel "SOUTH-1,5" #define ui_iarrowleft "SOUTH-1,11" #define ui_iarrowright "SOUTH-1,13" #define ui_zone_select "SOUTH,12" #define ui_inv1 "SOUTH-1,1" #define ui_inv2 "SOUTH-1,2" #define ui_inv3 "SOUTH-1,3" /* //TESTING A LAYOUT #define ui_mask "SOUTH-1:-14,1:7" #define ui_headset "SOUTH-2:-14,1:7" #define ui_head "SOUTH-1:-14,1:51" #define ui_glasses "SOUTH-1:-14,2:51" #define ui_ears "SOUTH-1:-14,3:51" #define ui_oclothing "SOUTH-1:-49,1:51" #define ui_iclothing "SOUTH-2:-49,1:51" #define ui_shoes "SOUTH-3:-49,1:51" #define ui_back "SOUTH-1:-49,2:51" #define ui_lhand "SOUTH-2:-49,2:51" #define ui_rhand "SOUTH-2:-49,0:51" #define ui_gloves "SOUTH-3:-49,0:51" #define ui_belt "SOUTH-2:-49,1:127" #define ui_id "SOUTH-2:-49,2:127" #define ui_storage1 "SOUTH-3:-49,1:127" #define ui_storage2 "SOUTH-3:-49,2:127" #define ui_dropbutton "SOUTH-3,12" #define ui_swapbutton "SOUTH-1,13" #define ui_resist "SOUTH-3,14" #define ui_throw "SOUTH-3,15" #define ui_oxygen "EAST+1, NORTH-4" #define ui_toxin "EAST+1, NORTH-6" #define ui_internal "EAST+1, NORTH-2" #define ui_fire "EAST+1, NORTH-8" #define ui_temp "EAST+1, NORTH-10" #define ui_health "EAST+1, NORTH-11" #define ui_pull "WEST+6,SOUTH-2"1 #define ui_hand "SOUTH-1,6" #define ui_sleep "EAST+1, NORTH-13" #define ui_rest "EAST+1, NORTH-14" //TESTING A LAYOUT */ // gameticker #define GAME_STATE_WORLD_INIT 1 #define GAME_STATE_PREGAME 2 #define GAME_STATE_SETTING_UP 3 #define GAME_STATE_PLAYING 4 #define GAME_STATE_FINISHED 5 //States for airlock_control #define ACCESS_STATE_INTERNAL -1 #define ACCESS_STATE_LOCKED 0 #define ACCESS_STATE_EXTERNAL 1 #define AIRLOCK_STATE_INOPEN -2 #define AIRLOCK_STATE_PRESSURIZE -1 #define AIRLOCK_STATE_CLOSED 0 #define AIRLOCK_STATE_DEPRESSURIZE 1 #define AIRLOCK_STATE_OUTOPEN 2 #define AIRLOCK_CONTROL_RANGE 5 #define DATALOGGER #define CREW_OBJECTIVES #define MISCREANTS //mob intent type defines #define INTENT_HARM "harm" #define INTENT_DISARM "disarm" #define INTENT_HELP "help" #define INTENT_GRAB "grab" //#define RESTART_WHEN_ALL_DEAD 1 //#define PLAYSOUND_LIMITER //Projectile damage type defines #define D_KINETIC 1 #define D_PIERCING 2 #define D_SLASHING 4 #define D_ENERGY 8 #define D_BURNING 16 #define D_RADIOACTIVE 32 #define D_TOXIC 48 #define D_SPECIAL 128 //Missing limb flags #define LIMB_LEFT_ARM 1 #define LIMB_RIGHT_ARM 2 #define LIMB_LEFT_LEG 4 #define LIMB_RIGHT_LEG 8 // see in dark levels #define SEE_DARK_FULL 8 #define SEE_DARK_HUMAN 3 //stamina config #define STAMINA_MAX 200 //Default max stamina value #define STAMINA_REGEN 10 //Default stamina regeneration rate. #define STAMINA_ITEM_DMG 20 //Default stamina damage objects do. #define STAMINA_ITEM_COST 18 //Default attack cost on user for attacking with items. #define STAMINA_HTH_DMG 30 //Default hand-to-hand (punch, kick) stamina damage. #define STAMINA_HTH_COST 20 //Default hand-to-hand (punch, kick) stamina cost #define STAMINA_MIN_ATTACK 91 //The minimum amount of stamina required to attack. #define STAMINA_NEG_CAP -75 //How far into the negative we can take stamina. (People will be stunned while stamina regens up to > 0 - so this can lead to long stuns if set too high) #define STAMINA_NEG_CAP_STUN_TIME 60 //When we reach the neg cap, how long to paralyze? #define STAMINA_STUN_TIME 5 //How long we will be stunned for, for being <= 0 stamina #define STAMINA_STUN_CRIT_TIME 8 //How long we will be stunned for, for being <= NEGCAP stamina #define STAMINA_GRAB_COST 25 //How much grabbing someone costs. #define STAMINA_DISARM_COST 5 //How much disarming someone costs. #define STAMINA_FLIP_COST 25 //How much flipping / suplexing costs. #define STAMINA_CRIT_CHANCE 25 //Base chance of landing a critical hit to stamina. #define STAMINA_CRIT_DIVISOR 2 //Divide stamina by how much on a crit #define STAMINA_BLOCK_CHANCE 40 //Chance to block an attack in disarm mode. Settings this to 0 effectively disables the blocking system. #define STAMINA_GRAB_BLOCK_CHANCE 85 //Chance to block grabs. #define STAMINA_DEFAULT_BLOCK_COST 7 //Cost of blocking an attack. #define STAMINA_LOW_COST_KICK 1 //Does kicking people on the ground cost less stamina ? (Right now it doesnt cost less but rather refunds some because kicking people on the ground is very relaxing OKAY) #define STAMINA_NO_ATTACK_CAP 1 //Attacks only cost stamina up to the min atttack cap. after that they are free #define STAMINA_NEG_CRIT_KNOCKOUT 0 //Getting crit below or at 0 stamina will always knock out #define STAMINA_WINDED_SPEAK_MIN 0 //Can't speak below this point. #define STAMINA_SPRINT 50 //can only sprint above this number #define STAMINA_COST_SPRINT 8 //cost of moving in sprint //This is a bad solution. Optimally this should scale. #define STAMINA_MIN_WEIGHT_CLASS 2 //Minimum weightclass (w_class) of an item that allows for knock-outs and critical hits. //This is the last resort option for the RNG lovers. #define STAMINA_STUN_ON_CRIT 0 //Getting crit stuns the affected person for a short moment? #define STAMINA_STUN_ON_CRIT_SEV 2 //How long people get stunned on crits #define STAMINA_CRIT_DROP 0 //If 1, stamina crits will instantly set a targets stamina to the number set below instead of doing a multiplier. #define STAMINA_CRIT_DROP_NUM 1 //Amount of stamina to drop to on a crit. //////////////////////////////////////////////////// #define STAMINA_SCALING_KNOCKOUT_BASE 20 //Base chance at 0 stamina to be knocked out by an attack - scales up the lower stamina goes. #define STAMINA_SCALING_KNOCKOUT_SCALER 60 //Up to which *additional* value the chance will scale with lower stamina nearly the negative cap #define STAMINA_EXHAUSTED_STR "

You are too exhausted to attack.

" //The message tired people get when they try to attack. #define STAMINA_DEFAULT_FART_COST 0 //How much farting costs. I am not even kidding. #define USE_STAMINA_DISORIENT //use the new stamina based stun disorient system thingy //reagent_container bit flags #define RC_SCALE 1 // has a graduated scale, so total reagent volume can be read directly (e.g. beaker) #define RC_VISIBLE 2 // reagent is visible inside, so color can be described #define RC_FULLNESS 4 // can estimate fullness of container #define RC_SPECTRO 8 // spectroscopic glasses can analyse contents // blood system and item damage things #define DAMAGE_BLUNT 1 #define DAMAGE_CUT 2 #define DAMAGE_STAB 4 #define DAMAGE_BURN 8 // a) this is an excellent idea and b) why do we still use damtype strings then #define DAMAGE_CRUSH 16 // crushing damage is technically blunt damage, but it causes bleeding #define DEFAULT_BLOOD_COLOR "#990000" // speak for yourself, as a shapeshifting illuminati lizard, my blood is somewhere between lime and leaf green // Process Scheduler defines // Process status defines #define PROCESS_STATUS_IDLE 1 #define PROCESS_STATUS_QUEUED 2 #define PROCESS_STATUS_RUNNING 3 #define PROCESS_STATUS_MAYBE_HUNG 4 #define PROCESS_STATUS_PROBABLY_HUNG 5 #define PROCESS_STATUS_HUNG 6 // Process time thresholds #define PROCESS_DEFAULT_HANG_WARNING_TIME 3000 // 300 seconds #define PROCESS_DEFAULT_HANG_ALERT_TIME 6000 // 600 seconds #define PROCESS_DEFAULT_HANG_RESTART_TIME 9000 // 900 seconds #define PROCESS_DEFAULT_SCHEDULE_INTERVAL 50 // 50 ticks #define PROCESS_DEFAULT_TICK_ALLOWANCE 15 // 15% of one tick /** Delete queue defines */ #define MIN_DELETE_CHUNK_SIZE 1 #define MAX_DELETE_CHUNK_SIZE 100 // attack message flags #define SUPPRESS_BASE_MESSAGE 1 #define SUPPRESS_SOUND 2 #define SUPPRESS_VISIBLE_MESSAGES 4 #define SUPPRESS_SHOWN_MESSAGES 8 #define SUPPRESS_LOGS 16 // used by limbs which make a special kind of melee attack happen #define SUPPRESS_MELEE_LIMB 15 #define GRAB_PASSIVE 0 #define GRAB_AGGRESSIVE 1 #define GRAB_NECK 2 #define GRAB_KILL 3 #define GRAB_PIN 4 #define DISORIENT_MISSTEP_CHANCE 40 #define STEP_PRIORITY_MAX 2 #define STEP_PRIORITY_MED 1 #define STEP_PRIORITY_LOW 0.5 #define STEP_PRIORITY_NONE 0 //I feel like these should be a thing, ok #define true 1 #define false 0 //How much stuff is allowed in the pools before the lifeguard throws them into the deletequeue instead. A shameful lifeguard. #define DEFAULT_POOL_SIZE 150 //#define DETAILED_POOL_STATS #define LOOC_RANGE 8 #define DELETE_STOP 0 #define DELETE_RUNNING 1 #define DELETE_CHECK 2 #define LAG_LOW 13 #define LAG_MED 20 #define LAG_HIGH 40 #define LAG_REALTIME 66 #define HEARING_NORMAL 0 #define HEARING_BLOCKED 1 #define HEARING_ANTIDEAF -1 #define AMBIENCE_LOOPING 1 #define AMBIENCE_FX_1 2 #define AMBIENCE_FX_2 3 #define SOUNDCHANNEL_LOOPING 123 #define SOUNDCHANNEL_FX_1 124 #define SOUNDCHANNEL_FX_2 125 // shoes! #define LACES_NORMAL 0 #define LACES_TIED 1 #define LACES_CUT 2 #define LACES_NONE -1 //moved from computerfiles.dm //File permission flags #define COMP_ROWNER 1 #define COMP_WOWNER 2 #define COMP_DOWNER 4 #define COMP_RGROUP 8 #define COMP_WGROUP 16 #define COMP_DGROUP 32 #define COMP_ROTHER 64 #define COMP_WOTHER 128 #define COMP_DOTHER 256 #define COMP_HIDDEN 0 #define COMP_ALLACC 511 //moved from chem #define SOLID 1 #define LIQUID 2 #define GAS 3 //fluid pipe defines #define FLUIDPIPE_NORMAL 1 #define FLUIDPIPE_SOURCE 2 #define FLUIDPIPE_SINK 3 #define DEFAULT_FLUID_CAPACITY 100 //moved from chemistry-holder.dm #define TOUCH 1 #define INGEST 2 #define INJECT 3 #define MAX_TEMP_REACTION_VARIANCE 8 //moved from communications.dm #define TRANSMISSION_WIRE 0 #define TRANSMISSION_RADIO 1 //moved from power/lighting.dm #define LIGHT_OK 0 #define LIGHT_EMPTY 1 #define LIGHT_BROKEN 2 #define LIGHT_BURNED 3 //moved from shipalert.dm #define SHIP_ALERT_GOOD 0 #define SHIP_ALERT_BAD 1 // where you at, dawg, where you where you at, shuttle_controller.dm #define SHUTTLE_LOC_CENTCOM 0 #define SHUTTLE_LOC_STATION 1 #define SHUTTLE_LOC_TRANSIT 1.5 #define SHUTTLE_LOC_RETURNED 2 //moved from guardbot.dm because i wanna use this list of buddy hats on some critters #define BUDDY_HATS list("detective","hoscap","hardhat0","hardhat1","hosberet","ntberet","chef","souschef","captain","centcom","centcom-red","tophat","ptophat","mjhat","plunger","cake0","cake1","butt","santa","yellow","blue","red","green","black","white","psyche","wizard","wizardred","wizardpurple","witch","obcrown","macrown","safari","dolan","viking","mailcap","bikercap","paper","apprentice","chavcap","policehelm","captain-fancy","rank-fancy","mime_beret","mime_bowler") #define EYEBLIND_L 1 // for calculating human eye funkery #define EYEBLIND_R 2 #define ENSURE_IMAGE(x, y, z) if(!x) x = image(icon = y, icon_state = z); else x.icon_state = z // preference datum limits #define NAME_CHAR_MAX 16 #define NAME_CHAR_MIN 2 #define FLAVOR_CHAR_LIMIT 256 #define FULLNAME_MAX 50 //JOB EXPERIENCE STUFF BELOW #define XP_ROUND_CAP 6000 //Hard CAP on XP earned per round, used to prevent exploiting. #define XP_GLOBAL_MOD 1 //Global multiplier for xp earned. normalXP * XP_GLOBAL_MOD. For events or adjustments. #define XP_CONSTANT 0.2 //Constant for scaling the XP curve. #define XP_FOR_LEVEL(LV) (((LV/XP_CONSTANT)**2)) //Returns XP required for the given level. #define LEVEL_FOR_XP(XP) (XP_CONSTANT * sqrt(XP))//Returns the level for the given amount of XP. Recommend rounding it down. //Defines the range of time that is throttled, see below. Currently very roughly one minute "game time". #define XP_THROTTLE_TICKS 600 //This much XP is allowed per XP_THROTTLE_TICKS. Should prevent people from exploiting certain things. This cap is ignored if a person if awarded XP in excess of this cap in one burst. //Roughly 2 times the expected XP per minute, currently. #define XP_THROTTLE_AMT 10 //Short macro that will give USR in the current context XP amount if they have the appropriate job. //USR_JOB_XP("Clown", 5) //Would give usr 5xp if they are a clown. #define USR_JOB_XP(JOB, XP) if(usr.job == JOB && usr.key) award_xp(usr.key, JOB, XP) //Short macro that will give TRG, XP amount if they have the appropriate job. //JOB_XP(someMobHere, "Clown", 5) //Would give someMobHere 5xp if they are a clown. #define JOB_XP(TRG, JOB, XP) if(ismob(TRG) && TRG:job == JOB && TRG:key) award_xp(TRG:key, JOB, XP) //0.2, 25, 100, 225, 400, 625 ... 7=1225,10=2500,20=10000,30=22500,50=62500,100=250000 //Say a round lasts 60 minutes. Level 5 should take 2 hours. ?? //TOTAL TIME SPENT FOR LEVELS WITH CONSTANT 0.2, LV5@2hours, 5.2XP per min: //625XP/120m,5.2XP-min.lv5=2 hours, lv7=3.9 hours, lv10=8 hours, lv20=32.05 hours, lv30=72,1 hours, lv50=200 hours, lv100=801 hours/33 days //JOB EXPERIENCE STUFF END //This is here because it's used literally everywhere in the codebase below this. #define LAGCHECK(x) if (lagcheck_enabled && world.tick_usage > x) sleep(world.tick_lag) //Define clientside tick lag seperately from world.tick_lag //'cause smoothness looks good. // Glides are supposed to automatically adjust to client framerate. HOWEVER THEY DO NOT :: http://www.byond.com/forum/?post=2241289 // We do the glide size compensation manually in the relevant places. #define CLIENTSIDE_TICK_LAG_SMOOTH 0.25 //fuck me, I have no idea why there's only 2 framerates that handle smooth glides for us. It's probably because byond is bugged. //anyway just putting this define here for the client framerate toggle button between SMOOTH AND CHUNKY OH YEAH #define CLIENTSIDE_TICK_LAG_CHUNKY 0.4 //its the future now #define CLIENTSIDE_TICK_LAG_CREAMY 0.15 //MBC : I should have added defines like these earlier - most widescreen bits aren't using them as of now! #define WIDE_TILE_WIDTH 21 #define SQUARE_TILE_WIDTH 15 //The value of mapvotes. A passive vote is one done through player preferences, an active vote is one where the player actively chooses a map #define MAPVOTE_PASSIVE_WEIGHT 0.25 #define MAPVOTE_ACTIVE_WEIGHT 1.0 //for light queue - when should we queue? and when should we pause processing our dowork loop? #define LIGHTING_MAX_TICKUSAGE 90 //Twitch plays shitty bill! //#define TWITCH_BOT_ALLOWED #define TWITCH_BOT_ADDR "142.93.72.14" #define TWITCH_BOT_CKEY "twitchbill" #define IS_TWITCH_CONTROLLED(M) (M.client && M.client.ckey == TWITCH_BOT_CKEY) #define TWITCH_BOT_AUTOCLOSE_BLOCK(X) (X == "mainwindow" || X == "screenSizeHelper") #define TWITCH_BOT_INTERACT_BLOCK(X) (istype(X,/obj/item/hand_labeler) || istype(X,/obj/item/paper) || istype(X,/obj/storage/crate/loot) || istype(X,/obj/machinery/vending) || istype(X,/obj/submachine/ATM) || istype(X,/obj/item/pen/crayon)) // Enables RP mode (normally set by build process, but you can enable it locally here! wow!) // #define RP_MODE //Ass Jam! enables a bunch of wacky and not-good features. BUILD LOCALLY!!! #ifdef RP_MODE #define ASS_JAM 0 #elif BUILD_TIME_DAY == 13 #define ASS_JAM 1 #else #define ASS_JAM 0 #endif #if ASS_JAM #warn Building with ASS_JAM features enabled. Toggle this by changing BUILD_TIME_DAY in __build.dm //#else //#warn Building with ASS_JAM features disabled. Toggle this by setting BUILD_TIME_DAY == 13 in __build.dm //#warn Feel free to ban whoever added the above warning. //bluh bluh bluh im a crusty old coder who hates knowing things bluh bluh #endif #ifdef Z_LOG_ENABLE #define Z_LOG(LEVEL, WHAT, X) world.log << "\[[world.timeofday]\] [WHAT] ([LEVEL]) " + X #define Z_LOG_DEBUG(WHAT, X) Z_LOG("DEBUG", WHAT, X) #define Z_LOG_INFO(WHAT, X) Z_LOG("INFO", WHAT, X) #define Z_LOG_WARN(WHAT, X) Z_LOG("WARN", WHAT, X) #define Z_LOG_ERROR(WHAT, X) Z_LOG("ERROR", WHAT, X) #else #define Z_LOG(LEVEL, WHAT, X) // #define Z_LOG_DEBUG(WHAT, X) // #define Z_LOG_INFO(WHAT, X) // #define Z_LOG_WARN(WHAT, X) // #define Z_LOG_ERROR(WHAT, X) // #endif //Activates the viscontents warps #define NON_EUCLIDEAN 1 #define CURRENT_SPACE_YEAR 2053 // Used for /datum/respawn_controller - DOES NOT COVER ALL RESPAWNS YET #define DEFAULT_RESPAWN_TIME 18000 #define RESPAWNS_ENABLED 0 #if DM_BUILD > 1490 #define lentext length #endif #define VOLUME_CHANNEL_MASTER 0 #define VOLUME_CHANNEL_GAME 1 #define VOLUME_CHANNEL_AMBIENT 2 #define VOLUME_CHANNEL_RADIO 3 #define VOLUME_CHANNEL_ADMIN 4 //ex: var/time = 10 SECONDS #define SECONDS *10 #define MINUTES *600 #define HOURS *36000 #define SECOND *10 #define MINUTE *600 #define HOUR *36000 #define WATTS *1 #define METERS *1 #define KILOGRAMS *1 #define AMPERES *1 #define KELVIN *1 #define MOLES *1 #define CANDELAS *1 #define WATT *1 #define METER *1 #define KILOGRAM *1 #define AMPERE *1 #define MOLE *1 #define CANDELA *1 #define YOTTA *(10**24) #define ZETTA *(10**21) #define EXA *(10**18) #define PETA *(10**15) #define TERA *(10**12) #define GIGA *(10**9) #define MEGA *(10**6) #define KILO *(10**3) #define HECTO *(10**2) #define DEKA *(10**1) #define DECI *(10**-1) #define CENTI *(10**-2) #define MILLI *(10**-3) #define MICRO *(10**-6) #define NANO *(10**-9) #define PICO *(10**-12) #define FEMTO *(10**-15) #define ATTO *(10**-18) #define ZEPTO *(10**-21) #define YOCTO *(10**-24) //Auditing //Whether or not a potentially suspicious action gets denied by the code. #define AUDIT_ACCESS_DENIED (0 << 1) //Logged whenever you try to View Variables a thing #define AUDIT_VIEW_VARIABLES (1 << 1)