Merge pull request #3486 from Citadel-Station-13/upstream-merge-31753

[MIRROR] Radiation makes you vomit blood and some more balance changes
This commit is contained in:
LetterJay
2017-10-19 08:57:18 -04:00
committed by GitHub
8 changed files with 148 additions and 126 deletions
+119 -95
View File
@@ -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
+9 -6
View File
@@ -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<knockdown) then monkeys will sometimes turn into gorillas before being knocked down
// otherwise they only turn into gorillas *after* being knocked down
#define RAD_MOB_MUTATE 800 // How much stored radiation to check for mutation
#define RAD_MOB_HAIRLOSS 500 // How much stored radiation to check for hair loss
#define RAD_KNOCKDOWN_TIME 200 // How much knockdown to apply
#define RAD_MOB_KNOCKDOWN 2000 // How much stored radiation to check for stunning
#define RAD_MOB_KNOCKDOWN_PROB 1 // Chance of knockdown per tick when over threshold
#define RAD_MOB_KNOCKDOWN_AMOUNT 3 // Amount of knockdown when it occurs
#define RAD_MOB_VOMIT 1500 // The amount of radiation to check for vomitting
#define RAD_MOB_VOMIT_PROB 1 // Chance per tick of vomitting
#define RAD_MOB_MUTATE 1000 // How much stored radiation to check for mutation
#define RAD_MOB_HAIRLOSS 500 // How much stored radiation to check for hair loss
#define RAD_NO_INSULATION 1.0 // For things that shouldn't become irradiated for whatever reason
#define RAD_VERY_LIGHT_INSULATION 0.9 // What girders have
+1 -1
View File
@@ -89,7 +89,7 @@
continue
thing.rad_act(strength)
var/static/list/blacklisted = typecacheof(list(/turf, /obj/structure/cable, /obj/machinery/atmospherics))
var/static/list/blacklisted = typecacheof(list(/turf, /mob, /obj/structure/cable, /obj/machinery/atmospherics))
if(!can_contaminate || blacklisted[thing.type])
continue
if(prob((strength-RAD_MINIMUM_CONTAMINATION) * RAD_CONTAMINATION_CHANCE_COEFFICIENT * min(1/(steps*range_modifier), 1))) // Only stronk rads get to have little baby rads
+1 -1
View File
@@ -9,7 +9,7 @@
#define RADIATION_DURATION_MAX 30
#define RADIATION_ACCURACY_MULTIPLIER 3 //larger is less accurate
#define RADIATION_IRRADIATION_MULTIPLIER 10 //multiplier for how much radiation a test subject recieves
#define RADIATION_IRRADIATION_MULTIPLIER 1 //multiplier for how much radiation a test subject recieves
#define SCANNER_ACTION_SE 1
#define SCANNER_ACTION_UI 2
@@ -1144,11 +1144,14 @@
radiation = 0
return TRUE
if(radiation > 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, "<span class='danger'>You feel weak.</span>")
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, "<span class='danger'>Your hair starts to fall out in clumps...</span>")
addtimer(CALLBACK(src, .proc/go_bald, H), 50)
if(prob(15) && !(H.hair_style == "Bald") && (HAIR in species_traits))
to_chat(H, "<span class='danger'>Your hair starts to fall out in clumps...</span>")
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
@@ -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, "<span class='danger'>You feel weak.</span>")
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)
+5 -14
View File
@@ -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("<span class='warning'>[C]'s skin bursts into flame!</span>", \
@@ -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)