diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm index eff680d02c9..8422a2c96f1 100644 --- a/code/modules/research/experimentor.dm +++ b/code/modules/research/experimentor.dm @@ -232,16 +232,16 @@ if(prob(EFFECT_PROB_LOW) && criticalReaction) visible_message("[exp_on] is gripped in just the right way, enhancing its focus.") badThingCoeff++ - if(prob(EFFECT_PROB_VERYLOW-badThingCoeff)) + else if(prob(EFFECT_PROB_VERYLOW-badThingCoeff)) visible_message("[src] malfunctions and destroys [exp_on], lashing its arms out at nearby people!") for(var/mob/living/m in oview(1, src)) m.apply_damage(15,"brute",pick("head","chest","groin")) investigate_log("Experimentor dealt minor brute to [m].", "experimentor") ejectItem(TRUE) - if(prob(EFFECT_PROB_LOW-badThingCoeff)) + else if(prob(EFFECT_PROB_LOW-badThingCoeff)) visible_message("[src] malfunctions!") exp = SCANTYPE_OBLITERATE - if(prob(EFFECT_PROB_MEDIUM-badThingCoeff)) + else if(prob(EFFECT_PROB_MEDIUM-badThingCoeff)) visible_message("[src] malfunctions, throwing the [exp_on]!") var/mob/living/target = locate(/mob/living) in oview(7,src) if(target) @@ -259,18 +259,18 @@ cloneCount = badThingCoeff investigate_log("Experimentor has made a clone of [exp_on]", "experimentor") ejectItem() - if(prob(EFFECT_PROB_VERYLOW-badThingCoeff)) + else if(prob(EFFECT_PROB_VERYLOW-badThingCoeff)) visible_message("[src] malfunctions, melting [exp_on] and leaking radiation!") radiation_pulse(get_turf(src), 1, 1, 25, 1) ejectItem(TRUE) - if(prob(EFFECT_PROB_LOW-badThingCoeff)) + else if(prob(EFFECT_PROB_LOW-badThingCoeff)) visible_message("[src] malfunctions, spewing toxic waste!") for(var/turf/T in oview(1, src)) if(!T.density) if(prob(EFFECT_PROB_VERYHIGH)) var/obj/effect/decal/cleanable/reagentdecal = new/obj/effect/decal/cleanable/greenglow(T) reagentdecal.reagents.add_reagent("radium", 7) - if(prob(EFFECT_PROB_MEDIUM-badThingCoeff)) + else if(prob(EFFECT_PROB_MEDIUM-badThingCoeff)) var/savedName = "[exp_on]" ejectItem(TRUE) var/newPath = pickWeighted(valid_items) @@ -287,7 +287,7 @@ if(prob(EFFECT_PROB_LOW) && criticalReaction) visible_message("[exp_on] achieves the perfect mix!") new /obj/item/stack/sheet/mineral/plasma(get_turf(pick(oview(1,src)))) - if(prob(EFFECT_PROB_VERYLOW-badThingCoeff)) + else if(prob(EFFECT_PROB_VERYLOW-badThingCoeff)) visible_message("[src] destroys [exp_on], leaking dangerous gas!") chosenchem = pick("carbon","radium","toxin","condensedcapsaicin","mushroomhallucinogen","space_drugs","ethanol","beepskysmash") var/datum/reagents/R = new/datum/reagents(50) @@ -300,7 +300,7 @@ smoke.start() qdel(R) ejectItem(TRUE) - if(prob(EFFECT_PROB_VERYLOW-badThingCoeff)) + else if(prob(EFFECT_PROB_VERYLOW-badThingCoeff)) visible_message("[src]'s chemical chamber has sprung a leak!") chosenchem = pick("mutationtoxin","nanomachines","sacid") var/datum/reagents/R = new/datum/reagents(50) @@ -314,10 +314,10 @@ ejectItem(TRUE) warn_admins(usr, "[chosenchem] smoke") investigate_log("Experimentor has released [chosenchem] smoke!", "experimentor") - if(prob(EFFECT_PROB_LOW-badThingCoeff)) + else if(prob(EFFECT_PROB_LOW-badThingCoeff)) visible_message("[src] malfunctions, spewing harmless gas.") throwSmoke(src.loc) - if(prob(EFFECT_PROB_MEDIUM-badThingCoeff)) + else if(prob(EFFECT_PROB_MEDIUM-badThingCoeff)) visible_message("[src] melts [exp_on], ionizing the air around it!") empulse(src.loc, 4, 6) investigate_log("Experimentor has generated an Electromagnetic Pulse.", "experimentor") @@ -335,7 +335,7 @@ C.name = "Cup of Suspicious Liquid" C.desc = "It has a large hazard symbol printed on the side in fading ink." investigate_log("Experimentor has made a cup of [chosenchem] coffee.", "experimentor") - if(prob(EFFECT_PROB_VERYLOW-badThingCoeff)) + else if(prob(EFFECT_PROB_VERYLOW-badThingCoeff)) var/turf/start = get_turf(src) var/mob/M = locate(/mob/living) in view(src, 3) var/turf/MT = get_turf(M) @@ -348,12 +348,12 @@ FB.yo = MT.y - start.y FB.xo = MT.x - start.x FB.fire() - if(prob(EFFECT_PROB_LOW-badThingCoeff)) + else if(prob(EFFECT_PROB_LOW-badThingCoeff)) visible_message("[src] malfunctions, melting [exp_on] and releasing a burst of flame!") explosion(src.loc, -1, 0, 0, 0, 0, flame_range = 2) investigate_log("Experimentor started a fire.", "experimentor") ejectItem(TRUE) - if(prob(EFFECT_PROB_MEDIUM-badThingCoeff)) + else if(prob(EFFECT_PROB_MEDIUM-badThingCoeff)) visible_message("[src] malfunctions, melting [exp_on] and leaking hot air!") var/datum/gas_mixture/env = src.loc.return_air() var/transfer_moles = 0.25 * env.total_moles() @@ -367,7 +367,7 @@ air_update_turf() investigate_log("Experimentor has released hot air.", "experimentor") ejectItem(TRUE) - if(prob(EFFECT_PROB_MEDIUM-badThingCoeff)) + else if(prob(EFFECT_PROB_MEDIUM-badThingCoeff)) visible_message("[src] malfunctions, activating its emergency coolant systems!") throwSmoke(src.loc) for(var/mob/living/m in oview(1, src)) @@ -387,7 +387,7 @@ C.name = "Cup of Suspicious Liquid" C.desc = "It has a large hazard symbol printed on the side in fading ink." investigate_log("Experimentor has made a cup of [chosenchem] coffee.", "experimentor") - if(prob(EFFECT_PROB_VERYLOW-badThingCoeff)) + else if(prob(EFFECT_PROB_VERYLOW-badThingCoeff)) visible_message("[src] malfunctions, shattering [exp_on] and releasing a dangerous cloud of coolant!") var/datum/reagents/R = new/datum/reagents(50) R.my_atom = src @@ -399,7 +399,7 @@ smoke.start() qdel(R) ejectItem(TRUE) - if(prob(EFFECT_PROB_LOW-badThingCoeff)) + else if(prob(EFFECT_PROB_LOW-badThingCoeff)) visible_message("[src] malfunctions, shattering [exp_on] and leaking cold air!") var/datum/gas_mixture/env = src.loc.return_air() var/transfer_moles = 0.25 * env.total_moles() @@ -413,7 +413,7 @@ air_update_turf() investigate_log("Experimentor has released cold air.", "experimentor") ejectItem(TRUE) - if(prob(EFFECT_PROB_MEDIUM-badThingCoeff)) + else if(prob(EFFECT_PROB_MEDIUM-badThingCoeff)) visible_message("[src] malfunctions, releasing a flurry of chilly air as [exp_on] pops out!") var/datum/effect_system/smoke_spread/smoke = new smoke.set_up(0, src.loc) @@ -422,21 +422,20 @@ //////////////////////////////////////////////////////////////////////////////////////////////// if(exp == SCANTYPE_OBLITERATE) visible_message("[exp_on] activates the crushing mechanism, [exp_on] is destroyed!") - if(prob(EFFECT_PROB_LOW) && criticalReaction) - visible_message("[src]'s crushing mechanism slowly and smoothly descends, flattening the [exp_on]!") - new /obj/item/stack/sheet/plasteel(get_turf(pick(oview(1,src)))) if(linked_console.linked_lathe) for(var/material in exp_on.materials) linked_console.linked_lathe.materials.insert_amount( min((linked_console.linked_lathe.materials.max_amount - linked_console.linked_lathe.materials.total_amount), (exp_on.materials[material])), material) - if(prob(EFFECT_PROB_VERYLOW-badThingCoeff)) + if(prob(EFFECT_PROB_LOW) && criticalReaction) + visible_message("[src]'s crushing mechanism slowly and smoothly descends, flattening the [exp_on]!") + new /obj/item/stack/sheet/plasteel(get_turf(pick(oview(1,src)))) + else if(prob(EFFECT_PROB_VERYLOW-badThingCoeff)) visible_message("[src]'s crusher goes way too many levels too high, crushing right through space-time!") playsound(src.loc, 'sound/effects/supermatter.ogg', 50, 1, -3) investigate_log("Experimentor has triggered the 'throw things' reaction.", "experimentor") for(var/atom/movable/AM in oview(7,src)) if(!AM.anchored) AM.throw_at_fast(src,10,1) - - if(prob(EFFECT_PROB_LOW-badThingCoeff)) + else if(prob(EFFECT_PROB_LOW-badThingCoeff)) visible_message("[src]'s crusher goes one level too high, crushing right into space-time!") playsound(src.loc, 'sound/effects/supermatter.ogg', 50, 1, -3) investigate_log("Experimentor has triggered the 'minor throw things' reaction.", "experimentor") @@ -463,7 +462,7 @@ ejectItem() //Global reactions - if(prob(EFFECT_PROB_VERYLOW-badThingCoeff)) + if(prob(EFFECT_PROB_VERYLOW-badThingCoeff) && loaded_item) var/globalMalf = rand(1,100) if(globalMalf < 15) visible_message("[src]'s onboard detection system has malfunctioned!")