diff --git a/code/__DEFINES/armor.dm b/code/__DEFINES/armor.dm index bc5803e19eb..7ed3981c18e 100644 --- a/code/__DEFINES/armor.dm +++ b/code/__DEFINES/armor.dm @@ -43,6 +43,7 @@ #define ARMOR_RAD_MINOR 10 #define ARMOR_RAD_SMALL 25 #define ARMOR_RAD_RESISTANT 40 +#define ARMOR_RAD_STRONG 75 #define ARMOR_RAD_SHIELDED 100 #define ARMOR_BOMB_MINOR 10 diff --git a/code/datums/uplink/bioweapons.dm b/code/datums/uplink/bioweapons.dm index 260be2a1045..56575059b70 100644 --- a/code/datums/uplink/bioweapons.dm +++ b/code/datums/uplink/bioweapons.dm @@ -41,10 +41,16 @@ /datum/uplink_item/item/bioweapons/dirtybomb name = "Dirty Bomb" - desc = "A small explosive laced with radium. The explosion is small, but the radioactive will affect a large area for a while (10 minutes approx)." + desc = "A small explosive laced with radium. The explosion is small, but the radioactivity will affect a large area for a while (10 minutes approx). After this initial pulse decays, the area will remain slightly radioactive until cleaned/remediated." telecrystal_cost = 4 path = /obj/item/plastique/dirty +/datum/uplink_item/item/bioweapons/radioactive_waste + name = "Radioactive Waste Canister" + desc = "A shielded chemical dispenser cartridge filled with radioactive waste. Splash a little (5-10 units) on a floor tile to leave a radioactive surprise. Inject a little (2-5 units) into someone's food or drink to rapidly debilitate them. Pairs delightfully with common spray bottle." + telecrystal_cost = 5 + path = /obj/item/reagent_containers/chem_disp_cartridge/radioactive_waste + /datum/uplink_item/item/bioweapons/syringe_gun name = "Syringe Gun Kit" desc = "A kit containing a syringe gun and 3 disassembled darts. Fill a syringe, add it to a dart, then load into the rifle." diff --git a/code/game/machinery/vending/engitech.dm b/code/game/machinery/vending/engitech.dm index 8cfa9850da6..f778598e0f9 100644 --- a/code/game/machinery/vending/engitech.dm +++ b/code/game/machinery/vending/engitech.dm @@ -21,8 +21,8 @@ /obj/item/stack/cable_coil = 4, /obj/item/device/flash/synthetic = 4, /obj/item/cell/high = 12, - /obj/item/device/assembly/prox_sensor = 3, - /obj/item/device/assembly/signaler = 3, + /obj/item/device/assembly/prox_sensor = 8, + /obj/item/device/assembly/signaler = 8, /obj/item/device/healthanalyzer = 3, /obj/item/surgery/scalpel = 2, /obj/item/surgery/circular_saw = 2, @@ -235,16 +235,16 @@ icon_vend = "generic-vend" light_mask = "generic-lightmask" products = list( - /obj/item/device/assembly/prox_sensor = 5, - /obj/item/device/assembly/igniter = 3, - /obj/item/device/assembly/signaler = 4, - /obj/item/device/assembly/timer = 2, - /obj/item/wirecutters = 1 + /obj/item/device/assembly/prox_sensor = 15, + /obj/item/device/assembly/igniter = 15, + /obj/item/device/assembly/signaler = 15, + /obj/item/device/assembly/timer = 15, + /obj/item/wirecutters = 5 ) contraband = list( /obj/item/device/flashlight = 5, - /obj/item/device/assembly/infra = 2, - /obj/item/device/assembly/voice = 2 + /obj/item/device/assembly/infra = 6, + /obj/item/device/assembly/voice = 6 ) premium = list( /obj/item/device/multitool/ = 2 @@ -262,10 +262,10 @@ contraband = null random_itemcount = 0 products = list( - /obj/item/device/assembly/prox_sensor = 5, - /obj/item/device/assembly/signaler = 4, - /obj/item/device/assembly/infra = 4, - /obj/item/device/assembly/prox_sensor = 4, + /obj/item/device/assembly/prox_sensor = 25, + /obj/item/device/assembly/signaler = 25, + /obj/item/device/assembly/infra = 25, + /obj/item/device/assembly/prox_sensor = 25, /obj/item/handcuffs = 8, /obj/item/device/flash = 4, /obj/item/clothing/glasses/sunglasses = 4 diff --git a/code/game/objects/effects/decals/Cleanable/misc.dm b/code/game/objects/effects/decals/Cleanable/misc.dm index 23371daa6c7..de2dfa6c020 100644 --- a/code/game/objects/effects/decals/Cleanable/misc.dm +++ b/code/game/objects/effects/decals/Cleanable/misc.dm @@ -64,12 +64,57 @@ H.apply_radiation(5) STOP_PROCESSING(SSprocessing, src) +ABSTRACT_TYPE(/obj/effect/decal/cleanable/greenglow/radioactive) + /// Radiation generated by SSradiation.radiate each process() tick. + var/radioactivity + light_range = 2 + light_power = 0.6 + light_color = "#64C864" + +/obj/effect/decal/cleanable/greenglow/radioactive/antagonist_hints(mob/user, distance, is_adjacent) + . += ..() + . += "Characters directly adjacent to or on top of this object will be exposed to [radioactivity] IU/s of radiation. Radiation falls off (approximately) by 75% for every tile away you move." + +/obj/effect/decal/cleanable/greenglow/radioactive/low + radioactivity = 20 + +/obj/effect/decal/cleanable/greenglow/radioactive/low/antagonist_hints(mob/user, distance, is_adjacent) + . += ..() + . += "Geiger counters will start clicking at ~5 tiles away from this object." + . += "Almost all voidsuits, including softsuits, provide sufficient protection to move safely adjacent to it." + +/obj/effect/decal/cleanable/greenglow/radioactive/medium + radioactivity = 40 + +/obj/effect/decal/cleanable/greenglow/radioactive/medium/antagonist_hints(mob/user, distance, is_adjacent) + . += ..() + . += "Geiger counters will start clicking at ~8 tiles away from this object." + . += "An engineering or atmos voidsuit is necessary to move safely adjacent to it." + +/obj/effect/decal/cleanable/greenglow/radioactive/high + radioactivity = 80 + +/obj/effect/decal/cleanable/greenglow/radioactive/high/antagonist_hints(mob/user, distance, is_adjacent) + . += ..() + . += "Geiger counters will start clicking at ~10 tiles away from this object." + . += "A radsuit is necessary to move safely adjacent to it." + +/obj/effect/decal/cleanable/greenglow/radioactive/extreme + /// This is higher than radsuits can absorb! Use with caution. + radioactivity = 120 + +/obj/effect/decal/cleanable/greenglow/radioactive/extreme/antagonist_hints(mob/user, distance, is_adjacent) + . += ..() + . += "Geiger counters will start clicking at ~12 tiles away from this object." + . += "No living thing can safely stand next to this object! Borgs or IPCs only!" + /obj/effect/decal/cleanable/greenglow/radioactive/Initialize() . = ..() START_PROCESSING(SSprocessing, src) /obj/effect/decal/cleanable/greenglow/radioactive/process() - SSradiation.radiate(src, 25) + SSradiation.radiate(src, radioactivity) + /obj/effect/decal/cleanable/cobweb name = "cobweb" diff --git a/code/game/objects/items/weapons/explosives.dm b/code/game/objects/items/weapons/explosives.dm index d54667e430f..93980d5e3ec 100644 --- a/code/game/objects/items/weapons/explosives.dm +++ b/code/game/objects/items/weapons/explosives.dm @@ -11,11 +11,28 @@ origin_tech = list(TECH_ILLEGAL = 2) var/datum/wires/explosive/c4/wires = null var/detonate_time = 0 - var/timer = 10 + /// Default timer is 30 seconds, but can be configured for anything from 10s to 20m. + var/timer = 300 var/atom/target = null var/open_panel = 0 var/obj/effect/plastic_explosive/effect_overlay +/obj/item/plastique/mechanics_hints() + . += ..() + . += "This can be planted on ANY type of target except for open turfs (floors), and items with built-in storage (boxes, jackets, webbings, etc.)." + . += "This cannot be planted on playable characters (carbons), but any other mob type (department pets, maint drones, schlorrgos, borgs, rats, cleanbots, etc.) are fair game." + . += "Use this on yourself to set the timer." + . += "There is a wiring panel on it affixed by screws." + +/obj/item/plastique/antagonist_hints() + . += ..() + . += "This can easily be converted into a remote-triggered bomb by attaching a signaller to all 5 wires on the same frequency. Pulse that frequency with another signaller to immediately detonate the bomb." + . += "Everyone loves an exploding cake or pizza." + . += "Everyone loves an exploding hat." + . += "Everyone loves an exploding coffeemaker." + . += "Everyone loves an exploding beer keg." + . += "Everyone loves an exploding object you just dropped in the disposals." + /obj/item/plastique/Initialize() . = ..() wires = new(src) @@ -37,39 +54,57 @@ return ..() /obj/item/plastique/attack_self(mob/user as mob) - var/newtime = input(usr, "Please set the timer.", "Timer", 10) as num if(user.get_active_hand() == src) - newtime = clamp(newtime, 10, 60000) - timer = newtime - to_chat(user, SPAN_NOTICE("Timer set for [timer] seconds.")) + timer = setTimer(user) + if(timer) + to_chat(user, SPAN_NOTICE("Timer set for [DisplayTimeText(timer)] seconds.")) + +/obj/item/plastique/proc/setTimer(mob/user as mob) + var/newtime = tgui_input_number( + user = user, + message = "Please set the timer (in seconds).", + title = "Timer", + default = 30, // 30 second default + max_value = 300, // 5 minute maximum + min_value = 10, // 10 second minimum + timeout = 30 SECONDS + ) + if(!newtime) + return FALSE + + // Convert player input to deciseconds. + return newtime * 10 /obj/item/plastique/afterattack(atom/movable/target, mob/user, flag) if (!flag) - return - if(ismob(target) || istype(target, /turf/unsimulated) || isopenturf(target) || istype(target, /obj/item/storage/) || istype(target, /obj/item/clothing/accessory/storage/) || istype(target, /obj/item/clothing/under)) - return - if(deploy_check(user)) - return + return FALSE + if(iscarbon(target) || istype(target, /turf/unsimulated) || isopenturf(target) || istype(target, /obj/item/storage/) || istype(target, /obj/item/clothing/accessory/storage/) || istype(target, /obj/item/clothing/under)) + return FALSE + if(!deploy_check(user)) + return FALSE to_chat(user, SPAN_NOTICE("Planting explosives...")) if(do_after(user, 5 SECONDS, target, DO_UNIQUE)) user.do_attack_animation(target) deploy_c4(target, user) + return TRUE + return FALSE /obj/item/plastique/proc/deploy_check(var/mob/user) - return FALSE + return TRUE /obj/item/plastique/proc/deploy_c4(var/atom/movable/explode_target, mob/user) user.drop_from_inventory(src, get_turf(user)) src.target = explode_target + var/timetext = DisplayTimeText(timer) - log_and_message_admins("planted [src.name] on [target.name] with [src.timer] second fuse", user, get_turf(target)) + log_and_message_admins("planted [src.name] on [target.name] with [timetext] fuse", user, get_turf(target)) new /obj/effect/plastic_explosive(get_turf(user), target, src) - to_chat(user, "Bomb has been planted. Timer counting down from [timer].") + to_chat(user, SPAN_WARNING("Bomb has been planted. Timer counting down from [timetext].")) - detonate_time = world.time + (timer * 10) - addtimer(CALLBACK(src, PROC_REF(explode), get_turf(target)), timer * 10) + detonate_time = world.time + (timer) + addtimer(CALLBACK(src, PROC_REF(explode), get_turf(target)), timer) /obj/item/plastique/proc/explode(turf/location) if(!target) @@ -104,7 +139,7 @@ /obj/item/plastique/cyborg/antagonist_hints(mob/user, distance, is_adjacent) . += ..() - . += "When used, this dispenser will deploy C4 on a target, upon which it will enter a charging state. After two minutes, it will restock a new C4 bundle." + . += "When used, this dispenser will deploy C4 on a target, upon which it will enter a charging state. After five minutes, it will restock a new C4 bundle." /obj/item/plastique/cyborg/Initialize() . = ..() @@ -116,24 +151,24 @@ /obj/item/plastique/cyborg/deploy_check(mob/user) if(!can_deploy) to_chat(user, SPAN_WARNING("\The [src] hasn't recharged yet!")) - return TRUE + return FALSE ..() /obj/item/plastique/cyborg/deploy_c4(atom/movable/target, mob/user) var/obj/item/plastique/C4 = new /obj/item/plastique(target) C4.timer = src.timer + var/timetext = DisplayTimeText(timer) C4.target = target - - log_and_message_admins("planted [C4.name] on [target.name] with [C4.timer] second fuse", user, get_turf(target)) + log_and_message_admins("planted [C4.name] on [target.name] with [timetext] fuse", user, get_turf(target)) new /obj/effect/plastic_explosive(get_turf(user), target, C4) - to_chat(user, SPAN_NOTICE("Bomb has been planted. Timer counting down from [C4.timer].")) + to_chat(user, SPAN_NOTICE("Bomb has been planted. Timer counting down from [timetext]..")) - C4.detonate_time = world.time + (timer * 10) - addtimer(CALLBACK(C4, PROC_REF(explode), get_turf(target)), timer * 10) + C4.detonate_time = world.time + (timer) + addtimer(CALLBACK(C4, PROC_REF(explode), get_turf(target)), timer) addtimer(CALLBACK(src, PROC_REF(recharge)), recharge_time) can_deploy = FALSE - maptext = "Charge" + maptext = "Charging" /obj/item/plastique/cyborg/proc/recharge() if(isrobot(loc)) @@ -146,17 +181,10 @@ /obj/item/plastique/dirty name = "dirty bomb" desc = "A small explosive laced with radium. The explosion is small, but the radioactive material will remain for a fair while." - timer = 300 - -/obj/item/plastique/dirty/attack_self(mob/user as mob) - var/newtime = input(usr, "Please set the timer.", "Timer", 10) as num - if(user.get_active_hand() == src) - newtime = clamp(newtime, 300, 60000) - timer = newtime - to_chat(user, SPAN_NOTICE("Timer set for [timer] seconds.")) + timer = 30 SECONDS /obj/item/plastique/dirty/explode(turf/location) if(location) SSradiation.radiate(src, 250) - new /obj/effect/decal/cleanable/greenglow(get_turf(src)) + new /obj/effect/decal/cleanable/greenglow/radioactive/medium(get_turf(src)) ..() diff --git a/code/modules/clothing/spacesuits/void/station.dm b/code/modules/clothing/spacesuits/void/station.dm index adc934c1212..d4b957c62bc 100644 --- a/code/modules/clothing/spacesuits/void/station.dm +++ b/code/modules/clothing/spacesuits/void/station.dm @@ -18,7 +18,7 @@ LASER = ARMOR_LASER_MINOR, BOMB = ARMOR_BOMB_PADDED, BIO = ARMOR_BIO_SHIELDED, - RAD = ARMOR_RAD_RESISTANT + RAD = ARMOR_RAD_STRONG ) // Protects from up to 7500 degrees Kelvin. max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE + 2500 @@ -45,7 +45,7 @@ LASER = ARMOR_LASER_MINOR, BOMB = ARMOR_BOMB_PADDED, BIO = ARMOR_BIO_SHIELDED, - RAD = ARMOR_RAD_RESISTANT + RAD = ARMOR_RAD_STRONG ) // Protects from up to 7500 degrees kelvin. max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE + 2500 @@ -212,7 +212,7 @@ LASER = ARMOR_LASER_MINOR, BOMB = ARMOR_BOMB_PADDED, BIO = ARMOR_BIO_SHIELDED, - RAD = ARMOR_RAD_SMALL + RAD = ARMOR_RAD_RESISTANT ) max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE + 10000 // It is a suit designed for fire, enclosed max_pressure_protection = FIRESUIT_MAX_PRESSURE @@ -238,7 +238,7 @@ LASER = ARMOR_LASER_MINOR, BOMB = ARMOR_BOMB_PADDED, BIO = ARMOR_BIO_SHIELDED, - RAD = ARMOR_RAD_SMALL + RAD = ARMOR_RAD_RESISTANT ) max_pressure_protection = FIRESUIT_MAX_PRESSURE allowed = list(/obj/item/device/flashlight,/obj/item/tank,/obj/item/device/suit_cooling_unit,/obj/item/storage/bag/ore,/obj/item/device/t_scanner,/obj/item/pickaxe,/obj/item/material/twohanded/fireaxe,/obj/item/rfd/construction,/obj/item/storage/bag/inflatable) diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm index efe618209d8..1d81fecbdd2 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm @@ -168,7 +168,7 @@ if(!istype(T, /turf/space)) var/obj/effect/decal/cleanable/greenglow/glow = locate(/obj/effect/decal/cleanable/greenglow, T) if(!glow) - new /obj/effect/decal/cleanable/greenglow(T) + new /obj/effect/decal/cleanable/greenglow/radioactive/low(T) return /singleton/reagent/radioactive_waste @@ -177,6 +177,8 @@ reagent_state = SOLID color = "#E0FF66" taste_description = "warm, tingly imminent death" + /// It cannot be overstated how bad this tastes. + taste_mult = 20 fallback_specific_heat = 2.286 /singleton/reagent/radioactive_waste/affect_touch(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) @@ -186,11 +188,14 @@ M.apply_effect(25 * removed, DAMAGE_RADIATION, blocked = 0) /singleton/reagent/radioactive_waste/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder) - if(amount >= 3) + if(amount >= 5) if(!istype(T, /turf/space)) var/obj/effect/decal/cleanable/greenglow/glow = locate(/obj/effect/decal/cleanable/greenglow, T) if(!glow) - new /obj/effect/decal/cleanable/greenglow/radioactive(T) + if(amount >= 10) + new /obj/effect/decal/cleanable/greenglow/radioactive/high(T) + else + new /obj/effect/decal/cleanable/greenglow/radioactive(T) return /singleton/reagent/platinum @@ -314,6 +319,7 @@ color = "#A5F0EE" touch_met = REM * 10 taste_description = "sourness" + taste_mult = 1.5 germ_adjust = 10 value = 0.7 @@ -485,6 +491,7 @@ reagent_state = LIQUID color = COLOR_GRAY taste_description = "oil" + taste_mult = 1.3 value = 9 /singleton/reagent/nitroglycerin/proc/explode(var/datum/reagents/holder) @@ -649,6 +656,7 @@ color = "#D35908" touch_met = 50 taste_description = "fiery death" + taste_mult = 20 /singleton/reagent/fuel/napalm/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder) new /obj/effect/decal/cleanable/liquid_fuel/napalm(T, amount/3) diff --git a/code/modules/reagents/dispenser/cartridge_presets.dm b/code/modules/reagents/dispenser/cartridge_presets.dm index 011c90de48a..dad08e02a94 100644 --- a/code/modules/reagents/dispenser/cartridge_presets.dm +++ b/code/modules/reagents/dispenser/cartridge_presets.dm @@ -344,3 +344,6 @@ /obj/item/reagent_containers/chem_disp_cartridge/sanasomnum spawn_reagent = /singleton/reagent/sanasomnum +// Antagonist/EXTREMELY UNSAFE +/obj/item/reagent_containers/chem_disp_cartridge/radioactive_waste + spawn_reagent = /singleton/reagent/radioactive_waste diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index 25509e7554d..6bafc505d4b 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -16,7 +16,9 @@ /obj/structure/reagent_dispensers/mechanics_hints(mob/user, distance, is_adjacent) . += ..() . += "Use Help intent to fill a container in your hand from this, and use any other intent to empty the container into this." - . += "Right-click this to change the amount transferred per use." + . += "In the right-click menu, you can set the amount transferred per use." + if(can_tamper) + . += "Using a wrench on this with the Harm intent will open or close the faucet; an open faucet will cause it to continuously leak its contents." /obj/structure/reagent_dispensers/feedback_hints(mob/user, distance, is_adjacent) . += ..() @@ -477,28 +479,76 @@ amount_per_transfer_from_this = 300 reagents_to_add = list(/singleton/reagent/radioactive_waste = 1000) -/obj/structure/reagent_dispensers/radioactive_waste/hazardous // Only use this if you want active radiation. +/obj/structure/reagent_dispensers/antagonist_hints(mob/user, distance, is_adjacent) + . += ..() + if(can_tamper) + . += "Using a wrench on this with the Harm intent will open or close the faucet; an open faucet will cause it to continuously leak its contents." + . += "This hint is being repeated for emphasis. MAKING THIS LEAK WILL CAUSE EVERYONE NEARBY TO HAVE A BAD TIME." + +/// Only use this if you want active radiation. +ABSTRACT_TYPE(/obj/structure/reagent_dispensers/radioactive_waste/hazardous) name = "leaking radioactive waste barrel" - desc = "A metal barrel containing radioactive waste; the seals on this one seem to have failed and noxious fumes are escaping." + desc = "A metal barrel containing radioactive waste; the seals on this one seem to have failed and noxious fumes are escaping!" light_range = 2 + light_power = 0.6 light_color = "#64C864" + /// Radiation generated by SSradiation.radiate each process() tick. + var/radioactivity + +/obj/structure/reagent_dispensers/radioactive_waste/hazardous/antagonist_hints(mob/user, distance, is_adjacent) + . += ..() + . += "Characters directly adjacent to this object will be exposed to [radioactivity] IU/s of radiation. Radiation falls off (approximately) by 75% for every tile away you move." + +/obj/structure/reagent_dispensers/radioactive_waste/hazardous/low + radioactivity = 25 + +/obj/structure/reagent_dispensers/radioactive_waste/hazardous/low/antagonist_hints(mob/user, distance, is_adjacent) + . += ..() + . += "Geiger counters will start clicking at ~7 tiles away from this object." + . += "Almost all voidsuits, including softsuits, provide sufficient protection to move safely adjacent to it." + +/obj/structure/reagent_dispensers/radioactive_waste/hazardous/medium + radioactivity = 50 + +/obj/structure/reagent_dispensers/radioactive_waste/hazardous/medium/antagonist_hints(mob/user, distance, is_adjacent) + . += "Geiger counters will start clicking at ~9 tiles away from this object." + . += "An engineering voidsuit is necessary to move safely adjacent to it." + +/obj/structure/reagent_dispensers/radioactive_waste/hazardous/high + /// This is as high as radsuits can absorb! Use with caution. + radioactivity = 100 + +/obj/structure/reagent_dispensers/radioactive_waste/hazardous/high/antagonist_hints(mob/user, distance, is_adjacent) + . += "Geiger counters will start clicking at ~11 tiles away from this object." + . += "A radsuit is necessary to move safely adjacent to it." + +/obj/structure/reagent_dispensers/radioactive_waste/hazardous/extreme + /// This is higher than radsuits can absorb! Use with caution. + radioactivity = 150 + +/obj/structure/reagent_dispensers/radioactive_waste/hazardous/extreme/antagonist_hints(mob/user, distance, is_adjacent) + . += "Geiger counters will start clicking at ~13 tiles away from this object." + . += "No living thing can safely stand next to this object! Borgs or IPCs only!" /obj/structure/reagent_dispensers/radioactive_waste/hazardous/Initialize() . = ..() - start_process() - -/obj/structure/reagent_dispensers/radioactive_waste/hazardous/proc/start_process() - START_PROCESSING(SSprocessing, src) + if(radioactivity) + START_PROCESSING(SSprocessing, src) /obj/structure/reagent_dispensers/radioactive_waste/hazardous/process() if(!is_leaking && reagents.total_volume <= 0) STOP_PROCESSING(SSprocessing,src) return + else if(reagents.total_volume > 0) - SSradiation.radiate(src,60) + SSradiation.radiate(src, radioactivity) - if(is_leaking) - var/splash_amount = min(amount_per_transfer_from_this,60) //Hard limit of 60 per process - reagents.trans_to_turf(get_turf(src),splash_amount) + /// The residue probably still isn't very nice. + else + SSradiation.radiate(src, radioactivity / 4) + + if(is_leaking && prob(10)) + var/splash_amount = min(amount_per_transfer_from_this, rand(2,10)) + reagents.trans_to_turf(get_turf(src), splash_amount) return diff --git a/html/changelogs/bat-radioactivestuff.yml b/html/changelogs/bat-radioactivestuff.yml new file mode 100644 index 00000000000..d4d9391645f --- /dev/null +++ b/html/changelogs/bat-radioactivestuff.yml @@ -0,0 +1,24 @@ +# Your name. +author: Batrachophrenoboocosmomachia + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, this gets changed to [] after reading. Just remove the brackets when you add new shit. +# Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog. +changes: + - balance: "Dirty bomb cleanable 'greenglow' decal left behind is now actually radioactive to make it more persistently hazardous." + - balance: "'Radioactive waste' rare Warehouse spawn submap now uses low-radioactivity variants for some of its contents and also been given a radioactive gear crate." + - balance: "Adds increased taste_mult values to radioactive waste, napalm, and nitroglycerin; it should be noticeable if your drink is spiked with any of them." + - balance: "Both uranium and radioactive waste reagents will create radioactive pools on the floor if spilled (uranium weak, radioactive waste medium/strong)." + - balance: "Bombs are now allowed to be planted on any mob type except for carbons." + - balance: "Increases the numbers of assemblies (signalers, igniters, etc.) stocked in vending machines." + - balance: "Increases radiation protection values of both Engineering and Atmos voidsuits." + - rscadd: "Adds a radioactive waste chemical canister to the Uplink (5 tc)." + - code_imp: "Adds additional variants of greenglow/radioactive decal and radioactive_waste/hazardous obj that are more or less radioactive for mapping and ST use." + - code_imp: "Cleans up bomb timer setting code and admin logging." + - qol: "Adds more examine hints to reagent dispensers." + - qol: "Adds more examine hints to bombs." diff --git a/maps/away/away_site/pirate_base/pirate_base.dmm b/maps/away/away_site/pirate_base/pirate_base.dmm index 5f0de8b99f9..4f74d36c661 100644 --- a/maps/away/away_site/pirate_base/pirate_base.dmm +++ b/maps/away/away_site/pirate_base/pirate_base.dmm @@ -294,7 +294,7 @@ }, /obj/random/dirt_75, /obj/random/dirt_75, -/obj/effect/decal/cleanable/greenglow/radioactive{ +/obj/effect/decal/cleanable/greenglow/radioactive/medium{ pixel_x = 8; pixel_y = -6 }, diff --git a/maps/away/away_site/treasure_trove/treasure_trove_submaps.dmm b/maps/away/away_site/treasure_trove/treasure_trove_submaps.dmm index c2297bb4724..95b655c3a5b 100644 --- a/maps/away/away_site/treasure_trove/treasure_trove_submaps.dmm +++ b/maps/away/away_site/treasure_trove/treasure_trove_submaps.dmm @@ -36,7 +36,7 @@ "aS" = ( /obj/random/dirt_75, /obj/effect/decal/cleanable/acid_remnants, -/obj/effect/decal/cleanable/greenglow/radioactive, +/obj/effect/decal/cleanable/greenglow/radioactive/medium, /turf/simulated/floor/exoplanet/basalt/cave, /area/trove/tunnels) "be" = ( @@ -105,7 +105,7 @@ "bI" = ( /obj/random/dirt_75, /obj/structure/lattice/catwalk/indoor/grate/dark, -/obj/effect/decal/cleanable/greenglow/radioactive, +/obj/effect/decal/cleanable/greenglow/radioactive/medium, /obj/random/dirt_75, /turf/simulated/floor/exoplanet/basalt/cave, /area/trove/tunnels) @@ -314,8 +314,8 @@ /area/trove/tunnels) "fE" = ( /obj/random/dirt_75, -/obj/structure/reagent_dispensers/radioactive_waste/hazardous, -/obj/effect/decal/cleanable/greenglow/radioactive, +/obj/structure/reagent_dispensers/radioactive_waste/hazardous/medium, +/obj/effect/decal/cleanable/greenglow/radioactive/medium, /turf/simulated/floor/exoplanet/asphalt, /area/trove/tunnels) "fG" = ( @@ -369,7 +369,7 @@ /turf/simulated/floor/exoplanet/basalt/cave, /area/trove/tunnels) "gs" = ( -/obj/effect/decal/cleanable/greenglow/radioactive, +/obj/effect/decal/cleanable/greenglow/radioactive/medium, /obj/effect/decal/cleanable/acid_remnants, /obj/random/dirt_75, /turf/simulated/floor/exoplanet/basalt/cave, @@ -912,7 +912,7 @@ "pk" = ( /obj/structure/reagent_dispensers/radioactive_waste, /obj/random/dirt_75, -/obj/effect/decal/cleanable/greenglow/radioactive, +/obj/effect/decal/cleanable/greenglow/radioactive/medium, /turf/simulated/floor/exoplanet/basalt/cave, /area/trove/tunnels) "pt" = ( @@ -1078,8 +1078,8 @@ /area/trove/tunnels) "rG" = ( /obj/random/dirt_75, -/obj/effect/decal/cleanable/greenglow/radioactive, -/obj/effect/decal/cleanable/greenglow/radioactive, +/obj/effect/decal/cleanable/greenglow/radioactive/medium, +/obj/effect/decal/cleanable/greenglow/radioactive/medium, /turf/simulated/floor/exoplanet/asphalt, /area/trove/tunnels) "rK" = ( @@ -1120,7 +1120,7 @@ /turf/simulated/floor/exoplanet/basalt/cave, /area/trove/tunnels) "sj" = ( -/obj/effect/decal/cleanable/greenglow/radioactive, +/obj/effect/decal/cleanable/greenglow/radioactive/medium, /obj/random/dirt_75, /turf/simulated/floor/exoplanet/asphalt, /area/trove/tunnels) @@ -1199,7 +1199,7 @@ "tg" = ( /obj/random/dirt_75, /obj/structure/lattice/catwalk/indoor/grate/dark, -/obj/effect/decal/cleanable/greenglow/radioactive, +/obj/effect/decal/cleanable/greenglow/radioactive/medium, /turf/simulated/floor/exoplanet/basalt/cave, /area/trove/tunnels) "th" = ( @@ -1532,7 +1532,7 @@ /area/trove/tunnels) "zE" = ( /obj/structure/reagent_dispensers/radioactive_waste, -/obj/effect/decal/cleanable/greenglow/radioactive, +/obj/effect/decal/cleanable/greenglow/radioactive/medium, /obj/random/dirt_75, /turf/simulated/floor/exoplanet/basalt/cave, /area/trove/tunnels) @@ -2061,7 +2061,7 @@ /area/trove/tunnels) "HN" = ( /obj/random/dirt_75, -/obj/effect/decal/cleanable/greenglow/radioactive, +/obj/effect/decal/cleanable/greenglow/radioactive/medium, /turf/simulated/floor/exoplanet/asphalt, /area/trove/tunnels) "Ia" = ( @@ -2346,8 +2346,8 @@ /area/trove/tunnels) "LA" = ( /obj/random/dirt_75, -/obj/structure/reagent_dispensers/radioactive_waste/hazardous, -/obj/effect/decal/cleanable/greenglow/radioactive, +/obj/structure/reagent_dispensers/radioactive_waste/hazardous/medium, +/obj/effect/decal/cleanable/greenglow/radioactive/medium, /turf/simulated/floor/exoplanet/basalt/cave, /area/trove/tunnels) "LF" = ( @@ -2549,7 +2549,7 @@ /turf/simulated/floor/exoplanet/basalt/cave, /area/trove/tunnels) "Oq" = ( -/obj/effect/decal/cleanable/greenglow/radioactive, +/obj/effect/decal/cleanable/greenglow/radioactive/medium, /turf/simulated/floor/exoplanet/basalt/cave, /area/trove/tunnels) "Or" = ( @@ -2774,7 +2774,7 @@ /area/trove/tunnels) "Tk" = ( /obj/random/dirt_75, -/obj/effect/decal/cleanable/greenglow/radioactive, +/obj/effect/decal/cleanable/greenglow/radioactive/medium, /turf/simulated/floor/exoplanet/basalt/cave, /area/trove/tunnels) "Tl" = ( @@ -2939,7 +2939,7 @@ "Vs" = ( /obj/random/dirt_75, /obj/structure/reagent_dispensers/radioactive_waste, -/obj/effect/decal/cleanable/greenglow/radioactive, +/obj/effect/decal/cleanable/greenglow/radioactive/medium, /obj/random/dirt_75, /turf/simulated/floor/exoplanet/basalt/cave, /area/trove/tunnels) @@ -3090,7 +3090,7 @@ "Xe" = ( /obj/random/dirt_75, /obj/structure/reagent_dispensers/radioactive_waste, -/obj/effect/decal/cleanable/greenglow/radioactive, +/obj/effect/decal/cleanable/greenglow/radioactive/medium, /turf/simulated/floor/exoplanet/basalt/cave, /area/trove/tunnels) "Xw" = ( @@ -3110,7 +3110,7 @@ /obj/random/dirt_75, /obj/random/dirt_75, /obj/effect/decal/cleanable/acid_remnants, -/obj/effect/decal/cleanable/greenglow/radioactive, +/obj/effect/decal/cleanable/greenglow/radioactive/medium, /turf/simulated/floor/exoplanet/basalt/cave, /area/trove/tunnels) "XH" = ( diff --git a/maps/random_ruins/exoplanets/adhomai/adhomai_nuclear_waste.dmm b/maps/random_ruins/exoplanets/adhomai/adhomai_nuclear_waste.dmm index 499d49c6454..a364cf56bda 100644 --- a/maps/random_ruins/exoplanets/adhomai/adhomai_nuclear_waste.dmm +++ b/maps/random_ruins/exoplanets/adhomai/adhomai_nuclear_waste.dmm @@ -32,7 +32,7 @@ }, /area/adhomai_nuclear_waste) "f" = ( -/obj/effect/decal/cleanable/greenglow/radioactive, +/obj/effect/decal/cleanable/greenglow/radioactive/medium, /obj/machinery/light, /turf/simulated/floor/tiled/rust{ temperature = 268.15 @@ -58,7 +58,7 @@ /turf/simulated/floor/exoplanet/snow/cold, /area/exoplanet/adhomai) "i" = ( -/obj/effect/decal/cleanable/greenglow/radioactive, +/obj/effect/decal/cleanable/greenglow/radioactive/medium, /turf/simulated/floor/tiled/rust{ temperature = 268.15 }, @@ -77,7 +77,7 @@ /turf/simulated/floor/exoplanet/snow/cold, /area/adhomai_nuclear_waste) "p" = ( -/obj/effect/decal/cleanable/greenglow/radioactive, +/obj/effect/decal/cleanable/greenglow/radioactive/medium, /obj/machinery/light{ dir = 8 }, @@ -255,7 +255,7 @@ /turf/simulated/floor/exoplanet/snow/cold, /area/adhomai_nuclear_waste) "X" = ( -/obj/effect/decal/cleanable/greenglow/radioactive, +/obj/effect/decal/cleanable/greenglow/radioactive/medium, /obj/machinery/light{ dir = 1 }, diff --git a/maps/random_ruins/exoplanets/adhomai/adhomai_nuclear_waste_makeshift.dmm b/maps/random_ruins/exoplanets/adhomai/adhomai_nuclear_waste_makeshift.dmm index 9e855112d96..041dfb74f20 100644 --- a/maps/random_ruins/exoplanets/adhomai/adhomai_nuclear_waste_makeshift.dmm +++ b/maps/random_ruins/exoplanets/adhomai/adhomai_nuclear_waste_makeshift.dmm @@ -38,7 +38,7 @@ "k" = ( /obj/structure/reagent_dispensers/radioactive_waste, /obj/machinery/light/small, -/obj/effect/decal/cleanable/greenglow/radioactive, +/obj/effect/decal/cleanable/greenglow/radioactive/medium, /turf/simulated/floor/exoplanet/wood, /area/adhomai_nuclear_waste_makeshift) "q" = ( @@ -46,11 +46,11 @@ /obj/structure/sign/painting_frame/nated{ pixel_x = -32 }, -/obj/effect/decal/cleanable/greenglow/radioactive, +/obj/effect/decal/cleanable/greenglow/radioactive/medium, /turf/simulated/floor/exoplanet/wood, /area/adhomai_nuclear_waste_makeshift) "w" = ( -/obj/effect/decal/cleanable/greenglow/radioactive, +/obj/effect/decal/cleanable/greenglow/radioactive/medium, /turf/simulated/floor/exoplanet/wood, /area/adhomai_nuclear_waste_makeshift) "H" = ( @@ -95,7 +95,7 @@ /area/exoplanet/adhomai) "P" = ( /obj/structure/reagent_dispensers/radioactive_waste, -/obj/effect/decal/cleanable/greenglow/radioactive, +/obj/effect/decal/cleanable/greenglow/radioactive/medium, /turf/simulated/floor/exoplanet/wood, /area/adhomai_nuclear_waste_makeshift) "S" = ( diff --git a/maps/random_ruins/exoplanets/moghes/moghes_wasteland_bomb.dmm b/maps/random_ruins/exoplanets/moghes/moghes_wasteland_bomb.dmm index 39745125a0b..a3886681bc3 100644 --- a/maps/random_ruins/exoplanets/moghes/moghes_wasteland_bomb.dmm +++ b/maps/random_ruins/exoplanets/moghes/moghes_wasteland_bomb.dmm @@ -11,7 +11,7 @@ /area/template_noop) "C" = ( /obj/effect/landmark/scorcher, -/obj/effect/decal/cleanable/greenglow/radioactive, +/obj/effect/decal/cleanable/greenglow/radioactive/medium, /turf/simulated/floor/exoplanet/desert/rough{ temperature = 315.15 }, diff --git a/maps/random_ruins/exoplanets/moghes/moghes_wasteland_crater.dmm b/maps/random_ruins/exoplanets/moghes/moghes_wasteland_crater.dmm index c9b8a620587..d5d2f38c41b 100644 --- a/maps/random_ruins/exoplanets/moghes/moghes_wasteland_crater.dmm +++ b/maps/random_ruins/exoplanets/moghes/moghes_wasteland_crater.dmm @@ -19,13 +19,13 @@ /area/template_noop) "L" = ( /obj/effect/landmark/scorcher, -/obj/effect/decal/cleanable/greenglow/radioactive, +/obj/effect/decal/cleanable/greenglow/radioactive/medium, /turf/simulated/floor/exoplanet/desert/rough{ temperature = 315.15 }, /area/template_noop) "S" = ( -/obj/effect/decal/cleanable/greenglow/radioactive, +/obj/effect/decal/cleanable/greenglow/radioactive/medium, /turf/simulated/floor/exoplanet/desert/rough{ temperature = 315.15 }, @@ -36,7 +36,7 @@ }, /area/template_noop) "Y" = ( -/obj/effect/decal/cleanable/greenglow/radioactive, +/obj/effect/decal/cleanable/greenglow/radioactive/medium, /turf/simulated/floor/exoplanet/desert{ temperature = 315.15 }, diff --git a/maps/sccv_horizon/submaps/ops_warehouse_small_storage.dmm b/maps/sccv_horizon/submaps/ops_warehouse_small_storage.dmm index f96ec168bf1..ce4a9d7f6dc 100644 --- a/maps/sccv_horizon/submaps/ops_warehouse_small_storage.dmm +++ b/maps/sccv_horizon/submaps/ops_warehouse_small_storage.dmm @@ -310,7 +310,7 @@ /area/template_noop) "hL" = ( /obj/machinery/power/portgen/basic/fusion, -/obj/effect/decal/cleanable/greenglow/radioactive, +/obj/effect/decal/cleanable/greenglow/radioactive/medium, /turf/template_noop, /area/template_noop) "hY" = ( @@ -716,7 +716,7 @@ /area/template_noop) "qT" = ( /obj/effect/map_effect/marker/mapmanip/submap/extract/sccv_horizon/ops_warehouse_small_storage, -/obj/effect/decal/cleanable/greenglow, +/obj/structure/reagent_dispensers/radioactive_waste, /turf/template_noop, /area/template_noop) "rx" = ( @@ -954,10 +954,6 @@ /obj/random/coin, /turf/template_noop, /area/template_noop) -"vG" = ( -/obj/structure/cart/storage/janitorialcart/full, -/turf/template_noop, -/area/template_noop) "wa" = ( /obj/effect/map_effect/marker/mapmanip/submap/extract/sccv_horizon/ops_warehouse_small_storage, /obj/structure/closet/emcloset, @@ -1089,10 +1085,9 @@ /obj/item/clothing/gloves/janitor/vaurca, /turf/template_noop, /area/template_noop) -"zO" = ( -/obj/structure/table/rack/no_cargo, -/obj/item/device/radio/headset/wrist/xenoarch, -/obj/item/device/radio/headset/wrist/xenoarch, +"zH" = ( +/obj/structure/reagent_dispensers/radioactive_waste/hazardous/low, +/obj/effect/decal/cleanable/greenglow/radioactive/low, /turf/template_noop, /area/template_noop) "zP" = ( @@ -1482,8 +1477,8 @@ /turf/template_noop, /area/template_noop) "Mh" = ( +/obj/effect/decal/cleanable/greenglow/radioactive/low, /obj/structure/reagent_dispensers/radioactive_waste, -/obj/effect/decal/cleanable/greenglow, /turf/template_noop, /area/template_noop) "Ms" = ( @@ -1501,7 +1496,9 @@ /turf/template_noop, /area/template_noop) "MR" = ( -/obj/structure/warp_drive, +/obj/structure/warp_drive{ + anchored = 0 + }, /turf/template_noop, /area/template_noop) "MW" = ( @@ -1619,6 +1616,11 @@ /obj/random/action_figure, /turf/template_noop, /area/template_noop) +"Pz" = ( +/obj/effect/decal/cleanable/greenglow/radioactive/low, +/obj/structure/reagent_dispensers/radioactive_waste/hazardous/low, +/turf/template_noop, +/area/template_noop) "PD" = ( /obj/machinery/food_cart, /turf/template_noop, @@ -1698,6 +1700,10 @@ /obj/effect/decal/cleanable/liquid_fuel, /turf/template_noop, /area/template_noop) +"Rs" = ( +/obj/effect/decal/cleanable/greenglow/radioactive/low, +/turf/template_noop, +/area/template_noop) "Rz" = ( /obj/item/storage/box/fancy/yoke/alcoholic/random, /obj/item/storage/box/fancy/yoke/alcoholic/random, @@ -2686,10 +2692,10 @@ Gz Gz Gz sW -Mh +zH xM NI -xM +Pz qT Gz Gz @@ -2734,7 +2740,7 @@ Gz Gz hL Gz -Al +Rs Gz Mh Gz @@ -2778,7 +2784,7 @@ Gz Gz Gz sW -xM +Sl Gz Gz Al @@ -3643,7 +3649,7 @@ zw Gz Gz Gz -vG +bv nn Gz Gz @@ -4710,7 +4716,7 @@ Gz Gz Gz sW -zO +iM Gz Gz ot