mirror of
https://github.com/goonstation/goonstation-2020.git
synced 2026-07-10 14:42:20 +01:00
1043 lines
41 KiB
Plaintext
1043 lines
41 KiB
Plaintext
/* 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 "<p style=\"color:red;font-weight:bold;\">You are too exhausted to attack.</p>" //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) |