mirror of
https://github.com/fulpstation/fulpstation.git
synced 2025-12-09 16:09:15 +00:00
Several months worth of updates. --------- Co-authored-by: A miscellaneous Fern <80640114+FernandoJ8@users.noreply.github.com> Co-authored-by: Pepsilawn <reisenrui@gmail.com> Co-authored-by: Ray <64306407+OneAsianTortoise@users.noreply.github.com> Co-authored-by: Cure221 <106662180+Cure221@users.noreply.github.com>
339 lines
14 KiB
Plaintext
339 lines
14 KiB
Plaintext
#define ALL (~0) //For convenience.
|
|
#define NONE 0
|
|
|
|
GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768))
|
|
|
|
/* Directions */
|
|
///All the cardinal direction bitflags.
|
|
#define ALL_CARDINALS (NORTH|SOUTH|EAST|WEST)
|
|
|
|
// for /datum/var/datum_flags
|
|
#define DF_USE_TAG (1<<0)
|
|
#define DF_VAR_EDITED (1<<1)
|
|
#define DF_ISPROCESSING (1<<2)
|
|
/// Placed on datums that have a static, constant reference. Primarily only used for turfs.
|
|
#define DF_STATIC_OBJECT (1<<3)
|
|
|
|
//FLAGS BITMASK
|
|
// scroll down before changing the numbers on these
|
|
|
|
/// Is this object currently processing in the atmos object list?
|
|
#define ATMOS_IS_PROCESSING_1 (1<<0)
|
|
/// item has priority to check when entering or leaving
|
|
#define ON_BORDER_1 (1<<1)
|
|
///Whether or not this atom shows screentips when hovered over
|
|
#define NO_SCREENTIPS_1 (1<<2)
|
|
/// Prevent clicking things below it on the same turf eg. doors/ fulltile windows
|
|
#define PREVENT_CLICK_UNDER_1 (1<<3)
|
|
///specifies that this atom is a hologram that isn't real
|
|
#define HOLOGRAM_1 (1<<4)
|
|
///Whether /atom/Initialize() has already run for the object
|
|
#define INITIALIZED_1 (1<<5)
|
|
/// was this spawned by an admin? used for stat tracking stuff.
|
|
#define ADMIN_SPAWNED_1 (1<<6)
|
|
/// should not get harmed if this gets caught by an explosion?
|
|
#define PREVENT_CONTENTS_EXPLOSION_1 (1<<7)
|
|
/// Should this object be paintable with very dark colors?
|
|
#define ALLOW_DARK_PAINTS_1 (1<<8)
|
|
/// Should this object be unpaintable?
|
|
#define UNPAINTABLE_1 (1<<9)
|
|
/// Is this atom immune to being dusted by the supermatter?
|
|
#define SUPERMATTER_IGNORES_1 (1<<10)
|
|
/// If a turf can be made dirty at roundstart. This is also used in areas.
|
|
#define CAN_BE_DIRTY_1 (1<<11)
|
|
/// Should we use the initial icon for display? Mostly used by overlay only objects
|
|
#define HTML_USE_INITAL_ICON_1 (1<<12)
|
|
/// Can players recolor this in-game via vendors (and maybe more if support is added)?
|
|
#define IS_PLAYER_COLORABLE_1 (1<<13)
|
|
/// Whether or not this atom has contextual screentips when hovered OVER
|
|
#define HAS_CONTEXTUAL_SCREENTIPS_1 (1<<14)
|
|
/// Whether or not this atom is storing contents for a disassociated storage object
|
|
#define HAS_DISASSOCIATED_STORAGE_1 (1<<15)
|
|
/// If this atom has experienced a decal element "init finished" sourced appearance update
|
|
/// We use this to ensure stacked decals don't double up appearance updates for no reason
|
|
/// Flag as an optimization, don't make this a trait without profiling
|
|
/// Yes I know this is a stupid flag, no you can't take him from me
|
|
#define DECAL_INIT_UPDATE_EXPERIENCED_1 (1<<16)
|
|
/// This atom always returns its turf in get_turf_pixel instead of the turf from its offsets
|
|
#define IGNORE_TURF_PIXEL_OFFSET_1 (1<<17)
|
|
/// This atom does not need to generate its own preview icon for GAGS
|
|
#define NO_NEW_GAGS_PREVIEW_1 (1<<18)
|
|
|
|
// Update flags for [/atom/proc/update_appearance]
|
|
/// Update the atom's name
|
|
#define UPDATE_NAME (1<<0)
|
|
/// Update the atom's desc
|
|
#define UPDATE_DESC (1<<1)
|
|
/// Update the atom's icon state
|
|
#define UPDATE_ICON_STATE (1<<2)
|
|
/// Update the atom's overlays
|
|
#define UPDATE_OVERLAYS (1<<3)
|
|
/// Update the atom's greyscaling
|
|
#define UPDATE_GREYSCALE (1<<4)
|
|
/// Update the atom's smoothing. (More accurately, queue it for an update)
|
|
#define UPDATE_SMOOTHING (1<<5)
|
|
/// Update the atom's icon
|
|
#define UPDATE_ICON (UPDATE_ICON_STATE|UPDATE_OVERLAYS)
|
|
|
|
/// If the thing can reflect light (lasers/energy)
|
|
#define RICOCHET_SHINY (1<<0)
|
|
/// If the thing can reflect matter (bullets/bomb shrapnel)
|
|
#define RICOCHET_HARD (1<<1)
|
|
|
|
//TURF FLAGS
|
|
/// If a turf can't be jaunted through.
|
|
#define NOJAUNT (1<<0)
|
|
/// If a turf is an unused reservation turf awaiting assignment
|
|
#define UNUSED_RESERVATION_TURF (1<<1)
|
|
/// If a turf is a reserved turf
|
|
#define RESERVATION_TURF (1<<2)
|
|
/// Blocks lava rivers being generated on the turf.
|
|
#define NO_LAVA_GEN (1<<3)
|
|
/// Blocks ruins spawning on the turf.
|
|
#define NO_RUINS (1<<4)
|
|
/// Blocks this turf from being rusted
|
|
#define NO_RUST (1<<5)
|
|
/// Is this turf is "solid". Space and lava aren't for instance
|
|
#define IS_SOLID (1<<6)
|
|
/// This turf will never be cleared away by other objects on Initialize.
|
|
#define NO_CLEARING (1<<7)
|
|
/// This atom is a pseudo-floor that blocks map generation's checkPlaceAtom() from placing things like trees ontop of it.
|
|
#define TURF_BLOCKS_POPULATE_TERRAIN_FLORAFEATURES (1<<8)
|
|
|
|
|
|
////////////////Area flags\\\\\\\\\\\\\\
|
|
/// If it's a valid territory for cult summoning or the CRAB-17 phone to spawn
|
|
#define VALID_TERRITORY (1<<0)
|
|
/// If blobs can spawn there and if it counts towards their score.
|
|
#define BLOBS_ALLOWED (1<<1)
|
|
/// If mining tunnel generation is allowed in this area
|
|
#define CAVES_ALLOWED (1<<2)
|
|
/// If flora are allowed to spawn in this area randomly through tunnel generation
|
|
#define FLORA_ALLOWED (1<<3)
|
|
/// If mobs can be spawned by natural random generation
|
|
#define MOB_SPAWN_ALLOWED (1<<4)
|
|
/// If megafauna can be spawned by natural random generation
|
|
#define MEGAFAUNA_SPAWN_ALLOWED (1<<5)
|
|
/// Are you forbidden from teleporting to the area? (centcom, mobs, wizard, hand teleporter)
|
|
#define NOTELEPORT (1<<6)
|
|
/// Hides area from player Teleport function.
|
|
#define HIDDEN_AREA (1<<7)
|
|
/// If false, loading multiple maps with this area type will create multiple instances.
|
|
#define UNIQUE_AREA (1<<8)
|
|
/// If people are allowed to suicide in it. Mostly for OOC stuff like minigames
|
|
#define BLOCK_SUICIDE (1<<9)
|
|
/// If set, this area will be innately traversable by Xenobiology camera consoles.
|
|
#define XENOBIOLOGY_COMPATIBLE (1<<10)
|
|
/// If blood cultists can draw runes or build structures on this AREA.
|
|
#define CULT_PERMITTED (1<<11)
|
|
/// If engravings are persistent in this area
|
|
#define PERSISTENT_ENGRAVINGS (1<<12)
|
|
/// Mobs that die in this area don't produce a dead chat message
|
|
#define NO_DEATH_MESSAGE (1<<13)
|
|
/// This area should have extra shielding from certain event effects
|
|
#define EVENT_PROTECTED (1<<14)
|
|
/// This Area Doesn't have Flood or Bomb Admin Messages, but will still log
|
|
#define QUIET_LOGS (1<<15)
|
|
/// This area does not allow virtual entities to enter.
|
|
#define VIRTUAL_SAFE_AREA (1<<16)
|
|
/// This area does not allow the Binary channel
|
|
#define BINARY_JAMMING (1<<17)
|
|
/// This area prevents Bag of Holding rifts from being opened.
|
|
#define NO_BOH (1<<18)
|
|
/// This area prevents fishing from removing unique/limited loot from sources that're also used outside of it.
|
|
#define UNLIMITED_FISHING (1<<19)
|
|
/// This area is prevented from having gravity (ie. space, nearstation, or outside solars)
|
|
#define NO_GRAVITY (1<<20)
|
|
/// This area can be teleported in, but -only- to locations within that same area.
|
|
#define LOCAL_TELEPORT (1<<21)
|
|
|
|
/*
|
|
These defines are used specifically with the atom/pass_flags bitmask
|
|
the atom/checkpass() proc uses them (tables will call movable atom checkpass(PASSTABLE) for example)
|
|
*/
|
|
//flags for pass_flags
|
|
/// Allows you to pass over tables.
|
|
#define PASSTABLE (1<<0)
|
|
/// Allows you to pass over glass(this generally includes anything see-through that's glass-adjacent, ie. windows, windoors, airlocks with glass, etc.)
|
|
#define PASSGLASS (1<<1)
|
|
/// Allows you to pass over grilles.
|
|
#define PASSGRILLE (1<<2)
|
|
/// Allows you to pass over blob tiles.
|
|
#define PASSBLOB (1<<3)
|
|
/// Allows you to pass over mobs.
|
|
#define PASSMOB (1<<4)
|
|
/// Allows you to pass over closed turfs, ie. walls.
|
|
#define PASSCLOSEDTURF (1<<5)
|
|
/// Let thrown things past us. **ONLY MEANINGFUL ON pass_flags_self!**
|
|
#define LETPASSTHROW (1<<6)
|
|
/// Allows you to pass over machinery, ie. vending machines, computers, protolathes, etc.
|
|
#define PASSMACHINE (1<<7)
|
|
/// Allows you to pass over structures, ie. racks, tables(if you don't already have PASSTABLE), etc.
|
|
#define PASSSTRUCTURE (1<<8)
|
|
/// Allows you to pass over plastic flaps, often found at cargo or MULE dropoffs.
|
|
#define PASSFLAPS (1<<9)
|
|
/// Allows you to pass over airlocks and mineral doors.
|
|
#define PASSDOORS (1<<10)
|
|
/// Allows you to pass over vehicles, ie. mecha, secways, the pimpin' ride, etc.
|
|
#define PASSVEHICLE (1<<11)
|
|
/// Allows you to pass over dense items.
|
|
#define PASSITEM (1<<12)
|
|
/// Do not intercept click attempts during Adjacent() checks. See [turf/proc/ClickCross]. **ONLY MEANINGFUL ON pass_flags_self!**
|
|
#define LETPASSCLICKS (1<<13)
|
|
/// Allows you to pass over windows and window-adjacent stuff, like windows and windoors. Does not include airlocks with glass in them.
|
|
#define PASSWINDOW (1<<14)
|
|
|
|
//Movement Types
|
|
#define GROUND (1<<0)
|
|
#define FLYING (1<<1)
|
|
#define VENTCRAWLING (1<<2)
|
|
#define FLOATING (1<<3)
|
|
/// When moving, will Cross() everything, but won't stop or Bump() anything.
|
|
#define PHASING (1<<4)
|
|
/// The mob is walking on the ceiling. Or is generally just, upside down.
|
|
#define UPSIDE_DOWN (1<<5)
|
|
/// Combination flag for movetypes which, for all intents and purposes, mean the mob is not touching the ground
|
|
#define MOVETYPES_NOT_TOUCHING_GROUND (FLYING|FLOATING|UPSIDE_DOWN)
|
|
/// Trait source for stuff movetypes applies
|
|
#define SOURCE_MOVETYPES "movetypes"
|
|
|
|
//Fire and Acid stuff, for resistance_flags
|
|
#define LAVA_PROOF (1<<0)
|
|
/// 100% immune to fire damage (but not necessarily to lava or heat)
|
|
#define FIRE_PROOF (1<<1)
|
|
/// atom is flammable and can have the burning component
|
|
#define FLAMMABLE (1<<2)
|
|
/// currently burning
|
|
#define ON_FIRE (1<<3)
|
|
/// acid can't even appear on it, let alone melt it.
|
|
#define UNACIDABLE (1<<4)
|
|
/// acid stuck on it doesn't melt it.
|
|
#define ACID_PROOF (1<<5)
|
|
/// doesn't take damage
|
|
#define INDESTRUCTIBLE (1<<6)
|
|
/// can't be frozen
|
|
#define FREEZE_PROOF (1<<7)
|
|
/// can't be shuttle crushed.
|
|
#define SHUTTLE_CRUSH_PROOF (1<<8)
|
|
/// can't be destroyed by bombs
|
|
#define BOMB_PROOF (1<<9)
|
|
|
|
//tesla_zap
|
|
#define ZAP_MACHINE_EXPLOSIVE (1<<0)
|
|
#define ZAP_ALLOW_DUPLICATES (1<<1)
|
|
#define ZAP_OBJ_DAMAGE (1<<2)
|
|
#define ZAP_MOB_DAMAGE (1<<3)
|
|
#define ZAP_MOB_STUN (1<<4)
|
|
#define ZAP_GENERATES_POWER (1<<5)
|
|
/// Zaps with this flag will generate less power through tesla coils
|
|
#define ZAP_LOW_POWER_GEN (1<<6)
|
|
|
|
#define ZAP_DEFAULT_FLAGS ZAP_MOB_STUN | ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE
|
|
#define ZAP_FUSION_FLAGS ZAP_OBJ_DAMAGE | ZAP_MOB_DAMAGE | ZAP_MOB_STUN
|
|
#define ZAP_SUPERMATTER_FLAGS ZAP_GENERATES_POWER
|
|
|
|
///Object will protect itself.
|
|
#define EMP_PROTECT_SELF (1<<0)
|
|
///Object will protect its contents from being EMPed.
|
|
#define EMP_PROTECT_CONTENTS (1<<1)
|
|
///Object will protect its wiring from being EMPed.
|
|
#define EMP_PROTECT_WIRES (1<<2)
|
|
///Don't indicate EMP protection in object examine text.
|
|
#define EMP_NO_EXAMINE (1<<3)
|
|
|
|
///Protects against all EMP types.
|
|
#define EMP_PROTECT_ALL (EMP_PROTECT_SELF | EMP_PROTECT_CONTENTS | EMP_PROTECT_WIRES)
|
|
|
|
//Mob mobility var flags
|
|
/// can move
|
|
#define MOBILITY_MOVE (1<<0)
|
|
/// can, and is, standing up
|
|
#define MOBILITY_STAND (1<<1)
|
|
/// can pickup items
|
|
#define MOBILITY_PICKUP (1<<2)
|
|
/// can hold and use items
|
|
#define MOBILITY_USE (1<<3)
|
|
/// can use interfaces like machinery
|
|
#define MOBILITY_UI (1<<4)
|
|
/// can use storage item
|
|
#define MOBILITY_STORAGE (1<<5)
|
|
/// can pull things
|
|
#define MOBILITY_PULL (1<<6)
|
|
/// can rest
|
|
#define MOBILITY_REST (1<<7)
|
|
/// can lie down
|
|
#define MOBILITY_LIEDOWN (1<<8)
|
|
|
|
#define MOBILITY_FLAGS_DEFAULT (MOBILITY_MOVE | MOBILITY_STAND | MOBILITY_PICKUP | MOBILITY_USE | MOBILITY_UI | MOBILITY_STORAGE | MOBILITY_PULL)
|
|
#define MOBILITY_FLAGS_CARBON_DEFAULT (MOBILITY_MOVE | MOBILITY_STAND | MOBILITY_PICKUP | MOBILITY_USE | MOBILITY_UI | MOBILITY_STORAGE | MOBILITY_PULL | MOBILITY_REST | MOBILITY_LIEDOWN)
|
|
#define MOBILITY_FLAGS_REST_CAPABLE_DEFAULT (MOBILITY_MOVE | MOBILITY_STAND | MOBILITY_PICKUP | MOBILITY_USE | MOBILITY_UI | MOBILITY_STORAGE | MOBILITY_PULL | MOBILITY_REST | MOBILITY_LIEDOWN)
|
|
|
|
//alternate appearance flags
|
|
#define AA_TARGET_SEE_APPEARANCE (1<<0)
|
|
#define AA_MATCH_TARGET_OVERLAYS (1<<1)
|
|
|
|
#define KEEP_TOGETHER_ORIGINAL "keep_together_original"
|
|
|
|
//setter for KEEP_TOGETHER to allow for multiple sources to set and unset it
|
|
#define ADD_KEEP_TOGETHER(x, source)\
|
|
if ((x.appearance_flags & KEEP_TOGETHER) && !HAS_TRAIT(x, TRAIT_KEEP_TOGETHER)) ADD_TRAIT(x, TRAIT_KEEP_TOGETHER, KEEP_TOGETHER_ORIGINAL); \
|
|
ADD_TRAIT(x, TRAIT_KEEP_TOGETHER, source);\
|
|
x.appearance_flags |= KEEP_TOGETHER
|
|
|
|
#define REMOVE_KEEP_TOGETHER(x, source)\
|
|
REMOVE_TRAIT(x, TRAIT_KEEP_TOGETHER, source);\
|
|
if(HAS_TRAIT_FROM_ONLY(x, TRAIT_KEEP_TOGETHER, KEEP_TOGETHER_ORIGINAL))\
|
|
REMOVE_TRAIT(x, TRAIT_KEEP_TOGETHER, KEEP_TOGETHER_ORIGINAL);\
|
|
else if(!HAS_TRAIT(x, TRAIT_KEEP_TOGETHER))\
|
|
x.appearance_flags &= ~KEEP_TOGETHER
|
|
|
|
//religious_tool flags
|
|
#define RELIGION_TOOL_INVOKE (1<<0)
|
|
#define RELIGION_TOOL_SACRIFICE (1<<1)
|
|
#define RELIGION_TOOL_SECTSELECT (1<<2)
|
|
|
|
// ---- Skillchip incompatibility flags ---- //
|
|
// These flags control which skill chips are compatible with each other.
|
|
// By default, skillchips are incompatible with themselves and multiple of the same istype() cannot be implanted together. Set this flag to disable that check.
|
|
#define SKILLCHIP_ALLOWS_MULTIPLE (1<<0)
|
|
// This skillchip is incompatible with other skillchips from the incompatible_category list.
|
|
#define SKILLCHIP_RESTRICTED_CATEGORIES (1<<1)
|
|
|
|
#define MAX_BITFIELD_SIZE 24
|
|
|
|
/// 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`
|
|
/// 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)
|
|
|
|
// Spacevine-related flags
|
|
/// Is the spacevine / flower bud heat resistant
|
|
#define SPACEVINE_HEAT_RESISTANT (1 << 0)
|
|
/// Is the spacevine / flower bud cold resistant
|
|
#define SPACEVINE_COLD_RESISTANT (1 << 1)
|
|
|
|
// Flags for flora structures
|
|
#define FLORA_HERBAL (1 << 0)
|
|
#define FLORA_WOODEN (1 << 1)
|
|
#define FLORA_STONE (1 << 2)
|
|
|
|
// Bitflags for emotes, used in var/emote_type of the emote datum
|
|
/// Is the emote audible
|
|
#define EMOTE_AUDIBLE (1<<0)
|
|
/// Is the emote visible
|
|
#define EMOTE_VISIBLE (1<<1)
|
|
/// Is it an emote that should be shown regardless of blindness/deafness
|
|
#define EMOTE_IMPORTANT (1<<2)
|
|
/// Emote only prints to runechat, not to the chat window
|
|
#define EMOTE_RUNECHAT (1<<3)
|