diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index b0d1a1e15f..e56aa9b588 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -5625,7 +5625,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/security/brig) @@ -17830,7 +17829,7 @@ /turf/open/floor/wood, /area/service/bar) "aRx" = ( -/obj/machinery/computer/arcade/minesweeper, +/obj/machinery/computer/arcade/orion_trail, /turf/open/floor/wood, /area/service/bar) "aRy" = ( @@ -60122,7 +60121,7 @@ /turf/open/floor/plasteel, /area/commons/dorms) "nZL" = ( -/obj/machinery/computer/arcade/minesweeper, +/obj/machinery/computer/arcade/orion_trail, /turf/open/floor/wood, /area/command/heads_quarters/captain) "oax" = ( @@ -61634,7 +61633,6 @@ /area/security/prison/upper) "qtw" = ( /obj/machinery/door/airlock/external{ - dir = 2; name = "Port Docking Bay 4" }, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ @@ -64938,7 +64936,7 @@ /turf/open/floor/plasteel, /area/security/prison/upper) "vim" = ( -/obj/machinery/computer/arcade/minesweeper, +/obj/machinery/computer/arcade/battle, /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ icon_state = "1-2" diff --git a/_maps/map_files/CogStation/CogStation.dmm b/_maps/map_files/CogStation/CogStation.dmm index 74debaa989..c5e8df8ed2 100644 --- a/_maps/map_files/CogStation/CogStation.dmm +++ b/_maps/map_files/CogStation/CogStation.dmm @@ -858,7 +858,7 @@ /turf/open/floor/plating/airless, /area/router/aux) "acf" = ( -/obj/machinery/computer/arcade/minesweeper, +/obj/machinery/computer/arcade/battle, /turf/open/floor/carpet/arcade, /area/commons/arcade) "acg" = ( @@ -4505,7 +4505,7 @@ /area/maintenance/solars/starboard/fore) "alg" = ( /obj/structure/frame/machine, -/obj/item/circuitboard/computer/arcade/minesweeper, +/obj/item/circuitboard/computer/arcade/orion_trail, /turf/open/floor/plating, /area/construction/secondary) "alh" = ( diff --git a/_maps/map_files/LambdaStation/dorms.dmm b/_maps/map_files/LambdaStation/dorms.dmm index afe85da6cc..d52c4e7870 100644 --- a/_maps/map_files/LambdaStation/dorms.dmm +++ b/_maps/map_files/LambdaStation/dorms.dmm @@ -365,13 +365,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/plasteel, /area/hallway/primary/central) -"aQ" = ( -/obj/machinery/door/airlock/hatch{ - name = "Telecomms Control Room"; - req_one_access_txt = "19; 61" - }, -/turf/open/floor/plating/airless, -/area/tcommsat/chamber) "aR" = ( /obj/item/electropack/shockcollar, /obj/item/assembly/signaler, @@ -3201,6 +3194,12 @@ }, /turf/open/floor/plasteel, /area/service/hydroponics/garden/monastery) +"iA" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating/airless, +/area/tcommsat/chamber) "iC" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -5602,6 +5601,12 @@ }, /turf/open/floor/plating, /area/maintenance/solars/starboard) +"ox" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) "oy" = ( /obj/structure/railing{ dir = 4; @@ -7714,12 +7719,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /turf/open/floor/carpet/blue, /area/commons/vacant_room/office) -"tS" = ( -/obj/structure/cable{ - icon_state = "0-2" - }, -/turf/open/floor/plating/airless, -/area/tcommsat/chamber) "tT" = ( /obj/structure/cable{ icon_state = "1-2" @@ -9501,7 +9500,7 @@ /obj/machinery/camera/autoname{ dir = 4 }, -/obj/machinery/computer/arcade/minesweeper{ +/obj/machinery/computer/arcade/orion_trail{ dir = 4 }, /turf/open/floor/plasteel, @@ -14697,6 +14696,15 @@ }, /turf/open/floor/plasteel, /area/commons/fitness/recreation) +"LG" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) "LH" = ( /obj/structure/cable{ icon_state = "4-8" @@ -37240,11 +37248,11 @@ lQ Yv Yv Yv -dh -Yv -Yv -aQ -tS +LG +ox +ox +kF +iA kF Gq LC diff --git a/_maps/map_files/LambdaStation/lambda.dmm b/_maps/map_files/LambdaStation/lambda.dmm index e4aee6ffd6..e676dea0e5 100644 --- a/_maps/map_files/LambdaStation/lambda.dmm +++ b/_maps/map_files/LambdaStation/lambda.dmm @@ -13476,24 +13476,6 @@ }, /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) -"ayl" = ( -/obj/structure/table/wood, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/item/storage/secure/briefcase{ - pixel_x = -2 - }, -/obj/item/book/manual/wiki/security_space_law, -/obj/item/cartridge/detective, -/obj/machinery/power/apc{ - areastring = "/area/command/heads_quarters/hos"; - dir = 1; - name = "Head of Security's Office APC"; - pixel_y = 23 - }, -/turf/open/floor/plasteel/dark, -/area/command/heads_quarters/hos) "aym" = ( /obj/structure/table/wood, /obj/effect/turf_decal/tile/red{ @@ -14825,15 +14807,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel/dark, /area/command/heads_quarters/hos) -"aAy" = ( -/obj/machinery/computer/prisoner{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/command/heads_quarters/hos) "aAz" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -34520,13 +34493,6 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) -"bpO" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/plating, -/area/hallway/secondary/exit/departure_lounge) "bpP" = ( /obj/structure/lattice/catwalk, /obj/item/wrench, @@ -49053,18 +49019,6 @@ }, /turf/open/floor/plasteel, /area/engineering/main) -"cgv" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/power/apc/highcap/fifteen_k{ - areastring = "/area/engineering/main"; - dir = 1; - name = "Engine Room APC"; - pixel_y = 23 - }, -/turf/open/floor/plasteel, -/area/engineering/main) "cgw" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -63058,6 +63012,37 @@ /obj/effect/landmark/start/prisoner, /turf/open/floor/plasteel, /area/security/prison) +"cZR" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/hallway/secondary/exit/departure_lounge) +"dbH" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/item/storage/secure/briefcase{ + pixel_x = -2 + }, +/obj/item/book/manual/wiki/security_space_law, +/obj/item/cartridge/detective, +/obj/machinery/power/apc{ + areastring = "/area/command/heads_quarters/hos"; + dir = 1; + name = "Head of Security's Office APC"; + pixel_y = 23 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plasteel/dark, +/area/command/heads_quarters/hos) "dcB" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 4 @@ -64982,6 +64967,21 @@ /obj/structure/stairs/south, /turf/open/floor/plasteel, /area/maintenance/department/cargo) +"gci" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/power/apc/highcap/fifteen_k{ + areastring = "/area/engineering/main"; + dir = 1; + name = "Engine Room APC"; + pixel_y = 23 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plasteel, +/area/engineering/main) "gcM" = ( /obj/effect/turf_decal/tile/red{ dir = 8 @@ -66100,6 +66100,15 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/entry) +"igd" = ( +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/machinery/computer/secure_data{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/command/heads_quarters/hos) "igf" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel, @@ -117845,7 +117854,7 @@ axW awm axd axF -ayl +dbH azp aAr aBS @@ -119645,7 +119654,7 @@ ayO aCD axF ays -aAy +igd aBz cAp cJw @@ -120782,7 +120791,7 @@ lQs ceh ceP cXQ -cgv +gci chh cia cku @@ -128946,7 +128955,7 @@ bnL bot boJ blZ -bpO +cZR bqG brm blZ @@ -129202,7 +129211,7 @@ jqb bnL bot eec -bpO +cZR bip bqH brn diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 5b5885aca6..1a70bdbc4c 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -1504,7 +1504,6 @@ areastring = "/area/security/prison/upper"; damage_deflection = 21; desc = "A control terminal for the area's electrical systems. It's secured with a durable antitampering plasteel cage."; - dir = 2; name = "Armored Prison Wing Cells APC"; pixel_y = -26 }, @@ -12552,9 +12551,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "aWV" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/corner, /turf/open/floor/plasteel, /area/hallway/secondary/entry) "aWW" = ( @@ -43635,7 +43632,8 @@ idDoor = "xeno_airlock_exterior"; idSelf = "xeno_airlock_control"; name = "Access Button"; - pixel_x = -24 + pixel_x = -24; + req_access_txt = "47" }, /obj/structure/cable/yellow{ icon_state = "1-2" @@ -45280,7 +45278,7 @@ /turf/open/floor/plating, /area/maintenance/starboard) "dbl" = ( -/obj/structure/easel, +/obj/structure/loot_pile/maint, /turf/open/floor/plating, /area/maintenance/starboard/aft) "dbo" = ( @@ -45465,7 +45463,8 @@ idSelf = "xeno_airlock_control"; name = "Access Button"; pixel_x = 29; - pixel_y = -8 + pixel_y = -8; + req_access_txt = "47" }, /obj/machinery/firealarm{ pixel_y = 24 @@ -45640,7 +45639,8 @@ idSelf = "xeno_airlock_control"; name = "Access Console"; pixel_x = -25; - pixel_y = -25 + pixel_y = -25; + req_access_txt = "47" }, /obj/effect/turf_decal/tile/purple{ dir = 1 @@ -46619,10 +46619,10 @@ /turf/open/floor/plating, /area/maintenance/fore) "dht" = ( -/obj/item/cigbutt, /obj/structure/sign/poster/contraband/random{ pixel_x = -32 }, +/obj/structure/loot_pile/maint, /turf/open/floor/plating, /area/maintenance/starboard/fore) "dhu" = ( @@ -52041,6 +52041,7 @@ /obj/structure/extinguisher_cabinet{ pixel_y = -30 }, +/obj/structure/loot_pile/maint, /turf/open/floor/plating, /area/maintenance/port/aft) "fpg" = ( @@ -56725,6 +56726,13 @@ }, /turf/open/floor/plasteel, /area/service/hydroponics) +"iaH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/obj/structure/loot_pile/maint, +/turf/open/floor/plating, +/area/maintenance/starboard) "ibn" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -65226,6 +65234,10 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/cargo/storage) +"mKY" = ( +/obj/structure/loot_pile/maint, +/turf/open/floor/plating, +/area/maintenance/port) "mLh" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -67942,6 +67954,10 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall, /area/security/brig) +"osn" = ( +/obj/structure/loot_pile/maint, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) "osB" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/external{ @@ -70208,7 +70224,7 @@ }, /area/command/gateway) "pCQ" = ( -/obj/machinery/computer/arcade/minesweeper{ +/obj/machinery/computer/arcade/battle{ dir = 4 }, /turf/open/floor/plasteel, @@ -73549,7 +73565,6 @@ /area/commons/fitness/recreation) "rta" = ( /obj/machinery/door/airlock/external{ - dir = 2; name = "Public Mining Dock" }, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ @@ -74329,6 +74344,10 @@ }, /turf/open/floor/plasteel/dark, /area/command/bridge) +"rPp" = ( +/obj/structure/loot_pile/maint, +/turf/open/floor/plating, +/area/maintenance/port/fore) "rPB" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -78146,7 +78165,6 @@ /obj/structure/bed/roller, /obj/machinery/camera{ c_tag = "Prison Hallway Fore"; - dir = 2; network = list("ss13","prison") }, /turf/open/floor/plasteel, @@ -99568,7 +99586,7 @@ arX dne dne dne -aRG +rPp aoc drQ dne @@ -99866,7 +99884,7 @@ auF bCJ tUa alK -apz +mKY aob alC aqK @@ -104958,7 +104976,7 @@ aji dnd alE vhj -aRG +rPp alE dou dne @@ -122203,7 +122221,7 @@ nQW yeJ pSY avD -dnR +osn dtS tMD eoN @@ -125064,7 +125082,7 @@ alq diu bWZ bYs -bZB +iaH bZE ccG ceb diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index 17f21e98f5..acf6c66e25 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -9261,9 +9261,6 @@ /turf/open/floor/plasteel, /area/hallway/primary/fore) "axH" = ( -/obj/structure/extinguisher_cabinet{ - pixel_y = 30 - }, /obj/effect/turf_decal/tile/red{ dir = 4 }, @@ -9274,11 +9271,15 @@ /turf/open/floor/plasteel, /area/hallway/primary/fore) "axI" = ( -/obj/machinery/airalarm{ - pixel_y = 22 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 }, /obj/effect/turf_decal/tile/red{ - dir = 4 + dir = 8 + }, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 }, /turf/open/floor/plasteel, /area/hallway/primary/fore) @@ -10265,6 +10266,9 @@ dir = 8 }, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/structure/extinguisher_cabinet{ + pixel_y = -32 + }, /turf/open/floor/plasteel, /area/hallway/primary/fore) "aAg" = ( @@ -80965,7 +80969,7 @@ aaa aaa aaa aaa -syn +aaa aaa aaa aaa @@ -81222,7 +81226,7 @@ aaa aaa aaa aaa -aaa +syn aaa aaa aaa @@ -85595,7 +85599,7 @@ avv xgz gZF ayL -pFy +axI aBd aCi aDo @@ -86364,7 +86368,7 @@ ajM quY uFZ nDM -axI +axL axG aAh aBf diff --git a/_maps/map_files/Snaxi/Snaxi.dmm b/_maps/map_files/Snaxi/Snaxi.dmm index d9cf6c7948..1db8a64a97 100644 --- a/_maps/map_files/Snaxi/Snaxi.dmm +++ b/_maps/map_files/Snaxi/Snaxi.dmm @@ -870,7 +870,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/machinery/computer/arcade/minesweeper{ +/obj/machinery/computer/arcade/orion_trail{ dir = 8 }, /obj/structure/sign/poster/official/nanomichi_ad{ @@ -5842,7 +5842,7 @@ /turf/open/floor/plating, /area/maintenance/aft/secondary) "akQ" = ( -/obj/machinery/computer/arcade/minesweeper, +/obj/machinery/computer/arcade/battle, /turf/open/floor/plasteel/dark, /area/security/prison) "akR" = ( @@ -34938,7 +34938,7 @@ dir = 1; pixel_y = -24 }, -/obj/machinery/computer/arcade/minesweeper{ +/obj/machinery/computer/arcade/orion_trail{ dir = 4 }, /turf/open/floor/plasteel/dark, diff --git a/code/__DEFINES/_flags/_flags.dm b/code/__DEFINES/_flags/_flags.dm index 6f8ea6cda7..5f591b429b 100644 --- a/code/__DEFINES/_flags/_flags.dm +++ b/code/__DEFINES/_flags/_flags.dm @@ -5,10 +5,6 @@ #define NONE 0 //for convenience -#define ENABLE_BITFIELD(variable, flag) (variable |= (flag)) -#define DISABLE_BITFIELD(variable, flag) (variable &= ~(flag)) -#define CHECK_BITFIELD(variable, flag) (variable & (flag)) -#define TOGGLE_BITFIELD(variable, flag) (variable ^= (flag)) #define COPY_SPECIFIC_BITFIELDS(a,b,flags)\ do{\ var/_old = a & ~(flags);\ @@ -154,7 +150,7 @@ GLOBAL_LIST_INIT(bitflags, list( //Mob mobility var flags /// any flag -#define CHECK_MOBILITY(target, flags) CHECK_BITFIELD(target.mobility_flags, flags) +#define CHECK_MOBILITY(target, flags) (target.mobility_flags & flags) #define CHECK_ALL_MOBILITY(target, flags) CHECK_MULTIPLE_BITFIELDS(target.mobility_flags, flags) /// can move diff --git a/code/__DEFINES/status_effects.dm b/code/__DEFINES/status_effects.dm index b34e68e9ae..669bf6326b 100644 --- a/code/__DEFINES/status_effects.dm +++ b/code/__DEFINES/status_effects.dm @@ -119,6 +119,8 @@ #define STATUS_EFFECT_CLOUDSTRUCK /datum/status_effect/cloudstruck //blinds and applies an overlay. +#define STATUS_EFFECT_GAUNTLET_CONC /datum/status_effect/cgau_conc // it's a slowdown that really should only be applying to large simplemobs + /// shoves inflict this to indicate the next shove while this is in effect should disarm guns #define STATUS_EFFECT_OFF_BALANCE /datum/status_effect/off_balance diff --git a/code/__HELPERS/_lists.dm b/code/__HELPERS/_lists.dm index 69dd54e810..70793d7a1d 100644 --- a/code/__HELPERS/_lists.dm +++ b/code/__HELPERS/_lists.dm @@ -173,23 +173,20 @@ /proc/typecache_filter_list(list/atoms, list/typecache) RETURN_TYPE(/list) . = list() - for(var/thing in atoms) - var/atom/A = thing + for(var/atom/A as anything in atoms) if (typecache[A.type]) . += A /proc/typecache_filter_list_reverse(list/atoms, list/typecache) RETURN_TYPE(/list) . = list() - for(var/thing in atoms) - var/atom/A = thing + for(var/atom/A as anything in atoms) if(!typecache[A.type]) . += A /proc/typecache_filter_multi_list_exclusion(list/atoms, list/typecache_include, list/typecache_exclude) . = list() - for(var/thing in atoms) - var/atom/A = thing + for(var/atom/A as anything in atoms) if(typecache_include[A.type] && !typecache_exclude[A.type]) . += A diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index 19aac1aee0..eda4af9d90 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -59,7 +59,7 @@ for(var/gpath in subtypesof(/obj/item/organ/genital)) var/obj/item/organ/genital/G = gpath - if(!CHECK_BITFIELD(initial(G.genital_flags), GENITAL_BLACKLISTED)) + if(!(initial(G.genital_flags) & GENITAL_BLACKLISTED)) GLOB.genitals_list[initial(G.name)] = gpath //END OF CIT CHANGES diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 8590e056c9..87d888e457 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -323,7 +323,7 @@ var/obj/item/clothing/mask/M = check if(M.mask_adjusted) M.adjustmask(C) - if(CHECK_BITFIELD(check.clothing_flags, ALLOWINTERNALS)) + if((check.clothing_flags & ALLOWINTERNALS)) internals = TRUE if(!internals) to_chat(C, "You are not wearing an internals mask!") diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 1618e351ec..8f3a7ef02c 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -260,7 +260,7 @@ return clamp((1.5 + (w_class/5)) * ((force_override || force) / 1.5), 0, 10 SECONDS) * CONFIG_GET(number/melee_stagger_factor) /obj/item/proc/do_stagger_action(mob/living/target, mob/living/user, force_override) - if(!CHECK_BITFIELD(target.status_flags, CANSTAGGER)) + if(!(target.status_flags & CANSTAGGER)) return FALSE if(target.combat_flags & COMBAT_FLAG_SPRINT_ACTIVE) target.do_staggered_animation() diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm index 7b4a06c74d..868351a833 100644 --- a/code/controllers/subsystem/vote.dm +++ b/code/controllers/subsystem/vote.dm @@ -326,7 +326,7 @@ SUBSYSTEM_DEF(vote) return message_admins("A vote has tried to change the gamemode, but the game has already started. Aborting.") GLOB.master_mode = "dynamic" if(. == "extended") - GLOB.dynamic_forced_extended = TRUE + GLOB.dynamic_extended = TRUE message_admins("The gamemode has been voted for, and has been changed to: [GLOB.master_mode]") log_admin("Gamemode has been voted for and switched to: [GLOB.master_mode].") if("restart") diff --git a/code/datums/components/anti_magic.dm b/code/datums/components/anti_magic.dm index 6f289af1fc..638be08717 100644 --- a/code/datums/components/anti_magic.dm +++ b/code/datums/components/anti_magic.dm @@ -29,7 +29,7 @@ expire = _expire /datum/component/anti_magic/proc/on_equip(datum/source, mob/equipper, slot) - if(!CHECK_BITFIELD(allowed_slots, slotdefine2slotbit(slot))) //Check that the slot is valid for antimagic + if(!(allowed_slots & slotdefine2slotbit(slot))) //Check that the slot is valid for antimagic UnregisterSignal(equipper, COMSIG_MOB_RECEIVE_MAGIC) return RegisterSignal(equipper, COMSIG_MOB_RECEIVE_MAGIC, .proc/protect, TRUE) diff --git a/code/datums/elements/wuv.dm b/code/datums/elements/wuv.dm index d4f1955afc..854bfdf8dd 100644 --- a/code/datums/elements/wuv.dm +++ b/code/datums/elements/wuv.dm @@ -52,7 +52,7 @@ new /obj/effect/temp_visual/heart(target.loc) if(pet_emote) target.emote("me", pet_type, pet_emote) - if(pet_moodlet && !CHECK_BITFIELD(target.flags_1, HOLOGRAM_1)) //prevents unlimited happiness petting park exploit. + if(pet_moodlet && !(target.flags_1 & HOLOGRAM_1)) //prevents unlimited happiness petting park exploit. SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, target, pet_moodlet, target) /datum/element/wuv/proc/kick_the_dog(mob/target, mob/user) @@ -60,5 +60,5 @@ return if(punt_emote) target.emote("me", punt_type, punt_emote) - if(punt_moodlet && !CHECK_BITFIELD(target.flags_1, HOLOGRAM_1)) + if(punt_moodlet && !(target.flags_1 & HOLOGRAM_1)) SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, target, punt_moodlet, target) diff --git a/code/datums/mind.dm b/code/datums/mind.dm index fdd576067b..fe4aa3d46a 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -141,7 +141,7 @@ if(isliving(new_character)) //New humans and such are by default enabled arousal. Let's always use the new mind's prefs. var/mob/living/L = new_character if(L.client?.prefs && L.client.prefs.auto_ooc && L.client.prefs.chat_toggles & CHAT_OOC) - DISABLE_BITFIELD(L.client.prefs.chat_toggles,CHAT_OOC) + L.client.prefs.chat_toggles &= ~(CHAT_OOC) hide_ckey = current.client?.prefs?.hide_ckey diff --git a/code/datums/radiation_wave.dm b/code/datums/radiation_wave.dm index 8dc3b64e16..ebb1f58a20 100644 --- a/code/datums/radiation_wave.dm +++ b/code/datums/radiation_wave.dm @@ -112,7 +112,7 @@ )) if(!can_contaminate || blacklisted[thing.type]) continue - if(CHECK_BITFIELD(thing.rad_flags, RAD_NO_CONTAMINATE) || SEND_SIGNAL(thing, COMSIG_ATOM_RAD_CONTAMINATING, strength) & COMPONENT_BLOCK_CONTAMINATION) + if((thing.rad_flags & RAD_NO_CONTAMINATE) || SEND_SIGNAL(thing, COMSIG_ATOM_RAD_CONTAMINATING, strength) & COMPONENT_BLOCK_CONTAMINATION) continue contam_atoms += thing var/did_contam = 0 diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm index b75676dbd2..2e0df8917d 100644 --- a/code/datums/status_effects/debuffs.dm +++ b/code/datums/status_effects/debuffs.dm @@ -1132,3 +1132,16 @@ else if(fake_msg) to_chat(owner, fake_msg) msg_stage++ + +/datum/status_effect/cgau_conc + id = "cgau_conc" + examine_text = "SUBJECTPRONOUN rocks from side to side, confused." + duration = 5 SECONDS + +/datum/status_effect/cgau_conc/on_creation(mob/living/new_owner, ...) + . = ..() + new_owner.add_movespeed_modifier(/datum/movespeed_modifier/gauntlet_concussion) + +/datum/status_effect/cgau_conc/on_remove() + owner.remove_movespeed_modifier(/datum/movespeed_modifier/gauntlet_concussion) + . = ..() diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index a28d558454..6ad95c8b56 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -319,38 +319,38 @@ GLOBAL_LIST_EMPTY(teleportlocs) * * Sends to all ai players, alert consoles, drones and alarm monitor programs in the world */ -/area/proc/poweralert(state, obj/source) +/area/proc/poweralert(set_alarm, obj/source) if (area_flags & NO_ALERTS) return - if (state != poweralm) - poweralm = state + if (set_alarm != poweralm) + poweralm = set_alarm if(istype(source)) //Only report power alarms on the z-level where the source is located. for (var/item in GLOB.silicon_mobs) var/mob/living/silicon/aiPlayer = item - if (state == 1) - aiPlayer.cancelAlarm("Power", src, source) - else + if (set_alarm) aiPlayer.triggerAlarm("Power", src, cameras, source) + else + aiPlayer.cancelAlarm("Power", src, source) for (var/item in GLOB.alert_consoles) var/obj/machinery/computer/station_alert/a = item - if(state == 1) - a.cancelAlarm("Power", src, source) - else + if (set_alarm) a.triggerAlarm("Power", src, cameras, source) + else + a.cancelAlarm("Power", src, source) for (var/item in GLOB.drones_list) var/mob/living/simple_animal/drone/D = item - if(state == 1) - D.cancelAlarm("Power", src, source) - else + if (set_alarm) D.triggerAlarm("Power", src, cameras, source) + else + D.cancelAlarm("Power", src, source) for(var/item in GLOB.alarmdisplay) var/datum/computer_file/program/alarm_monitor/p = item - if(state == 1) - p.cancelAlarm("Power", src, source) - else + if (set_alarm) p.triggerAlarm("Power", src, cameras, source) + else + p.cancelAlarm("Power", src, source) /area/proc/atmosalert(danger_level, obj/source) if (area_flags & NO_ALERTS) diff --git a/code/game/gamemodes/dynamic/dynamic.dm b/code/game/gamemodes/dynamic/dynamic.dm index be07a5c3b9..68a103af63 100644 --- a/code/game/gamemodes/dynamic/dynamic.dm +++ b/code/game/gamemodes/dynamic/dynamic.dm @@ -1,13 +1,16 @@ #define RULESET_STOP_PROCESSING 1 -#define FAKE_REPORT_CHANCE 8 +#define FAKE_REPORT_CHANCE 20 #define REPORT_NEG_DIVERGENCE -15 #define REPORT_POS_DIVERGENCE 15 +#define EXTENDED_CURVE_CENTER -7 // Are HIGH_IMPACT_RULESETs allowed to stack? GLOBAL_VAR_INIT(dynamic_no_stacking, TRUE) // If enabled does not accept or execute any rulesets. GLOBAL_VAR_INIT(dynamic_forced_extended, FALSE) +// Antags still allowed, but no roundstart antags + midrounds are low impact +GLOBAL_VAR_INIT(dynamic_extended, FALSE) // How high threat is required for HIGH_IMPACT_RULESETs stacking. // This is independent of dynamic_no_stacking. GLOBAL_VAR_INIT(dynamic_stacking_limit, 90) @@ -163,6 +166,7 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) dat += "Split parameters: centre = [roundstart_split_curve_centre] ; width = [roundstart_split_curve_width].
" dat += "On average, [peaceful_percentage]% of the rounds are more peaceful.
" dat += "Forced extended: [GLOB.dynamic_forced_extended ? "On" : "Off"]
" + dat += "Dynamic extended: [GLOB.dynamic_extended ? "On" : "Off"]
" dat += "No stacking (only one round-ender): [GLOB.dynamic_no_stacking ? "On" : "Off"]
" dat += "Stacking limit: [GLOB.dynamic_stacking_limit] \[Adjust\]" dat += "
" @@ -192,6 +196,8 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) return if (href_list["forced_extended"]) GLOB.dynamic_forced_extended = !GLOB.dynamic_forced_extended + else if (href_list["extended"]) + GLOB.dynamic_extended = !GLOB.dynamic_extended else if (href_list["no_stacking"]) GLOB.dynamic_no_stacking = !GLOB.dynamic_no_stacking else if (href_list["adjustthreat"]) @@ -309,9 +315,10 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) /// Generates the threat level using lorentz distribution and assigns peaceful_percentage. /datum/game_mode/dynamic/proc/generate_threat() + if(GLOB.dynamic_extended) + threat_curve_centre = EXTENDED_CURVE_CENTER var/relative_threat = LORENTZ_DISTRIBUTION(threat_curve_centre, threat_curve_width) threat_level = round(lorentz_to_amount(relative_threat), 0.1) - peaceful_percentage = round(LORENTZ_CUMULATIVE_DISTRIBUTION(relative_threat, threat_curve_centre, threat_curve_width), 0.01)*100 SSblackbox.record_feedback("tally","dynamic_threat",threat_level,"Initial threat level") @@ -321,14 +328,18 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) /// Generates the midround and roundstart budgets /datum/game_mode/dynamic/proc/generate_budgets() - var/relative_round_start_budget_scale = LORENTZ_DISTRIBUTION(roundstart_split_curve_centre, roundstart_split_curve_width) - round_start_budget = round((lorentz_to_amount(relative_round_start_budget_scale) / 100) * threat_level, 0.1) - initial_round_start_budget = round_start_budget - mid_round_budget = threat_level - round_start_budget + if(GLOB.dynamic_extended) + mid_round_budget = threat_level + round_start_budget = 0 + else + var/relative_round_start_budget_scale = LORENTZ_DISTRIBUTION(roundstart_split_curve_centre, roundstart_split_curve_width) + round_start_budget = round((lorentz_to_amount(relative_round_start_budget_scale) / 100) * threat_level, 0.1) + initial_round_start_budget = round_start_budget + mid_round_budget = threat_level - round_start_budget /datum/game_mode/dynamic/proc/setup_parameters() log_game("DYNAMIC: Dynamic mode parameters for the round:") - log_game("DYNAMIC: Centre is [threat_curve_centre], Width is [threat_curve_width], Forced extended is [GLOB.dynamic_forced_extended ? "Enabled" : "Disabled"], No stacking is [GLOB.dynamic_no_stacking ? "Enabled" : "Disabled"].") + log_game("DYNAMIC: Centre is [threat_curve_centre], Width is [threat_curve_width], Extended is [GLOB.dynamic_extended ? "Enabled" : "Disabled"], No stacking is [GLOB.dynamic_no_stacking ? "Enabled" : "Disabled"].") log_game("DYNAMIC: Stacking limit is [GLOB.dynamic_stacking_limit].") if(GLOB.dynamic_forced_threat_level >= 0) threat_level = round(GLOB.dynamic_forced_threat_level, 0.1) @@ -346,9 +357,15 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) shown_threat = clamp(threat_level + rand(REPORT_NEG_DIVERGENCE, REPORT_POS_DIVERGENCE), 0, 100) /datum/game_mode/dynamic/proc/set_cooldowns() + var/coeff = GLOB.dynamic_extended ? 2 : 1 + latejoin_delay_min *= coeff + latejoin_delay_max *= coeff var/latejoin_injection_cooldown_middle = 0.5*(latejoin_delay_max + latejoin_delay_min) latejoin_injection_cooldown = round(clamp(EXP_DISTRIBUTION(latejoin_injection_cooldown_middle), latejoin_delay_min, latejoin_delay_max)) + world.time + midround_delay_min *= coeff + midround_delay_max *= coeff + var/midround_injection_cooldown_middle = 0.5*(midround_delay_max + midround_delay_min) midround_injection_cooldown = round(clamp(EXP_DISTRIBUTION(midround_injection_cooldown_middle), midround_delay_min, midround_delay_max)) + world.time @@ -456,6 +473,9 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) if (GLOB.dynamic_forced_extended) log_game("DYNAMIC: Starting a round of forced extended.") return TRUE + if (GLOB.dynamic_extended) + log_game("DYNAMIC: Starting a round of dynamic extended.") + return TRUE var/list/drafted_rules = list() for (var/datum/dynamic_ruleset/roundstart/rule in roundstart_rules) if (!rule.weight) @@ -563,9 +583,10 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) return FALSE // Check if the ruleset is high impact and if a high impact ruleset has been executed else if(new_rule.flags & HIGH_IMPACT_RULESET) - if(threat_level < GLOB.dynamic_stacking_limit && GLOB.dynamic_no_stacking) - if(high_impact_ruleset_executed) - return FALSE + if(GLOB.dynamic_extended) + return FALSE + if(high_impact_ruleset_executed && threat_level < GLOB.dynamic_stacking_limit && GLOB.dynamic_no_stacking) + return FALSE var/population = current_players[CURRENT_LIVING_PLAYERS].len if((new_rule.acceptable(population, threat_level) && new_rule.cost <= mid_round_budget) || forced) @@ -598,8 +619,8 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) /datum/game_mode/dynamic/proc/midround_rule_draft() set waitfor = FALSE if (midround_injection_cooldown < world.time) - /*if (GLOB.dynamic_forced_extended) - return*/ + if (GLOB.dynamic_forced_extended) + return // Somehow it managed to trigger midround multiple times so this was moved here. // There is no way this should be able to trigger an injection twice now. @@ -620,6 +641,11 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) for (var/datum/dynamic_ruleset/midround/rule in midround_rules) if (!rule.weight) continue + if(rule.flags & HIGH_IMPACT_RULESET) + if (high_impact_ruleset_executed && threat_level < GLOB.dynamic_stacking_limit && GLOB.dynamic_no_stacking) + continue + if(GLOB.dynamic_extended) + continue if (rule.acceptable(current_players[CURRENT_LIVING_PLAYERS].len, threat_level) && mid_round_budget >= rule.cost) rule.trim_candidates() if (rule.ready()) @@ -642,11 +668,17 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) forced_injection = dry_run return 100 var/chance = 0 - var/max_pop_per_antag = max(5,15 - round(threat_level/10) - round(current_players[CURRENT_LIVING_PLAYERS].len/5)) + var/effective_living_players = current_players[CURRENT_LIVING_PLAYERS].len + if(GLOB.dynamic_extended) + effective_living_players = min(effective_living_players, length(SSjob.get_living_sec())*2 + length(SSjob.get_living_heads())) + var/max_pop_per_antag = max(5,15 - round(threat_level/10) - round(effective_living_players/5)) if (!current_players[CURRENT_LIVING_ANTAGS].len) - chance += 50 // No antags at all? let's boost those odds! + if(GLOB.dynamic_extended) + chance += min(50,effective_living_players*5) + else + chance += 50 // No antags at all? let's boost those odds! else - var/current_pop_per_antag = current_players[CURRENT_LIVING_PLAYERS].len / current_players[CURRENT_LIVING_ANTAGS].len + var/current_pop_per_antag = effective_living_players / current_players[CURRENT_LIVING_ANTAGS].len if (current_pop_per_antag > max_pop_per_antag) chance += min(50, 25+10*(current_pop_per_antag-max_pop_per_antag)) else diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm index 76f09793fb..a719ec6198 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm @@ -63,7 +63,7 @@ required_candidates = 1 weight = 7 cost = 5 - requirements = list(40,30,20,10,10,10,10,10,10,10) + requirements = list(101,40,25,20,15,10,10,10,10,10) repeatable = TRUE ////////////////////////////////////////////// @@ -159,5 +159,5 @@ required_candidates = 1 weight = 4 cost = 10 - requirements = list(101,101,101,50,40,10,10,10,10,10) + requirements = list(101,101,101,50,40,20,20,15,10,10) repeatable = TRUE diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm index a89ca65e3a..b62befc88c 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm @@ -254,7 +254,7 @@ antag_flag = ROLE_MALF enemy_roles = list("Security Officer", "Warden","Detective","Head of Security", "Captain", "Scientist", "Chemist", "Research Director", "Chief Engineer") exclusive_roles = list("AI") - required_enemies = list(4,4,4,4,4,4,2,2,2,0) + required_enemies = list(0,0,0,0,0,0,0,0,0,0) required_candidates = 1 weight = 3 cost = 35 @@ -304,11 +304,11 @@ antag_flag = "wizard mid" antag_flag_override = ROLE_WIZARD enemy_roles = list("Security Officer","Detective","Head of Security", "Captain") - required_enemies = list(2,2,1,1,1,1,1,0,0,0) + required_enemies = list(0,0,0,0,0,0,0,0,0,0) required_candidates = 1 weight = 2 cost = 20 - requirements = list(101,101,100,80,50,30,20,10,10,10) + requirements = list(101,101,100,60,40,20,20,20,10,10) repeatable = TRUE var/datum/mind/wizard @@ -351,11 +351,11 @@ antag_datum = /datum/antagonist/nukeop antag_flag_override = ROLE_OPERATIVE enemy_roles = list("AI", "Cyborg", "Security Officer", "Warden","Detective","Head of Security", "Captain") - required_enemies = list(3,3,3,3,3,2,1,1,0,0) + required_enemies = list(0,0,0,0,0,0,0,0,0,0) required_candidates = 5 weight = 3 cost = 35 - requirements = list(101,101,101,80,50,40,30,15,10,10) + requirements = list(101,101,101,60,40,30,20,15,10,10) var/list/operative_cap = list(2,2,3,3,3,4,5,5,5,5) var/datum/team/nuclear/nuke_team flags = HIGH_IMPACT_RULESET @@ -393,11 +393,11 @@ antag_datum = /datum/antagonist/blob antag_flag = ROLE_BLOB enemy_roles = list("Security Officer", "Detective", "Head of Security", "Captain") - required_enemies = list(2,2,1,1,1,1,1,0,0,0) + required_enemies = list(0,0,0,0,0,0,0,0,0,0) required_candidates = 1 weight = 2 cost = 10 - requirements = list(101,101,101,101,70,40,25,20,10,10) + requirements = list(101,101,101,101,50,40,30,20,10,10) repeatable = TRUE /datum/dynamic_ruleset/midround/from_ghosts/blob/generate_ruleset_body(mob/applicant) @@ -412,11 +412,11 @@ protected_roles = list("Prisoner", "Security Officer", "Warden", "Detective", "Head of Security", "Captain") restricted_roles = list("Cyborg", "AI", "Positronic Brain") enemy_roles = list("Security Officer", "Detective", "Head of Security", "Captain") - required_enemies = list(2,2,1,1,1,1,1,0,0,0) + required_enemies = list(0,0,0,0,0,0,0,0,0,0) required_candidates = 1 weight = 2 cost = 10 - requirements = list(101,101,101,101,70,40,25,20,10,10) + requirements = list(101,101,101,101,50,40,30,20,10,10) repeatable = TRUE /datum/dynamic_ruleset/midround/blob_infection/trim_candidates() @@ -450,11 +450,11 @@ antag_datum = /datum/antagonist/xeno antag_flag = ROLE_ALIEN enemy_roles = list("Security Officer", "Detective", "Head of Security", "Captain") - required_enemies = list(2,2,1,1,1,1,1,0,0,0) + required_enemies = list(0,0,0,0,0,0,0,0,0,0) required_candidates = 1 weight = 3 cost = 10 - requirements = list(101,101,101,101,60,50,30,20,10,10) + requirements = list(101,101,101,101,50,40,30,20,10,10) repeatable = TRUE var/list/vents = list() @@ -496,11 +496,11 @@ antag_flag = "Nightmare" antag_flag_override = ROLE_ALIEN enemy_roles = list("Security Officer", "Detective", "Head of Security", "Captain") - required_enemies = list(2,2,1,1,1,1,1,0,0,0) + required_enemies = list(0,0,0,0,0,0,0,0,0,0) required_candidates = 1 weight = 4 cost = 10 - requirements = list(101,101,101,40,30,20,10,10,10,10) + requirements = list(101,101,50,30,25,20,10,10,10,10) repeatable = TRUE var/list/spawn_locs = list() @@ -542,11 +542,11 @@ antag_flag = ROLE_SPACE_DRAGON antag_flag_override = ROLE_SPACE_DRAGON enemy_roles = list("Security Officer", "Detective", "Head of Security", "Captain") - required_enemies = list(2,2,1,1,1,1,1,0,0,0) + required_enemies = list(0,0,0,0,0,0,0,0,0,0) required_candidates = 1 weight = 3 cost = 10 - requirements = list(101,101,101,101,60,50,30,20,10,10) + requirements = list(101,101,101,101,50,40,30,20,10,10) repeatable = TRUE var/list/spawn_locs = list() @@ -586,12 +586,12 @@ antag_flag = "Abductor" antag_flag_override = ROLE_ABDUCTOR enemy_roles = list("Security Officer", "Detective", "Head of Security", "Captain") - required_enemies = list(2,2,1,1,1,1,1,0,0,0) + required_enemies = list(0,0,0,0,0,0,0,0,0,0) required_candidates = 2 required_applicants = 2 weight = 3 cost = 10 - requirements = list(101,101,101,101,101,40,25,20,10,10) + requirements = list(101,101,101,101,101,30,20,15,10,10) repeatable = TRUE var/datum/team/abductor_team/new_team @@ -625,11 +625,11 @@ antag_flag_override = ROLE_ALIEN required_type = /mob/dead/observer enemy_roles = list("Security Officer", "Detective", "Head of Security", "Captain") - required_enemies = list(2,2,1,1,1,1,1,0,0,0) + required_enemies = list(0,0,0,0,0,0,0,0,0,0) required_candidates = 0 weight = 3 cost = 10 - requirements = list(101,101,101,101,60,50,30,20,10,10) + requirements = list(101,101,101,101,50,40,30,20,10,10) repeatable = TRUE /datum/dynamic_ruleset/midround/swarmers/execute() @@ -658,11 +658,11 @@ antag_flag = "Space Ninja" antag_flag_override = ROLE_NINJA enemy_roles = list("Security Officer", "Detective", "Head of Security", "Captain") - required_enemies = list(2,2,1,1,1,1,1,0,0,0) + required_enemies = list(0,0,0,0,0,0,0,0,0,0) required_candidates = 1 weight = 4 cost = 10 - requirements = list(101,101,101,80,60,50,30,20,10,10) + requirements = list(101,101,101,60,50,30,10,10,10,10) repeatable = TRUE var/list/spawn_locs = list() @@ -699,11 +699,11 @@ antag_flag = "Revenant" antag_flag_override = ROLE_REVENANT enemy_roles = list("Security Officer", "Detective", "Head of Security", "Captain") - required_enemies = list(2,2,1,1,1,1,1,0,0,0) + required_enemies = list(0,0,0,0,0,0,0,0,0,0) required_candidates = 1 weight = 4 cost = 10 - requirements = list(101,101,101,70,50,40,20,15,10,10) + requirements = list(101,101,50,30,25,20,10,10,10,10) repeatable = TRUE var/dead_mobs_required = 20 var/need_extra_spawns_value = 15 @@ -748,7 +748,7 @@ required_candidates = 1 weight = 4 cost = 10 - requirements = list(101,101,101,70,50,40,20,15,10,10) + requirements = list(101,101,50,30,25,20,10,10,10,10) repeatable = TRUE /datum/dynamic_ruleset/midround/from_ghosts/sentient_disease/generate_ruleset_body(mob/applicant) @@ -765,11 +765,11 @@ antag_flag = "Space Pirates" required_type = /mob/dead/observer enemy_roles = list("Security Officer", "Detective", "Head of Security", "Captain") - required_enemies = list(2,2,1,1,1,1,1,0,0,0) + required_enemies = list(0,0,0,0,0,0,0,0,0,0) required_candidates = 0 weight = 4 cost = 10 - requirements = list(101,101,101,50,40,25,10,10,10,10) + requirements = list(101,101,101,40,30,20,10,10,10,10) repeatable = TRUE /datum/dynamic_ruleset/midround/pirates/acceptable(population=0, threat=0) diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm index a37c387283..9e985e9c47 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm @@ -103,7 +103,7 @@ weight = 3 cost = 16 scaling_cost = 10 - requirements = list(101,70,60,50,40,20,20,10,10,10) + requirements = list(101,60,50,40,30,20,15,10,10,10) antag_cap = list("denominator" = 29) /datum/dynamic_ruleset/roundstart/changeling/pre_execute(population) @@ -138,7 +138,7 @@ weight = 3 cost = 15 scaling_cost = 9 - requirements = list(101,101,101,55,40,25,20,15,10,10)//higher because of 'round end' + requirements = list(101,101,101,50,40,20,20,15,10,10)//higher because of 'round end' antag_cap = list("denominator" = 24) @@ -179,7 +179,7 @@ required_candidates = 1 weight = 3 cost = 20 - requirements = list(101,101,100,80,50,40,30,20,10,10)//100 because of configt, otherwise equal to nukies + requirements = list(101,101,100,60,40,20,20,20,10,10)//100 because of configt, otherwise equal to nukies var/list/roundstart_wizards = list() /datum/dynamic_ruleset/roundstart/wizard/acceptable(population=0, threat=0) @@ -223,7 +223,7 @@ weight = 2 //lower weight because of easy steamroll potential cost = 20 //requirements = list(100,90,80,60,40,30,10,10,10,10) - requirements = list(101,101,101,101,60,40,20,10,10,10) + requirements = list(101,101,101,101,50,40,20,10,10,10) flags = HIGH_IMPACT_RULESET antag_cap = list("denominator" = 20, "offset" = 1) var/datum/team/cult/main_cult @@ -279,7 +279,7 @@ required_candidates = 5 weight = 3 cost = 20 - requirements = list(101,101,101,80,50,40,30,15,10,10) + requirements = list(101,101,101,60,40,30,20,15,10,10) flags = HIGH_IMPACT_RULESET antag_cap = list("denominator" = 18, "offset" = 1) var/datum/team/nuclear/nuke_team @@ -365,7 +365,7 @@ weight = 2 delay = 7 MINUTES cost = 20 - requirements = list(101,101,101,101,60,40,20,10,10,10) + requirements = list(101,101,101,101,50,40,20,10,10,10) antag_cap = 3 flags = HIGH_IMPACT_RULESET blocking_rules = list(/datum/dynamic_ruleset/latejoin/provocateur) @@ -445,7 +445,7 @@ required_candidates = 2 weight = 3 //higher weight than blood cult and revs because it's more balanced cost = 20 - requirements = list(101,101,101,101,60,40,20,10,10,10) //slightly higher than nukies + requirements = list(101,101,101,101,50,40,20,10,10,10) //slightly higher than nukies flags = HIGH_IMPACT_RULESET antag_cap = list("denominator" = 20, "offset" = 1) var/datum/team/clockcult/main_clockcult diff --git a/code/game/machinery/autoloom.dm b/code/game/machinery/autoloom.dm new file mode 100644 index 0000000000..f290ac1a96 --- /dev/null +++ b/code/game/machinery/autoloom.dm @@ -0,0 +1,102 @@ +// like a recycler, but for plants only ig +/obj/machinery/autoloom + name = "autoloom" + desc = "A large processing machine used to process raw biological matter, like cotton or logs. It also looks like a recycler. There's a display on the side." + icon = 'icons/obj/recycling.dmi' + icon_state = "grinder-o0" + layer = ABOVE_ALL_MOB_LAYER // Overhead + density = TRUE + circuit = /obj/item/circuitboard/machine/autoloom + var/icon_name = "grinder-o" + var/eat_dir = WEST + var/process_efficiency = 0 + var/static/list/can_process = typecacheof(list( + /obj/item/stack/sheet/cotton, + /obj/item/grown/log, + /obj/item/grown/cotton + )) + +/obj/machinery/autoloom/RefreshParts() + for(var/obj/item/stock_parts/manipulator/M in component_parts) + process_efficiency = M.rating + +/obj/machinery/recycler/examine(mob/user) + . = ..() + . += "Biomatter processing efficiency at [amount_produced*100]%." + +/obj/machinery/autoloom/power_change() + ..() + update_icon() + +/obj/machinery/autoloom/attackby(obj/item/I, mob/user, params) + if(default_deconstruction_screwdriver(user, "grinder-oOpen", "grinder-o0", I)) + return + + if(default_pry_open(I)) + return + + if(default_unfasten_wrench(user, I)) + return + + if(default_deconstruction_crowbar(I)) + return + return ..() + +/obj/machinery/autoloom/update_icon_state() + var/is_powered = !(stat & (BROKEN|NOPOWER)) + icon_state = icon_name + "[is_powered]" // add the blood tag at the end + +/obj/machinery/autoloom/CanPass(atom/movable/AM) + . = ..() + if(!anchored) + return + + var/move_dir = get_dir(loc, AM.loc) + if(move_dir == eat_dir) + return TRUE + +/obj/machinery/autoloom/Crossed(atom/movable/AM) + eat(AM) + . = ..() + +/obj/machinery/autoloom/proc/eat(atom/movable/AM0, sound=TRUE) + if(stat & (BROKEN|NOPOWER)) + return + if(!isturf(AM0.loc)) + return //I don't know how you called Crossed() but stop it. + + if(is_type_in_list(AM0, can_process)) + process_item(AM0) + +/obj/machinery/autoloom/proc/process_item(obj/item/I) + . = list() + for(var/A in I) + var/atom/movable/AM = A + AM.forceMove(loc) + if(AM.loc == loc) + . += AM + + I.forceMove(loc) + if(istype(I, /obj/item/grown/log)) + var/obj/item/grown/log/L = I + var/seed_modifier = 0 + if(L.seed) + seed_modifier = round(L.seed.potency / 25) + new L.plank_type(src.loc, process_efficiency + seed_modifier) + qdel(L) + return + + if(istype(I, /obj/item/stack/sheet/cotton)) + var/obj/item/stack/sheet/cotton/RS = I + var/tomake = round((RS.amount / 4) * process_efficiency) + new RS.loom_result(src.loc, tomake) + qdel(RS) + return + + if(istype(I, /obj/item/grown/cotton)) + var/obj/item/grown/cotton/RC = I + var/cottonAmt = 1 + round(RC.seed.potency / 25) + var/newRaw = new RC.cotton_type(src.loc, cottonAmt) + qdel(RC) + process_item(newRaw) + return diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index dd2ebf287f..e430ac469f 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -82,9 +82,8 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( // If it's a generic arcade machine, pick a random arcade // circuit board for it and make the new machine if(!circuit) - var/list/gameodds = list(/obj/item/circuitboard/computer/arcade/battle = 33, - /obj/item/circuitboard/computer/arcade/orion_trail = 33, - /obj/item/circuitboard/computer/arcade/minesweeper = 33, + var/list/gameodds = list(/obj/item/circuitboard/computer/arcade/battle = 50, + /obj/item/circuitboard/computer/arcade/orion_trail = 50, /obj/item/circuitboard/computer/arcade/amputation = 2) var/thegame = pickweight(gameodds) var/obj/item/circuitboard/CB = new thegame() diff --git a/code/game/machinery/computer/arcade/minesweeper.dm b/code/game/machinery/computer/arcade/minesweeper.dm deleted file mode 100644 index 1027ab1815..0000000000 --- a/code/game/machinery/computer/arcade/minesweeper.dm +++ /dev/null @@ -1,413 +0,0 @@ -#define MINESWEEPER_GAME_MAIN_MENU 0 -#define MINESWEEPER_GAME_PLAYING 1 -#define MINESWEEPER_GAME_LOST 2 -#define MINESWEEPER_GAME_WON 3 -#define MINESWEEPERIMG(what) {""} //Basically bypassing asset.icon_tag() - -/obj/machinery/computer/arcade/minesweeper - name = "Minesweeper" - desc = "An arcade machine that generates grids. It seems that the machine sparks and screeches when a grid is generated, as if it cannot cope with the intensity of generating the grid." - icon_state = "arcade" - circuit = /obj/item/circuitboard/computer/arcade/minesweeper - var/area - var/difficulty = "" //To show what difficulty you are playing - var/flag_text = "" - var/flagging = FALSE - var/game_status = MINESWEEPER_GAME_MAIN_MENU - var/mine_limit = 0 - var/mine_placed = 0 - var/mine_sound = TRUE //So it doesn't get repeated when multiple mines are exposed - var/randomcolour = 1 - var/randomnumber = 1 //Random emagged game iteration number to be displayed, put here so it is persistent across one individual arcade machine - var/safe_squares_revealed - var/saved_web = "" //To display the web if you click on the arcade - var/win_condition - var/rows = 1 - var/columns = 1 - var/table[31][51] //Make the board boys, 30x50 board - var/spark_spam = FALSE - -/obj/machinery/computer/arcade/minesweeper/interact(mob/user) - var/emagged = CHECK_BITFIELD(obj_flags, EMAGGED) - var/dat - if(game_status == MINESWEEPER_GAME_MAIN_MENU) - dat += "Minesweeper
Minesweeper[emagged ? " EXTREME EDITION: Iteration #[randomnumber]" : ""]
" //Different colour mix for every random number made - dat += " [emagged ? "Explode in the game, explode in real life" : "Reveal all the squares without hitting a mine"]!
What difficulty do you want to play?



Easy (9x9 board, 10 mines)
Intermediate (16x16 board, 40 mines)
Hard (16x30 board, 99 mines)
Custom" - else - dat = saved_web - user = usr - - var/datum/asset/assets = get_asset_datum(/datum/asset/spritesheet/simple/minesweeper) - assets.send(user) - - user << browse(dat,"window=minesweeper,size=400x500") - add_fingerprint(user) - - . = ..() - -/obj/machinery/computer/arcade/minesweeper/proc/reset_spark_spam() - spark_spam = FALSE - -/obj/machinery/computer/arcade/minesweeper/Topic(href, href_list) - . = ..() - if(.) - return - - var/exploding_hell = FALSE //For emagged failures - var/reset_board = FALSE - var/mob/living/user = usr //To identify who the hell is using this window, this should also make things like aliens and monkeys able to use the machine!! - var/web_difficulty_menu = " Reveal all the squares without hitting a mine!
What difficulty do you want to play?



Easy (9x9 board, 10 mines)
Intermediate (16x16 board, 40 mines)
Hard (16x30 board, 99 mines)
Custom" - var/web = "Minesweeper
Minesweeper
" - var/static_web = "Minesweeper
Minesweeper
" //When we need to revert to the main menu we set web as this - web = static_web - - if(CHECK_BITFIELD(obj_flags, EMAGGED)) - web = "Minesweeper
Minesweeper EXTREME EDITION: Iteration #[randomnumber]
" //Different colour mix for every random number made - if(!spark_spam) - do_sparks(5, 1, src) - spark_spam = TRUE - addtimer(CALLBACK(src, .proc/reset_spark_spam), 30) - - - var/startup_sound = CHECK_BITFIELD(obj_flags, EMAGGED) ? 'sound/arcade/minesweeper_emag2.ogg' : 'sound/arcade/minesweeper_startup.ogg' - - if(href_list["Main_Menu"]) - game_status = MINESWEEPER_GAME_MAIN_MENU - mine_limit = 0 - rows = 0 - columns = 0 - mine_placed = 0 - if(href_list["Easy"]) - playsound(loc, startup_sound, 50, FALSE, extrarange = -3) - flag_text = "OFF" - game_status = MINESWEEPER_GAME_PLAYING - reset_board = TRUE - difficulty = "Easy" - rows = 10 //9x9 board - columns = 10 - mine_limit = 10 - if(href_list["Intermediate"]) - playsound(loc, startup_sound, 50, FALSE, extrarange = -3) - flag_text = "OFF" - game_status = MINESWEEPER_GAME_PLAYING - reset_board = TRUE - difficulty = "Intermediate" - rows = 17 //16x16 board - columns = 17 - mine_limit = 40 - if(href_list["Hard"]) - playsound(loc, startup_sound, 50, FALSE, extrarange = -3) - flag_text = "OFF" - game_status = MINESWEEPER_GAME_PLAYING - reset_board = TRUE - difficulty = "Hard" - rows = 17 //16x30 board - columns = 31 - mine_limit = 99 - if(href_list["Custom"]) - if(custom_generation(usr)) - flag_text = "OFF" - game_status = MINESWEEPER_GAME_PLAYING - reset_board = TRUE - difficulty = "Custom" - playsound(loc, startup_sound, 50, FALSE, extrarange = -3) - if(href_list["Flag"]) - playsound(loc, 'sound/arcade/minesweeper_boardpress.ogg', 50, FALSE, extrarange = -3) - if(!flagging) - flagging = TRUE - flag_text = "ON" - else - flagging = FALSE - flag_text = "OFF" - - if(game_status == MINESWEEPER_GAME_MAIN_MENU) - if(CHECK_BITFIELD(obj_flags, EMAGGED)) - playsound(loc, 'sound/arcade/minesweeper_emag2.ogg', 50, FALSE, extrarange = -3) - web += "Explode in the game, explode in real life!
What difficulty do you want to play?



Easy (9x9 board, 10 mines)
Intermediate (16x16 board, 40 mines)
Hard (16x30 board, 99 mines)
Custom" - else - playsound(loc, 'sound/arcade/minesweeper_startup.ogg', 50, FALSE, extrarange = -3) - web += web_difficulty_menu - - if(game_status == MINESWEEPER_GAME_PLAYING) - mine_sound = TRUE - - area = (rows-1)*(columns-1) - - if(reset_board) - mine_placed = 0 - var/reset_everything = TRUE - make_mines(reset_everything) - - safe_squares_revealed = 0 - win_condition = area-mine_placed - - if(game_status != MINESWEEPER_GAME_MAIN_MENU) - for(var/y1=1;y1= 0) //Check that it's not already revealed, and stop flag removal if we're out of flag mode - table[y1][x1] += 10 - if(table[y1][x1] != 10) - playsound(loc, 'sound/arcade/minesweeper_boardpress.ogg', 50, FALSE, extrarange = -3) - else - if(game_status != MINESWEEPER_GAME_LOST && game_status != MINESWEEPER_GAME_WON) - game_status = MINESWEEPER_GAME_LOST - if(CHECK_BITFIELD(obj_flags, EMAGGED) && !exploding_hell) - exploding_hell = TRUE - explode_EVERYTHING() - if(QDELETED(src)) - return - if(mine_sound) - switch(rand(1,3)) //Play every time a mine is hit - if(1) - playsound(loc, 'sound/arcade/minesweeper_explosion1.ogg', 50, FALSE, extrarange = -3) - if(2) - playsound(loc, 'sound/arcade/minesweeper_explosion2.ogg', 50, FALSE, extrarange = -3) - if(3) - playsound(loc, 'sound/arcade/minesweeper_explosion3.ogg', 50, FALSE, extrarange = -3) - mine_sound = FALSE - else - playsound(loc, 'sound/arcade/minesweeper_boardpress.ogg', 50, FALSE, extrarange = -3) - if(table[y1][x1] >= 0) //Check that it's not already flagged - table[y1][x1] -= 10 - else if(table[y1][x1] < 0) //If flagged, remove the flag - table[y1][x1] += 10 - if(table[y1][x1] > 10 && !reset_board) - safe_squares_revealed += 1 - var/y2 = y1 - var/x2 = x1 - work_squares(y2, x2) //Work squares while in this loop so there's less load - reset_board = FALSE - CHECK_TICK - - web += "" //Start setting up the html table - web += "" - for(var/y1=1;y1= win_condition && game_status == MINESWEEPER_GAME_PLAYING) - game_status = MINESWEEPER_GAME_WON - if(rows < 10 || columns < 10) //If less than easy difficulty - playsound(loc, 'sound/arcade/minesweeper_winfail.ogg', 50, FALSE, extrarange = -3) - say("You cleared the board of all mines, but you picked too small of a board! Try again with at least a 9x9 board!") - else - playsound(loc, 'sound/arcade/minesweeper_win.ogg', 50, FALSE, extrarange = -3) - say("You cleared the board of all mines! Congratulations!") - if(CHECK_BITFIELD(obj_flags, EMAGGED)) - var/itemname - switch(rand(1,3)) - if(1) - itemname = "a syndicate bomb beacon" - new /obj/item/sbeacondrop/bomb(loc) - if(2) - itemname = "a rocket launcher" - new /obj/item/gun/ballistic/rocketlauncher/unrestricted(loc) - new /obj/item/ammo_casing/caseless/rocket(loc) - new /obj/item/ammo_casing/caseless/rocket(loc) - new /obj/item/ammo_casing/caseless/rocket(loc) - if(3) - itemname = "two bags of c4" - new /obj/item/storage/backpack/duffelbag/syndie/c4(loc) - new /obj/item/storage/backpack/duffelbag/syndie/x4(loc) - message_admins("[key_name_admin(user)] won emagged Minesweeper and got [itemname]!") - visible_message("[src] dispenses [itemname]!", "You hear a chime and a clunk.") - DISABLE_BITFIELD(obj_flags, EMAGGED) - else - var/dope_prizes = (area >= 480) ? 6 : (area >= 256) ? 4 : 2 - prizevend(user, dope_prizes) - - if(game_status == MINESWEEPER_GAME_WON) - web += "[(rows < 10 || columns < 10) ? "You won, but your board was too small! Pick a bigger board next time!" : "Congratulations, you have won!"]
Want to play again?
Easy (9x9 board, 10 mines)
Intermediate (16x16 board, 40 mines)
Hard (16x30 board, 99 mines)
Custom

Return to Main Menu
" - - if(game_status == MINESWEEPER_GAME_LOST) - web += "You have lost!
Try again?
Easy (9x9 board, 10 mines)
Intermediate (16x16 board, 40 mines)
Hard (16x30 board, 99 mines)
Custom

Return to Main Menu
" - - if(game_status == MINESWEEPER_GAME_PLAYING) - web += "Return to Main Menu
" - web += "
Difficulty: [difficulty]
Mines: [mine_placed]
Rows: [rows-1]
Columns: [columns-1]
Flagging mode: [flag_text]
" - - web += "" - var/datum/asset/spritesheet/sheet = get_asset_datum(/datum/asset/spritesheet/simple/minesweeper) - saved_web = sheet.css_tag() - saved_web += web - updateDialog() - return - -/obj/machinery/computer/arcade/minesweeper/emag_act(mob/user) - . = ..() - if(CHECK_BITFIELD(obj_flags, EMAGGED)) - return - desc = "An arcade machine that generates grids. It's clunking and sparking everywhere, almost as if threatening to explode at any moment!" - do_sparks(5, 1, src) - randomnumber = rand(1,255) - randomcolour = rgb(randomnumber,randomnumber/2,randomnumber/3) - ENABLE_BITFIELD(obj_flags, EMAGGED) - if(game_status == MINESWEEPER_GAME_MAIN_MENU) - to_chat(user, "An ominous tune plays from the arcade's speakers!") - playsound(user, 'sound/arcade/minesweeper_emag1.ogg', 100, FALSE, extrarange = 3) - else //Can't let you do that, star fox! - to_chat(user, "The machine buzzes and sparks... the game has been reset!") - playsound(user, 'sound/machines/buzz-sigh.ogg', 100, FALSE, extrarange = 3) //Loud buzz - game_status = MINESWEEPER_GAME_MAIN_MENU - return TRUE - -/obj/machinery/computer/arcade/minesweeper/proc/custom_generation(mob/user) - playsound(loc, 'sound/arcade/minesweeper_menuselect.ogg', 50, FALSE, extrarange = -3) //Entered into the menu so ping sound - var/new_rows = input(user, "How many rows do you want? (Minimum: 4, Maximum: 30)", "Minesweeper Rows") as null|num - if(!new_rows || !user.canUseTopic(src, !hasSiliconAccessInArea(user))) - return FALSE - new_rows = clamp(new_rows + 1, 4, 20) - playsound(loc, 'sound/arcade/minesweeper_menuselect.ogg', 50, FALSE, extrarange = -3) - var/new_columns = input(user, "How many columns do you want? (Minimum: 4, Maximum: 50)", "Minesweeper Squares") as null|num - if(!new_columns || !user.canUseTopic(src, !hasSiliconAccessInArea(user))) - return FALSE - new_columns = clamp(new_columns + 1, 4, 30) - playsound(loc, 'sound/arcade/minesweeper_menuselect.ogg', 50, FALSE, extrarange = -3) - var/grid_area = (new_rows - 1) * (new_columns - 1) - var/lower_limit = round(grid_area*0.156) - var/upper_limit = round(grid_area*0.85) - var/new_mine_limit = input(user, "How many mines do you want? (Minimum: [lower_limit], Maximum: [upper_limit])", "Minesweeper Mines") as null|num - if(!new_mine_limit || !user.canUseTopic(src, !hasSiliconAccessInArea(user))) - return FALSE - playsound(loc, 'sound/arcade/minesweeper_menuselect.ogg', 50, FALSE, extrarange = -3) - rows = new_rows - columns = new_columns - mine_limit = clamp(new_mine_limit, lower_limit, upper_limit) - return TRUE - -/obj/machinery/computer/arcade/minesweeper/proc/make_mines(var/reset_everything) - if(mine_placed < mine_limit) - for(var/y1=1;y1 0 && x3 > 0) - y2 = y3 - x2 = x3 - if(table[y2][x2] == 1) - for(y3=y2-1;y3= rows || y3 < 1) - continue - for(x3=x2-1;x3= columns || x3 < 1) - continue - if(table[y3][x3] == 0) - table[y2][x2] += 1 - if(table[y2][x2] == 11) - for(y3=y2-1;y3= rows || y3 < 1) - continue - for(x3=x2-1;x3= columns || x3 < 1) - continue - if(table[y3][x3] > 0 && table[y3][x3] < 10) - table[y3][x3] += 10 - work_squares(y3, x3) //Refresh so we check everything we might be missing - -/obj/machinery/computer/arcade/minesweeper/proc/explode_EVERYTHING() - var/mob/living/user = usr - to_chat(user, "You feel a great sense of dread wash over you, as if you just unleashed armageddon upon yourself!") - var/row_limit = rows-1 - var/column_limit = columns-1 - var/mine_limit_v2 = mine_limit - if(rows > 21) - row_limit = 20 - if(columns > 21) - column_limit = 20 - if(mine_limit > (rows*columns) * 0.25) - mine_limit_v2 = 24 - message_admins("[key_name_admin(user)] failed an emagged Minesweeper arcade and has unleashed an explosion armageddon of size [row_limit],[column_limit] around [ADMIN_LOOKUPFLW(user.loc)]!") - if(mine_limit_v2 < 10) - explosion(loc, 2, 5, 10, 15) //Thought you could survive by putting as few mines as possible, huh?? - else - explosion(loc, 1, 3, rand(1,5), rand(1,10)) - var/list/targets = list() - var/cur_y = y - round(row_limit * 0.5, 1) - var/starting_row = 1 - if(cur_y < 1) - starting_row -= cur_y - 1 - cur_y = 1 - var/start_x = x - round(column_limit * 0.5, 1) - var/starting_column = 1 - if(start_x < 1) - starting_column -= start_x - 1 - start_x = 1 - for(var/row in starting_row to length(table)) //translate the mines locations into actual turf coordinates. - if(!locate(cur_y, start_x, z)) - break - var/cur_x = start_x - for(var/column in starting_column to length(table[row])) - var/coord_value = table[row][column] - if(coord_value == 10 || coord_value == 0) //there is a mine in here. - var/turf/T = locate(cur_y, cur_x, z) - if(!T) - break - targets += T - cur_x++ - cur_y++ - var/num_explosions = 0 - for(var/T in shuffle(targets)) //Create a shitton of explosions in irl turfs if we lose, it will probably kill us - addtimer(CALLBACK(GLOBAL_PROC, /proc/explosion, T, 0, rand(1,2),rand(1,5),rand(3,10), FALSE), 15 * ++num_explosions) - if(num_explosions == mine_limit_v2) - return - -#undef MINESWEEPERIMG -#undef MINESWEEPER_GAME_MAIN_MENU -#undef MINESWEEPER_GAME_PLAYING -#undef MINESWEEPER_GAME_LOST -#undef MINESWEEPER_GAME_WON diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm index 5d1b30741b..d4807e377c 100644 --- a/code/game/machinery/requests_console.dm +++ b/code/game/machinery/requests_console.dm @@ -62,7 +62,7 @@ GLOBAL_LIST_EMPTY(allConsoles) update_icon() /obj/machinery/requests_console/update_icon_state() - if(CHECK_BITFIELD(stat, NOPOWER)) + if((stat & NOPOWER)) set_light(0) else set_light(1.4, 0.7, "#34D352")//green light @@ -72,7 +72,7 @@ GLOBAL_LIST_EMPTY(allConsoles) icon_state="req_comp_open" else icon_state="req_comp_rewired" - else if(CHECK_BITFIELD(stat, NOPOWER)) + else if((stat & NOPOWER)) if(icon_state != "req_comp_off") icon_state = "req_comp_off" else diff --git a/code/game/machinery/telecomms/computers/logbrowser.dm b/code/game/machinery/telecomms/computers/logbrowser.dm index ca04009e3b..c39c4667a6 100644 --- a/code/game/machinery/telecomms/computers/logbrowser.dm +++ b/code/game/machinery/telecomms/computers/logbrowser.dm @@ -1,5 +1,5 @@ /* - The log console for viewing the entire telecomms + The log console for viewing the entire telecomms network log */ @@ -15,7 +15,7 @@ var/network = "NULL" // the network to probe var/notice = "" - var/universal_translate = FALSE // set to TRUE(1) if it can translate nonhuman speech + var/universal_translate = FALSE // set to TRUE(1) if it can translate nonhuman speech /obj/machinery/computer/telecomms/server/ui_interact(mob/user, datum/tgui/ui) ui = SStgui.try_update_ui(user, src, ui) @@ -53,7 +53,7 @@ if(!LAZYLEN(SelectedMachine.log_entries)) return data_out - + for(var/datum/comm_log_entry/C in SelectedMachine.log_entries) var/list/data = list() data["name"] = C.name //name of the file @@ -104,7 +104,7 @@ data["message"] = C.parameters["message"] else data["message"] = "(unintelligible)" - + data_out["selected_logs"] += list(data) return data_out @@ -133,7 +133,7 @@ if(LAZYLEN(machinelist) > 0) notice = "FAILED: Cannot probe when buffer full" return - + for(var/obj/machinery/telecomms/T in GLOB.telecomms_list) //telecomms just went global! if(T.network == network) LAZYADD(machinelist, T) @@ -147,7 +147,7 @@ SelectedMachine = T break if("delete") - if(!src.allowed(usr) && !CHECK_BITFIELD(obj_flags, EMAGGED)) + if(!src.allowed(usr) && !(obj_flags & EMAGGED)) to_chat(usr, "ACCESS DENIED.") return @@ -156,7 +156,7 @@ return var/datum/comm_log_entry/D = locate(params["value"]) if(!istype(D)) - notice = "NOTICE: Object not found" + notice = "NOTICE: Object not found" return notice = "Deleted entry: [D.name]" LAZYREMOVE(SelectedMachine.log_entries, D) diff --git a/code/game/machinery/telecomms/computers/message.dm b/code/game/machinery/telecomms/computers/message.dm index a674bb6489..b4f4b495f8 100644 --- a/code/game/machinery/telecomms/computers/message.dm +++ b/code/game/machinery/telecomms/computers/message.dm @@ -94,9 +94,9 @@ if(istype(S) && S.hack_software) data_out["canhack"] = TRUE - data_out["hacking"] = (hacking || CHECK_BITFIELD(obj_flags, EMAGGED)) + data_out["hacking"] = (hacking || (obj_flags & EMAGGED)) if(hacking) - data_out["borg"] = ((isAI(user) || iscyborg(user)) && !CHECK_BITFIELD(obj_flags, EMAGGED)) //even borgs can't read emag + data_out["borg"] = ((isAI(user) || iscyborg(user)) && !(obj_flags & EMAGGED)) //even borgs can't read emag return data_out data_out["servers"] = list() @@ -324,7 +324,7 @@ update_static_data(usr) /obj/machinery/computer/message_monitor/attackby(obj/item/O, mob/living/user, params) - if(O.tool_behaviour == TOOL_SCREWDRIVER && CHECK_BITFIELD(obj_flags, EMAGGED)) + if(O.tool_behaviour == TOOL_SCREWDRIVER && (obj_flags & EMAGGED)) //Stops people from just unscrewing the monitor and putting it back to get the console working again. //Why this though, you should make it emag to a board level. (i wont do it) to_chat(user, "It is too hot to mess with!") @@ -333,12 +333,12 @@ /obj/machinery/computer/message_monitor/emag_act(mob/user) . = ..() - if(CHECK_BITFIELD(obj_flags, EMAGGED)) + if((obj_flags & EMAGGED)) return if(isnull(linkedServer)) to_chat(user, "A no server error appears on the screen.") return - ENABLE_BITFIELD(obj_flags, EMAGGED) + obj_flags |= EMAGGED spark_system.set_up(5, 0, src) spark_system.start() var/obj/item/paper/monitorkey/MK = new(loc, linkedServer) @@ -366,7 +366,7 @@ message = "" /obj/machinery/computer/message_monitor/proc/UnmagConsole() - DISABLE_BITFIELD(obj_flags, EMAGGED) + obj_flags &= ~(EMAGGED) message = "" /obj/machinery/computer/message_monitor/proc/ResetMessage() diff --git a/code/game/machinery/telecomms/telecomunications.dm b/code/game/machinery/telecomms/telecomunications.dm index f75eef0b21..a49fb32538 100644 --- a/code/game/machinery/telecomms/telecomunications.dm +++ b/code/game/machinery/telecomms/telecomunications.dm @@ -119,7 +119,7 @@ GLOBAL_LIST_EMPTY(telecomms_list) /obj/machinery/telecomms/proc/update_power() if(toggled) // if powered, on. if not powered, off. if too damaged, off - if(CHECK_BITFIELD(stat, (BROKEN | NOPOWER | EMPED))) + if(stat &(BROKEN | NOPOWER | EMPED)) on = FALSE else on = TRUE @@ -137,11 +137,11 @@ GLOBAL_LIST_EMPTY(telecomms_list) /obj/machinery/telecomms/emp_act(severity) . = ..() - if(CHECK_BITFIELD(., EMP_PROTECT_SELF)) + if((. & EMP_PROTECT_SELF)) return if(prob(severity)) - if(!CHECK_BITFIELD(stat, EMPED)) - ENABLE_BITFIELD(stat, EMPED) + if(!(stat & EMPED)) + stat |= EMPED var/duration = severity * 35 spawn(rand(duration - 20, duration + 20)) // Takes a long time for the machines to reboot. - DISABLE_BITFIELD(stat, EMPED) + stat &= ~(EMPED) diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index 1435f78718..756cee058c 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -276,7 +276,7 @@ /obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/critfail() ..() if(reagents) - DISABLE_BITFIELD(reagents.reagents_holder_flags, NO_REACT) + reagents.reagents_holder_flags &= ~(NO_REACT) /obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/can_attach(obj/mecha/medical/M) if(..()) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 53f64c57d2..96fd32401a 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -450,8 +450,8 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb A.Remove(user) if(item_flags & DROPDEL) qdel(src) - DISABLE_BITFIELD(item_flags, IN_INVENTORY) - DISABLE_BITFIELD(item_flags, IN_STORAGE) + item_flags &= ~(IN_INVENTORY) + item_flags &= ~(IN_STORAGE) SEND_SIGNAL(src, COMSIG_ITEM_DROPPED,user) remove_outline() // if(!silent) @@ -529,8 +529,8 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb if(item_action_slot_check(slot, user, A)) //some items only give their actions buttons when in a specific slot. A.Grant(user) item_flags |= IN_INVENTORY - if(CHECK_BITFIELD(item_flags, IN_STORAGE)) // Left storage item but somehow has the bitfield active still. - DISABLE_BITFIELD(item_flags, IN_STORAGE) + if((item_flags & IN_STORAGE)) // Left storage item but somehow has the bitfield active still. + item_flags &= ~(IN_STORAGE) // if(!initial) // if(equip_sound && (slot_flags & slot)) // playsound(src, equip_sound, EQUIP_SOUND_VOLUME, TRUE, ignore_walls = FALSE) @@ -1054,7 +1054,7 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb */ /obj/item/proc/set_slowdown(new_slowdown) slowdown = new_slowdown - if(CHECK_BITFIELD(item_flags, IN_INVENTORY)) + if((item_flags & IN_INVENTORY)) var/mob/living/L = loc if(istype(L)) L.update_equipment_speed_mods() diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm index 5e37e9d992..702cbd8d56 100644 --- a/code/game/objects/items/cigs_lighters.dm +++ b/code/game/objects/items/cigs_lighters.dm @@ -190,7 +190,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM qdel(src) return // allowing reagents to react after being lit - DISABLE_BITFIELD(reagents.reagents_holder_flags, NO_REACT) + reagents.reagents_holder_flags &= ~(NO_REACT) reagents.handle_reactions() icon_state = icon_on item_state = icon_on @@ -762,7 +762,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM if(!screw) screw = TRUE to_chat(user, "You open the cap on [src].") - ENABLE_BITFIELD(reagents.reagents_holder_flags, OPENCONTAINER) + reagents.reagents_holder_flags |= OPENCONTAINER if(obj_flags & EMAGGED) add_overlay("vapeopen_high") else if(super) @@ -772,7 +772,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM else screw = FALSE to_chat(user, "You close the cap on [src].") - DISABLE_BITFIELD(reagents.reagents_holder_flags, OPENCONTAINER) + reagents.reagents_holder_flags &= ~(OPENCONTAINER) cut_overlays() if(O.tool_behaviour == TOOL_MULTITOOL) @@ -822,7 +822,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM if(slot == SLOT_WEAR_MASK) if(!screw) to_chat(user, "You start puffing on the vape.") - DISABLE_BITFIELD(reagents.reagents_holder_flags, NO_REACT) + reagents.reagents_holder_flags &= ~(NO_REACT) START_PROCESSING(SSobj, src) else //it will not start if the vape is opened. to_chat(user, "You need to close the cap first!") @@ -831,7 +831,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM . = ..() var/mob/living/carbon/C = user if(C.get_item_by_slot(SLOT_WEAR_MASK) == src) - ENABLE_BITFIELD(reagents.reagents_holder_flags, NO_REACT) + reagents.reagents_holder_flags |= NO_REACT STOP_PROCESSING(SSobj, src) /obj/item/clothing/mask/vape/proc/hand_reagents()//had to rename to avoid duplicate error diff --git a/code/game/objects/items/circuitboards/computer_circuitboards.dm b/code/game/objects/items/circuitboards/computer_circuitboards.dm index afab49ac76..742a1fe3b0 100644 --- a/code/game/objects/items/circuitboards/computer_circuitboards.dm +++ b/code/game/objects/items/circuitboards/computer_circuitboards.dm @@ -259,11 +259,6 @@ build_path = /obj/machinery/computer/arcade/orion_trail -/obj/item/circuitboard/computer/arcade/minesweeper - name = "Minesweeper (Computer Board)" - icon_state = "generic" - build_path = /obj/machinery/computer/arcade/minesweeper - /obj/item/circuitboard/computer/holodeck// Not going to let people get this, but it's just here for future name = "Holodeck Control (Computer Board)" icon_state = "generic" diff --git a/code/game/objects/items/circuitboards/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machine_circuitboards.dm index 6bf6e7d312..cb1d4aae88 100644 --- a/code/game/objects/items/circuitboards/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machine_circuitboards.dm @@ -1295,6 +1295,15 @@ /obj/item/stock_parts/manipulator = 1) needs_anchored = FALSE +/obj/item/circuitboard/machine/autoloom + name = "Autoloom (Machine Board)" + icon_state = "service" + build_path = /obj/machinery/autoloom + req_components = list( + /obj/item/stock_parts/matter_bin = 1, + /obj/item/stock_parts/manipulator = 1) + needs_anchored = FALSE + /obj/item/circuitboard/machine/seed_extractor name = "Seed Extractor (Machine Board)" icon_state = "service" diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index aa48930d6c..5058060f54 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -72,6 +72,10 @@ var/datum/team/gang/gang //For marking territory. var/gang_tag_delay = 30 //this is the delay for gang mode tag applications on anything that gang = true on. + var/precision_mode = FALSE + var/precision_x = 0 + var/precision_y = 0 + /obj/item/toy/crayon/proc/isValidSurface(surface) return istype(surface, /turf/open/floor) @@ -228,6 +232,12 @@ .["can_change_colour"] = can_change_colour .["current_colour"] = paint_color + .["precision_mode"] = precision_mode + .["x"] = precision_x + .["y"] = precision_y + .["min_offset"] = -world.icon_size/2 + .["max_offset"] = world.icon_size/2 + /obj/item/toy/crayon/ui_act(action, list/params) if(..()) return @@ -256,6 +266,17 @@ . = TRUE paint_mode = PAINT_NORMAL drawtype = "a" + if("toggle_precision") + precision_mode = !precision_mode + . = TRUE + if("set_precision_x") + var/x = text2num(params["x"]) + precision_x = x + . = TRUE + if("set_precision_y") + var/y = text2num(params["y"]) + precision_y = y + . = TRUE update_icon() /obj/item/toy/crayon/proc/select_colour(mob/user) @@ -400,8 +421,12 @@ if(PAINT_NORMAL) var/obj/effect/decal/cleanable/crayon/C = new(target, paint_color, drawing, temp, graf_rot) C.add_hiddenprint(user) - C.pixel_x = clickx - C.pixel_y = clicky + if(precision_mode) + C.pixel_x = clamp(precision_x, -(world.icon_size/2), world.icon_size/2) + C.pixel_y = clamp(precision_y, -(world.icon_size/2), world.icon_size/2) + else + C.pixel_x = clickx + C.pixel_y = clicky affected_turfs += target if(PAINT_LARGE_HORIZONTAL) var/turf/left = locate(target.x-1,target.y,target.z) diff --git a/code/game/objects/items/devices/dogborg_sleeper.dm b/code/game/objects/items/devices/dogborg_sleeper.dm index 977029cca3..e7493efadc 100644 --- a/code/game/objects/items/devices/dogborg_sleeper.dm +++ b/code/game/objects/items/devices/dogborg_sleeper.dm @@ -326,7 +326,7 @@ cleaning_cycles-- cleaning = TRUE for(var/mob/living/carbon/C in (touchable_items)) - if((C.status_flags & GODMODE) || !CHECK_BITFIELD(C.vore_flags, DIGESTABLE)) + if((C.status_flags & GODMODE) || !(C.vore_flags & DIGESTABLE)) items_preserved += C else C.adjustBruteLoss(2) @@ -335,7 +335,7 @@ var/atom/target = pick(touchable_items) if(iscarbon(target)) //Handle the target being a mob var/mob/living/carbon/T = target - if(T.stat == DEAD && CHECK_BITFIELD(T.vore_flags, DIGESTABLE)) //Mob is now dead + if(T.stat == DEAD && (T.vore_flags & DIGESTABLE)) //Mob is now dead message_admins("[key_name(hound)] has digested [key_name(T)] as a dogborg. ([hound ? "JMP" : "null"])") to_chat(hound,"You feel your belly slowly churn around [T], breaking them down into a soft slurry to be used as power for your systems.") to_chat(T,"You feel [hound]'s belly slowly churn around your form, breaking you down into a soft slurry to be used as power for [hound]'s systems.") @@ -433,7 +433,7 @@ var/mob/living/silicon/robot/hound = get_host() if(!hound || !istype(target) || !proximity || target.anchored) return - if (!CHECK_BITFIELD(target.vore_flags,DEVOURABLE)) + if (!(target.vore_flags & DEVOURABLE)) to_chat(user, "The target registers an error code. Unable to insert into [src].") return if(patient) diff --git a/code/game/objects/items/dualsaber.dm b/code/game/objects/items/dualsaber.dm index eea189c3be..9a6a87bb51 100644 --- a/code/game/objects/items/dualsaber.dm +++ b/code/game/objects/items/dualsaber.dm @@ -23,7 +23,7 @@ max_integrity = 200 armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 70) resistance_flags = FIRE_PROOF - wound_bonus = -110 + wound_bonus = -40 bare_wound_bonus = 20 block_parry_data = /datum/block_parry_data/dual_esword block_chance = 60 @@ -133,7 +133,7 @@ total_mass = initial(total_mass) wielded = FALSE hitsound = "swing_hit" - slowdown_wielded -= slowdown_wielded + slowdown -= slowdown_wielded STOP_PROCESSING(SSobj, src) set_light(0) RemoveElement(/datum/element/sword_point) @@ -278,6 +278,7 @@ desc = "A supermassive weapon envisioned to cleave the very fabric of space and time itself in twain, the hypereutactic blade dynamically flash-forges a hypereutactic crystaline nanostructure capable of passing through most known forms of matter like a hot knife through butter." force = 7 hitsound_on = 'sound/weapons/nebhit.ogg' + wound_bonus = -20 armour_penetration = 60 light_color = "#37FFF7" rainbow_colors = list("#FF0000", "#FFFF00", "#00FF00", "#00FFFF", "#0000FF","#FF00FF", "#3399ff", "#ff9900", "#fb008b", "#9800ff", "#00ffa3", "#ccff00") diff --git a/code/game/objects/items/shields.dm b/code/game/objects/items/shields.dm index f1691e5eb9..8432a8b73e 100644 --- a/code/game/objects/items/shields.dm +++ b/code/game/objects/items/shields.dm @@ -174,11 +174,11 @@ /obj/item/shield/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return) if(ismovable(object)) var/atom/movable/AM = object - if(CHECK_BITFIELD(shield_flags, SHIELD_TRANSPARENT) && (AM.pass_flags & PASSGLASS)) + if((shield_flags & SHIELD_TRANSPARENT) && (AM.pass_flags & PASSGLASS)) return BLOCK_NONE - if(CHECK_BITFIELD(shield_flags, SHIELD_NO_RANGED) && (attack_type & ATTACK_TYPE_PROJECTILE)) + if((shield_flags & SHIELD_NO_RANGED) && (attack_type & ATTACK_TYPE_PROJECTILE)) return BLOCK_NONE - if(CHECK_BITFIELD(shield_flags, SHIELD_NO_MELEE) && (attack_type & ATTACK_TYPE_MELEE)) + if((shield_flags & SHIELD_NO_MELEE) && (attack_type & ATTACK_TYPE_MELEE)) return BLOCK_NONE if(attack_type & ATTACK_TYPE_THROWN) final_block_chance += 30 @@ -249,15 +249,15 @@ if(attack_type & ATTACK_TYPE_MELEE) var/obj/hittingthing = object if(hittingthing.damtype == BURN) - if(CHECK_BITFIELD(shield_flags, SHIELD_ENERGY_WEAK)) + if((shield_flags & SHIELD_ENERGY_WEAK)) final_damage *= 2 - else if(CHECK_BITFIELD(shield_flags, SHIELD_ENERGY_STRONG)) + else if((shield_flags & SHIELD_ENERGY_STRONG)) final_damage *= 0.5 if(hittingthing.damtype == BRUTE) - if(CHECK_BITFIELD(shield_flags, SHIELD_KINETIC_WEAK)) + if((shield_flags & SHIELD_KINETIC_WEAK)) final_damage *= 2 - else if(CHECK_BITFIELD(shield_flags, SHIELD_KINETIC_STRONG)) + else if((shield_flags & SHIELD_KINETIC_STRONG)) final_damage *= 0.5 if(hittingthing.damtype == STAMINA || hittingthing.damtype == TOX || hittingthing.damtype == CLONE || hittingthing.damtype == BRAIN || hittingthing.damtype == OXY) @@ -266,19 +266,19 @@ if(attack_type & ATTACK_TYPE_PROJECTILE) var/obj/item/projectile/shootingthing = object if(is_energy_reflectable_projectile(shootingthing)) - if(CHECK_BITFIELD(shield_flags, SHIELD_ENERGY_WEAK)) + if((shield_flags & SHIELD_ENERGY_WEAK)) final_damage *= 2 - else if(CHECK_BITFIELD(shield_flags, SHIELD_ENERGY_STRONG)) + else if((shield_flags & SHIELD_ENERGY_STRONG)) final_damage *= 0.5 if(!is_energy_reflectable_projectile(object)) - if(CHECK_BITFIELD(shield_flags, SHIELD_KINETIC_WEAK)) + if((shield_flags & SHIELD_KINETIC_WEAK)) final_damage *= 2 - else if(CHECK_BITFIELD(shield_flags, SHIELD_KINETIC_STRONG)) + else if((shield_flags & SHIELD_KINETIC_STRONG)) final_damage *= 0.5 if(shootingthing.damage_type == STAMINA) - if(CHECK_BITFIELD(shield_flags, SHIELD_DISABLER_DISRUPTED)) + if((shield_flags & SHIELD_DISABLER_DISRUPTED)) final_damage *= 3 //disablers melt these kinds of shields. Really meant more for holoshields. else final_damage = 0 diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm index 8b897cb6e5..df439e98f1 100644 --- a/code/game/objects/items/storage/boxes.dm +++ b/code/game/objects/items/storage/boxes.dm @@ -1290,9 +1290,9 @@ var/toxic_risk = min(round(spess_current_year - expiration_date * 0.01), 1) for(var/obj/item/reagent_containers/food/snacks/S in contents) if(prob(gross_risk)) - ENABLE_BITFIELD(S.foodtype, GROSS) + S.foodtype |= GROSS if(prob(toxic_risk)) - ENABLE_BITFIELD(S.foodtype, TOXIC) + S.foodtype |= TOXIC /obj/item/storage/box/mre/menu1 name = "\improper Nanotrasen MRE Ration Kit Menu 1" diff --git a/code/game/objects/items/storage/toolbox.dm b/code/game/objects/items/storage/toolbox.dm index 56cf50993b..869711e5b2 100644 --- a/code/game/objects/items/storage/toolbox.dm +++ b/code/game/objects/items/storage/toolbox.dm @@ -370,7 +370,7 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons) desc = replacetext(desc, "Danger", "Bouncy") desc = replacetext(desc, "robust", "safe") desc = replacetext(desc, "heavier", "bouncier") - DISABLE_BITFIELD(flags_1, CONDUCT_1) + flags_1 &= ~(CONDUCT_1) custom_materials = null damtype = STAMINA force += 3 //to compensate the higher stamina K.O. threshold compared to actual health. diff --git a/code/game/objects/items/tanks/tanks.dm b/code/game/objects/items/tanks/tanks.dm index 01da046809..b77e4a8ba0 100644 --- a/code/game/objects/items/tanks/tanks.dm +++ b/code/game/objects/items/tanks/tanks.dm @@ -48,7 +48,7 @@ var/obj/item/clothing/mask/M = check if(M.mask_adjusted) M.adjustmask(H) - if(CHECK_BITFIELD(check.clothing_flags, ALLOWINTERNALS)) + if((check.clothing_flags & ALLOWINTERNALS)) internals = TRUE if(!internals) diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm index 13c3c100b5..7688d2d342 100644 --- a/code/game/objects/items/tools/weldingtool.dm +++ b/code/game/objects/items/tools/weldingtool.dm @@ -291,10 +291,10 @@ status = !status if(status) to_chat(user, "You resecure [src] and close the fuel tank.") - DISABLE_BITFIELD(reagents.reagents_holder_flags, OPENCONTAINER) + reagents.reagents_holder_flags &= ~(OPENCONTAINER) else to_chat(user, "[src] can now be attached, modified, and refuelled.") - ENABLE_BITFIELD(reagents.reagents_holder_flags, OPENCONTAINER) + reagents.reagents_holder_flags |= OPENCONTAINER add_fingerprint(user) /obj/item/weldingtool/proc/flamethrower_rods(obj/item/I, mob/user) diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index b587e57c3a..356ccffef3 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -58,6 +58,7 @@ desc = "A wondrous decorated Christmas tree." icon_state = "pine_c" icon_states = null + resistance_flags = INDESTRUCTIBLE //Sorry grinch, not this time /obj/structure/flora/tree/pine/xmas/presents icon_state = "pinepresents" diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm index 40af75002f..be92782c74 100644 --- a/code/game/objects/structures/ghost_role_spawners.dm +++ b/code/game/objects/structures/ghost_role_spawners.dm @@ -800,6 +800,13 @@ /datum/outfit/ghostcafe/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source) ..() + if (isplasmaman(H)) + head = /obj/item/clothing/head/helmet/space/plasmaman + uniform = /obj/item/clothing/under/plasmaman + l_hand= /obj/item/tank/internals/plasmaman/belt/full + mask = /obj/item/clothing/mask/breath + return + var/suited = !preference_source || preference_source.prefs.jumpsuit_style == PREF_SUIT if (CONFIG_GET(flag/grey_assistants)) uniform = suited ? /obj/item/clothing/under/color/grey : /obj/item/clothing/under/color/jumpskirt/grey @@ -809,6 +816,10 @@ else uniform = suited ? /obj/item/clothing/under/color/random : /obj/item/clothing/under/color/jumpskirt/random +/datum/outfit/ghostcafe/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source) + H.internal = H.get_item_for_held_index(1) + H.update_internals_hud_icon(1) + /obj/item/storage/box/syndie_kit/chameleon/ghostcafe name = "ghost cafe costuming kit" desc = "Look just the way you did in life - or better!" diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index 4980981574..6a588a61cd 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -247,7 +247,13 @@ GLOBAL_LIST_EMPTY(crematoriums) locked = TRUE update_icon() - + for(var/mob/living/simple_animal/jacq/J in conts) + visible_message("[src] cackles, \"You'll nae get rid a me that easily!\"") + playsound(loc, 'sound/spookoween/ahaha.ogg', 100, 0.25) + J.poof() + locked = FALSE + update_icon() + return for(var/mob/living/M in conts) if (M.stat != DEAD) M.emote("scream") diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index d949158850..18ecbc21df 100755 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -512,7 +512,7 @@ GLOBAL_LIST_EMPTY(station_turfs) /turf/shove_act(mob/living/target, mob/living/user, pre_act = FALSE) var/list/possibilities for(var/obj/O in contents) - if(CHECK_BITFIELD(O.obj_flags, SHOVABLE_ONTO)) + if((O.obj_flags & SHOVABLE_ONTO)) LAZYADD(possibilities, O) else if(!O.CanPass(target, src)) return FALSE diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2.dm b/code/modules/admin/verbs/SDQL2/SDQL_2.dm index f2c10ecc1c..498355f7c3 100644 --- a/code/modules/admin/verbs/SDQL2/SDQL_2.dm +++ b/code/modules/admin/verbs/SDQL2/SDQL_2.dm @@ -262,7 +262,7 @@ selectors_used |= query.where_switched combined_refs |= query.select_refs running -= query - if(!CHECK_BITFIELD(query.options, SDQL2_OPTION_DO_NOT_AUTOGC)) + if(!(query.options & SDQL2_OPTION_DO_NOT_AUTOGC)) QDEL_IN(query, 50) else if(usr) @@ -442,19 +442,19 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null if("select") switch(value) if("force_nulls") - DISABLE_BITFIELD(options, SDQL2_OPTION_SELECT_OUTPUT_SKIP_NULLS) + options &= ~(SDQL2_OPTION_SELECT_OUTPUT_SKIP_NULLS) if("proccall") switch(value) if("blocking") - ENABLE_BITFIELD(options, SDQL2_OPTION_BLOCKING_CALLS) + options |= SDQL2_OPTION_BLOCKING_CALLS if("priority") switch(value) if("high") - ENABLE_BITFIELD(options, SDQL2_OPTION_HIGH_PRIORITY) + options |= SDQL2_OPTION_HIGH_PRIORITY if("autogc") switch(value) if("keep_alive") - ENABLE_BITFIELD(options, SDQL2_OPTION_DO_NOT_AUTOGC) + options |= SDQL2_OPTION_DO_NOT_AUTOGC /datum/SDQL2_query/proc/ARun() INVOKE_ASYNC(src, .proc/Run) diff --git a/code/modules/antagonists/traitor/classes/subterfuge.dm b/code/modules/antagonists/traitor/classes/subterfuge.dm index 54f07eb23c..6c4bd26afb 100644 --- a/code/modules/antagonists/traitor/classes/subterfuge.dm +++ b/code/modules/antagonists/traitor/classes/subterfuge.dm @@ -9,7 +9,7 @@ var/datum/game_mode/dynamic/mode if(istype(SSticker.mode,/datum/game_mode/dynamic)) mode = SSticker.mode - assassin_prob = max(0,mode.threat_level-40) + assassin_prob = max(0,mode.threat_level-20) if(prob(assassin_prob)) var/datum/objective/assassinate/once/kill_objective = new kill_objective.owner = T.owner diff --git a/code/modules/arousal/arousal.dm b/code/modules/arousal/arousal.dm index 36da6c73ba..a3adf0d25b 100644 --- a/code/modules/arousal/arousal.dm +++ b/code/modules/arousal/arousal.dm @@ -55,7 +55,7 @@ return genit_list /obj/item/organ/genital/proc/climaxable(mob/living/carbon/human/H, silent = FALSE) //returns the fluid source (ergo reagents holder) if found. - if(CHECK_BITFIELD(genital_flags, GENITAL_FUID_PRODUCTION)) + if((genital_flags & GENITAL_FUID_PRODUCTION)) . = reagents else if(linked_organ) @@ -124,7 +124,7 @@ var/list/worn_stuff = get_equipped_items() for(var/obj/item/organ/genital/G in internal_organs) - if(CHECK_BITFIELD(G.genital_flags, CAN_CLIMAX_WITH) && G.is_exposed(worn_stuff)) //filter out what you can't masturbate with + if((G.genital_flags & CAN_CLIMAX_WITH) && G.is_exposed(worn_stuff)) //filter out what you can't masturbate with LAZYADD(genitals_list, G) if(LAZYLEN(genitals_list)) var/obj/item/organ/genital/ret_organ = input(src, "with what?", "Climax", null) as null|obj in genitals_list @@ -212,7 +212,7 @@ if(forced_climax) //Something forced us to cum, this is not a masturbation thing and does not progress to the other checks log_message("was forced to climax by [cause]",LOG_EMOTE) for(var/obj/item/organ/genital/G in internal_organs) - if(!CHECK_BITFIELD(G.genital_flags, CAN_CLIMAX_WITH)) //Skip things like wombs and testicles + if(!(G.genital_flags & CAN_CLIMAX_WITH)) //Skip things like wombs and testicles continue mob_climax_outside(G, mb_time = 0) //removed climax timer for sudden, forced orgasms //Now all genitals that could climax, have. diff --git a/code/modules/arousal/genitals.dm b/code/modules/arousal/genitals.dm index 313f108b0f..b7e90e5b84 100644 --- a/code/modules/arousal/genitals.dm +++ b/code/modules/arousal/genitals.dm @@ -112,7 +112,7 @@ var/list/genital_list = list() for(var/obj/item/organ/genital/G in internal_organs) - if(!CHECK_BITFIELD(G.genital_flags, GENITAL_INTERNAL)) + if(!(G.genital_flags & GENITAL_INTERNAL)) genital_list += G if(!genital_list.len) //There is nothing to expose return diff --git a/code/modules/arousal/organs/breasts.dm b/code/modules/arousal/organs/breasts.dm index e37224e401..b9129e28a1 100644 --- a/code/modules/arousal/organs/breasts.dm +++ b/code/modules/arousal/organs/breasts.dm @@ -48,7 +48,7 @@ else desc += " You estimate that they're [uppertext(size)]-cups." - if(CHECK_BITFIELD(genital_flags, GENITAL_FUID_PRODUCTION) && aroused_state) + if((genital_flags & GENITAL_FUID_PRODUCTION) && aroused_state) var/datum/reagent/R = GLOB.chemical_reagents_list[fluid_id] if(R) desc += " They're leaking [lowertext(R.name)]." @@ -115,7 +115,7 @@ size = D.features["breasts_size"] shape = D.features["breasts_shape"] if(!D.features["breasts_producing"]) - DISABLE_BITFIELD(genital_flags, GENITAL_FUID_PRODUCTION|CAN_CLIMAX_WITH|CAN_MASTURBATE_WITH) + genital_flags &= ~ (GENITAL_FUID_PRODUCTION|CAN_CLIMAX_WITH|CAN_MASTURBATE_WITH) if(!isnum(size)) cached_size = breast_values[size] else diff --git a/code/modules/asset_cache/asset_list_items.dm b/code/modules/asset_cache/asset_list_items.dm index 0af024985e..2d680fe212 100644 --- a/code/modules/asset_cache/asset_list_items.dm +++ b/code/modules/asset_cache/asset_list_items.dm @@ -273,24 +273,6 @@ "frenching" = 'icons/UI_Icons/Achievements/Misc/frenchingthebubble.png' ) -/datum/asset/spritesheet/simple/minesweeper - name = "minesweeper" - assets = list( - "1" = 'icons/UI_Icons/minesweeper_tiles/one.png', - "2" = 'icons/UI_Icons/minesweeper_tiles/two.png', - "3" = 'icons/UI_Icons/minesweeper_tiles/three.png', - "4" = 'icons/UI_Icons/minesweeper_tiles/four.png', - "5" = 'icons/UI_Icons/minesweeper_tiles/five.png', - "6" = 'icons/UI_Icons/minesweeper_tiles/six.png', - "7" = 'icons/UI_Icons/minesweeper_tiles/seven.png', - "8" = 'icons/UI_Icons/minesweeper_tiles/eight.png', - "empty" = 'icons/UI_Icons/minesweeper_tiles/empty.png', - "flag" = 'icons/UI_Icons/minesweeper_tiles/flag.png', - "hidden" = 'icons/UI_Icons/minesweeper_tiles/hidden.png', - "mine" = 'icons/UI_Icons/minesweeper_tiles/mine.png', - "minehit" = 'icons/UI_Icons/minesweeper_tiles/minehit.png' - ) - /datum/asset/spritesheet/simple/pills name = "pills" assets = list( diff --git a/code/modules/cargo/packs/misc.dm b/code/modules/cargo/packs/misc.dm index 91663dbe0f..990e32df67 100644 --- a/code/modules/cargo/packs/misc.dm +++ b/code/modules/cargo/packs/misc.dm @@ -171,11 +171,11 @@ desc = "Start up your own grand casino with this crate filled with slot machine and arcade boards!" cost = 3000 contains = list(/obj/item/circuitboard/computer/arcade/battle, + /obj/item/circuitboard/computer/arcade/battle, /obj/item/circuitboard/computer/arcade/battle, /obj/item/circuitboard/computer/arcade/orion_trail, /obj/item/circuitboard/computer/arcade/orion_trail, - /obj/item/circuitboard/computer/arcade/minesweeper, - /obj/item/circuitboard/computer/arcade/minesweeper, + /obj/item/circuitboard/computer/arcade/orion_trail, /obj/item/circuitboard/computer/slot_machine, /obj/item/circuitboard/computer/slot_machine, /obj/item/circuitboard/computer/slot_machine, diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 96ffd09af8..510ac9ff28 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -126,29 +126,29 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car var/list/json_from_file = json_decode(file2text(vr_path)) if(json_from_file) if(json_from_file["digestable"]) - ENABLE_BITFIELD(vore_flags,DIGESTABLE) + vore_flags |= DIGESTABLE if(json_from_file["devourable"]) - ENABLE_BITFIELD(vore_flags,DEVOURABLE) + vore_flags |= DEVOURABLE if(json_from_file["feeding"]) - ENABLE_BITFIELD(vore_flags,FEEDING) + vore_flags |= FEEDING if(json_from_file["lickable"]) - ENABLE_BITFIELD(vore_flags,LICKABLE) + vore_flags |= LICKABLE belly_prefs = json_from_file["belly_prefs"] vore_taste = json_from_file["vore_taste"] for(var/V in all_quirks) // quirk migration switch(V) if("Acute hepatic pharmacokinesis") - DISABLE_BITFIELD(cit_toggles, PENIS_ENLARGEMENT) - DISABLE_BITFIELD(cit_toggles, BREAST_ENLARGEMENT) - ENABLE_BITFIELD(cit_toggles,FORCED_FEM) - ENABLE_BITFIELD(cit_toggles,FORCED_MASC) + cit_toggles &= ~(PENIS_ENLARGEMENT) + cit_toggles &= ~(BREAST_ENLARGEMENT) + cit_toggles |= FORCED_FEM + cit_toggles |= FORCED_MASC all_quirks -= V if("Crocin Immunity") - ENABLE_BITFIELD(cit_toggles,NO_APHRO) + cit_toggles |= NO_APHRO all_quirks -= V if("Buns of Steel") - ENABLE_BITFIELD(cit_toggles,NO_ASS_SLAP) + cit_toggles |= NO_ASS_SLAP all_quirks -= V if(features["meat_type"] == "Inesct") @@ -178,13 +178,13 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["feeding"] >> feeding S["lickable"] >> lickable if(digestable) - ENABLE_BITFIELD(vore_flags,DIGESTABLE) + vore_flags |= DIGESTABLE if(devourable) - ENABLE_BITFIELD(vore_flags,DEVOURABLE) + vore_flags |= DEVOURABLE if(feeding) - ENABLE_BITFIELD(vore_flags,FEEDING) + vore_flags |= FEEDING if(lickable) - ENABLE_BITFIELD(vore_flags,LICKABLE) + vore_flags |= LICKABLE if(current_version < 30) switch(features["taur"]) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 56ddb5f5f1..492768a8e0 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -67,7 +67,7 @@ /obj/item/clothing/Initialize() . = ..() - if(CHECK_BITFIELD(clothing_flags, VOICEBOX_TOGGLABLE)) + if((clothing_flags & VOICEBOX_TOGGLABLE)) actions_types += /datum/action/item_action/toggle_voice_box if(ispath(pocket_storage_component_path)) LoadComponent(pocket_storage_component_path) diff --git a/code/modules/clothing/masks/_masks.dm b/code/modules/clothing/masks/_masks.dm index c4063108db..ef7c6a1926 100644 --- a/code/modules/clothing/masks/_masks.dm +++ b/code/modules/clothing/masks/_masks.dm @@ -11,9 +11,9 @@ var/datum/beepsky_fashion/beepsky_fashion //the associated datum for applying this to a secbot /obj/item/clothing/mask/attack_self(mob/user) - if(CHECK_BITFIELD(clothing_flags, VOICEBOX_TOGGLABLE)) - TOGGLE_BITFIELD(clothing_flags, VOICEBOX_DISABLED) - var/status = !CHECK_BITFIELD(clothing_flags, VOICEBOX_DISABLED) + if((clothing_flags & VOICEBOX_TOGGLABLE)) + (clothing_flags ^= VOICEBOX_DISABLED) + var/status = !(clothing_flags & VOICEBOX_DISABLED) to_chat(user, "You turn the voice box in [src] [status ? "on" : "off"].") /obj/item/clothing/mask/equipped(mob/M, slot) diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm index 88fbc98280..e6a0425920 100644 --- a/code/modules/clothing/masks/miscellaneous.dm +++ b/code/modules/clothing/masks/miscellaneous.dm @@ -124,7 +124,7 @@ modifies_speech = TRUE /obj/item/clothing/mask/pig/handle_speech(datum/source, list/speech_args) - if(!CHECK_BITFIELD(clothing_flags, VOICEBOX_DISABLED)) + if(!(clothing_flags & VOICEBOX_DISABLED)) speech_args[SPEECH_MESSAGE] = pick("Oink!","Squeeeeeeee!","Oink Oink!") /obj/item/clothing/mask/pig/cursed //needs to be different otherwise you could turn the speedmodification off and on @@ -150,7 +150,7 @@ modifies_speech = TRUE /obj/item/clothing/mask/frog/handle_speech(datum/source, list/speech_args) //whenever you speak - if(!CHECK_BITFIELD(clothing_flags, VOICEBOX_DISABLED)) + if(!(clothing_flags & VOICEBOX_DISABLED)) if(prob(5)) //sometimes, the angry spirit finds others words to speak. speech_args[SPEECH_MESSAGE] = pick("HUUUUU!!","SMOOOOOKIN'!!","Hello my baby, hello my honey, hello my rag-time gal.", "Feels bad, man.", "GIT DIS GUY OFF ME!!" ,"SOMEBODY STOP ME!!", "NORMIES, GET OUT!!") else @@ -180,7 +180,7 @@ modifies_speech = TRUE /obj/item/clothing/mask/cowmask/handle_speech(datum/source, list/speech_args) - if(!CHECK_BITFIELD(clothing_flags, VOICEBOX_DISABLED)) + if(!(clothing_flags & VOICEBOX_DISABLED)) speech_args[SPEECH_MESSAGE] = pick("Moooooooo!","Moo!","Moooo!") @@ -205,7 +205,7 @@ clothing_flags = VOICEBOX_TOGGLABLE /obj/item/clothing/mask/horsehead/handle_speech(datum/source, list/speech_args) - if(!CHECK_BITFIELD(clothing_flags, VOICEBOX_DISABLED)) + if(!(clothing_flags & VOICEBOX_DISABLED)) speech_args[SPEECH_MESSAGE] = pick("NEEIIGGGHHHH!", "NEEEIIIIGHH!", "NEIIIGGHH!", "HAAWWWWW!", "HAAAWWW!") diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm index 6b8de787f0..0370c087d9 100644 --- a/code/modules/food_and_drinks/drinks/drinks.dm +++ b/code/modules/food_and_drinks/drinks/drinks.dm @@ -500,7 +500,7 @@ /obj/item/reagent_containers/food/drinks/soda_cans/attack_self(mob/user) if(!is_drainable()) to_chat(user, "You pull back the tab of \the [src] with a satisfying pop.") //Ahhhhhhhh - ENABLE_BITFIELD(reagents.reagents_holder_flags, OPENCONTAINER) + reagents.reagents_holder_flags |= OPENCONTAINER playsound(src, "can_open", 50, 1) spillable = TRUE return diff --git a/code/modules/holiday/halloween/bartholomew.dm b/code/modules/holiday/halloween/bartholomew.dm index 31cfb1f26a..12a0858b8d 100644 --- a/code/modules/holiday/halloween/bartholomew.dm +++ b/code/modules/holiday/halloween/bartholomew.dm @@ -8,14 +8,9 @@ anchored = TRUE var/items_list = list() speech_span = "spooky" + resistance_flags = INDESTRUCTIBLE var/active = TRUE -/obj/item/barthpot/Destroy() - var/obj/item/barthpot/n = new src(loc) - n.items_list = items_list - ..() - - /obj/item/barthpot/attackby(obj/item/I, mob/user, params) if(!active) say("Meow!") diff --git a/code/modules/holiday/halloween/jacqueen.dm b/code/modules/holiday/halloween/jacqueen.dm index ed7453ad3e..4ec18e7f6c 100644 --- a/code/modules/holiday/halloween/jacqueen.dm +++ b/code/modules/holiday/halloween/jacqueen.dm @@ -65,6 +65,10 @@ cached_z = z poof() +/mob/living/simple_animal/jacq/ComponentInitialize() //she just wants to bring halloween to the station + . = ..() + AddComponent(/datum/component/stationloving) + /mob/living/simple_animal/jacq/BiologicalLife(seconds, times_fired) if(!(. = ..())) return @@ -469,9 +473,9 @@ /mob/living/simple_animal/jacq/update_mobility() . = ..() if(busy) - DISABLE_BITFIELD(., MOBILITY_MOVE) + . &= ~(MOBILITY_MOVE) else - ENABLE_BITFIELD(., MOBILITY_MOVE) + . |= MOBILITY_MOVE mobility_flags = . diff --git a/code/modules/holodeck/holo_effect.dm b/code/modules/holodeck/holo_effect.dm index c37ccf657b..ffff8e190e 100644 --- a/code/modules/holodeck/holo_effect.dm +++ b/code/modules/holodeck/holo_effect.dm @@ -78,7 +78,7 @@ // these vars are not really standardized but all would theoretically create stuff on death for(var/v in list("butcher_results","corpse","weapon1","weapon2","blood_volume") & mob.vars) mob.vars[v] = null - ENABLE_BITFIELD(mob.flags_1, HOLOGRAM_1) + mob.flags_1 |= HOLOGRAM_1 if(isliving(mob)) var/mob/living/L = mob L.vore_flags = 0 diff --git a/code/modules/hydroponics/fermenting_barrel.dm b/code/modules/hydroponics/fermenting_barrel.dm index 3d6b90eb2d..39b0bfdfde 100644 --- a/code/modules/hydroponics/fermenting_barrel.dm +++ b/code/modules/hydroponics/fermenting_barrel.dm @@ -59,12 +59,12 @@ /obj/structure/fermenting_barrel/on_attack_hand(mob/user, act_intent = user.a_intent, unarmed_attack_flags) open = !open if(open) - DISABLE_BITFIELD(reagents.reagents_holder_flags, DRAINABLE) - ENABLE_BITFIELD(reagents.reagents_holder_flags, REFILLABLE) + reagents.reagents_holder_flags &= ~(DRAINABLE) + reagents.reagents_holder_flags |= REFILLABLE to_chat(user, "You open [src], letting you fill it.") else - DISABLE_BITFIELD(reagents.reagents_holder_flags, REFILLABLE) - ENABLE_BITFIELD(reagents.reagents_holder_flags, DRAINABLE) + reagents.reagents_holder_flags &= ~(REFILLABLE) + reagents.reagents_holder_flags |= DRAINABLE to_chat(user, "You close [src], letting you draw from its tap.") update_icon() @@ -96,12 +96,12 @@ /obj/structure/custom_keg/on_attack_hand(mob/user, act_intent = user.a_intent, unarmed_attack_flags) open = !open if(open) - DISABLE_BITFIELD(reagents.reagents_holder_flags, DRAINABLE) - ENABLE_BITFIELD(reagents.reagents_holder_flags, REFILLABLE) + reagents.reagents_holder_flags &= ~(DRAINABLE) + reagents.reagents_holder_flags |= REFILLABLE to_chat(user, "You open [src], letting you fill it.") else - DISABLE_BITFIELD(reagents.reagents_holder_flags, REFILLABLE) - ENABLE_BITFIELD(reagents.reagents_holder_flags, DRAINABLE) + reagents.reagents_holder_flags &= ~(REFILLABLE) + reagents.reagents_holder_flags |= DRAINABLE to_chat(user, "You close [src], letting you draw from its tap.") update_icon() diff --git a/code/modules/hydroponics/grown/misc.dm b/code/modules/hydroponics/grown/misc.dm index 733d973832..e7298e67be 100644 --- a/code/modules/hydroponics/grown/misc.dm +++ b/code/modules/hydroponics/grown/misc.dm @@ -365,7 +365,7 @@ opened = TRUE spillable = !screwdrivered reagent_flags = OPENCONTAINER - ENABLE_BITFIELD(reagents.reagents_holder_flags, OPENCONTAINER) + reagents.reagents_holder_flags |= OPENCONTAINER icon_state = screwdrivered ? "coconut_carved" : "coconut_chopped" desc = "A coconut. [screwdrivered ? "This one's got a hole in it" : "This one's sliced open, with all its delicious contents for your eyes to savour"]." playsound(user, W.hitsound, 50, 1, -1) diff --git a/code/modules/instruments/instrument_data/_instrument_data.dm b/code/modules/instruments/instrument_data/_instrument_data.dm index 447bcdffb1..5d937f304f 100644 --- a/code/modules/instruments/instrument_data/_instrument_data.dm +++ b/code/modules/instruments/instrument_data/_instrument_data.dm @@ -55,14 +55,14 @@ id = "[type]" /datum/instrument/proc/Initialize() - if(CHECK_BITFIELD(instrument_flags, INSTRUMENT_LEGACY | INSTRUMENT_DO_NOT_AUTOSAMPLE)) + if(instrument_flags & (INSTRUMENT_LEGACY | INSTRUMENT_DO_NOT_AUTOSAMPLE)) return calculate_samples() /datum/instrument/proc/ready() - if(CHECK_BITFIELD(instrument_flags, INSTRUMENT_LEGACY)) + if((instrument_flags & INSTRUMENT_LEGACY)) return legacy_instrument_path && legacy_instrument_ext - else if(CHECK_BITFIELD(instrument_flags, INSTRUMENT_DO_NOT_AUTOSAMPLE)) + else if((instrument_flags & INSTRUMENT_DO_NOT_AUTOSAMPLE)) return length(samples) return (length(samples) >= 128) diff --git a/code/modules/integrated_electronics/subtypes/reagents.dm b/code/modules/integrated_electronics/subtypes/reagents.dm index f69fa08aaf..de6ad729e9 100644 --- a/code/modules/integrated_electronics/subtypes/reagents.dm +++ b/code/modules/integrated_electronics/subtypes/reagents.dm @@ -77,7 +77,7 @@ /obj/item/integrated_circuit/reagent/injector/Initialize() . = ..() - ENABLE_BITFIELD(reagents.reagents_holder_flags, OPENCONTAINER) + reagents.reagents_holder_flags |= OPENCONTAINER /obj/item/integrated_circuit/reagent/injector/on_reagent_change(changetype) push_vol() @@ -273,7 +273,7 @@ /obj/item/integrated_circuit/reagent/storage/Initialize() . = ..() - ENABLE_BITFIELD(reagents.reagents_holder_flags, OPENCONTAINER) + reagents.reagents_holder_flags |= OPENCONTAINER /obj/item/integrated_circuit/reagent/storage/do_work() set_pin_data(IC_OUTPUT, 2, WEAKREF(src)) @@ -303,7 +303,7 @@ /obj/item/integrated_circuit/reagent/storage/cryo/Initialize() . = ..() - ENABLE_BITFIELD(reagents.reagents_holder_flags, NO_REACT) + reagents.reagents_holder_flags |= NO_REACT /obj/item/integrated_circuit/reagent/storage/grinder name = "reagent grinder" @@ -574,7 +574,7 @@ /obj/item/integrated_circuit/reagent/smoke/Initialize() . = ..() - ENABLE_BITFIELD(reagents.reagents_holder_flags, OPENCONTAINER) + reagents.reagents_holder_flags |= OPENCONTAINER /obj/item/integrated_circuit/reagent/smoke/on_reagent_change(changetype) //reset warning only if we have reagents now @@ -632,7 +632,7 @@ /obj/item/integrated_circuit/reagent/extinguisher/Initialize() .=..() - ENABLE_BITFIELD(reagents.reagents_holder_flags, OPENCONTAINER) + reagents.reagents_holder_flags |= OPENCONTAINER set_pin_data(IC_OUTPUT,2, src) /obj/item/integrated_circuit/reagent/extinguisher/on_reagent_change(changetype) diff --git a/code/modules/mining/equipment/kinetic_crusher.dm b/code/modules/mining/equipment/kinetic_crusher.dm index 2149967049..91078bb135 100644 --- a/code/modules/mining/equipment/kinetic_crusher.dm +++ b/code/modules/mining/equipment/kinetic_crusher.dm @@ -184,6 +184,7 @@ icon_state = "crusher-glaive" item_state = "crusher0-glaive" block_parry_data = /datum/block_parry_data/crusherglaive + obj_flags = UNIQUE_RENAME //ideas: altclick that lets you pummel people with the handguard/handle? //parrying functionality? @@ -238,6 +239,36 @@ /obj/item/kinetic_crusher/glaive/bone/update_icon_state() item_state = "crusher[wielded]-bone" +/obj/item/kinetic_crusher/glaive/gauntlets + name = "proto-kinetic gauntlets" + desc = "A pair of scaled-down proto-kinetic crusher destabilizer modules shoved into gauntlets and greaves, often used by \ + those who wish to spit in the eyes of God. Sacrifices outright damage for \ + a reliance on backstabs and the ability to give fauna concussions on a parry." + attack_verb = list("pummeled", "punched", "jabbed", "hammer-fisted", "uppercut", "slammed") + icon_state = "crusher-hands" + item_state = "crusher0-fist" + unique_reskin = list("Gauntlets" = "crusher-hands", + "Fingerless" = "crusher-hands-bare") + detonation_damage = 45 // 60 on wield, compared to normal crusher's 70 + backstab_bonus = 70 // 130 on backstab though + +/obj/item/kinetic_crusher/glaive/gauntlets/ComponentInitialize() + . = ..() + AddComponent(/datum/component/two_handed, force_unwielded=0, force_wielded=15) + +/obj/item/kinetic_crusher/glaive/gauntlets/active_parry_reflex_counter(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, list/return_list, parry_efficiency, list/effect_text) + . = ..() + if(isliving(attacker)) + var/mob/living/liv_atk = attacker + if(liv_atk.mob_size >= MOB_SIZE_LARGE && !ismegafauna(liv_atk)) + liv_atk.apply_status_effect(STATUS_EFFECT_GAUNTLET_CONC) + +/obj/item/kinetic_crusher/glaive/gauntlets/update_icon_state() + if(current_skin == "Fingerless") + item_state = "crusher[wielded]-fistbare" + else + item_state = "crusher[wielded]-fist" + //destablizing force /obj/item/projectile/destabilizer name = "destabilizing force" diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm index 7a3cd9140b..b1bde7d454 100644 --- a/code/modules/mining/machine_vending.dm +++ b/code/modules/mining/machine_vending.dm @@ -74,7 +74,7 @@ new /datum/data/mining_equipment("KA AoE Damage", /obj/item/borg/upgrade/modkit/aoe/mobs, 2000), new /datum/data/mining_equipment("Miner Full Replacement", /obj/item/storage/backpack/duffelbag/mining/cloned, 3000), new /datum/data/mining_equipment("Premium Accelerator", /obj/item/gun/energy/kinetic_accelerator/premiumka, 8000), - new /datum/data/mining_equipment("Kinetic Glaive Kit", /obj/item/storage/backpack/duffelbag/mining/glaivekit, 2250), + new /datum/data/mining_equipment("Premium Kinetic Melee Kit", /obj/item/storage/backpack/duffelbag/mining/glaivekit, 2250), new /datum/data/mining_equipment("Survival Dagger", /obj/item/kitchen/knife/combat/survival/knuckledagger, 550), ) @@ -166,6 +166,7 @@ return I.mining_points -= prize.cost to_chat(usr, "[src] clanks to life briefly before vending [prize.equipment_name]!") + playsound(src, 'sound/machines/machine_vend.ogg', 50, TRUE, extrarange = -3) new prize.equipment_path(loc) SSblackbox.record_feedback("nested tally", "mining_equipment_bought", 1, list("[type]", "[prize.equipment_path]")) . = TRUE @@ -187,6 +188,9 @@ if(istype(I, /obj/item/suit_voucher)) RedeemSVoucher(I, user) return + if(istype(I, /obj/item/premium_crusher_voucher)) + RedeemPCVoucher(I, user) + return if(default_deconstruction_screwdriver(user, "mining-open", "mining", I)) updateUsrDialog() return @@ -226,10 +230,46 @@ new /obj/item/kinetic_crusher(drop_location) if("Mining Conscription Kit") new /obj/item/storage/backpack/duffelbag/mining/conscript(drop_location) - + playsound(src, 'sound/machines/machine_vend.ogg', 50, TRUE, extrarange = -3) SSblackbox.record_feedback("tally", "mining_voucher_redeemed", 1, selection) qdel(voucher) +/obj/machinery/mineral/equipment_vendor/proc/RedeemSVoucher(obj/item/suit_voucher/voucher, mob/redeemer) + var/items = list( "Exo-suit" = image(icon = 'icons/obj/clothing/suits.dmi', icon_state = "exo"), + "SEVA suit" = image(icon = 'icons/obj/clothing/suits.dmi', icon_state = "seva")) + + var/selection = show_radial_menu(redeemer, src, items, require_near = TRUE, tooltips = TRUE) + if(!selection || !Adjacent(redeemer) || QDELETED(voucher) || voucher.loc != redeemer) + return + var/drop_location = drop_location() + switch(selection) + if("Exo-suit") + new /obj/item/clothing/suit/hooded/explorer/exo(drop_location) + new /obj/item/clothing/mask/gas/exo(drop_location) + if("SEVA suit") + new /obj/item/clothing/suit/hooded/explorer/seva(drop_location) + new /obj/item/clothing/mask/gas/seva(drop_location) + playsound(src, 'sound/machines/machine_vend.ogg', 50, TRUE, extrarange = -3) + SSblackbox.record_feedback("tally", "suit_voucher_redeemed", 1, selection) + qdel(voucher) + +/obj/machinery/mineral/equipment_vendor/proc/RedeemPCVoucher(obj/item/premium_crusher_voucher/voucher, mob/redeemer) // someone should REALLY just refactor this + var/items = list("Kinetic Glaive" = image(icon = 'icons/obj/mining.dmi', icon_state = "crusher-glaive"), + "Kinetic Gauntlets" = image(icon = 'icons/obj/mining.dmi', icon_state = "crusher-hands")) + + var/selection = show_radial_menu(redeemer, src, items, require_near = TRUE, tooltips = TRUE) + if(!selection || !Adjacent(redeemer) || QDELETED(voucher) || voucher.loc != redeemer) + return + var/drop_location = drop_location() + switch(selection) + if("Kinetic Glaive") + new /obj/item/kinetic_crusher/glaive(drop_location) + if("Kinetic Gauntlets") + new /obj/item/kinetic_crusher/glaive/gauntlets(drop_location) + playsound(src, 'sound/machines/machine_vend.ogg', 50, TRUE, extrarange = -3) + SSblackbox.record_feedback("tally", "crusher_voucher_redeemed", 1, selection) + qdel(voucher) + /obj/machinery/mineral/equipment_vendor/ex_act(severity, target) do_sparks(5, TRUE, src) if(prob(50 / severity) && severity < 3) @@ -245,7 +285,7 @@ . = ..() desc += "\nIt seems a few selections have been added." prize_list += list( - new /datum/data/mining_equipment("Extra Id", /obj/item/card/id/mining, 250), + new /datum/data/mining_equipment("Extra ID", /obj/item/card/id/mining, 250), new /datum/data/mining_equipment("Science Goggles", /obj/item/clothing/glasses/science, 250), new /datum/data/mining_equipment("Monkey Cube", /obj/item/reagent_containers/food/snacks/cube/monkey, 300), new /datum/data/mining_equipment("Toolbelt", /obj/item/storage/belt/utility, 350), @@ -273,6 +313,13 @@ icon_state = "mining_voucher" w_class = WEIGHT_CLASS_TINY +/obj/item/premium_crusher_voucher + name = "premium crusher voucher" + desc = "A token to redeem for a premium proto-kinetic melee weapon. Use it on a mining equipment vendor." + icon = 'icons/obj/mining.dmi' + icon_state = "mining_voucher" + w_class = WEIGHT_CLASS_TINY + /**********************Mining Point Card**********************/ //mp = Miner Pointers //c = Cash @@ -375,24 +422,5 @@ /obj/item/storage/backpack/duffelbag/mining/glaivekit /obj/item/storage/backpack/duffelbag/mining/glaivekit/PopulateContents() - new /obj/item/kinetic_crusher/glaive(src) new /obj/item/kitchen/knife/combat/survival/knuckledagger(src) - -/obj/machinery/mineral/equipment_vendor/proc/RedeemSVoucher(obj/item/suit_voucher/voucher, mob/redeemer) - var/items = list( "Exo-suit" = image(icon = 'icons/obj/clothing/suits.dmi', icon_state = "exo"), - "SEVA suit" = image(icon = 'icons/obj/clothing/suits.dmi', icon_state = "seva")) - - var/selection = show_radial_menu(redeemer, src, items, require_near = TRUE, tooltips = TRUE) - if(!selection || !Adjacent(redeemer) || QDELETED(voucher) || voucher.loc != redeemer) - return - var/drop_location = drop_location() - switch(selection) - if("Exo-suit") - new /obj/item/clothing/suit/hooded/explorer/exo(drop_location) - new /obj/item/clothing/mask/gas/exo(drop_location) - if("SEVA suit") - new /obj/item/clothing/suit/hooded/explorer/seva(drop_location) - new /obj/item/clothing/mask/gas/seva(drop_location) - - SSblackbox.record_feedback("tally", "suit_voucher_redeemed", 1, selection) - qdel(voucher) + new /obj/item/premium_crusher_voucher(src) diff --git a/code/modules/mob/dead/new_player/sprite_accessories/body_markings.dm b/code/modules/mob/dead/new_player/sprite_accessories/body_markings.dm index 148af35247..c477bb2cad 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/body_markings.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/body_markings.dm @@ -27,7 +27,7 @@ /datum/sprite_accessory/mam_body_markings/redpanda name = "Redpanda" icon_state = "redpanda" - covered_limbs = list("Head" = MATRIX_RED_BLUE, "Chest" = MATRIX_RED_GREEN, "Left Leg" = MATRIX_RED_GREEN, "Right Leg" = MATRIX_RED_GREEN, "Left Arm" = MATRIX_RED_GREEN, "Right Arm" = MATRIX_RED_GREEN) + covered_limbs = list("Head" = MATRIX_ALL, "Chest" = MATRIX_RED_GREEN, "Left Leg" = MATRIX_RED_GREEN, "Right Leg" = MATRIX_RED_GREEN, "Left Arm" = MATRIX_RED_GREEN, "Right Arm" = MATRIX_RED_GREEN) /datum/sprite_accessory/mam_body_markings/bat name = "Bat" diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index f6ef8e8177..0700cba2ea 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -198,7 +198,7 @@ if(start_T && end_T) log_combat(src, throwable_mob, "thrown", addition="grab from tile in [AREACOORD(start_T)] towards tile at [AREACOORD(end_T)]") - else if(!CHECK_BITFIELD(I.item_flags, ABSTRACT) && !HAS_TRAIT(I, TRAIT_NODROP)) + else if(!(I.item_flags & ABSTRACT) && !HAS_TRAIT(I, TRAIT_NODROP)) thrown_thing = I dropItemToGround(I) @@ -621,12 +621,12 @@ to_chat(src, "You're too exhausted to keep going...") set_resting(TRUE, FALSE, FALSE) SEND_SIGNAL(src, COMSIG_DISABLE_COMBAT_MODE) - ENABLE_BITFIELD(combat_flags, COMBAT_FLAG_HARD_STAMCRIT) + combat_flags |= COMBAT_FLAG_HARD_STAMCRIT filters += CIT_FILTER_STAMINACRIT update_mobility() if((combat_flags & COMBAT_FLAG_HARD_STAMCRIT) && total_health <= STAMINA_CRIT_REMOVAL_THRESHOLD) to_chat(src, "You don't feel nearly as exhausted anymore.") - DISABLE_BITFIELD(combat_flags, COMBAT_FLAG_HARD_STAMCRIT) + combat_flags &= ~(COMBAT_FLAG_HARD_STAMCRIT) filters -= CIT_FILTER_STAMINACRIT update_mobility() UpdateStaminaBuffer() diff --git a/code/modules/mob/living/carbon/carbon_movement.dm b/code/modules/mob/living/carbon/carbon_movement.dm index e98ddf5954..ffb8523a9e 100644 --- a/code/modules/mob/living/carbon/carbon_movement.dm +++ b/code/modules/mob/living/carbon/carbon_movement.dm @@ -22,14 +22,14 @@ /mob/living/carbon/Moved() . = ..() - if(. && !CHECK_BITFIELD(movement_type, FLOATING)) //floating is easy + if(. && !(movement_type & FLOATING)) //floating is easy if(HAS_TRAIT(src, TRAIT_NOHUNGER)) set_nutrition(NUTRITION_LEVEL_FED - 1) //just less than feeling vigorous else if(nutrition && stat != DEAD) var/loss = HUNGER_FACTOR/10 if(m_intent == MOVE_INTENT_RUN) loss *= 2 - adjust_nutrition(loss) + adjust_nutrition(-loss) /mob/living/carbon/can_move_under_living(mob/living/other) . = ..() diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index f363aecf84..0e75595c75 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -113,11 +113,11 @@ . += effects_exam //CIT CHANGES START HERE - adds genital details to examine text - if(LAZYLEN(internal_organs) && CHECK_BITFIELD(user.client?.prefs.cit_toggles, GENITAL_EXAMINE)) + if(LAZYLEN(internal_organs) && (user.client?.prefs.cit_toggles & GENITAL_EXAMINE)) for(var/obj/item/organ/genital/dicc in internal_organs) if(istype(dicc) && dicc.is_exposed()) . += "[dicc.desc]" - if(CHECK_BITFIELD(user.client?.prefs.cit_toggles, VORE_EXAMINE)) + if(user.client?.prefs.cit_toggles & VORE_EXAMINE) var/cursed_stuff = attempt_vr(src,"examine_bellies",args) //vore Code if(cursed_stuff) . += cursed_stuff diff --git a/code/modules/mob/living/carbon/human/innate_abilities/blobform.dm b/code/modules/mob/living/carbon/human/innate_abilities/blobform.dm index c8f870bf2a..482268f8f5 100644 --- a/code/modules/mob/living/carbon/human/innate_abilities/blobform.dm +++ b/code/modules/mob/living/carbon/human/innate_abilities/blobform.dm @@ -62,7 +62,7 @@ H.add_movespeed_modifier(/datum/movespeed_modifier/slime_puddle) - ENABLE_BITFIELD(H.pass_flags, PASSMOB) //this actually lets people pass over you + H.pass_flags |= PASSMOB //this actually lets people pass over you squeak = H.AddComponent(/datum/component/squeak, custom_sounds = list('sound/effects/blobattack.ogg')) //blorble noise when people step on you //if the user is a changeling, retract their sting @@ -103,7 +103,7 @@ REMOVE_TRAIT(H, TRAIT_HUMAN_NO_RENDER, SLIMEPUDDLE_TRAIT) H.update_disabled_bodyparts(silent = TRUE) H.remove_movespeed_modifier(/datum/movespeed_modifier/slime_puddle) - DISABLE_BITFIELD(H.pass_flags, PASSMOB) + H.pass_flags &= ~(PASSMOB) is_puddle = FALSE if(squeak) squeak.RemoveComponent() diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index b135ae9cd8..c75654e10b 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -188,9 +188,9 @@ dropItemToGround(r_store, TRUE) //Again, makes sense for pockets to drop. if(l_store) dropItemToGround(l_store, TRUE) - if(wear_id && !CHECK_BITFIELD(wear_id.item_flags, NO_UNIFORM_REQUIRED)) + if(wear_id && !(wear_id.item_flags & NO_UNIFORM_REQUIRED)) dropItemToGround(wear_id) - if(belt && !CHECK_BITFIELD(belt.item_flags, NO_UNIFORM_REQUIRED)) + if(belt && !(belt.item_flags & NO_UNIFORM_REQUIRED)) dropItemToGround(belt) w_uniform = null update_suit_sensors() diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index b43cd266be..85f01e63b3 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -214,7 +214,7 @@ var/missing_body_parts_flags = ~get_body_parts_flags() var/max_protection = 1 if(missing_body_parts_flags) //I don't like copypasta as much as proc overhead. Do you want me to make these into a macro? - DISABLE_BITFIELD(thermal_protection_flags, missing_body_parts_flags) + thermal_protection_flags &= ~(missing_body_parts_flags) if(missing_body_parts_flags & HEAD) max_protection -= THERMAL_PROTECTION_HEAD if(missing_body_parts_flags & CHEST) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 21554f25b4..3976b1ebca 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1243,7 +1243,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) if(SLOT_BELT) if(H.belt) return FALSE - if(!CHECK_BITFIELD(I.item_flags, NO_UNIFORM_REQUIRED)) + if(!(I.item_flags & NO_UNIFORM_REQUIRED)) var/obj/item/bodypart/O = H.get_bodypart(BODY_ZONE_CHEST) if(!H.w_uniform && !nojumpsuit && (!O || !O.is_robotic_limb())) if(return_warning) @@ -1285,7 +1285,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) if(SLOT_WEAR_ID) if(H.wear_id) return FALSE - if(!CHECK_BITFIELD(I.item_flags, NO_UNIFORM_REQUIRED)) + if(!(I.item_flags & NO_UNIFORM_REQUIRED)) var/obj/item/bodypart/O = H.get_bodypart(BODY_ZONE_CHEST) if(!H.w_uniform && !nojumpsuit && (!O || !O.is_robotic_limb())) if(return_warning) diff --git a/code/modules/mob/living/carbon/human/species_types/dullahan.dm b/code/modules/mob/living/carbon/human/species_types/dullahan.dm index 0418292fea..7cd582d050 100644 --- a/code/modules/mob/living/carbon/human/species_types/dullahan.dm +++ b/code/modules/mob/living/carbon/human/species_types/dullahan.dm @@ -31,7 +31,7 @@ /datum/species/dullahan/on_species_gain(mob/living/carbon/human/H, datum/species/old_species) . = ..() - DISABLE_BITFIELD(H.flags_1, HEAR_1) + H.flags_1 &= ~(HEAR_1) var/obj/item/bodypart/head/head = H.get_bodypart(BODY_ZONE_HEAD) if(head) if(pumpkin)//Pumpkinhead! @@ -49,7 +49,7 @@ OA.Trigger() /datum/species/dullahan/on_species_loss(mob/living/carbon/human/H) - ENABLE_BITFIELD(H.flags_1, HEAR_1) + H.flags_1 |= HEAR_1 H.reset_perspective(H) if(myhead) var/obj/item/dullahan_relay/DR = myhead diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index a839a0dd83..8516d1decf 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -324,7 +324,7 @@ if(!HAS_TRAIT(src, TRAIT_NO_INTERNALS)) for(check in GET_INTERNAL_SLOTS(src)) - if(CHECK_BITFIELD(check.clothing_flags, ALLOWINTERNALS)) + if((check.clothing_flags & ALLOWINTERNALS)) internals = TRUE if(internal) if(internal.loc != src) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index be8241c063..5cbb68eceb 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -116,28 +116,28 @@ to_chat(src, "[L] is restraining [P], you cannot push past.") return 1 - //CIT CHANGES START HERE - makes it so resting stops you from moving through standing folks without a short delay - if(!CHECK_MOBILITY(src, MOBILITY_STAND) && CHECK_MOBILITY(L, MOBILITY_STAND)) + //CIT CHANGES START HERE - makes it so resting stops you from moving through standing folks or over prone bodies without a short delay + if(!CHECK_MOBILITY(src, MOBILITY_STAND)) var/origtargetloc = L.loc if(!pulledby) if(combat_flags & COMBAT_FLAG_ATTEMPTING_CRAWL) return TRUE if(IS_STAMCRIT(src)) - to_chat(src, "You're too exhausted to crawl under [L].") + to_chat(src, "You're too exhausted to crawl [(CHECK_MOBILITY(L, MOBILITY_STAND)) ? "under": "over"] [L].") return TRUE - ENABLE_BITFIELD(combat_flags, COMBAT_FLAG_ATTEMPTING_CRAWL) - visible_message("[src] is attempting to crawl under [L].", - "You are now attempting to crawl under [L].", - target = L, target_message = "[src] is attempting to crawl under you.") + combat_flags &= COMBAT_FLAG_ATTEMPTING_CRAWL + visible_message("[src] is attempting to crawl [(CHECK_MOBILITY(L, MOBILITY_STAND)) ? "under" : "over"] [L].", + "You are now attempting to crawl [(CHECK_MOBILITY(L, MOBILITY_STAND)) ? "under": "over"] [L].", + target = L, target_message = "[src] is attempting to crawl [(CHECK_MOBILITY(L, MOBILITY_STAND)) ? "under" : "over"] you.") if(!do_after(src, CRAWLUNDER_DELAY, target = src) || CHECK_MOBILITY(src, MOBILITY_STAND)) - DISABLE_BITFIELD(combat_flags, COMBAT_FLAG_ATTEMPTING_CRAWL) + combat_flags &= ~(COMBAT_FLAG_ATTEMPTING_CRAWL) return TRUE var/src_passmob = (pass_flags & PASSMOB) pass_flags |= PASSMOB Move(origtargetloc) if(!src_passmob) pass_flags &= ~PASSMOB - DISABLE_BITFIELD(combat_flags, COMBAT_FLAG_ATTEMPTING_CRAWL) + combat_flags &= ~(COMBAT_FLAG_ATTEMPTING_CRAWL) return TRUE //END OF CIT CHANGES diff --git a/code/modules/mob/living/living_mobility.dm b/code/modules/mob/living/living_mobility.dm index 2256a93fa1..af34fb54cf 100644 --- a/code/modules/mob/living/living_mobility.dm +++ b/code/modules/mob/living/living_mobility.dm @@ -28,7 +28,7 @@ set name = "Rest" set category = "IC" if(client?.prefs?.autostand) - TOGGLE_BITFIELD(combat_flags, COMBAT_FLAG_INTENTIONALLY_RESTING) + (combat_flags ^= COMBAT_FLAG_INTENTIONALLY_RESTING) to_chat(src, "You are now attempting to [(combat_flags & COMBAT_FLAG_INTENTIONALLY_RESTING) ? "[!resting ? "lay down and ": ""]stay down" : "[resting ? "get up and ": ""]stay up"].") if((combat_flags & COMBAT_FLAG_INTENTIONALLY_RESTING) && !resting) set_resting(TRUE, FALSE) @@ -117,14 +117,14 @@ mobility_flags &= ~(MOBILITY_USE | MOBILITY_PICKUP | MOBILITY_STORAGE | MOBILITY_HOLD) if(HAS_TRAIT(src, TRAIT_MOBILITY_NOMOVE)) - DISABLE_BITFIELD(mobility_flags, MOBILITY_MOVE) + mobility_flags &= ~(MOBILITY_MOVE) if(HAS_TRAIT(src, TRAIT_MOBILITY_NOPICKUP)) - DISABLE_BITFIELD(mobility_flags, MOBILITY_PICKUP) + mobility_flags &= ~(MOBILITY_PICKUP) if(HAS_TRAIT(src, TRAIT_MOBILITY_NOUSE)) - DISABLE_BITFIELD(mobility_flags, MOBILITY_USE) + mobility_flags &= ~(MOBILITY_USE) if(daze) - DISABLE_BITFIELD(mobility_flags, MOBILITY_USE) + mobility_flags &= ~(MOBILITY_USE) //Handle update-effects. if(!CHECK_MOBILITY(src, MOBILITY_HOLD)) diff --git a/code/modules/mob/living/living_movement.dm b/code/modules/mob/living/living_movement.dm index 07b40b3ab1..ca7960ff69 100644 --- a/code/modules/mob/living/living_movement.dm +++ b/code/modules/mob/living/living_movement.dm @@ -37,6 +37,8 @@ if(mover in buckled_mobs) return TRUE var/mob/living/L = mover //typecast first, check isliving and only check this if living using short circuit + if(isliving(L) && lying && L.lying) //if we're both lying down and aren't already being thrown/shipped around, don't pass + return FALSE return (!density || (isliving(mover)? L.can_move_under_living(src) : !mover.density)) /mob/living/toggle_move_intent() diff --git a/code/modules/mob/living/living_sprint.dm b/code/modules/mob/living/living_sprint.dm index 3fbc229385..e45866bcf6 100644 --- a/code/modules/mob/living/living_sprint.dm +++ b/code/modules/mob/living/living_sprint.dm @@ -30,7 +30,7 @@ return if(combat_flags & COMBAT_FLAG_SPRINT_ACTIVE) return - ENABLE_BITFIELD(combat_flags, COMBAT_FLAG_SPRINT_ACTIVE) + combat_flags |= COMBAT_FLAG_SPRINT_ACTIVE add_movespeed_modifier(/datum/movespeed_modifier/sprinting) if(update_icon) update_sprint_icon() @@ -38,7 +38,7 @@ /mob/living/proc/disable_sprint_mode(update_icon = TRUE) if(!(combat_flags & COMBAT_FLAG_SPRINT_ACTIVE) || (combat_flags & COMBAT_FLAG_SPRINT_FORCED)) return - DISABLE_BITFIELD(combat_flags, COMBAT_FLAG_SPRINT_ACTIVE) + combat_flags &= ~(COMBAT_FLAG_SPRINT_ACTIVE) remove_movespeed_modifier(/datum/movespeed_modifier/sprinting) if(update_icon) update_sprint_icon() @@ -46,7 +46,7 @@ /mob/living/proc/enable_intentional_sprint_mode() if((combat_flags & COMBAT_FLAG_SPRINT_TOGGLED) && (combat_flags & COMBAT_FLAG_SPRINT_ACTIVE)) return - ENABLE_BITFIELD(combat_flags, COMBAT_FLAG_SPRINT_TOGGLED) + combat_flags |= COMBAT_FLAG_SPRINT_TOGGLED if(!HAS_TRAIT(src, TRAIT_SPRINT_LOCKED) && !(combat_flags & COMBAT_FLAG_SPRINT_ACTIVE)) enable_sprint_mode(FALSE) update_sprint_icon() @@ -57,7 +57,7 @@ return if(combat_flags & COMBAT_FLAG_SPRINT_FORCED) return - DISABLE_BITFIELD(combat_flags, COMBAT_FLAG_SPRINT_TOGGLED) + combat_flags &= ~(COMBAT_FLAG_SPRINT_TOGGLED) if(combat_flags & COMBAT_FLAG_SPRINT_ACTIVE) disable_sprint_mode(FALSE) update_sprint_icon() diff --git a/code/modules/mob/living/simple_animal/bot/cleanbot.dm b/code/modules/mob/living/simple_animal/bot/cleanbot.dm index a52e975f9a..5b812086c8 100644 --- a/code/modules/mob/living/simple_animal/bot/cleanbot.dm +++ b/code/modules/mob/living/simple_animal/bot/cleanbot.dm @@ -182,7 +182,7 @@ deputize(W, user) else if(istype(W, /obj/item/mop/advanced)) - if(bot_core.allowed(user) && open && !CHECK_BITFIELD(upgrades,UPGRADE_CLEANER_ADVANCED_MOP)) + if(bot_core.allowed(user) && open && !(upgrades & UPGRADE_CLEANER_ADVANCED_MOP)) to_chat(user, "You replace \the [src] old mop with a new better one!") upgrades |= UPGRADE_CLEANER_ADVANCED_MOP clean_time = 20 //2.5 the speed! @@ -198,7 +198,7 @@ to_chat(user, "The [src] already has this mop!") else if(istype(W, /obj/item/broom)) - if(bot_core.allowed(user) && open && !CHECK_BITFIELD(upgrades,UPGRADE_CLEANER_BROOM)) + if(bot_core.allowed(user) && open && !(upgrades & UPGRADE_CLEANER_BROOM)) to_chat(user, "You add to \the [src] a broom speeding it up!") upgrades |= UPGRADE_CLEANER_BROOM base_speed = 1 //2x faster! diff --git a/code/modules/mob/living/simple_animal/bot/floorbot.dm b/code/modules/mob/living/simple_animal/bot/floorbot.dm index ff6941ec70..a67642f8ca 100644 --- a/code/modules/mob/living/simple_animal/bot/floorbot.dm +++ b/code/modules/mob/living/simple_animal/bot/floorbot.dm @@ -124,7 +124,7 @@ to_chat(user, "You need at least one floor tile to put into [src]!") else if(istype(W, /obj/item/storage/toolbox/artistic)) - if(bot_core.allowed(user) && open && !CHECK_BITFIELD(upgrades,UPGRADE_FLOOR_ARTBOX)) + if(bot_core.allowed(user) && open && !(upgrades & UPGRADE_FLOOR_ARTBOX)) to_chat(user, "You upgrade \the [src] case to hold more!") upgrades |= UPGRADE_FLOOR_ARTBOX maxtiles += 100 //Double the storage! @@ -139,7 +139,7 @@ to_chat(user, "The [src] already has a upgraded case!") else if(istype(W, /obj/item/storage/toolbox/syndicate)) - if(bot_core.allowed(user) && open && !CHECK_BITFIELD(upgrades,UPGRADE_FLOOR_SYNDIBOX)) + if(bot_core.allowed(user) && open && !(upgrades & UPGRADE_FLOOR_SYNDIBOX)) to_chat(user, "You upgrade \the [src] case to hold more!") upgrades |= UPGRADE_FLOOR_SYNDIBOX maxtiles += 200 //Double bse storage @@ -433,4 +433,4 @@ if(robot.mode == BOT_REPAIRING) return TRUE return FALSE - + diff --git a/code/modules/mob/living/simple_animal/bot/medbot.dm b/code/modules/mob/living/simple_animal/bot/medbot.dm index 25f6509ad0..b343328e7f 100644 --- a/code/modules/mob/living/simple_animal/bot/medbot.dm +++ b/code/modules/mob/living/simple_animal/bot/medbot.dm @@ -254,7 +254,7 @@ show_controls(user) else if(istype(W, /obj/item/reagent_containers/syringe/piercing)) - if(bot_core.allowed(user) && open && !CHECK_BITFIELD(upgrades,UPGRADE_MEDICAL_PIERERCING)) + if(bot_core.allowed(user) && open && !(upgrades & UPGRADE_MEDICAL_PIERERCING)) to_chat(user, "You replace \the [src] syringe with a diamond-tipped one!") upgrades |= UPGRADE_MEDICAL_PIERERCING qdel(W) @@ -268,7 +268,7 @@ to_chat(user, "The [src] already has a diamond-tipped syringe!") else if(istype(W, /obj/item/hypospray/mkii)) - if(bot_core.allowed(user) && open && !CHECK_BITFIELD(upgrades,UPGRADE_MEDICAL_HYPOSPRAY)) + if(bot_core.allowed(user) && open && !(upgrades & UPGRADE_MEDICAL_HYPOSPRAY)) to_chat(user, "You replace \the [src] syringe base with a DeForest Medical MK.II Hypospray!") upgrades |= UPGRADE_MEDICAL_HYPOSPRAY injection_time = 15 //Half the time half the death! @@ -284,7 +284,7 @@ to_chat(user, "The [src] already has a DeForest Medical Hypospray base!") else if(istype(W, /obj/item/circuitboard/machine/chem_dispenser)) - if(bot_core.allowed(user) && open && !CHECK_BITFIELD(upgrades,UPGRADE_MEDICAL_CHEM_BOARD)) + if(bot_core.allowed(user) && open && !(upgrades & UPGRADE_MEDICAL_CHEM_BOARD)) to_chat(user, "You add in the board upgrading \the [src] reagent banks!") upgrades |= UPGRADE_MEDICAL_CHEM_BOARD treatment_oxy = /datum/reagent/medicine/salbutamol //Replaces Dex with salbutamol "better" healing of o2 @@ -299,7 +299,7 @@ to_chat(user, "The [src] already has this upgrade!") else if(istype(W, /obj/item/circuitboard/machine/cryo_tube)) - if(bot_core.allowed(user) && open && !CHECK_BITFIELD(upgrades,UPGRADE_MEDICAL_CRYO_BOARD)) + if(bot_core.allowed(user) && open && !(upgrades & UPGRADE_MEDICAL_CRYO_BOARD)) to_chat(user, "You add in the board upgrading \the [src] reagent banks!") upgrades |= UPGRADE_MEDICAL_CRYO_BOARD treatment_fire = /datum/reagent/medicine/oxandrolone //Replaces Kep with oxandrolone "better" healing of burns @@ -314,7 +314,7 @@ to_chat(user, "The [src] already has this upgrade!") else if(istype(W, /obj/item/circuitboard/machine/chem_master)) - if(bot_core.allowed(user) && open && !CHECK_BITFIELD(upgrades,UPGRADE_MEDICAL_CHEM_MASTER)) + if(bot_core.allowed(user) && open && !(upgrades & UPGRADE_MEDICAL_CHEM_MASTER)) to_chat(user, "You add in the board upgrading \the [src] reagent banks!") upgrades |= UPGRADE_MEDICAL_CHEM_MASTER treatment_brute = /datum/reagent/medicine/sal_acid //Replaces Bic with Sal Acid "better" healing of brute @@ -329,7 +329,7 @@ to_chat(user, "the [src] already has this upgrade!") else if(istype(W, /obj/item/circuitboard/machine/sleeper)) - if(bot_core.allowed(user) && open && !CHECK_BITFIELD(upgrades,UPGRADE_MEDICAL_SLEEP_BOARD)) + if(bot_core.allowed(user) && open && !(upgrades & UPGRADE_MEDICAL_SLEEP_BOARD)) to_chat(user, "You add in the board upgrading \the [src] reagent banks!") upgrades |= UPGRADE_MEDICAL_SLEEP_BOARD treatment_tox = /datum/reagent/medicine/pen_acid //replaces charcoal with pen acid a "better" healing of toxins @@ -359,7 +359,7 @@ audible_message("[src] buzzes oddly!") flick("medibot_spark", src) playsound(src, "sparks", 75, 1) - if(!CHECK_BITFIELD(upgrades,UPGRADE_MEDICAL_PIERERCING)) + if(!(upgrades & UPGRADE_MEDICAL_PIERERCING)) upgrades |= UPGRADE_MEDICAL_PIERERCING //Jabs even harder through the clothing! if(user) oldpatient = user @@ -558,7 +558,7 @@ if(ishuman(C)) var/mob/living/carbon/human/H = C - if (H.wear_suit && H.head && istype(H.wear_suit, /obj/item/clothing) && istype(H.head, /obj/item/clothing) && !CHECK_BITFIELD(upgrades,UPGRADE_MEDICAL_PIERERCING)) + if (H.wear_suit && H.head && istype(H.wear_suit, /obj/item/clothing) && istype(H.head, /obj/item/clothing) && !(upgrades & UPGRADE_MEDICAL_PIERERCING)) var/obj/item/clothing/CS = H.wear_suit var/obj/item/clothing/CH = H.head if (CS.clothing_flags & CH.clothing_flags & THICKMATERIAL) diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm index 01a30bb90a..029adbe92f 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -367,7 +367,7 @@ if(vore_active) if(isliving(target)) var/mob/living/L = target - if(!client && L.Adjacent(src) && CHECK_BITFIELD(L.vore_flags, DEVOURABLE) && CHECK_BITFIELD(L.vore_flags, MOBVORE)) // aggressive check to ensure vore attacks can be made + if(!client && L.Adjacent(src) && (L.vore_flags & DEVOURABLE) && (L.vore_flags & MOBVORE)) // aggressive check to ensure vore attacks can be made if(prob(voracious_chance)) vore_attack(src,L,src) else diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm index 08ed786252..4e7d493c3b 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm @@ -59,6 +59,7 @@ Difficulty: Medium /mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/Initialize() . = ..() + internal = new/obj/item/gps/internal/miner(src) miner_saw = new(src) /datum/action/innate/megafauna_attack/dash diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm index 3940388625..79111d3de2 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm @@ -122,7 +122,7 @@ if(!client && ranged && ranged_cooldown <= world.time) OpenFire() if(L.Adjacent(src) && (L.stat != CONSCIOUS)) - if(vore_active && CHECK_BITFIELD(L.vore_flags,DEVOURABLE)) + if(vore_active && (L.vore_flags & DEVOURABLE)) vore_attack(src,L,src) LoseTarget() else diff --git a/code/modules/mob/living/simple_animal/simple_animal_vr.dm b/code/modules/mob/living/simple_animal/simple_animal_vr.dm index de5bb578b8..69dee76f34 100644 --- a/code/modules/mob/living/simple_animal/simple_animal_vr.dm +++ b/code/modules/mob/living/simple_animal/simple_animal_vr.dm @@ -49,10 +49,10 @@ // Simple animals have only one belly. This creates it (if it isn't already set up) /mob/living/simple_animal/init_vore() - ENABLE_BITFIELD(vore_flags, VORE_INIT) - if(CHECK_BITFIELD(flags_1, HOLOGRAM_1)) + vore_flags |= VORE_INIT + if((flags_1 & HOLOGRAM_1)) return - if(!vore_active || CHECK_BITFIELD(vore_flags, NO_VORE)) //If it can't vore, let's not give it a stomach. + if(!vore_active || (vore_flags & NO_VORE)) //If it can't vore, let's not give it a stomach. return if(vore_active && !IsAdvancedToolUser()) //vore active, but doesn't have thumbs to grab people with. verbs |= /mob/living/simple_animal/proc/animal_nom @@ -133,6 +133,6 @@ if (stat != CONSCIOUS) return - if(!CHECK_BITFIELD(T.vore_flags,DEVOURABLE)) + if(!(T.vore_flags & DEVOURABLE)) return return vore_attack(src,T,src) diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm index 68de074e07..38149494bc 100644 --- a/code/modules/mob/living/simple_animal/slime/slime.dm +++ b/code/modules/mob/living/simple_animal/slime/slime.dm @@ -466,7 +466,7 @@ SStun = world.time + rand(20,60) spawn(0) - DISABLE_BITFIELD(mobility_flags, MOBILITY_MOVE) + mobility_flags &= ~(MOBILITY_MOVE) if(user) step_away(src,user,15) sleep(3) diff --git a/code/modules/mob/living/simple_animal/slime/slime_mobility.dm b/code/modules/mob/living/simple_animal/slime/slime_mobility.dm index 5be5ff4e36..77f2bde864 100644 --- a/code/modules/mob/living/simple_animal/slime/slime_mobility.dm +++ b/code/modules/mob/living/simple_animal/slime/slime_mobility.dm @@ -1,5 +1,5 @@ /mob/living/simple_animal/slime/update_mobility() . = ..() if(Tempstun && !buckled) - DISABLE_BITFIELD(., MOBILITY_MOVE) + . &= ~(MOBILITY_MOVE) mobility_flags = . diff --git a/code/modules/movespeed/modifiers/mobs.dm b/code/modules/movespeed/modifiers/mobs.dm index 153d7dd973..ddeef393ac 100644 --- a/code/modules/movespeed/modifiers/mobs.dm +++ b/code/modules/movespeed/modifiers/mobs.dm @@ -167,3 +167,6 @@ /datum/movespeed_modifier/dragon_depression multiplicative_slowdown = 5 + +/datum/movespeed_modifier/gauntlet_concussion + multiplicative_slowdown = 5 diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 515349d666..2e38fdd840 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -300,7 +300,7 @@ area.power_equip = FALSE area.power_environ = FALSE area.power_change() - area.poweralert(FALSE, src) + area.poweralert(TRUE, src) if(occupier) malfvacate(1) qdel(wires) @@ -1444,8 +1444,6 @@ lighting = autoset(lighting, AUTOSET_ON) environ = autoset(environ, AUTOSET_ON) area.poweralert(FALSE, src) - if(cell.percent() > 75) - area.poweralert(FALSE, src) // now trickle-charge the cell if(chargemode && charging == APC_CHARGING && operating) diff --git a/code/modules/projectiles/ammunition/ballistic/shotgun.dm b/code/modules/projectiles/ammunition/ballistic/shotgun.dm index 2a41b41d1d..04e8e62029 100644 --- a/code/modules/projectiles/ammunition/ballistic/shotgun.dm +++ b/code/modules/projectiles/ammunition/ballistic/shotgun.dm @@ -139,7 +139,7 @@ /obj/item/ammo_casing/shotgun/dart/noreact/Initialize() . = ..() - ENABLE_BITFIELD(reagents.reagents_holder_flags, NO_REACT) + reagents.reagents_holder_flags |= NO_REACT /obj/item/ammo_casing/shotgun/dart/bioterror desc = "A shotgun dart filled with an obscene amount of lethal reagents. God help whoever is shot with this." diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 0a7598cd79..07fc4bf9de 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -362,7 +362,7 @@ /obj/item/projectile/proc/process_hit(turf/T, atom/target, qdel_self, hit_something = FALSE) //probably needs to be reworked entirely when pixel movement is done. if(QDELETED(src) || !T || !target) //We're done, nothing's left. - if((qdel_self == FORCE_QDEL) || ((qdel_self == QDEL_SELF) && !temporary_unstoppable_movement && !CHECK_BITFIELD(movement_type, UNSTOPPABLE))) + if((qdel_self == FORCE_QDEL) || ((qdel_self == QDEL_SELF) && !temporary_unstoppable_movement && !(movement_type & UNSTOPPABLE))) qdel(src) return hit_something permutated |= target //Make sure we're never hitting it again. If we ever run into weirdness with piercing projectiles needing to hit something multiple times.. well.. that's a to-do. @@ -370,16 +370,16 @@ return process_hit(T, select_target(T), qdel_self, hit_something) //Hit whatever else we can since that didn't work. var/result = target.bullet_act(src, def_zone) if(result == BULLET_ACT_FORCE_PIERCE) - if(!CHECK_BITFIELD(movement_type, UNSTOPPABLE)) + if(!(movement_type & UNSTOPPABLE)) temporary_unstoppable_movement = TRUE - ENABLE_BITFIELD(movement_type, UNSTOPPABLE) + movement_type |= UNSTOPPABLE return process_hit(T, select_target(T), qdel_self, TRUE) //Hit whatever else we can since we're piercing through but we're still on the same tile. else if(result == BULLET_ACT_TURF) //We hit the turf but instead we're going to also hit something else on it. return process_hit(T, select_target(T), QDEL_SELF, TRUE) else //Whether it hit or blocked, we're done! qdel_self = QDEL_SELF hit_something = TRUE - if((qdel_self == FORCE_QDEL) || ((qdel_self == QDEL_SELF) && !temporary_unstoppable_movement && !CHECK_BITFIELD(movement_type, UNSTOPPABLE))) + if((qdel_self == FORCE_QDEL) || ((qdel_self == QDEL_SELF) && !temporary_unstoppable_movement && !(movement_type & UNSTOPPABLE))) qdel(src) return hit_something @@ -775,7 +775,7 @@ if(.) if(temporary_unstoppable_movement) temporary_unstoppable_movement = FALSE - DISABLE_BITFIELD(movement_type, UNSTOPPABLE) + movement_type &= ~(UNSTOPPABLE) if(fired && can_hit_target(original, permutated, TRUE)) Bump(original) diff --git a/code/modules/projectiles/projectile/bullets/dart_syringe.dm b/code/modules/projectiles/projectile/bullets/dart_syringe.dm index 318acb66b5..4978e679b4 100644 --- a/code/modules/projectiles/projectile/bullets/dart_syringe.dm +++ b/code/modules/projectiles/projectile/bullets/dart_syringe.dm @@ -25,7 +25,7 @@ "You were protected against \the [src]!") ..(target, blocked) - DISABLE_BITFIELD(reagents.reagents_holder_flags, NO_REACT) + reagents.reagents_holder_flags &= ~(NO_REACT) reagents.handle_reactions() return BULLET_ACT_HIT diff --git a/code/modules/projectiles/projectile/special/curse.dm b/code/modules/projectiles/projectile/special/curse.dm index d967540e6a..6c682763ae 100644 --- a/code/modules/projectiles/projectile/special/curse.dm +++ b/code/modules/projectiles/projectile/special/curse.dm @@ -31,7 +31,7 @@ /obj/item/projectile/curse_hand/prehit(atom/target) if(target == original) - DISABLE_BITFIELD(movement_type, UNSTOPPABLE) + movement_type &= ~(UNSTOPPABLE) else if(!isturf(target)) return FALSE return ..() @@ -40,7 +40,7 @@ if(arm) arm.End() arm = null - if(CHECK_BITFIELD(movement_type, UNSTOPPABLE)) + if((movement_type & UNSTOPPABLE)) playsound(src, 'sound/effects/curse3.ogg', 25, 1, -1) var/turf/T = get_step(src, dir) var/obj/effect/temp_visual/dir_setting/curse/hand/leftover = new(T, dir) diff --git a/code/modules/reagents/chemistry/reagents.dm b/code/modules/reagents/chemistry/reagents.dm index d6b7201ef9..154a58cdfd 100644 --- a/code/modules/reagents/chemistry/reagents.dm +++ b/code/modules/reagents/chemistry/reagents.dm @@ -1,4 +1,3 @@ -#define REM REAGENTS_EFFECT_MULTIPLIER GLOBAL_LIST_INIT(name2reagent, build_name2reagent()) /proc/build_name2reagent() diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index 12c91e145a..72112d9a65 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -47,7 +47,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/on_mob_life(mob/living/carbon/C) if(HAS_TRAIT(C, TRAIT_TOXIC_ALCOHOL)) - C.adjustToxLoss((boozepwr/25)*REM,forced = TRUE) + C.adjustToxLoss((boozepwr/25)*REAGENTS_EFFECT_MULTIPLIER,forced = TRUE) else if(C.drunkenness < volume * boozepwr * ALCOHOL_THRESHOLD_MODIFIER) var/booze_power = boozepwr if(HAS_TRAIT(C, TRAIT_ALCOHOL_TOLERANCE)) //we're an accomplished drinker @@ -1365,7 +1365,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/neurotoxin/on_mob_life(mob/living/carbon/M) M.set_drugginess(50) M.dizziness +=2 - M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 1*REM, 150) + M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 1*REAGENTS_EFFECT_MULTIPLIER, 150) if(prob(20) && !holder.has_reagent(/datum/reagent/consumable/ethanol/neuroweak)) M.adjustStaminaLoss(10) M.drop_all_held_items() @@ -1376,7 +1376,7 @@ All effects don't start immediately, but rather get worse over time; the rate is ADD_TRAIT(M, t, type) M.adjustStaminaLoss(10) if(current_cycle > 30) - M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 2*REM) + M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 2*REAGENTS_EFFECT_MULTIPLIER) if(current_cycle > 50 && prob(15)) if(!M.undergoing_cardiac_arrest() && M.can_heartattack()) M.set_heartattack(TRUE) @@ -1401,13 +1401,13 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/neuroweak/on_mob_life(mob/living/carbon/M) if(holder.has_reagent(/datum/reagent/consumable/ethanol/neurotoxin)) - M.adjustOrganLoss(ORGAN_SLOT_BRAIN, -1*REM, 150) + M.adjustOrganLoss(ORGAN_SLOT_BRAIN, -1*REAGENTS_EFFECT_MULTIPLIER, 150) M.reagents.remove_reagent(/datum/reagent/consumable/ethanol/neurotoxin, 1.5 * REAGENTS_METABOLISM, FALSE) else if(holder.has_reagent(/datum/reagent/toxin/fentanyl)) - M.adjustOrganLoss(ORGAN_SLOT_BRAIN, -1*REM, 150) + M.adjustOrganLoss(ORGAN_SLOT_BRAIN, -1*REAGENTS_EFFECT_MULTIPLIER, 150) M.reagents.remove_reagent(/datum/reagent/toxin/fentanyl, 0.75 * REAGENTS_METABOLISM, FALSE) else - M.adjustOrganLoss(ORGAN_SLOT_BRAIN, -0.5*REM, 150) + M.adjustOrganLoss(ORGAN_SLOT_BRAIN, -0.5*REAGENTS_EFFECT_MULTIPLIER, 150) M.dizziness +=2 ..() @@ -1925,7 +1925,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/fernet/on_mob_life(mob/living/carbon/M) if(M.nutrition <= NUTRITION_LEVEL_STARVING) - M.adjustToxLoss(1*REM, 0) + M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER, 0) M.adjust_nutrition(-5) M.overeatduration = 0 return ..() @@ -1943,7 +1943,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/fernet_cola/on_mob_life(mob/living/carbon/M) if(M.nutrition <= NUTRITION_LEVEL_STARVING) - M.adjustToxLoss(0.5*REM, 0) + M.adjustToxLoss(0.5*REAGENTS_EFFECT_MULTIPLIER, 0) M.adjust_nutrition(-3) M.overeatduration = 0 return ..() diff --git a/code/modules/reagents/chemistry/reagents/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drink_reagents.dm index 5059376954..4376805e2c 100644 --- a/code/modules/reagents/chemistry/reagents/drink_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drink_reagents.dm @@ -47,7 +47,7 @@ /datum/reagent/consumable/limejuice/on_mob_life(mob/living/carbon/M) if(M.getToxLoss() && prob(20)) - M.adjustToxLoss(-1*REM, 0) + M.adjustToxLoss(-1*REAGENTS_EFFECT_MULTIPLIER, 0) . = 1 ..() diff --git a/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/code/modules/reagents/chemistry/reagents/drug_reagents.dm index ed80804f28..4848347df2 100644 --- a/code/modules/reagents/chemistry/reagents/drug_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drug_reagents.dm @@ -59,7 +59,7 @@ SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "smoked", /datum/mood_event/smoked, name) M.AdjustAllImmobility(-20, 0) M.AdjustUnconscious(-20, 0) - M.adjustStaminaLoss(-0.5*REM, 0) + M.adjustStaminaLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER, 0) ..() . = 1 @@ -83,30 +83,30 @@ . = 1 /datum/reagent/drug/crank/overdose_process(mob/living/M) - M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 2*REM) - M.adjustToxLoss(2*REM, 0) - M.adjustBruteLoss(2*REM, 0) + M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 2*REAGENTS_EFFECT_MULTIPLIER) + M.adjustToxLoss(2*REAGENTS_EFFECT_MULTIPLIER, 0) + M.adjustBruteLoss(2*REAGENTS_EFFECT_MULTIPLIER, 0) ..() . = 1 /datum/reagent/drug/crank/addiction_act_stage1(mob/living/M) - M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 5*REM) + M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 5*REAGENTS_EFFECT_MULTIPLIER) ..() /datum/reagent/drug/crank/addiction_act_stage2(mob/living/M) - M.adjustToxLoss(5*REM, 0) + M.adjustToxLoss(5*REAGENTS_EFFECT_MULTIPLIER, 0) ..() . = 1 /datum/reagent/drug/crank/addiction_act_stage3(mob/living/M) - M.adjustBruteLoss(5*REM, 0) + M.adjustBruteLoss(5*REAGENTS_EFFECT_MULTIPLIER, 0) ..() . = 1 /datum/reagent/drug/crank/addiction_act_stage4(mob/living/M) - M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 3*REM) - M.adjustToxLoss(5*REM, 0) - M.adjustBruteLoss(5*REM, 0) + M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 3*REAGENTS_EFFECT_MULTIPLIER) + M.adjustToxLoss(5*REAGENTS_EFFECT_MULTIPLIER, 0) + M.adjustBruteLoss(5*REAGENTS_EFFECT_MULTIPLIER, 0) ..() . = 1 @@ -128,14 +128,14 @@ ..() /datum/reagent/drug/krokodil/overdose_process(mob/living/M) - M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 0.25*REM) - M.adjustToxLoss(0.25*REM, 0) + M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 0.25*REAGENTS_EFFECT_MULTIPLIER) + M.adjustToxLoss(0.25*REAGENTS_EFFECT_MULTIPLIER, 0) ..() . = 1 /datum/reagent/drug/krokodil/addiction_act_stage1(mob/living/M) - M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 2*REM) - M.adjustToxLoss(2*REM, 0) + M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 2*REAGENTS_EFFECT_MULTIPLIER) + M.adjustToxLoss(2*REAGENTS_EFFECT_MULTIPLIER, 0) ..() . = 1 @@ -147,7 +147,7 @@ /datum/reagent/drug/krokodil/addiction_act_stage3(mob/living/M) if(prob(25)) to_chat(M, "Your skin starts to peel away...") - M.adjustBruteLoss(3*REM, 0) + M.adjustBruteLoss(3*REAGENTS_EFFECT_MULTIPLIER, 0) ..() . = 1 @@ -155,10 +155,10 @@ CHECK_DNA_AND_SPECIES(M) if(!istype(M.dna.species, /datum/species/krokodil_addict)) to_chat(M, "Your skin falls off easily!") - M.adjustBruteLoss(50*REM, 0) // holy shit your skin just FELL THE FUCK OFF + M.adjustBruteLoss(50*REAGENTS_EFFECT_MULTIPLIER, 0) // holy shit your skin just FELL THE FUCK OFF M.set_species(/datum/species/krokodil_addict) else - M.adjustBruteLoss(5*REM, 0) + M.adjustBruteLoss(5*REAGENTS_EFFECT_MULTIPLIER, 0) ..() . = 1 @@ -186,14 +186,14 @@ if(DT_PROB(2.5, delta_time)) to_chat(M, span_notice("[high_message]")) // SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "tweaking", /datum/mood_event/stimulant_medium, name) - M.AdjustStun(-40 * REM * delta_time) - M.AdjustKnockdown(-40 * REM * delta_time) - M.AdjustUnconscious(-40 * REM * delta_time) - M.AdjustParalyzed(-40 * REM * delta_time) - M.AdjustImmobilized(-40 * REM * delta_time) - M.adjustStaminaLoss(-2 * REM * delta_time, 0) - M.Jitter(2 * REM * delta_time) - M.adjustOrganLoss(ORGAN_SLOT_BRAIN, rand(1, 4) * REM * delta_time) + M.AdjustStun(-40 * REAGENTS_EFFECT_MULTIPLIER * delta_time) + M.AdjustKnockdown(-40 * REAGENTS_EFFECT_MULTIPLIER * delta_time) + M.AdjustUnconscious(-40 * REAGENTS_EFFECT_MULTIPLIER * delta_time) + M.AdjustParalyzed(-40 * REAGENTS_EFFECT_MULTIPLIER * delta_time) + M.AdjustImmobilized(-40 * REAGENTS_EFFECT_MULTIPLIER * delta_time) + M.adjustStaminaLoss(-2 * REAGENTS_EFFECT_MULTIPLIER * delta_time, 0) + M.Jitter(2 * REAGENTS_EFFECT_MULTIPLIER * delta_time) + M.adjustOrganLoss(ORGAN_SLOT_BRAIN, rand(1, 4) * REAGENTS_EFFECT_MULTIPLIER * delta_time) if(DT_PROB(2.5, delta_time)) M.emote(pick("twitch", "shiver")) ..() @@ -201,7 +201,7 @@ /datum/reagent/drug/methamphetamine/overdose_process(mob/living/M, delta_time, times_fired) if(CHECK_MOBILITY(M, MOBILITY_MOVE) && !ismovable(M.loc)) - for(var/i in 1 to round(4 * REM * delta_time, 1)) + for(var/i in 1 to round(4 * REAGENTS_EFFECT_MULTIPLIER * delta_time, 1)) step(M, pick(GLOB.cardinals)) if(DT_PROB(10, delta_time)) M.emote("laugh") @@ -209,8 +209,8 @@ M.visible_message(span_danger("[M]'s hands flip out and flail everywhere!")) M.drop_all_held_items() ..() - M.adjustToxLoss(1 * REM * delta_time, 0) - M.adjustOrganLoss(ORGAN_SLOT_BRAIN, (rand(5, 10) / 10) * REM * delta_time) + M.adjustToxLoss(1 * REAGENTS_EFFECT_MULTIPLIER * delta_time, 0) + M.adjustOrganLoss(ORGAN_SLOT_BRAIN, (rand(5, 10) / 10) * REAGENTS_EFFECT_MULTIPLIER * delta_time) . = TRUE /datum/reagent/drug/methamphetamine/addiction_act_stage1(mob/living/M) @@ -486,8 +486,8 @@ H.dna.species.punchstunthreshold += 2 /datum/reagent/drug/skooma/on_mob_life(mob/living/carbon/M) - M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 1*REM) - M.adjustToxLoss(1*REM) + M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 1*REAGENTS_EFFECT_MULTIPLIER) + M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER) if(prob(10)) M.adjust_blurriness(2) ..() @@ -531,7 +531,7 @@ value = REAGENT_VALUE_VERY_RARE /datum/reagent/syndicateadrenals/on_mob_life(mob/living/M) - M.adjustStaminaLoss(-5*REM) + M.adjustStaminaLoss(-5*REAGENTS_EFFECT_MULTIPLIER) . = ..() /datum/reagent/syndicateadrenals/on_mob_metabolize(mob/living/M) diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm index 02b19909b0..85836ffdf3 100644 --- a/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -658,10 +658,10 @@ /datum/reagent/consumable/honey/on_mob_life(mob/living/carbon/M) M.reagents.add_reagent(/datum/reagent/consumable/sugar,3) if(prob(55)) - M.adjustBruteLoss(-1*REM, 0) - M.adjustFireLoss(-1*REM, 0) - M.adjustOxyLoss(-1*REM, 0) - M.adjustToxLoss(-1*REM, 0, TRUE) //heals TOXINLOVERs + M.adjustBruteLoss(-1*REAGENTS_EFFECT_MULTIPLIER, 0) + M.adjustFireLoss(-1*REAGENTS_EFFECT_MULTIPLIER, 0) + M.adjustOxyLoss(-1*REAGENTS_EFFECT_MULTIPLIER, 0) + M.adjustToxLoss(-1*REAGENTS_EFFECT_MULTIPLIER, 0, TRUE) //heals TOXINLOVERs ..() /datum/reagent/consumable/honey/reaction_mob(mob/living/M, method=TOUCH, reac_volume) @@ -746,9 +746,9 @@ . = 1 if(prob(20)) M.losebreath += 4 - M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 2*REM, 150) - M.adjustToxLoss(3*REM,0) - M.adjustStaminaLoss(10*REM,0) + M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 2*REAGENTS_EFFECT_MULTIPLIER, 150) + M.adjustToxLoss(3*REAGENTS_EFFECT_MULTIPLIER,0) + M.adjustStaminaLoss(10*REAGENTS_EFFECT_MULTIPLIER,0) M.blur_eyes(5) . = TRUE ..() @@ -778,8 +778,8 @@ /datum/reagent/consumable/vitfro/on_mob_life(mob/living/carbon/M) if(prob(80)) - M.adjustBruteLoss(-1*REM, 0) - M.adjustFireLoss(-1*REM, 0) + M.adjustBruteLoss(-1*REAGENTS_EFFECT_MULTIPLIER, 0) + M.adjustFireLoss(-1*REAGENTS_EFFECT_MULTIPLIER, 0) . = TRUE ..() @@ -804,7 +804,7 @@ var/mob/living/carbon/C = M var/obj/item/organ/stomach/ethereal/stomach = C.getorganslot(ORGAN_SLOT_STOMACH) if(istype(stomach)) - stomach.adjust_charge(reac_volume * REM) + stomach.adjust_charge(reac_volume * REAGENTS_EFFECT_MULTIPLIER) /datum/reagent/consumable/liquidelectricity/on_mob_life(mob/living/carbon/M) if(prob(25) && !isethereal(M)) diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index 72a9779726..e1f8d5366c 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -56,7 +56,7 @@ mytray.visible_message("Nothing happens...") /datum/reagent/medicine/adminordrazine/on_mob_life(mob/living/carbon/M) - M.reagents.remove_all_type(/datum/reagent/toxin, 5*REM, 0, 1) + M.reagents.remove_all_type(/datum/reagent/toxin, 5*REAGENTS_EFFECT_MULTIPLIER, 0, 1) M.setCloneLoss(0, 0) M.setOxyLoss(0, 0) M.radiation = 0 @@ -299,7 +299,7 @@ ..() /datum/reagent/medicine/silver_sulfadiazine/on_mob_life(mob/living/carbon/M) - M.adjustFireLoss(-2*REM, 0) + M.adjustFireLoss(-2*REAGENTS_EFFECT_MULTIPLIER, 0) ..() . = 1 @@ -309,7 +309,7 @@ . = 1 /datum/reagent/medicine/silver_sulfadiazine/overdose_process(mob/living/M) - M.adjustFireLoss(2*REM, 0) + M.adjustFireLoss(2*REAGENTS_EFFECT_MULTIPLIER, 0) var/obj/item/organ/liver/L = M.getorganslot(ORGAN_SLOT_LIVER) if(L) L.applyOrganDamage(1) @@ -328,15 +328,15 @@ /datum/reagent/medicine/oxandrolone/on_mob_life(mob/living/carbon/M) if(M.getFireLoss() > 25) - M.adjustFireLoss(-4*REM, 0) //Twice as effective as silver sulfadiazine for severe burns + M.adjustFireLoss(-4*REAGENTS_EFFECT_MULTIPLIER, 0) //Twice as effective as silver sulfadiazine for severe burns else - M.adjustFireLoss(-0.5*REM, 0) //But only a quarter as effective for more minor ones + M.adjustFireLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER, 0) //But only a quarter as effective for more minor ones ..() . = 1 /datum/reagent/medicine/oxandrolone/overdose_process(mob/living/M) if(M.getFireLoss()) //It only makes existing burns worse - M.adjustFireLoss(4.5*REM, 0) // it's going to be healing either 4 or 0.5 + M.adjustFireLoss(4.5*REAGENTS_EFFECT_MULTIPLIER, 0) // it's going to be healing either 4 or 0.5 . = 1 ..() @@ -371,7 +371,7 @@ G.use(reac_volume) /datum/reagent/medicine/styptic_powder/on_mob_life(mob/living/carbon/M) - M.adjustBruteLoss(-2*REM, 0) + M.adjustBruteLoss(-2*REAGENTS_EFFECT_MULTIPLIER, 0) ..() . = 1 @@ -381,7 +381,7 @@ . = 1 /datum/reagent/medicine/styptic_powder/overdose_process(mob/living/M) - M.adjustBruteLoss(2*REM, 0) + M.adjustBruteLoss(2*REAGENTS_EFFECT_MULTIPLIER, 0) var/obj/item/organ/liver/L = M.getorganslot(ORGAN_SLOT_LIVER) if(L) L.applyOrganDamage(1) @@ -403,8 +403,8 @@ /datum/reagent/medicine/salglu_solution/on_mob_life(mob/living/carbon/human/M) if(prob(33)) - M.adjustBruteLoss(-0.5*REM, 0) - M.adjustFireLoss(-0.5*REM, 0) + M.adjustBruteLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER, 0) + M.adjustFireLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER, 0) . = TRUE if((HAS_TRAIT(M, TRAIT_NOMARROW))) return ..() @@ -414,10 +414,10 @@ if(M.functional_blood() < maximum_reachable) //Can only up to double your effective blood level. var/new_blood_level = min(volume * 5, maximum_reachable) last_added = new_blood_level - M.adjust_integration_blood(new_blood_level + (extra_regen * REM)) + M.adjust_integration_blood(new_blood_level + (extra_regen * REAGENTS_EFFECT_MULTIPLIER)) if(prob(33)) - M.adjustBruteLoss(-0.5*REM, 0) - M.adjustFireLoss(-0.5*REM, 0) + M.adjustBruteLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER, 0) + M.adjustFireLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER, 0) . = TRUE ..() @@ -436,8 +436,8 @@ holder.add_reagent(/datum/reagent/consumable/sugar, 1) holder.remove_reagent(/datum/reagent/medicine/salglu_solution, 0.5) if(prob(33)) - M.adjustBruteLoss(0.5*REM, 0) - M.adjustFireLoss(0.5*REM, 0) + M.adjustBruteLoss(0.5*REAGENTS_EFFECT_MULTIPLIER, 0) + M.adjustFireLoss(0.5*REAGENTS_EFFECT_MULTIPLIER, 0) . = TRUE ..() @@ -452,9 +452,9 @@ /datum/reagent/medicine/mine_salve/on_mob_life(mob/living/carbon/C) C.hal_screwyhud = SCREWYHUD_HEALTHY - C.adjustBruteLoss(-0.25*REM, 0) - C.adjustFireLoss(-0.25*REM, 0) - C.adjustStaminaLoss(-0.5*REM, 0) + C.adjustBruteLoss(-0.25*REAGENTS_EFFECT_MULTIPLIER, 0) + C.adjustFireLoss(-0.25*REAGENTS_EFFECT_MULTIPLIER, 0) + C.adjustStaminaLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER, 0) ..() return TRUE @@ -531,7 +531,7 @@ pH = 5 /datum/reagent/medicine/charcoal/on_mob_life(mob/living/carbon/M) - M.adjustToxLoss(-2*REM, 0) + M.adjustToxLoss(-2*REAGENTS_EFFECT_MULTIPLIER, 0) . = 1 for(var/A in M.reagents.reagent_list) var/datum/reagent/R = A @@ -551,18 +551,18 @@ var/healing = 0.5 /datum/reagent/medicine/omnizine/on_mob_life(mob/living/carbon/M) - M.adjustToxLoss(-healing*REM, 0) - M.adjustOxyLoss(-healing*REM, 0) - M.adjustBruteLoss(-healing*REM, 0) - M.adjustFireLoss(-healing*REM, 0) + M.adjustToxLoss(-healing*REAGENTS_EFFECT_MULTIPLIER, 0) + M.adjustOxyLoss(-healing*REAGENTS_EFFECT_MULTIPLIER, 0) + M.adjustBruteLoss(-healing*REAGENTS_EFFECT_MULTIPLIER, 0) + M.adjustFireLoss(-healing*REAGENTS_EFFECT_MULTIPLIER, 0) ..() . = 1 /datum/reagent/medicine/omnizine/overdose_process(mob/living/M) - M.adjustToxLoss(1.5*REM, 0) - M.adjustOxyLoss(1.5*REM, 0) - M.adjustBruteLoss(1.5*REM, 0) - M.adjustFireLoss(1.5*REM, 0) + M.adjustToxLoss(1.5*REAGENTS_EFFECT_MULTIPLIER, 0) + M.adjustOxyLoss(1.5*REAGENTS_EFFECT_MULTIPLIER, 0) + M.adjustBruteLoss(1.5*REAGENTS_EFFECT_MULTIPLIER, 0) + M.adjustFireLoss(1.5*REAGENTS_EFFECT_MULTIPLIER, 0) ..() . = 1 @@ -587,7 +587,7 @@ if(R != src) M.reagents.remove_reagent(R.type,2.5) if(M.health > 20) - M.adjustToxLoss(2.5*REM, 0) + M.adjustToxLoss(2.5*REAGENTS_EFFECT_MULTIPLIER, 0) . = 1 ..() @@ -630,7 +630,7 @@ /datum/reagent/medicine/pen_acid/on_mob_life(mob/living/carbon/M) M.radiation -= max(M.radiation-RAD_MOB_SAFE, 0)/50 - M.adjustToxLoss(-2*REM, 0, healtoxinlover) + M.adjustToxLoss(-2*REAGENTS_EFFECT_MULTIPLIER, 0, healtoxinlover) for(var/A in M.reagents.reagent_list) var/datum/reagent/R = A if(R != src) @@ -659,15 +659,15 @@ /datum/reagent/medicine/sal_acid/on_mob_life(mob/living/carbon/M) if(M.getBruteLoss() > 25) - M.adjustBruteLoss(-4*REM, 0) //Twice as effective as styptic powder for severe bruising + M.adjustBruteLoss(-4*REAGENTS_EFFECT_MULTIPLIER, 0) //Twice as effective as styptic powder for severe bruising else - M.adjustBruteLoss(-0.5*REM, 0) //But only a quarter as effective for more minor ones + M.adjustBruteLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER, 0) //But only a quarter as effective for more minor ones ..() . = 1 /datum/reagent/medicine/sal_acid/overdose_process(mob/living/M) if(M.getBruteLoss()) //It only makes existing bruises worse - M.adjustBruteLoss(4.5*REM, 0) // it's going to be healing either 4 or 0.5 + M.adjustBruteLoss(4.5*REAGENTS_EFFECT_MULTIPLIER, 0) // it's going to be healing either 4 or 0.5 . = 1 ..() @@ -680,7 +680,7 @@ pH = 2 /datum/reagent/medicine/salbutamol/on_mob_life(mob/living/carbon/M) - M.adjustOxyLoss(-3*REM, 0) + M.adjustOxyLoss(-3*REAGENTS_EFFECT_MULTIPLIER, 0) if(M.losebreath >= 4) M.losebreath -= 2 M.Jitter(5) @@ -696,11 +696,11 @@ pH = 11 /datum/reagent/medicine/perfluorodecalin/on_mob_life(mob/living/carbon/human/M) - M.adjustOxyLoss(-12*REM, 0) + M.adjustOxyLoss(-12*REAGENTS_EFFECT_MULTIPLIER, 0) M.silent = max(M.silent, 5) if(prob(33)) - M.adjustBruteLoss(-0.5*REM, 0) - M.adjustFireLoss(-0.5*REM, 0) + M.adjustBruteLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER, 0) + M.adjustFireLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER, 0) ..() return TRUE @@ -731,8 +731,8 @@ // to_chat(M, span_notice("Your hands spaz out and you drop what you were holding!")) // M.Jitter(10) - M.AdjustAllImmobility(-20 * REM * delta_time) - M.adjustStaminaLoss(-1 * REM * delta_time, FALSE) + M.AdjustAllImmobility(-20 * REAGENTS_EFFECT_MULTIPLIER * delta_time) + M.adjustStaminaLoss(-1 * REAGENTS_EFFECT_MULTIPLIER * delta_time, FALSE) ..() return TRUE @@ -754,28 +754,28 @@ /datum/reagent/medicine/ephedrine/addiction_act_stage1(mob/living/M) if(prob(33)) - M.adjustToxLoss(2*REM, 0) + M.adjustToxLoss(2*REAGENTS_EFFECT_MULTIPLIER, 0) M.losebreath += 2 . = 1 ..() /datum/reagent/medicine/ephedrine/addiction_act_stage2(mob/living/M) if(prob(33)) - M.adjustToxLoss(3*REM, 0) + M.adjustToxLoss(3*REAGENTS_EFFECT_MULTIPLIER, 0) M.losebreath += 3 . = 1 ..() /datum/reagent/medicine/ephedrine/addiction_act_stage3(mob/living/M) if(prob(33)) - M.adjustToxLoss(4*REM, 0) + M.adjustToxLoss(4*REAGENTS_EFFECT_MULTIPLIER, 0) M.losebreath += 4 . = 1 ..() /datum/reagent/medicine/ephedrine/addiction_act_stage4(mob/living/M) if(prob(33)) - M.adjustToxLoss(5*REM, 0) + M.adjustToxLoss(5*REAGENTS_EFFECT_MULTIPLIER, 0) M.losebreath += 5 . = 1 ..() @@ -841,7 +841,7 @@ /datum/reagent/medicine/morphine/addiction_act_stage2(mob/living/M) if(prob(33)) M.drop_all_held_items() - M.adjustToxLoss(1*REM, 0) + M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER, 0) . = 1 M.Dizzy(3) M.Jitter(3) @@ -850,7 +850,7 @@ /datum/reagent/medicine/morphine/addiction_act_stage3(mob/living/M) if(prob(33)) M.drop_all_held_items() - M.adjustToxLoss(2*REM, 0) + M.adjustToxLoss(2*REAGENTS_EFFECT_MULTIPLIER, 0) . = 1 M.Dizzy(4) M.Jitter(4) @@ -859,7 +859,7 @@ /datum/reagent/medicine/morphine/addiction_act_stage4(mob/living/M) if(prob(33)) M.drop_all_held_items() - M.adjustToxLoss(3*REM, 0) + M.adjustToxLoss(3*REAGENTS_EFFECT_MULTIPLIER, 0) . = 1 M.Dizzy(5) M.Jitter(5) @@ -907,10 +907,10 @@ /datum/reagent/medicine/atropine/on_mob_life(mob/living/carbon/M) if(M.health < 0) - M.adjustToxLoss(-2*REM, 0) - M.adjustBruteLoss(-2*REM, 0) - M.adjustFireLoss(-2*REM, 0) - M.adjustOxyLoss(-5*REM, 0) + M.adjustToxLoss(-2*REAGENTS_EFFECT_MULTIPLIER, 0) + M.adjustBruteLoss(-2*REAGENTS_EFFECT_MULTIPLIER, 0) + M.adjustFireLoss(-2*REAGENTS_EFFECT_MULTIPLIER, 0) + M.adjustOxyLoss(-5*REAGENTS_EFFECT_MULTIPLIER, 0) . = 1 M.losebreath = 0 if(prob(20)) @@ -919,7 +919,7 @@ ..() /datum/reagent/medicine/atropine/overdose_process(mob/living/M) - M.adjustToxLoss(0.5*REM, 0) + M.adjustToxLoss(0.5*REAGENTS_EFFECT_MULTIPLIER, 0) . = 1 M.Dizzy(1) M.Jitter(1) @@ -936,16 +936,16 @@ /datum/reagent/medicine/epinephrine/on_mob_life(mob/living/carbon/M) if(M.health < 0) - M.adjustToxLoss(-0.5*REM, 0) - M.adjustBruteLoss(-0.5*REM, 0) - M.adjustFireLoss(-0.5*REM, 0) + M.adjustToxLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER, 0) + M.adjustBruteLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER, 0) + M.adjustFireLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER, 0) if(M.oxyloss > 35) M.setOxyLoss(35, 0) if(M.losebreath >= 4) M.losebreath -= 2 if(M.losebreath < 0) M.losebreath = 0 - M.adjustStaminaLoss(-0.5*REM, 0) + M.adjustStaminaLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER, 0) . = 1 if(prob(20)) M.AdjustAllImmobility(-20, 0) @@ -954,8 +954,8 @@ /datum/reagent/medicine/epinephrine/overdose_process(mob/living/M) if(prob(33)) - M.adjustStaminaLoss(2.5*REM, 0) - M.adjustToxLoss(1*REM, 0) + M.adjustStaminaLoss(2.5*REAGENTS_EFFECT_MULTIPLIER, 0) + M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER, 0) M.losebreath++ . = 1 ..() @@ -1021,8 +1021,8 @@ /datum/reagent/medicine/strange_reagent/on_mob_life(mob/living/carbon/M) - M.adjustBruteLoss(0.5*REM, 0) - M.adjustFireLoss(0.5*REM, 0) + M.adjustBruteLoss(0.5*REAGENTS_EFFECT_MULTIPLIER, 0) + M.adjustFireLoss(0.5*REAGENTS_EFFECT_MULTIPLIER, 0) ..() . = 1 @@ -1033,7 +1033,7 @@ pH = 10.4 /datum/reagent/medicine/mannitol/on_mob_life(mob/living/carbon/C) - C.adjustOrganLoss(ORGAN_SLOT_BRAIN, -2*REM) + C.adjustOrganLoss(ORGAN_SLOT_BRAIN, -2*REAGENTS_EFFECT_MULTIPLIER) if(prob(10)) C.cure_trauma_type(resilience = TRAUMA_RESILIENCE_BASIC) ..() @@ -1091,8 +1091,8 @@ M.drowsyness = 0 M.slurring = 0 M.confused = 0 - M.reagents.remove_all_type(/datum/reagent/consumable/ethanol, 3*REM, 0, 1) - M.adjustToxLoss(-0.2*REM, 0) + M.reagents.remove_all_type(/datum/reagent/consumable/ethanol, 3*REAGENTS_EFFECT_MULTIPLIER, 0, 1) + M.adjustToxLoss(-0.2*REAGENTS_EFFECT_MULTIPLIER, 0) if(ishuman(M)) var/mob/living/carbon/human/H = M H.drunkenness = max(H.drunkenness - 10, 0) @@ -1120,20 +1120,20 @@ /datum/reagent/medicine/stimulants/on_mob_life(mob/living/carbon/M) if(M.health < 50 && M.health > 0) - M.adjustOxyLoss(-1*REM, FALSE) - M.adjustToxLoss(-1*REM, FALSE) - M.adjustBruteLoss(-1*REM, FALSE) - M.adjustFireLoss(-1*REM, FALSE) + M.adjustOxyLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE) + M.adjustToxLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE) + M.adjustBruteLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE) + M.adjustFireLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE) M.AdjustAllImmobility(-60, FALSE) M.AdjustUnconscious(-60, FALSE) - M.adjustStaminaLoss(-20*REM, FALSE) + M.adjustStaminaLoss(-20*REAGENTS_EFFECT_MULTIPLIER, FALSE) ..() . = 1 /datum/reagent/medicine/stimulants/overdose_process(mob/living/M) if(prob(33)) - M.adjustStaminaLoss(2.5*REM, FALSE) - M.adjustToxLoss(1*REM, FALSE) + M.adjustStaminaLoss(2.5*REAGENTS_EFFECT_MULTIPLIER, FALSE) + M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER, FALSE) M.losebreath++ . = 1 ..() @@ -1162,12 +1162,12 @@ pH = 5 /datum/reagent/medicine/bicaridine/on_mob_life(mob/living/carbon/M) - M.adjustBruteLoss(-2*REM, FALSE) + M.adjustBruteLoss(-2*REAGENTS_EFFECT_MULTIPLIER, FALSE) ..() . = 1 /datum/reagent/medicine/bicaridine/overdose_process(mob/living/M) - M.adjustBruteLoss(4*REM, FALSE) + M.adjustBruteLoss(4*REAGENTS_EFFECT_MULTIPLIER, FALSE) ..() . = 1 @@ -1180,12 +1180,12 @@ pH = 9.7 /datum/reagent/medicine/dexalin/on_mob_life(mob/living/carbon/M) - M.adjustOxyLoss(-2*REM, FALSE) + M.adjustOxyLoss(-2*REAGENTS_EFFECT_MULTIPLIER, FALSE) ..() . = 1 /datum/reagent/medicine/dexalin/overdose_process(mob/living/M) - M.adjustOxyLoss(4*REM, FALSE) + M.adjustOxyLoss(4*REAGENTS_EFFECT_MULTIPLIER, FALSE) ..() . = 1 @@ -1198,12 +1198,12 @@ pH = 9 /datum/reagent/medicine/kelotane/on_mob_life(mob/living/carbon/M) - M.adjustFireLoss(-2*REM, FALSE) + M.adjustFireLoss(-2*REAGENTS_EFFECT_MULTIPLIER, FALSE) ..() . = 1 /datum/reagent/medicine/kelotane/overdose_process(mob/living/M) - M.adjustFireLoss(4*REM, FALSE) + M.adjustFireLoss(4*REAGENTS_EFFECT_MULTIPLIER, FALSE) ..() . = 1 @@ -1217,14 +1217,14 @@ pH = 10 /datum/reagent/medicine/antitoxin/on_mob_life(mob/living/carbon/M) - M.adjustToxLoss(-2*REM, FALSE) + M.adjustToxLoss(-2*REAGENTS_EFFECT_MULTIPLIER, FALSE) for(var/datum/reagent/toxin/R in M.reagents.reagent_list) M.reagents.remove_reagent(R.type,1) ..() . = 1 /datum/reagent/medicine/antitoxin/overdose_process(mob/living/M) - M.adjustToxLoss(4*REM, FALSE) // End result is 2 toxin loss taken, because it heals 2 and then removes 4. + M.adjustToxLoss(4*REAGENTS_EFFECT_MULTIPLIER, FALSE) // End result is 2 toxin loss taken, because it heals 2 and then removes 4. ..() . = 1 @@ -1255,18 +1255,18 @@ /datum/reagent/medicine/tricordrazine/on_mob_life(mob/living/carbon/M) if(prob(80)) - M.adjustBruteLoss(-1*REM, FALSE) - M.adjustFireLoss(-1*REM, FALSE) - M.adjustOxyLoss(-1*REM, FALSE) - M.adjustToxLoss(-1*REM, FALSE) + M.adjustBruteLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE) + M.adjustFireLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE) + M.adjustOxyLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE) + M.adjustToxLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE) . = 1 ..() /datum/reagent/medicine/tricordrazine/overdose_process(mob/living/M) - M.adjustToxLoss(2*REM, FALSE) - M.adjustOxyLoss(2*REM, FALSE) - M.adjustBruteLoss(2*REM, FALSE) - M.adjustFireLoss(2*REM, FALSE) + M.adjustToxLoss(2*REAGENTS_EFFECT_MULTIPLIER, FALSE) + M.adjustOxyLoss(2*REAGENTS_EFFECT_MULTIPLIER, FALSE) + M.adjustBruteLoss(2*REAGENTS_EFFECT_MULTIPLIER, FALSE) + M.adjustFireLoss(2*REAGENTS_EFFECT_MULTIPLIER, FALSE) ..() . = 1 @@ -1279,10 +1279,10 @@ value = REAGENT_VALUE_COMMON /datum/reagent/medicine/regen_jelly/on_mob_life(mob/living/carbon/M) - M.adjustBruteLoss(-1.5*REM, FALSE) - M.adjustFireLoss(-1.5*REM, FALSE) - M.adjustOxyLoss(-1.5*REM, FALSE) - M.adjustToxLoss(-1.5*REM, 0, TRUE) //heals TOXINLOVERs + M.adjustBruteLoss(-1.5*REAGENTS_EFFECT_MULTIPLIER, FALSE) + M.adjustFireLoss(-1.5*REAGENTS_EFFECT_MULTIPLIER, FALSE) + M.adjustOxyLoss(-1.5*REAGENTS_EFFECT_MULTIPLIER, FALSE) + M.adjustToxLoss(-1.5*REAGENTS_EFFECT_MULTIPLIER, 0, TRUE) //heals TOXINLOVERs . = 1 ..() @@ -1295,13 +1295,13 @@ value = REAGENT_VALUE_EXCEPTIONAL /datum/reagent/medicine/syndicate_nanites/on_mob_life(mob/living/carbon/M) - M.adjustBruteLoss(-5*REM, FALSE) //A ton of healing - this is a 50 telecrystal investment. - M.adjustFireLoss(-5*REM, FALSE) + M.adjustBruteLoss(-5*REAGENTS_EFFECT_MULTIPLIER, FALSE) //A ton of healing - this is a 50 telecrystal investment. + M.adjustFireLoss(-5*REAGENTS_EFFECT_MULTIPLIER, FALSE) M.adjustOxyLoss(-15, FALSE) - M.adjustToxLoss(-5*REM, FALSE) - M.adjustOrganLoss(ORGAN_SLOT_BRAIN, -15*REM) - M.adjustCloneLoss(-3*REM, FALSE) - M.adjustStaminaLoss(-25*REM,FALSE) + M.adjustToxLoss(-5*REAGENTS_EFFECT_MULTIPLIER, FALSE) + M.adjustOrganLoss(ORGAN_SLOT_BRAIN, -15*REAGENTS_EFFECT_MULTIPLIER) + M.adjustCloneLoss(-3*REAGENTS_EFFECT_MULTIPLIER, FALSE) + M.adjustStaminaLoss(-25*REAGENTS_EFFECT_MULTIPLIER,FALSE) if(M.blood_volume < (BLOOD_VOLUME_NORMAL*M.blood_ratio)) M.adjust_integration_blood(40) // blood fall out man bad ..() @@ -1316,13 +1316,13 @@ value = REAGENT_VALUE_VERY_RARE /datum/reagent/medicine/lesser_syndicate_nanites/on_mob_life(mob/living/carbon/M) - M.adjustBruteLoss(-2*REM, FALSE) - M.adjustFireLoss(-2*REM, FALSE) - M.adjustOxyLoss(-5*REM, FALSE) - M.adjustToxLoss(-2*REM, FALSE) - M.adjustOrganLoss(ORGAN_SLOT_BRAIN, -5*REM) - M.adjustCloneLoss(-1.25*REM, FALSE) - M.adjustStaminaLoss(-4*REM,FALSE) + M.adjustBruteLoss(-2*REAGENTS_EFFECT_MULTIPLIER, FALSE) + M.adjustFireLoss(-2*REAGENTS_EFFECT_MULTIPLIER, FALSE) + M.adjustOxyLoss(-5*REAGENTS_EFFECT_MULTIPLIER, FALSE) + M.adjustToxLoss(-2*REAGENTS_EFFECT_MULTIPLIER, FALSE) + M.adjustOrganLoss(ORGAN_SLOT_BRAIN, -5*REAGENTS_EFFECT_MULTIPLIER) + M.adjustCloneLoss(-1.25*REAGENTS_EFFECT_MULTIPLIER, FALSE) + M.adjustStaminaLoss(-4*REAGENTS_EFFECT_MULTIPLIER,FALSE) if(M.blood_volume < (BLOOD_VOLUME_NORMAL*M.blood_ratio)) M.adjust_integration_blood(3) ..() @@ -1340,17 +1340,17 @@ value = REAGENT_VALUE_UNCOMMON /datum/reagent/medicine/neo_jelly/on_mob_life(mob/living/carbon/M) - M.adjustBruteLoss(-1.5*REM, FALSE) - M.adjustFireLoss(-1.5*REM, FALSE) - M.adjustOxyLoss(-1.5*REM, FALSE) - M.adjustToxLoss(-1.5*REM, 0, TRUE) //heals TOXINLOVERs + M.adjustBruteLoss(-1.5*REAGENTS_EFFECT_MULTIPLIER, FALSE) + M.adjustFireLoss(-1.5*REAGENTS_EFFECT_MULTIPLIER, FALSE) + M.adjustOxyLoss(-1.5*REAGENTS_EFFECT_MULTIPLIER, FALSE) + M.adjustToxLoss(-1.5*REAGENTS_EFFECT_MULTIPLIER, 0, TRUE) //heals TOXINLOVERs . = 1 ..() /datum/reagent/medicine/neo_jelly/overdose_process(mob/living/M) - M.adjustOxyLoss(2.6*REM, FALSE) - M.adjustBruteLoss(3.5*REM, FALSE) - M.adjustFireLoss(3.5*REM, FALSE) + M.adjustOxyLoss(2.6*REAGENTS_EFFECT_MULTIPLIER, FALSE) + M.adjustBruteLoss(3.5*REAGENTS_EFFECT_MULTIPLIER, FALSE) + M.adjustFireLoss(3.5*REAGENTS_EFFECT_MULTIPLIER, FALSE) ..() . = 1 @@ -1378,13 +1378,13 @@ myseed.adjust_production(-round(chems.get_reagent_amount(src.type) * 0.5)) /datum/reagent/medicine/earthsblood/on_mob_life(mob/living/carbon/M) - M.adjustBruteLoss(-3 * REM, FALSE) - M.adjustFireLoss(-3 * REM, FALSE) - M.adjustOxyLoss(-15 * REM, FALSE) - M.adjustToxLoss(-3 * REM, FALSE, TRUE) //Heals TOXINLOVERS - M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 2 * REM, 150) //This does, after all, come from ambrosia, and the most powerful ambrosia in existence, at that! - M.adjustCloneLoss(-1 * REM, FALSE) - M.adjustStaminaLoss(-13 * REM, FALSE) + M.adjustBruteLoss(-3 * REAGENTS_EFFECT_MULTIPLIER, FALSE) + M.adjustFireLoss(-3 * REAGENTS_EFFECT_MULTIPLIER, FALSE) + M.adjustOxyLoss(-15 * REAGENTS_EFFECT_MULTIPLIER, FALSE) + M.adjustToxLoss(-3 * REAGENTS_EFFECT_MULTIPLIER, FALSE, TRUE) //Heals TOXINLOVERS + M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 2 * REAGENTS_EFFECT_MULTIPLIER, 150) //This does, after all, come from ambrosia, and the most powerful ambrosia in existence, at that! + M.adjustCloneLoss(-1 * REAGENTS_EFFECT_MULTIPLIER, FALSE) + M.adjustStaminaLoss(-13 * REAGENTS_EFFECT_MULTIPLIER, FALSE) M.jitteriness = min(max(0, M.jitteriness + 3), 30) M.druggy = min(max(0, M.druggy + 10), 15) //See above ..() @@ -1392,7 +1392,7 @@ /datum/reagent/medicine/earthsblood/overdose_process(mob/living/M) M.hallucination = min(max(0, M.hallucination + 5), 60) - M.adjustToxLoss(8 * REM, FALSE, TRUE) //Hurts TOXINLOVERS + M.adjustToxLoss(8 * REAGENTS_EFFECT_MULTIPLIER, FALSE, TRUE) //Hurts TOXINLOVERS ..() . = 1 @@ -1414,8 +1414,8 @@ if (M.hallucination >= 5) M.hallucination -= 5 if(prob(20)) - M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 1*REM, 50) - M.adjustStaminaLoss(2.5*REM, 0) + M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 1*REAGENTS_EFFECT_MULTIPLIER, 50) + M.adjustStaminaLoss(2.5*REAGENTS_EFFECT_MULTIPLIER, 0) ..() return TRUE @@ -1434,9 +1434,9 @@ return TRUE /datum/reagent/medicine/lavaland_extract/overdose_process(mob/living/M) - M.adjustBruteLoss(3*REM, 0) - M.adjustFireLoss(3*REM, 0) - M.adjustToxLoss(3*REM, 0) + M.adjustBruteLoss(3*REAGENTS_EFFECT_MULTIPLIER, 0) + M.adjustFireLoss(3*REAGENTS_EFFECT_MULTIPLIER, 0) + M.adjustToxLoss(3*REAGENTS_EFFECT_MULTIPLIER, 0) ..() return TRUE @@ -1450,10 +1450,10 @@ /datum/reagent/medicine/changelingadrenaline/on_mob_life(mob/living/carbon/metabolizer, delta_time, times_fired) ..() - metabolizer.AdjustAllImmobility(-20 * REM * delta_time) - metabolizer.adjustStaminaLoss(-30 * REM * delta_time, 0) - metabolizer.Jitter(10 * REM * delta_time) - metabolizer.Dizzy(10 * REM * delta_time) + metabolizer.AdjustAllImmobility(-20 * REAGENTS_EFFECT_MULTIPLIER * delta_time) + metabolizer.adjustStaminaLoss(-30 * REAGENTS_EFFECT_MULTIPLIER * delta_time, 0) + metabolizer.Jitter(10 * REAGENTS_EFFECT_MULTIPLIER * delta_time) + metabolizer.Dizzy(10 * REAGENTS_EFFECT_MULTIPLIER * delta_time) return TRUE /datum/reagent/medicine/changelingadrenaline/on_mob_metabolize(mob/living/L) @@ -1471,7 +1471,7 @@ L.Jitter(0) /datum/reagent/medicine/changelingadrenaline/overdose_process(mob/living/metabolizer, delta_time, times_fired) - metabolizer.adjustToxLoss(1 * REM * delta_time, 0) + metabolizer.adjustToxLoss(1 * REAGENTS_EFFECT_MULTIPLIER * delta_time, 0) ..() return TRUE @@ -1546,7 +1546,7 @@ overdose_threshold = overdose_threshold + rand(-10,10)/10 // for extra fun M.AdjustAllImmobility(-5, 0) M.AdjustUnconscious(-5, 0) - M.adjustStaminaLoss(-1*REM, 0) + M.adjustStaminaLoss(-1*REAGENTS_EFFECT_MULTIPLIER, 0) M.Jitter(1) metabolization_rate = 0.01 * REAGENTS_METABOLISM * rand(5,20) // randomizes metabolism between 0.02 and 0.08 per tick . = TRUE @@ -1566,8 +1566,8 @@ if(prob(50)) M.losebreath++ if(41 to 80) - M.adjustOxyLoss(0.1*REM, 0) - M.adjustStaminaLoss(0.1*REM, 0) + M.adjustOxyLoss(0.1*REAGENTS_EFFECT_MULTIPLIER, 0) + M.adjustStaminaLoss(0.1*REAGENTS_EFFECT_MULTIPLIER, 0) M.jitteriness = min(M.jitteriness+1, 20) M.stuttering = min(M.stuttering+1, 20) M.Dizzy(10) @@ -1579,12 +1579,12 @@ M.DefaultCombatKnockdown(20, 1, 0) // you should be in a bad spot at this point unless epipen has been used if(81) to_chat(M, "You feel too exhausted to continue!") // at this point you will eventually die unless you get charcoal - M.adjustOxyLoss(0.1*REM, 0) - M.adjustStaminaLoss(0.1*REM, 0) + M.adjustOxyLoss(0.1*REAGENTS_EFFECT_MULTIPLIER, 0) + M.adjustStaminaLoss(0.1*REAGENTS_EFFECT_MULTIPLIER, 0) if(82 to INFINITY) M.Sleeping(100, 0, TRUE) - M.adjustOxyLoss(1.5*REM, 0) - M.adjustStaminaLoss(1.5*REM, 0) + M.adjustOxyLoss(1.5*REAGENTS_EFFECT_MULTIPLIER, 0) + M.adjustStaminaLoss(1.5*REAGENTS_EFFECT_MULTIPLIER, 0) ..() return TRUE @@ -1674,7 +1674,7 @@ value = REAGENT_VALUE_UNCOMMON // while it's 'rare', it can be milked from the wisdom cow /datum/reagent/medicine/liquid_wisdom/on_mob_life(mob/living/carbon/C) //slightly stronger mannitol, from the wisdom cow - C.adjustOrganLoss(ORGAN_SLOT_BRAIN, -3*REM) + C.adjustOrganLoss(ORGAN_SLOT_BRAIN, -3*REAGENTS_EFFECT_MULTIPLIER) if(prob(20)) C.cure_trauma_type(resilience = TRAUMA_RESILIENCE_BASIC) if(prob(3)) diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index bf93c933de..a378880567 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -58,7 +58,7 @@ var/blood_id = C.get_blood_id() if((blood_id in GLOB.blood_reagent_types) && !HAS_TRAIT(C, TRAIT_NOMARROW)) if(!data || !(data["blood_type"] in get_safe_blood(C.dna.blood_type))) //we only care about bloodtype here because this is where the poisoning should be - C.adjustToxLoss(rand(2,8)*REM, TRUE, TRUE) //forced to ensure people don't use it to gain beneficial toxin as slime person + C.adjustToxLoss(rand(2,8)*REAGENTS_EFFECT_MULTIPLIER, TRUE, TRUE) //forced to ensure people don't use it to gain beneficial toxin as slime person ..() /datum/reagent/blood/reaction_obj(obj/O, volume) @@ -175,10 +175,10 @@ if(prob(10)) if(M.dna?.species?.exotic_bloodtype != "GEL") to_chat(M, "Your insides are burning!") - M.adjustToxLoss(rand(20,60)*REM, 0) + M.adjustToxLoss(rand(20,60)*REAGENTS_EFFECT_MULTIPLIER, 0) . = 1 else if(prob(40) && isjellyperson(M)) - M.heal_bodypart_damage(2*REM) + M.heal_bodypart_damage(2*REAGENTS_EFFECT_MULTIPLIER) . = 1 ..() @@ -1019,7 +1019,7 @@ mytray.adjustWeeds(-rand(1,3)) /datum/reagent/chlorine/on_mob_life(mob/living/carbon/M) - M.take_bodypart_damage(1*REM, 0, 0, 0) + M.take_bodypart_damage(1*REAGENTS_EFFECT_MULTIPLIER, 0, 0, 0) . = 1 ..() @@ -1041,7 +1041,7 @@ mytray.adjustWeeds(-rand(1,4)) /datum/reagent/fluorine/on_mob_life(mob/living/carbon/M) - M.adjustToxLoss(1*REM, 0) + M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER, 0) . = 1 ..() @@ -1098,7 +1098,7 @@ mytray.adjustToxic(round(chems.get_reagent_amount(src.type) * 1)) /datum/reagent/radium/on_mob_life(mob/living/carbon/M) - M.apply_effect(2*REM/M.metabolism_efficiency,EFFECT_IRRADIATE,0) + M.apply_effect(2*REAGENTS_EFFECT_MULTIPLIER/M.metabolism_efficiency,EFFECT_IRRADIATE,0) ..() /datum/reagent/radium/reaction_turf(turf/T, reac_volume) @@ -1398,7 +1398,7 @@ /datum/reagent/impedrezene/on_mob_life(mob/living/carbon/M) M.jitteriness = max(M.jitteriness-5,0) if(prob(80)) - M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 2*REM) + M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 2*REAGENTS_EFFECT_MULTIPLIER) if(prob(50)) M.drowsyness = max(M.drowsyness, 3) if(prob(10)) @@ -1574,7 +1574,7 @@ ..() /datum/reagent/stimulum/on_mob_life(mob/living/carbon/M) - M.adjustStaminaLoss(-2*REM, 0) + M.adjustStaminaLoss(-2*REAGENTS_EFFECT_MULTIPLIER, 0) current_cycle++ holder.remove_reagent(type, 0.99) //Gives time for the next tick of life(). . = TRUE //Update status effects. @@ -1687,7 +1687,7 @@ /datum/reagent/plantnutriment/on_mob_life(mob/living/carbon/M) if(prob(tox_prob)) - M.adjustToxLoss(1*REM, 0) + M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER, 0) . = 1 ..() @@ -2533,7 +2533,7 @@ var/obj/item/bodypart/wounded_part = W.limb if(wounded_part) wounded_part.heal_damage(0.25, 0.25) - M.adjustStaminaLoss(-0.25*REM) // the more wounds, the more stamina regen + M.adjustStaminaLoss(-0.25*REAGENTS_EFFECT_MULTIPLIER) // the more wounds, the more stamina regen ..() /datum/reagent/eldritch diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm index 7dd8cac452..7cefc48159 100644 --- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm @@ -18,7 +18,7 @@ /datum/reagent/toxin/on_mob_life(mob/living/carbon/M) if(toxpwr) - M.adjustToxLoss(toxpwr*REM, 0) + M.adjustToxLoss(toxpwr*REAGENTS_EFFECT_MULTIPLIER, 0) . = TRUE ..() @@ -79,7 +79,7 @@ /datum/reagent/toxin/plasma/on_mob_life(mob/living/carbon/C) if(holder.has_reagent(/datum/reagent/medicine/epinephrine)) - holder.remove_reagent(/datum/reagent/medicine/epinephrine, 2*REM) + holder.remove_reagent(/datum/reagent/medicine/epinephrine, 2*REAGENTS_EFFECT_MULTIPLIER) C.adjustPlasma(20) return ..() @@ -136,10 +136,10 @@ /datum/reagent/toxin/slimejelly/on_mob_life(mob/living/carbon/M) if(prob(10)) to_chat(M, "Your insides are burning!") - M.adjustToxLoss(rand(20,60)*REM, 0) + M.adjustToxLoss(rand(20,60)*REAGENTS_EFFECT_MULTIPLIER, 0) . = 1 else if(prob(40)) - M.heal_bodypart_damage(5*REM) + M.heal_bodypart_damage(5*REAGENTS_EFFECT_MULTIPLIER) . = 1 ..() @@ -191,7 +191,7 @@ ..() /datum/reagent/toxin/zombiepowder/reaction_mob(mob/living/L, method=TOUCH, reac_volume) - L.adjustOxyLoss(0.5*REM, 0) + L.adjustOxyLoss(0.5*REAGENTS_EFFECT_MULTIPLIER, 0) if(method == INGEST) fakedeath_active = TRUE L.fakedeath(type) @@ -230,7 +230,7 @@ ..() /datum/reagent/toxin/ghoulpowder/on_mob_life(mob/living/carbon/M) - M.adjustOxyLoss(1*REM, 0) + M.adjustOxyLoss(1*REAGENTS_EFFECT_MULTIPLIER, 0) ..() . = 1 @@ -365,7 +365,7 @@ . = 1 if(51 to INFINITY) M.Sleeping(40, 0) - M.adjustToxLoss((current_cycle - 50)*REM, 0) + M.adjustToxLoss((current_cycle - 50)*REAGENTS_EFFECT_MULTIPLIER, 0) . = 1 ..() @@ -387,7 +387,7 @@ M.Sleeping(40, 0) if(51 to INFINITY) M.Sleeping(40, 0) - M.adjustToxLoss((current_cycle - 50)*REM, 0) + M.adjustToxLoss((current_cycle - 50)*REAGENTS_EFFECT_MULTIPLIER, 0) return ..() /datum/reagent/toxin/coffeepowder @@ -437,7 +437,7 @@ value = REAGENT_VALUE_UNCOMMON /datum/reagent/toxin/staminatoxin/on_mob_life(mob/living/carbon/M) - M.adjustStaminaLoss(REM * data, 0) + M.adjustStaminaLoss(REAGENTS_EFFECT_MULTIPLIER * data, 0) data = max(data - 1, 5) ..() . = 1 @@ -478,14 +478,14 @@ if(4) if(prob(75)) to_chat(M, "You scratch at an itch.") - M.adjustBruteLoss(2*REM, 0) + M.adjustBruteLoss(2*REAGENTS_EFFECT_MULTIPLIER, 0) . = 1 ..() /datum/reagent/toxin/histamine/overdose_process(mob/living/M) - M.adjustOxyLoss(2*REM, 0) - M.adjustBruteLoss(2*REM, 0) - M.adjustToxLoss(2*REM, 0) + M.adjustOxyLoss(2*REAGENTS_EFFECT_MULTIPLIER, 0) + M.adjustBruteLoss(2*REAGENTS_EFFECT_MULTIPLIER, 0) + M.adjustToxLoss(2*REAGENTS_EFFECT_MULTIPLIER, 0) ..() . = 1 @@ -515,7 +515,7 @@ /datum/reagent/toxin/venom/on_mob_life(mob/living/carbon/M) toxpwr = 0.2*volume - M.adjustBruteLoss((0.3*volume)*REM, 0) + M.adjustBruteLoss((0.3*volume)*REAGENTS_EFFECT_MULTIPLIER, 0) . = 1 if(prob(15)) M.reagents.add_reagent(/datum/reagent/toxin/histamine, pick(5,10)) @@ -532,9 +532,9 @@ toxpwr = 0 /datum/reagent/toxin/fentanyl/on_mob_life(mob/living/carbon/M) - M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 3*REM, 150) + M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 3*REAGENTS_EFFECT_MULTIPLIER, 150) if(M.toxloss <= 60) - M.adjustToxLoss(1*REM, 0) + M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER, 0) if(current_cycle >= 18) M.Sleeping(40, 0) ..() @@ -555,7 +555,7 @@ if(prob(8)) to_chat(M, "You feel horrendously weak!") M.Stun(40, 0) - M.adjustToxLoss(2*REM, 0) + M.adjustToxLoss(2*REAGENTS_EFFECT_MULTIPLIER, 0) return ..() /datum/reagent/toxin/bad_food @@ -583,15 +583,15 @@ /datum/reagent/toxin/itching_powder/on_mob_life(mob/living/carbon/M) if(prob(15)) to_chat(M, "You scratch at your head.") - M.adjustBruteLoss(0.2*REM, 0) + M.adjustBruteLoss(0.2*REAGENTS_EFFECT_MULTIPLIER, 0) . = 1 if(prob(15)) to_chat(M, "You scratch at your leg.") - M.adjustBruteLoss(0.2*REM, 0) + M.adjustBruteLoss(0.2*REAGENTS_EFFECT_MULTIPLIER, 0) . = 1 if(prob(15)) to_chat(M, "You scratch at your arm.") - M.adjustBruteLoss(0.2*REM, 0) + M.adjustBruteLoss(0.2*REAGENTS_EFFECT_MULTIPLIER, 0) . = 1 if(prob(3)) M.reagents.add_reagent(/datum/reagent/toxin/histamine,rand(1,3)) @@ -660,7 +660,7 @@ /datum/reagent/toxin/sodium_thiopental/on_mob_life(mob/living/carbon/M) if(current_cycle >= 10) M.Sleeping(40, 0) - M.adjustStaminaLoss(10*REM, 0) + M.adjustStaminaLoss(10*REAGENTS_EFFECT_MULTIPLIER, 0) ..() return TRUE @@ -687,7 +687,7 @@ value = REAGENT_VALUE_RARE /datum/reagent/toxin/amanitin/on_mob_end_metabolize(mob/living/M) - var/toxdamage = current_cycle*3*REM + var/toxdamage = current_cycle*3*REAGENTS_EFFECT_MULTIPLIER M.log_message("has taken [toxdamage] toxin damage from amanitin toxin", LOG_ATTACK) M.adjustToxLoss(toxdamage) ..() @@ -703,7 +703,7 @@ /datum/reagent/toxin/lipolicide/on_mob_life(mob/living/carbon/M) if(M.nutrition <= NUTRITION_LEVEL_STARVING) - M.adjustToxLoss(1*REM, 0) + M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER, 0) M.adjust_nutrition(-3) // making the chef more valuable, one meme trap at a time M.overeatduration = 0 return ..() @@ -759,7 +759,7 @@ /datum/reagent/toxin/curare/on_mob_life(mob/living/carbon/M) if(current_cycle >= 11) M.DefaultCombatKnockdown(60, 0) - M.adjustOxyLoss(1*REM, 0) + M.adjustOxyLoss(1*REAGENTS_EFFECT_MULTIPLIER, 0) . = 1 ..() @@ -942,7 +942,7 @@ /datum/reagent/toxin/delayed/on_mob_life(mob/living/carbon/M) if(current_cycle > delay) holder.remove_reagent(type, actual_metaboliztion_rate * M.metabolism_efficiency) - M.adjustToxLoss(actual_toxpwr*REM, 0) + M.adjustToxLoss(actual_toxpwr*REAGENTS_EFFECT_MULTIPLIER, 0) if(prob(10)) M.DefaultCombatKnockdown(20, 0) . = 1 diff --git a/code/modules/reagents/reagent_containers/chem_pack.dm b/code/modules/reagents/reagent_containers/chem_pack.dm index 77d6067d3b..139a5f626f 100644 --- a/code/modules/reagents/reagent_containers/chem_pack.dm +++ b/code/modules/reagents/reagent_containers/chem_pack.dm @@ -30,8 +30,8 @@ SplashReagents(user) return else - DISABLE_BITFIELD(reagents.reagents_holder_flags, OPENCONTAINER) - ENABLE_BITFIELD(reagents.reagents_holder_flags, DRAWABLE |INJECTABLE ) + reagents.reagents_holder_flags &= ~(OPENCONTAINER) + reagents.reagents_holder_flags |= (DRAWABLE|INJECTABLE) spillable = FALSE sealed = TRUE to_chat(user, "You seal the bag.") diff --git a/code/modules/reagents/reagent_containers/rags.dm b/code/modules/reagents/reagent_containers/rags.dm index 8a6e2bf2e7..c26ed4db31 100644 --- a/code/modules/reagents/reagent_containers/rags.dm +++ b/code/modules/reagents/reagent_containers/rags.dm @@ -141,11 +141,11 @@ /obj/item/reagent_containers/rag/towel/attack(mob/living/M, mob/living/user) if(user.a_intent == INTENT_HARM) - DISABLE_BITFIELD(item_flags, NOBLUDGEON) + item_flags &= ~(NOBLUDGEON) . = TRUE ..() if(.) - ENABLE_BITFIELD(item_flags, NOBLUDGEON) + item_flags |= NOBLUDGEON /obj/item/reagent_containers/rag/towel/equipped(mob/living/user, slot) . = ..() diff --git a/code/modules/research/designs/comp_board_designs/comp_board_designs_all_misc.dm b/code/modules/research/designs/comp_board_designs/comp_board_designs_all_misc.dm index 99caa5b480..8ea883edf1 100644 --- a/code/modules/research/designs/comp_board_designs/comp_board_designs_all_misc.dm +++ b/code/modules/research/designs/comp_board_designs/comp_board_designs_all_misc.dm @@ -21,14 +21,6 @@ category = list("Computer Boards") departmental_flags = DEPARTMENTAL_FLAG_ALL -/datum/design/board/minesweeper - name = "Computer Design (Minesweeper Arcade Machine)" - desc = "Allows for the construction of circuit boards used to build a new Minesweeper machine." - id = "arcade_minesweeper" - build_path = /obj/item/circuitboard/computer/arcade/minesweeper - category = list("Computer Boards") - departmental_flags = DEPARTMENTAL_FLAG_ALL - /datum/design/board/slot_machine name = "Computer Design (Slot Machine)" desc = "Allows for the construction of circuit boards used to build a new slot machine." diff --git a/code/modules/research/designs/machine_desings/machine_designs_all_misc.dm b/code/modules/research/designs/machine_desings/machine_designs_all_misc.dm index 81b16d1118..570c99e6ae 100644 --- a/code/modules/research/designs/machine_desings/machine_designs_all_misc.dm +++ b/code/modules/research/designs/machine_desings/machine_designs_all_misc.dm @@ -10,6 +10,14 @@ category = list ("Misc. Machinery") departmental_flags = DEPARTMENTAL_FLAG_ALL +/datum/design/board/autoloom + name = "Machine Design (Autoloom Board)" + desc = "The circuit board for an autoloom." + id = "autoloom" + build_path = /obj/item/circuitboard/machine/autoloom + category = list ("Misc. Machinery") + departmental_flags = DEPARTMENTAL_FLAG_SERVICE + /datum/design/board/holopad name = "Machine Design (AI Holopad Board)" desc = "The circuit board for a holopad." diff --git a/code/modules/research/techweb/nodes/computer_hud_nodes.dm b/code/modules/research/techweb/nodes/computer_hud_nodes.dm index 2db03861e9..0f2cf2e4bd 100644 --- a/code/modules/research/techweb/nodes/computer_hud_nodes.dm +++ b/code/modules/research/techweb/nodes/computer_hud_nodes.dm @@ -56,5 +56,5 @@ display_name = "Games and Toys" description = "For the slackers on the station." prereq_ids = list("comptech") - design_ids = list("arcade_battle", "arcade_orion", "arcade_minesweeper", "slotmachine", "autoylathe") + design_ids = list("arcade_battle", "arcade_orion", "slotmachine", "autoylathe") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1000) diff --git a/code/modules/research/techweb/nodes/tools_nodes.dm b/code/modules/research/techweb/nodes/tools_nodes.dm index 180cdb5778..86a48ab8de 100644 --- a/code/modules/research/techweb/nodes/tools_nodes.dm +++ b/code/modules/research/techweb/nodes/tools_nodes.dm @@ -37,7 +37,7 @@ display_name = "Botanical Engineering" description = "Botanical tools." prereq_ids = list("adv_engi", "biotech") - design_ids = list("diskplantgene", "portaseeder", "plantgenes", "flora_gun", "hydro_tray", "biogenerator", "seed_extractor") + design_ids = list("diskplantgene", "portaseeder", "plantgenes", "flora_gun", "hydro_tray", "biogenerator", "seed_extractor", "autoloom") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2750) /datum/techweb_node/exp_tools diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm index 897c7610a1..553cc2d043 100644 --- a/code/modules/surgery/organs/lungs.dm +++ b/code/modules/surgery/organs/lungs.dm @@ -90,6 +90,11 @@ max = safe_breath_dam_max, damage_type = safe_damage_type ) + if(ispath(breathing_class)) + var/datum/breathing_class/class = GLOB.gas_data.breathing_classes[breathing_class] + for(var/g in class.gases) + if(class.gases[g] > 0) + gas_min -= g //TODO: lung health affects lung function /obj/item/organ/lungs/onDamage(damage_mod) //damage might be too low atm. @@ -196,9 +201,9 @@ mole_adjustments[entry] = -required_moles mole_adjustments[breath_results[entry]] = required_moles if(required_pp < safe_min) - var/multiplier = 0 + var/multiplier = handle_too_little_breath(H, required_pp, safe_min, required_moles) if(required_moles > 0) - multiplier = handle_too_little_breath(H, required_pp, safe_min, required_moles) / required_moles + multiplier /= required_moles for(var/adjustment in mole_adjustments) mole_adjustments[adjustment] *= multiplier if(alert_category) @@ -222,8 +227,7 @@ alert_category = breathing_class.high_alert_category alert_type = breathing_class.high_alert_datum danger_reagent = breathing_class.danger_reagent - for(var/gas in gases) - found_pp += PP(breath, gas) + found_pp = breathing_class.get_effective_pp(breath) else danger_reagent = danger_reagents[entry] if(entry in breath_alert_info) @@ -517,17 +521,20 @@ var/total_moles = breath.total_moles() for(var/id in breath.get_gases()) var/this_pressure = PP(breath, id) - var/req_pressure = (this_pressure * SAFE_THRESHOLD_RATIO) - 1 - if(req_pressure > 0) - gas_min[id] = req_pressure + if(id in gas_min) + var/req_pressure = (this_pressure * SAFE_THRESHOLD_RATIO) - 1 + if(req_pressure > 0) + gas_min[id] = req_pressure + else + gas_min -= id // if there's not even enough of the gas to register, we shouldn't need it if(id in gas_max) gas_max[id] += this_pressure - var/bz = breath.get_moles(GAS_BZ) + var/bz = breath.get_moles(GAS_BZ) // snowflaked cause it's got special behavior, of course if(bz) BZ_trip_balls_min += bz BZ_brain_damage_min += bz - gas_max[GAS_N2] = PP(breath, GAS_N2) + 5 + gas_max[GAS_N2] = max(15, PP(breath, GAS_N2) + 3) // don't want ash lizards breathing on station; sometimes they might be able to, though var/datum/breathing_class/class = GLOB.gas_data.breathing_classes[breathing_class] var/o2_pp = class.get_effective_pp(breath) safe_breath_min = min(3, 0.3 * o2_pp) diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index 1800fe221b..de8e3d623d 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -106,7 +106,7 @@ applyOrganDamage(maxHealth * decay_factor * (seconds * 0.5)) /obj/item/organ/proc/can_decay() - if(CHECK_BITFIELD(organ_flags, ORGAN_NO_SPOIL | ORGAN_SYNTHETIC | ORGAN_FAILING)) + if(organ_flags & (ORGAN_NO_SPOIL | ORGAN_SYNTHETIC | ORGAN_FAILING)) return FALSE return TRUE diff --git a/code/modules/surgery/surgery.dm b/code/modules/surgery/surgery.dm index 859c5c6d40..0ffae2bb7d 100644 --- a/code/modules/surgery/surgery.dm +++ b/code/modules/surgery/surgery.dm @@ -71,7 +71,7 @@ var/turf/T = get_turf(patient) var/obj/structure/table/optable/table = locate(/obj/structure/table/optable, T) - if(table?.computer && !CHECK_BITFIELD(table.computer.stat, NOPOWER|BROKEN)) + if(table?.computer && !(table.computer.stat & (NOPOWER|BROKEN))) advanced_surgeries |= table.computer.advanced_surgeries if(istype(tool, /obj/item/surgical_drapes/advanced)) diff --git a/code/modules/vore/eating/belly_obj.dm b/code/modules/vore/eating/belly_obj.dm index 8e74dd3c92..474c912c23 100644 --- a/code/modules/vore/eating/belly_obj.dm +++ b/code/modules/vore/eating/belly_obj.dm @@ -278,14 +278,14 @@ SEND_SIGNAL(OW, COMSIG_ADD_MOOD_EVENT, "emptypred", /datum/mood_event/emptypred) SEND_SIGNAL(ML, COMSIG_ADD_MOOD_EVENT, "emptyprey", /datum/mood_event/emptyprey) - if(CHECK_BITFIELD(ML.vore_flags,ABSORBED)) - DISABLE_BITFIELD(ML.vore_flags,ABSORBED) + if((ML.vore_flags & ABSORBED)) + ML.vore_flags &= ~(ABSORBED) if(ishuman(M) && ishuman(OW)) var/mob/living/carbon/human/Prey = M var/mob/living/carbon/human/Pred = OW var/absorbed_count = 2 //Prey that we were, plus the pred gets a portion for(var/mob/living/P in contents) - if(CHECK_BITFIELD(P.vore_flags,ABSORBED)) + if((P.vore_flags & ABSORBED)) absorbed_count++ Pred.reagents.trans_to(Prey, Pred.reagents.total_volume / absorbed_count) @@ -390,7 +390,7 @@ formatted_message = replacetext(formatted_message,"%pred",owner) formatted_message = replacetext(formatted_message,"%prey",english_list(contents)) for(var/mob/living/P in contents) - if(!CHECK_BITFIELD(P.vore_flags, ABSORBED)) //This is required first, in case there's a person absorbed and not absorbed in a stomach. + if(!(P.vore_flags & ABSORBED)) //This is required first, in case there's a person absorbed and not absorbed in a stomach. total_bulge += P.mob_size if(total_bulge >= bulge_size && bulge_size != 0) return("[formatted_message]
") @@ -485,7 +485,7 @@ // Handle a mob being absorbed /obj/belly/proc/absorb_living(var/mob/living/M) - ENABLE_BITFIELD(M.vore_flags, ABSORBED) + M.vore_flags |= ABSORBED to_chat(M,"[owner]'s [lowertext(name)] absorbs your body, making you part of them.") to_chat(owner,"Your [lowertext(name)] absorbs [M]'s body, making them part of you.") @@ -499,7 +499,7 @@ for(var/belly in M.vore_organs) var/obj/belly/B = belly for(var/mob/living/Mm in B) - if(CHECK_BITFIELD(Mm.vore_flags, ABSORBED)) + if((Mm.vore_flags & ABSORBED)) absorb_living(Mm) //Update owner diff --git a/code/modules/vore/eating/bellymodes.dm b/code/modules/vore/eating/bellymodes.dm index 8d64ee28f1..7828de8cde 100644 --- a/code/modules/vore/eating/bellymodes.dm +++ b/code/modules/vore/eating/bellymodes.dm @@ -76,7 +76,7 @@ play_sound = pick(pred_digest) //Pref protection! - if (!CHECK_BITFIELD(M.vore_flags, DIGESTABLE) || M.vore_flags & ABSORBED) + if (!(M.vore_flags & DIGESTABLE) || M.vore_flags & ABSORBED) continue //Person just died in guts! @@ -165,7 +165,7 @@ for (var/mob/living/M in contents) if(M.vore_flags & ABSORBED && owner.nutrition >= 100) - DISABLE_BITFIELD(M.vore_flags, ABSORBED) + M.vore_flags &= ~(ABSORBED) to_chat(M,"You suddenly feel solid again ") to_chat(owner,"You feel like a part of you is missing.") owner.adjust_nutrition(-100) diff --git a/code/modules/vore/eating/living.dm b/code/modules/vore/eating/living.dm index 6bc44e6489..1f4950eaa7 100644 --- a/code/modules/vore/eating/living.dm +++ b/code/modules/vore/eating/living.dm @@ -33,7 +33,7 @@ return TRUE /mob/living/proc/init_vore() - ENABLE_BITFIELD(vore_flags, VORE_INIT) + vore_flags |= VORE_INIT //Something else made organs, meanwhile. if(LAZYLEN(vore_organs)) return TRUE @@ -75,7 +75,7 @@ lazy_init_belly() if(pred == prey) //you click your target - if(!CHECK_BITFIELD(pred.vore_flags,FEEDING)) + if(!(pred.vore_flags & FEEDING)) to_chat(user, "They aren't able to be fed.") to_chat(pred, "[user] tried to feed you themselves, but you aren't voracious enough to be fed.") return @@ -85,11 +85,11 @@ feed_grabbed_to_self(user, prey) else // click someone other than you/prey - if(!CHECK_BITFIELD(pred.vore_flags,FEEDING)) + if(!(pred.vore_flags & FEEDING)) to_chat(user, "They aren't voracious enough to be fed.") to_chat(pred, "[user] tried to feed you [prey], but you aren't voracious enough to be fed.") return - if(!CHECK_BITFIELD(prey.vore_flags,FEEDING)) + if(!(prey.vore_flags & FEEDING)) to_chat(user, "They aren't able to be fed to someone.") to_chat(prey, "[user] tried to feed you to [pred], but you aren't able to be fed to them.") return @@ -122,7 +122,7 @@ testing("[user] attempted to feed [prey] to [pred], via [lowertext(belly.name)] but it went wrong.") return - if (!CHECK_BITFIELD(prey.vore_flags, DEVOURABLE)) + if (!(prey.vore_flags & DEVOURABLE)) to_chat(user, "This can't be eaten!") return FALSE @@ -283,7 +283,7 @@ if(!client || !client.prefs) to_chat(src,"You attempted to apply your vore prefs but somehow you're in this character without a client.prefs variable. Tell a dev.") return FALSE - ENABLE_BITFIELD(vore_flags,VOREPREF_INIT) + vore_flags |= VOREPREF_INIT COPY_SPECIFIC_BITFIELDS(vore_flags, client.prefs.vore_flags, DIGESTABLE | DEVOURABLE | FEEDING | LICKABLE | SMELLABLE | ABSORBABLE | MOBVORE) vore_taste = client.prefs.vore_taste vore_smell = client.prefs.vore_smell diff --git a/code/modules/vore/eating/vorepanel.dm b/code/modules/vore/eating/vorepanel.dm index 8e8cfc4935..a44760ae69 100644 --- a/code/modules/vore/eating/vorepanel.dm +++ b/code/modules/vore/eating/vorepanel.dm @@ -181,15 +181,15 @@ data["selected"] = selected_list data["prefs"] = list( - "digestable" = CHECK_BITFIELD(host.vore_flags, DIGESTABLE), - "devourable" = CHECK_BITFIELD(host.vore_flags, DEVOURABLE), - "feeding" = CHECK_BITFIELD(host.vore_flags, FEEDING), - "absorbable" = CHECK_BITFIELD(host.vore_flags, ABSORBABLE), - "allowmobvore" = CHECK_BITFIELD(host.vore_flags, MOBVORE), - "vore_sounds" = CHECK_BITFIELD(host.client.prefs.cit_toggles, EATING_NOISES), - "digestion_sounds" = CHECK_BITFIELD(host.client.prefs.cit_toggles, DIGESTION_NOISES), - "lickable" = CHECK_BITFIELD(host.vore_flags, LICKABLE), - "smellable" = CHECK_BITFIELD(host.vore_flags, SMELLABLE), + "digestable" = (host.vore_flags & DIGESTABLE), + "devourable" = (host.vore_flags & DEVOURABLE), + "feeding" = (host.vore_flags & FEEDING), + "absorbable" = (host.vore_flags & ABSORBABLE), + "allowmobvore" = (host.vore_flags & MOBVORE), + "vore_sounds" = (host.client.prefs.cit_toggles & EATING_NOISES), + "digestion_sounds" = (host.client.prefs.cit_toggles & DIGESTION_NOISES), + "lickable" = (host.vore_flags & LICKABLE), + "smellable" = (host.vore_flags & SMELLABLE), ) return data @@ -307,49 +307,49 @@ unsaved_changes = TRUE return TRUE if("toggle_digest") - TOGGLE_BITFIELD(host.vore_flags, DIGESTABLE) + (host.vore_flags ^= DIGESTABLE) if(host.client.prefs) COPY_SPECIFIC_BITFIELDS(host.client.prefs.vore_flags, host.vore_flags, DIGESTABLE) unsaved_changes = TRUE return TRUE if("toggle_devour") - TOGGLE_BITFIELD(host.vore_flags, DEVOURABLE) + (host.vore_flags ^= DEVOURABLE) if(host.client.prefs) COPY_SPECIFIC_BITFIELDS(host.client.prefs.vore_flags, host.vore_flags, DEVOURABLE) unsaved_changes = TRUE return TRUE if("toggle_feed") - TOGGLE_BITFIELD(host.vore_flags, FEEDING) + (host.vore_flags ^= FEEDING) if(host.client.prefs) COPY_SPECIFIC_BITFIELDS(host.client.prefs.vore_flags, host.vore_flags, FEEDING) unsaved_changes = TRUE return TRUE if("toggle_absorbable") - TOGGLE_BITFIELD(host.vore_flags, ABSORBABLE) + (host.vore_flags ^= ABSORBABLE) if(host.client.prefs) COPY_SPECIFIC_BITFIELDS(host.client.prefs.vore_flags, host.vore_flags, ABSORBABLE) unsaved_changes = TRUE return TRUE if("toggle_mobvore") - TOGGLE_BITFIELD(host.vore_flags, MOBVORE) + (host.vore_flags ^= MOBVORE) if(host.client.prefs) COPY_SPECIFIC_BITFIELDS(host.client.prefs.vore_flags, host.vore_flags, MOBVORE) unsaved_changes = TRUE return TRUE if("toggle_vore_sounds") - TOGGLE_BITFIELD(host.client.prefs.cit_toggles, EATING_NOISES) + (host.client.prefs.cit_toggles ^= EATING_NOISES) unsaved_changes = TRUE return TRUE if("toggle_digestion_sounds") - TOGGLE_BITFIELD(host.client.prefs.cit_toggles, DIGESTION_NOISES) + (host.client.prefs.cit_toggles ^= DIGESTION_NOISES) unsaved_changes = TRUE return TRUE if("toggle_lickable") - TOGGLE_BITFIELD(host.vore_flags, LICKABLE) + (host.vore_flags ^= LICKABLE) unsaved_changes = TRUE return TRUE if("toggle_smellable") - TOGGLE_BITFIELD(host.vore_flags, SMELLABLE) + (host.vore_flags ^= SMELLABLE) unsaved_changes = TRUE return TRUE diff --git a/html/changelog.html b/html/changelog.html index 2b6407735e..c93c0eae84 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -50,6 +50,98 @@ -->
+

11 November 2021

+

DrPainis updated:

+
    +
  • The universe has realized that not every species uses hemoglobin again.
  • +
+

Putnam3145 updated:

+
    +
  • "REM" removed, replaced with "REAGENTS_EFFECT_MULTIPLIER", which "REM" is short for
  • +
+ +

10 November 2021

+

Ethan4303 updated:

+
    +
  • Added two wire nodes under the engineering PA room Apc and under the HOS office APC
  • +
  • Added cables to connect the second floor relay to the power grid
  • +
  • Removed the generic broken computer from Hos Office
  • +
  • Fixed Hos office not having the Security records console
  • +
+

Putnam3145 updated:

+
    +
  • Power alerts now work
  • +
  • No longer have too much O2 from too much CO2
  • +
+

SandPoot updated:

+
    +
  • Crayon precision mode.
  • +
+ +

08 November 2021

+

timothyteakettle updated:

+
    +
  • fixes party pod sprite
  • +
  • fixes red panda head marking
  • +
+ +

06 November 2021

+

Putnam3145 updated:

+
    +
  • Ashwalkers should no longer suffocate on lavaland (and hypothetical other future problems)
  • +
  • A gas mix with 0 oxygen should now properly suffocate you (or 0 plasma, for ashwalkers)
  • +
+ +

05 November 2021

+

keronshb updated:

+
    +
  • removes required enemies
  • +
  • Lowers assassination threat threshold
  • +
+ +

31 October 2021

+

DeltaFire15 updated:

+
    +
  • You can now drag things over prone people again.
  • +
+

DrPainis updated:

+
    +
  • Walking no longer makes you fat.
  • +
+

keronshb updated:

+
    +
  • Christmas trees are now indestructible
  • +
+ +

30 October 2021

+

keronshb updated:

+
    +
  • Jacq can't burn in the cremator anymore
  • +
  • Jacq also can't be cheesed off station
  • +
  • Barth also cannot be destroyed
  • +
+ +

28 October 2021

+

Hatterhat updated:

+
    +
  • Proto-kinetic gauntlets! Less straight damage, extra damage on backstabs, slows Lavaland fauna on counterhit. tweak: The glaive kit has been renamed to the premium kinetic melee kit, and now has a voucher for either a glaive or gauntlets.
  • +
  • NanoTrasen is rolling out a prototype Autoloom, hidden behind Botanical Engineering. It only processes cotton and logs. Despite its visual similarity to the recycler, it is entirely tamperproof.
  • +
+

Linzolle updated:

+
    +
  • plasmamen now spawn in their proper outfit in the ghostcafe
  • +
+

Putnam3145 updated:

+
    +
  • Removed minesweeper
  • +
+

keronshb updated:

+
    +
  • -40 wound bonus for DSword
  • +
  • -20 Wound bonus for Hyper Eu
  • +
  • Fixes hyper eu's slowdown when it's not wielded
  • +
+

26 October 2021

WanderingFox95 updated:

    @@ -360,142 +452,6 @@
  • The SWAT helmet is now consistent between its front, side and back sprites for coloration.
  • new riot armor sprites
- -

10 September 2021

-

BlueWildrose updated:

-
    -
  • CTRL + (combat mode) Right Click - positional dropping and item rotation.
  • -
-

keronshb updated:

-
    -
  • Readds Reebe
  • -
  • Added the ability to dye your hair with gradients by using a hair dye spray.
  • -
  • The new Colorist quirk, allowing you to spawn with a hair dye spray.
  • -
  • Adds Hair gradients to preferences
  • -
  • Three new hair gradients, a pair of shorter fades and a spiky wave.
  • -
  • Adds viewers for mask of madness so it doesn't wallhack
  • -
-

zeroisthebiggay updated:

-
    -
  • Replaced the DNA probe's old sprite (Hypospray) with a unique sprite
  • -
  • added some icons and images for hyposprays and medipens so they stand out
  • -
  • added inhands for the cautery, retractor, drapes and hemostat.
  • -
  • New icon and sprites for the DNA probe
  • -
  • Emergency survival boxes now have an unique blue sprite and description to tell them apart from regular boxes.
  • -
  • Added craftable normal/extended emergency oxygen tank boxes to put your emergency oxygen tank collection inside.
  • -
  • Emergency first aid kits now look visually consistent with full first aid kits.
  • -
  • Ports new Hypospray, Combat Autoinjector, Pestle, Mortar and Dropper sprites from Shiptest!
  • -
  • Adds a new sprite for pill bottles!
  • -
  • new surgical tool sprites
  • -
  • The cyborg toolset is now all new and improved, with a new coat of paint!
  • -
  • Updates pride hammer sprites!
  • -
  • Replaced old Mjolnir sprites with new Mjolnir sprites.
  • -
- -

08 September 2021

-

keronshb updated:

-
    -
  • Adds the parade outfit for the HoS and Centcomm
  • -
  • Recolors the parade outfit for the Captain
  • -
  • Adds a toggle option for the parade outfits
  • -
  • Observers can no longer highlight your items
  • -
- -

07 September 2021

-

bunny232 updated:

-
    -
  • fixed some jank in pubby's xenobiological secure pen
  • -
-

keronshb updated:

-
    -
  • Gremlins no longer have AA when dead
  • -
-

zeroisthebiggay updated:

-
    -
  • you can just about
  • -
- -

05 September 2021

-

DeltaFire15 updated:

-
    -
  • Unreadied player gamemode votes now actually get ignored (if the config for this is enabled).
  • -
- -

04 September 2021

-

Putnam3145 updated:

-
    -
  • Might've fixed some ghost sprite oddities nobody even knew about
  • -
-

WanderingFox95 updated:

-
    -
  • Lavaland architects don't screw up so badly anymore and do in fact not somehow leave holes through the planet surface all the way into space under their bookshelves.
  • -
  • Snow was removed from Lavaland Ruins.
  • -
-

keronshb updated:

-
    -
  • Fixes entering an occupied VR sleeper bug
  • -
-

timothyteakettle updated:

-
    -
  • makes the arm/leg markings for synthetic lizards appear as an option again
  • -
- -

03 September 2021

-

timothyteakettle updated:

-
    -
  • fixes losing your additional language upon changing species
  • -
- -

01 September 2021

-

BlueWildrose updated:

-
    -
  • The waddle component now takes size into account when running rotating animations, thus not reverting character sizes to default size.
  • -
-

ma44 updated:

-
    -
  • Weapon rechargers now have their recharger indicators again.
  • -
  • Energy guns now update when switching modes again.
  • -
  • Stabilized yellow slime extracts will now update cells and guns it recharges.
  • -
  • Weapon rechargers will now be more noticeable when it has finished recharging something.
  • -
-

zeroisthebiggay updated:

-
    -
  • the fucking chainsaw sprite
  • -
- -

28 August 2021

-

DeltaFire15 updated:

-
    -
  • Demons now drop bodies on their own tile instead of scattering them across the station. tweak: Space dragon content ejection is now slightly safer.
  • -
  • Space dragons no longer delete their contents if they die due to timeout, ejecting them instead.
  • -
  • Carp rifts created by space dragons now have their armor work correctly.
  • -
-

Putnam3145 updated:

-
    -
  • Planetary monstermos can now be disabled with varedit
  • -
  • Lavaland/ice planet atmos is no longer a preset gas mixture and varies per round
  • -
-

keronshb updated:

-
    -
  • Ports Inventory Outlines
  • -
  • Re-adds the old glue sprite
  • -
  • Adds Plague Rats
  • -
  • Gives Plague Rat spawn conditions for regular mice
  • -
  • Plague Rat sprite
  • -
  • Gremlin
  • -
  • Gremlin sprites
  • -
-

zeroisthebiggay updated:

-
    -
  • grilles as maintenance loot
  • -
  • sevensune tail from hyperstation
  • -
- -

26 August 2021

-

keronshb updated:

-
    -
  • Adds catwalk floors
  • -
GoonStation 13 Development Team diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index d4cc657b3d..f1f87bef20 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -30167,3 +30167,64 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. WanderingFox95: - rscadd: bone anvils and bone ingots - imageadd: bone anvil sprites +2021-10-28: + Hatterhat: + - rscadd: 'Proto-kinetic gauntlets! Less straight damage, extra damage on backstabs, + slows Lavaland fauna on counterhit. tweak: The glaive kit has been renamed to + the premium kinetic melee kit, and now has a voucher for either a glaive or + gauntlets.' + - rscadd: NanoTrasen is rolling out a prototype Autoloom, hidden behind Botanical + Engineering. It only processes cotton and logs. Despite its visual similarity + to the recycler, it is entirely tamperproof. + Linzolle: + - bugfix: plasmamen now spawn in their proper outfit in the ghostcafe + Putnam3145: + - rscdel: Removed minesweeper + keronshb: + - balance: -40 wound bonus for DSword + - balance: -20 Wound bonus for Hyper Eu + - bugfix: Fixes hyper eu's slowdown when it's not wielded +2021-10-30: + keronshb: + - balance: Jacq can't burn in the cremator anymore + - balance: Jacq also can't be cheesed off station + - balance: Barth also cannot be destroyed +2021-10-31: + DeltaFire15: + - bugfix: You can now drag things over prone people again. + DrPainis: + - bugfix: Walking no longer makes you fat. + keronshb: + - balance: Christmas trees are now indestructible +2021-11-05: + keronshb: + - balance: removes required enemies + - balance: Lowers assassination threat threshold +2021-11-06: + Putnam3145: + - bugfix: Ashwalkers should no longer suffocate on lavaland (and hypothetical other + future problems) + - bugfix: A gas mix with 0 oxygen should now properly suffocate you (or 0 plasma, + for ashwalkers) +2021-11-08: + timothyteakettle: + - bugfix: fixes party pod sprite + - bugfix: fixes red panda head marking +2021-11-10: + Ethan4303: + - rscadd: Added two wire nodes under the engineering PA room Apc and under the HOS + office APC + - rscadd: Added cables to connect the second floor relay to the power grid + - rscdel: Removed the generic broken computer from Hos Office + - bugfix: Fixed Hos office not having the Security records console + Putnam3145: + - bugfix: Power alerts now work + - bugfix: No longer have too much O2 from too much CO2 + SandPoot: + - rscadd: Crayon precision mode. +2021-11-11: + DrPainis: + - bugfix: The universe has realized that not every species uses hemoglobin again. + Putnam3145: + - refactor: '"REM" removed, replaced with "REAGENTS_EFFECT_MULTIPLIER", which "REM" + is short for' diff --git a/icons/effects/blood.dmi b/icons/effects/blood.dmi index bee16d4d90..c5a3756907 100644 Binary files a/icons/effects/blood.dmi and b/icons/effects/blood.dmi differ diff --git a/icons/mob/inhands/weapons/hammers_lefthand.dmi b/icons/mob/inhands/weapons/hammers_lefthand.dmi index 988d64fde3..cb3ecd4e99 100644 Binary files a/icons/mob/inhands/weapons/hammers_lefthand.dmi and b/icons/mob/inhands/weapons/hammers_lefthand.dmi differ diff --git a/icons/mob/inhands/weapons/hammers_righthand.dmi b/icons/mob/inhands/weapons/hammers_righthand.dmi index 1e0e7c91bf..f3d9ca52b7 100644 Binary files a/icons/mob/inhands/weapons/hammers_righthand.dmi and b/icons/mob/inhands/weapons/hammers_righthand.dmi differ diff --git a/icons/obj/machines/sleeper.dmi b/icons/obj/machines/sleeper.dmi index ff9e2b197a..134448fc4e 100644 Binary files a/icons/obj/machines/sleeper.dmi and b/icons/obj/machines/sleeper.dmi differ diff --git a/icons/obj/mining.dmi b/icons/obj/mining.dmi index f70f110078..e03f6e9b97 100644 Binary files a/icons/obj/mining.dmi and b/icons/obj/mining.dmi differ diff --git a/icons/obj/stack_objects.dmi b/icons/obj/stack_objects.dmi index 3136cf34b2..026612b144 100644 Binary files a/icons/obj/stack_objects.dmi and b/icons/obj/stack_objects.dmi differ diff --git a/tgstation.dme b/tgstation.dme index 0c72aa5c46..05ea1ac16f 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -855,6 +855,7 @@ #include "code\game\machinery\announcement_system.dm" #include "code\game\machinery\aug_manipulator.dm" #include "code\game\machinery\autolathe.dm" +#include "code\game\machinery\autoloom.dm" #include "code\game\machinery\bank_machine.dm" #include "code\game\machinery\Beacon.dm" #include "code\game\machinery\bloodbankgen.dm" @@ -937,7 +938,6 @@ #include "code\game\machinery\computer\telecrystalconsoles.dm" #include "code\game\machinery\computer\teleporter.dm" #include "code\game\machinery\computer\arcade\battle.dm" -#include "code\game\machinery\computer\arcade\minesweeper.dm" #include "code\game\machinery\computer\arcade\misc_arcade.dm" #include "code\game\machinery\computer\arcade\orion_trail.dm" #include "code\game\machinery\computer\prisoner\_prisoner.dm" diff --git a/tgui/packages/tgui/interfaces/Crayon.js b/tgui/packages/tgui/interfaces/Crayon.js index 05191f8c66..568e02667b 100644 --- a/tgui/packages/tgui/interfaces/Crayon.js +++ b/tgui/packages/tgui/interfaces/Crayon.js @@ -1,11 +1,18 @@ import { useBackend } from '../backend'; -import { Button, LabeledList, Section } from '../components'; +import { Button, LabeledList, Section, Slider } from '../components'; import { Window } from '../layouts'; export const Crayon = (props, context) => { const { act, data } = useBackend(context); const capOrChanges = data.has_cap || data.can_change_colour; const drawables = data.drawables || []; + const { + precision_mode, + x, + y, + min_offset, + max_offset, + } = data; return ( { onClick={() => act('select_colour')} /> )} +
+ + +
{drawables.map(drawable => {