mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-24 13:30:42 +01:00
Bomb and Radioactivity Behaviors (#21593)
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." - 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." The 'radioactive waste chemical canister' item cost was set to 5 tc to match the other 'hazardous chemical' antag item, the Chlorine Tank.
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 <b>[radioactivity] IU/s</b> 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
|
||||
|
||||
Reference in New Issue
Block a user