From 04d26d561af77c69762ca82abd9807f5cc743258 Mon Sep 17 00:00:00 2001 From: Emmett Gaines Date: Wed, 18 Oct 2017 10:24:09 -0400 Subject: [PATCH] Radiation makes you vomit blood and more balance changes (#31753) --- _maps/map_files/PubbyStation/PubbyStation.dmm | 214 ++++++++++-------- code/__DEFINES/radiation.dm | 15 +- code/datums/radiation_wave.dm | 2 +- code/game/machinery/computer/dna_console.dm | 2 +- .../mob/living/carbon/human/species.dm | 14 +- code/modules/mob/living/carbon/monkey/life.dm | 6 +- code/modules/power/singularity/singularity.dm | 19 +- .../chemistry/reagents/medicine_reagents.dm | 2 +- 8 files changed, 148 insertions(+), 126 deletions(-) diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index 87e314b5ba..6a1285bcc9 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -46290,11 +46290,6 @@ /turf/open/floor/plasteel, /area/engine/engineering) "car" = ( -/obj/structure/cable/yellow{ - icon_state = "1-4"; - d1 = 1; - d2 = 4 - }, /obj/structure/cable/yellow{ d1 = 1; d2 = 8; @@ -47261,16 +47256,6 @@ /turf/open/floor/plasteel, /area/engine/engineering) "ccV" = ( -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, /obj/effect/turf_decal/stripes/line{ dir = 4 }, @@ -47282,22 +47267,12 @@ id = "Singularity"; name = "radiation shutters" }, -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, /obj/effect/turf_decal/bot{ dir = 2 }, /turf/open/floor/plasteel/black, /area/engine/engineering) "ccX" = ( -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, /obj/structure/cable/yellow{ d1 = 2; d2 = 4; @@ -47326,11 +47301,6 @@ /turf/open/floor/plating, /area/engine/engineering) "cda" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, /obj/effect/landmark/event_spawn, /turf/open/floor/plating, /area/engine/engineering) @@ -47346,16 +47316,6 @@ /turf/open/floor/plating, /area/engine/engineering) "cdc" = ( -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, /obj/effect/turf_decal/stripes/line{ dir = 8 }, @@ -47599,19 +47559,9 @@ /turf/open/floor/plasteel, /area/engine/engineering) "cdQ" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, /turf/open/floor/plasteel/yellow/side, /area/engine/engineering) "cdR" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, /obj/machinery/button/door{ id = "Singularity"; name = "Shutters Control"; @@ -47666,11 +47616,6 @@ /turf/open/floor/plating, /area/engine/engineering) "cdX" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, /obj/machinery/button/door{ id = "Singularity"; name = "Shutters Control"; @@ -47850,14 +47795,10 @@ id = "Singularity"; name = "radiation shutters" }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/engine/engineering) "ceu" = ( @@ -48053,9 +47994,6 @@ /turf/open/floor/plating, /area/engine/engineering) "ceY" = ( -/obj/machinery/power/rad_collector/anchored, -/obj/item/tank/internals/plasma, -/obj/structure/cable/yellow, /obj/effect/turf_decal/stripes/line{ dir = 1 }, @@ -48872,6 +48810,9 @@ icon_state = "0-8" }, /obj/machinery/power/tesla_coil, +/obj/structure/window/plasma/reinforced{ + dir = 4 + }, /turf/open/floor/plating/airless, /area/engine/engineering) "chy" = ( @@ -48884,6 +48825,9 @@ d2 = 4 }, /obj/machinery/power/tesla_coil, +/obj/structure/window/plasma/reinforced{ + dir = 8 + }, /turf/open/floor/plating/airless, /area/engine/engineering) "chA" = ( @@ -49000,7 +48944,15 @@ /turf/open/floor/plating/airless, /area/engine/engineering) "chQ" = ( -/turf/open/space/basic, +/obj/structure/window/plasma/reinforced{ + dir = 4 + }, +/obj/machinery/power/rad_collector/anchored, +/obj/structure/cable/yellow{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plating/airless, /area/engine/engineering) "chR" = ( /obj/structure/cable{ @@ -54066,6 +54018,78 @@ /obj/machinery/smoke_machine, /turf/open/floor/plasteel/white, /area/medical/chemistry) +"YXI" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "Singularity"; + name = "radiation shutters" + }, +/obj/effect/turf_decal/bot{ + dir = 2 + }, +/turf/open/floor/plasteel/black, +/area/engine/engineering) +"YXJ" = ( +/obj/machinery/power/rad_collector/anchored, +/turf/open/floor/plating, +/area/engine/engineering) +"YXK" = ( +/obj/machinery/power/rad_collector/anchored, +/turf/open/floor/plating, +/area/engine/engineering) +"YXL" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"YXM" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + icon_state = "1-4"; + d1 = 1; + d2 = 4 + }, +/obj/item/tank/internals/plasma, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"YXN" = ( +/obj/structure/window/plasma/reinforced{ + dir = 8 + }, +/obj/machinery/power/rad_collector/anchored, +/obj/structure/cable/yellow{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"YXO" = ( +/obj/structure/window/plasma/reinforced{ + dir = 8 + }, +/obj/machinery/power/rad_collector/anchored, +/obj/structure/cable/yellow{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"YXP" = ( +/obj/structure/window/plasma/reinforced{ + dir = 8 + }, +/obj/machinery/power/rad_collector/anchored, +/obj/structure/cable/yellow{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) (1,1,1) = {" aaa @@ -81734,7 +81758,7 @@ bOG bva bDi bXk -cbX +YXJ cbX cdK bXk @@ -81991,7 +82015,7 @@ bOG bTE cae bXk -cbX +YXK cbX cdK bXk @@ -83791,20 +83815,20 @@ bZC cal cbh cam -ccT +cam cdQ cet ceY -cfa +cbX cfU cgu cgU chw -cgU +YXM +chw +chw chw -cgU chw -cgU cjs cfV cfV @@ -84048,18 +84072,18 @@ bZA cam cam cam -ccU +cam cdQ cet -ceZ -cfa +ceY +cbX cfV cgv cfV chx chQ chx -cfV +chQ chx chQ chx @@ -84308,8 +84332,8 @@ ccc ccV cdR cet -ceZ -cfa +ceY +cbX cfU cgv cgV @@ -85587,9 +85611,9 @@ bXo bYi bYV bZA -cas -cbk -cce +cdN +YXI +YXL cda cdV cex @@ -85847,7 +85871,7 @@ bZF cat bXk ccg -cdb +cey cdW cey cey @@ -86364,8 +86388,8 @@ cch cdc cdX cet -ceZ -cfa +ceY +cbX cfU cgv cgV @@ -86618,20 +86642,20 @@ bZA cam cam cam -cdd +cam cdQ cet -ceZ -cfa +ceY +cbX cfV cgv cfV chz -chQ +YXN chz -cfV +YXO chz -chQ +YXP chz cfV cfV @@ -86875,20 +86899,20 @@ bZC cal cbm cci -cde +cam cdQ cet -ceZ -cfa +ceY +cbX cfU cgx cgU chA -cgU chA -cgU chA -cgU +chA +chA +chA cjt cfV cfV diff --git a/code/__DEFINES/radiation.dm b/code/__DEFINES/radiation.dm index 4787754e3a..196f3cc079 100644 --- a/code/__DEFINES/radiation.dm +++ b/code/__DEFINES/radiation.dm @@ -18,13 +18,16 @@ Ask ninjanomnom if they're around #define RAD_TOX_COEFFICIENT 0.05 // Toxin damage per tick coefficient #define RAD_MOB_SAFE 300 // How much stored radiation in a mob with no ill effects -#define RAD_MOB_KNOCKDOWN 1500 // How much stored radiation to start stunning -// If (mutate*2 RAD_MOB_KNOCKDOWN) + if(radiation > RAD_MOB_KNOCKDOWN && prob(RAD_MOB_KNOCKDOWN_PROB)) if(!H.IsKnockdown()) H.emote("collapse") - H.Knockdown(RAD_KNOCKDOWN_TIME) + H.Knockdown(RAD_MOB_KNOCKDOWN_AMOUNT) to_chat(H, "You feel weak.") + + if(radiation > RAD_MOB_VOMIT && prob(RAD_MOB_VOMIT_PROB)) + H.vomit(10, TRUE) if(radiation > RAD_MOB_MUTATE) if(prob(1)) @@ -1158,10 +1161,9 @@ H.domutcheck() if(radiation > RAD_MOB_HAIRLOSS) - if(prob(15)) - if(!( H.hair_style == "Shaved") || !(H.hair_style == "Bald") || (HAIR in species_traits)) - to_chat(H, "Your hair starts to fall out in clumps...") - addtimer(CALLBACK(src, .proc/go_bald, H), 50) + if(prob(15) && !(H.hair_style == "Bald") && (HAIR in species_traits)) + to_chat(H, "Your hair starts to fall out in clumps...") + addtimer(CALLBACK(src, .proc/go_bald, H), 50) /datum/species/proc/go_bald(mob/living/carbon/human/H) if(QDELETED(H)) //may be called from a timer diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index 714ba02a85..613a04bd17 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -24,10 +24,10 @@ /mob/living/carbon/monkey/handle_mutations_and_radiation() if(radiation) - if(radiation > RAD_MOB_KNOCKDOWN) + if(radiation > RAD_MOB_KNOCKDOWN && prob(RAD_MOB_KNOCKDOWN_PROB)) if(!IsKnockdown()) emote("collapse") - Knockdown(200) + Knockdown(RAD_MOB_KNOCKDOWN_AMOUNT) to_chat(src, "You feel weak.") if(radiation > RAD_MOB_MUTATE) if(prob(1)) @@ -39,6 +39,8 @@ if(radiation > RAD_MOB_MUTATE * 2 && prob(50)) gorillize() return + if(radiation > RAD_MOB_VOMIT && prob(RAD_MOB_VOMIT_PROB)) + vomit(10, TRUE) return ..() /mob/living/carbon/monkey/handle_breath_temperature(datum/gas_mixture/breath) diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index d7094d8c85..ce2cd90a49 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -21,7 +21,7 @@ var/move_self = 1 //Do we move on our own? var/grav_pull = 4 //How many tiles out do we pull? var/consume_range = 0 //How many tiles out do we eat - var/event_chance = 15 //Prob for event each tick + var/event_chance = 10 //Prob for event each tick var/target = null //its target. moves towards the target if it has one var/last_failed_movement = 0//Will not move in the same dir if it couldnt before, will help with the getting stuck on fields thing var/last_warning @@ -114,7 +114,7 @@ /obj/singularity/process() if(current_size >= STAGE_TWO) move() - radiation_pulse(src, energy, 0.5) + radiation_pulse(src, min(5000, (energy*3)+1000), RAD_DISTANCE_COEFFICIENT*0.5) if(prob(event_chance))//Chance for it to run a special event TODO:Come up with one or two more that fit event() eat() @@ -367,15 +367,13 @@ /obj/singularity/proc/event() - var/numb = pick(1,2,3,4,5,6) + var/numb = rand(1,4) switch(numb) if(1)//EMP emp_area() - if(2,3)//tox damage all carbon mobs in area - toxmob() - if(4)//Stun mobs who lack optic scanners + if(2)//Stun mobs who lack optic scanners mezzer() - if(5,6) //Sets all nearby mobs on fire + if(3,4) //Sets all nearby mobs on fire if(current_size < STAGE_SIX) return 0 combust_mobs() @@ -384,13 +382,6 @@ return 1 -/obj/singularity/proc/toxmob() - var/radiation = 15 - if (energy>200) - radiation += round((energy-150)/10,1) - radiation_pulse(src, radiation) - - /obj/singularity/proc/combust_mobs() for(var/mob/living/carbon/C in urange(20, src, 1)) C.visible_message("[C]'s skin bursts into flame!", \ diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index a25401eec5..818ea3d17f 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -466,7 +466,7 @@ metabolization_rate = 0.5 * REAGENTS_METABOLISM /datum/reagent/medicine/pen_acid/on_mob_life(mob/living/M) - M.radiation -= min(M.radiation, log(M.radiation)*10) + M.radiation -= min(M.radiation-RAD_MOB_SAFE, 0)/100 M.adjustToxLoss(-2*REM, 0) for(var/datum/reagent/R in M.reagents.reagent_list) if(R != src)