From ffc87184f0471eb02e0845dd554e6180706672df Mon Sep 17 00:00:00 2001 From: Joan Lung Date: Wed, 27 Apr 2016 11:24:47 -0400 Subject: [PATCH] You can now analyze blobs to check material effects, blob type, and health * You can now analyze blobs to check material effects, damage resistance, and health. * beep beep * slime extinguishes stuff * I need to check my code * wew * buffnerfs * fuckthemeta * morebuffs * no unfriendly fire * damn my urge for low linecounts * this makes me want to drink heavily * if you see something, say nothing, and drink to forget * waiting for an answer is for scrubs * if you see something say nothing and drink to forget * no resist printout * phiiiiiiiil --- code/_onclick/hud/blob_overmind.dm | 2 +- code/game/gamemodes/blob/blobs/core.dm | 5 +- code/game/gamemodes/blob/blobs/factory.dm | 5 + code/game/gamemodes/blob/blobs/node.dm | 3 + code/game/gamemodes/blob/blobs/resource.dm | 3 + code/game/gamemodes/blob/blobs/shield.dm | 8 +- code/game/gamemodes/blob/powers.dm | 4 +- code/game/gamemodes/blob/theblob.dm | 31 ++++ .../chemistry/reagents/blob_reagents.dm | 133 ++++++++++++------ 9 files changed, 148 insertions(+), 46 deletions(-) diff --git a/code/_onclick/hud/blob_overmind.dm b/code/_onclick/hud/blob_overmind.dm index e46b1bebf54..8e3dcd2aa39 100644 --- a/code/_onclick/hud/blob_overmind.dm +++ b/code/_onclick/hud/blob_overmind.dm @@ -45,7 +45,7 @@ if(isovermind(usr)) var/mob/camera/blob/B = usr if(!B.placed) - B.place_blob_core() + B.place_blob_core(B.base_point_rate, 0) B.transport_core() /obj/screen/blob/Blobbernaut diff --git a/code/game/gamemodes/blob/blobs/core.dm b/code/game/gamemodes/blob/blobs/core.dm index 7e47edfb42b..affd849e1e1 100644 --- a/code/game/gamemodes/blob/blobs/core.dm +++ b/code/game/gamemodes/blob/blobs/core.dm @@ -27,6 +27,9 @@ point_rate = new_rate ..() +/obj/effect/blob/core/scannerreport() + return "Directs the blob's expansion, gradually expands, and sustains nearby blob spores and blobbernauts." + /obj/effect/blob/core/update_icon() overlays.Cut() color = null @@ -71,7 +74,7 @@ Pulse_Area(overmind, 12, 4, 3) for(var/obj/effect/blob/normal/B in range(1, src)) if(prob(5)) - B.change_to(/obj/effect/blob/shield, overmind) + B.change_to(/obj/effect/blob/shield/core, overmind) ..() diff --git a/code/game/gamemodes/blob/blobs/factory.dm b/code/game/gamemodes/blob/blobs/factory.dm index 56ed5167f84..8ee6baa2c73 100644 --- a/code/game/gamemodes/blob/blobs/factory.dm +++ b/code/game/gamemodes/blob/blobs/factory.dm @@ -13,6 +13,11 @@ var/spore_delay = 0 +/obj/effect/blob/factory/scannerreport() + if(naut) + return "It is currently sustaining a blobbernaut, making it fragile and unable to produce blob spores." + return "Will produce a blob spore every few seconds." + /obj/effect/blob/factory/Destroy() for(var/mob/living/simple_animal/hostile/blob/blobspore/spore in spores) if(spore.factory == src) diff --git a/code/game/gamemodes/blob/blobs/node.dm b/code/game/gamemodes/blob/blobs/node.dm index 0fa21158e26..98ddb79bf8c 100644 --- a/code/game/gamemodes/blob/blobs/node.dm +++ b/code/game/gamemodes/blob/blobs/node.dm @@ -15,6 +15,9 @@ SSobj.processing |= src ..(loc, h) +/obj/effect/blob/node/scannerreport() + return "Gradually expands and sustains nearby blob spores and blobbernauts." + /obj/effect/blob/node/update_icon() overlays.Cut() color = null diff --git a/code/game/gamemodes/blob/blobs/resource.dm b/code/game/gamemodes/blob/blobs/resource.dm index a82293a0822..75a7ecfa366 100644 --- a/code/game/gamemodes/blob/blobs/resource.dm +++ b/code/game/gamemodes/blob/blobs/resource.dm @@ -8,6 +8,9 @@ point_return = 15 var/resource_delay = 0 +/obj/effect/blob/resource/scannerreport() + return "Gradually supplies the blob with resources, increasing the rate of expansion." + /obj/effect/blob/resource/creation_action() if(overmind) overmind.resource_blobs += src diff --git a/code/game/gamemodes/blob/blobs/shield.dm b/code/game/gamemodes/blob/blobs/shield.dm index c3003136915..cd879363cf6 100644 --- a/code/game/gamemodes/blob/blobs/shield.dm +++ b/code/game/gamemodes/blob/blobs/shield.dm @@ -7,9 +7,15 @@ maxhealth = 150 brute_resist = 0.1 explosion_block = 3 - point_return = 2 + point_return = 4 atmosblock = 1 +/obj/effect/blob/shield/scannerreport() + return "Will prevent the spread of atmospheric changes." + /obj/effect/blob/shield/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) return + +/obj/effect/blob/shield/core + point_return = 0 diff --git a/code/game/gamemodes/blob/powers.dm b/code/game/gamemodes/blob/powers.dm index a8df3818ff0..aa8485cf2fc 100644 --- a/code/game/gamemodes/blob/powers.dm +++ b/code/game/gamemodes/blob/powers.dm @@ -1,13 +1,13 @@ /mob/camera/blob/proc/can_buy(cost = 15) if(blob_points < cost) - src << "You cannot afford this!" + src << "You cannot afford this, you need at least [cost] resources!" return 0 add_points(-cost) return 1 // Power verbs -/mob/camera/blob/proc/place_blob_core(point_rate = base_point_rate, placement_override = 0) +/mob/camera/blob/proc/place_blob_core(point_rate, placement_override) if(placed && placement_override != -1) return 1 if(!placement_override) diff --git a/code/game/gamemodes/blob/theblob.dm b/code/game/gamemodes/blob/theblob.dm index 1bac15b4993..16638eef0b3 100644 --- a/code/game/gamemodes/blob/theblob.dm +++ b/code/game/gamemodes/blob/theblob.dm @@ -195,6 +195,13 @@ var/damage = Clamp(0.01 * exposed_temperature, 0, 4) take_damage(damage, BURN) +/obj/effect/blob/emp_act(severity) + if(severity > 0) + if(overmind) + overmind.blob_reagent_datum.emp_reaction(src, severity) + if(prob(100 - severity * 30)) + PoolOrNew(/obj/effect/overlay/temp/emp, get_turf(src)) + /obj/effect/blob/tesla_act(power) ..() if(overmind) @@ -213,6 +220,21 @@ take_damage(Proj.damage, Proj.damage_type, Proj) return 0 +/obj/effect/blob/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/device/analyzer)) + user.changeNext_move(CLICK_CD_MELEE) + user << "The analyzer beeps once, then reports:
" + user << 'sound/machines/ping.ogg' + if(overmind) + user << "Material: [overmind.blob_reagent_datum.name]." + user << "Material Effects: [overmind.blob_reagent_datum.analyzerdescdamage]" + user << "Material Properties: [overmind.blob_reagent_datum.analyzerdesceffect]
" + user << "Blob Type: [uppertext(initial(name))]" + user << "Health: [health]/[maxhealth]" + user << "Effects: [scannerreport()]" + else + return ..() + /obj/effect/blob/attacked_by(obj/item/I, mob/living/user) user.changeNext_move(CLICK_CD_MELEE) user.do_attack_animation(src) @@ -275,12 +297,16 @@ user << "It seems to be made of [get_chem_name()]." return +/obj/effect/blob/proc/scannerreport() + return "A generic blob. Looks like someone forgot to override this proc, adminhelp this." + /obj/effect/blob/proc/get_chem_name() if(overmind) return overmind.blob_reagent_datum.name return "an unknown variant" /obj/effect/blob/normal + name = "normal blob" icon_state = "blob" luminosity = 0 health = 21 @@ -288,6 +314,11 @@ health_regen = 1 brute_resist = 0.25 +/obj/effect/blob/normal/scannerreport() + if(health <= 10) + return "Currently weak to brute damage." + return "N/A" + /obj/effect/blob/normal/update_icon() ..() if(health <= 10) diff --git a/code/modules/reagents/chemistry/reagents/blob_reagents.dm b/code/modules/reagents/chemistry/reagents/blob_reagents.dm index f57c1ea91c9..5218b3c4f82 100644 --- a/code/modules/reagents/chemistry/reagents/blob_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/blob_reagents.dm @@ -5,15 +5,15 @@ color = "#FFFFFF" var/complementary_color = "#000000" //a color that's complementary to the normal blob color var/shortdesc = null //just damage and on_mob effects, doesn't include special, blob-tile only effects + var/analyzerdescdamage = "Unknown. Report this bug to a coder, or just adminhelp." + var/analyzerdesceffect = "N/A" var/blobbernaut_message = "slams" //blobbernaut attack verb var/message = "The blob strikes you" //message sent to any mob hit by the blob var/message_living = null //extension to first mob sent to only living mobs i.e. silicons have no skin to be burnt /datum/reagent/blob/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) - if(M.stat == DEAD) - return 0 //the dead don't cause reactions - if(istype(M, /mob/living/simple_animal/hostile/blob)) - return 0 //the blob mobs do not cause effects when hitting themselves or other blob mobs + if(M.stat == DEAD || istype(M, /mob/living/simple_animal/hostile/blob)) + return 0 //the dead, and blob mobs, don't cause reactions return round(reac_volume * min(1.5 - touch_protection, 1), 0.1) //full touch protection means 50% volume, any prot below 0.5 means 100% volume. /datum/reagent/blob/proc/damage_reaction(obj/effect/blob/B, original_health, damage, damage_type, cause) //when the blob takes damage, do this @@ -31,12 +31,17 @@ /datum/reagent/blob/proc/extinguish_reaction(obj/effect/blob/B) //when the blob is hit with water, do this return +/datum/reagent/blob/proc/emp_reaction(obj/effect/blob/B, severity) //when the blob is hit with an emp, do this + return + //does low toxin damage, but creates fragile spores when expanding or killed by weak attacks /datum/reagent/blob/sporing_pods name = "Sporing Pods" id = "sporing_pods" - description = "will do low toxin damage and produce fragile spores when killed or on expanding." - shortdesc = "will do low toxin damage." + description = "will do very low toxin damage and produce fragile spores when killed or on expanding." + shortdesc = "will do very low toxin damage." + analyzerdescdamage = "Does very low toxin damage." + analyzerdesceffect = "Produces spores when expanding and when killed." color = "#E88D5D" complementary_color = "#5DB8E8" message_living = ", and you feel sick" @@ -67,12 +72,14 @@ id = "replicating_foam" description = "will do medium brute damage and replicate when damaged, but takes increased brute damage." shortdesc = "will do medium brute damage." + analyzerdescdamage = "Does medium brute damage." + analyzerdesceffect = "Expands when attacked, will occasionally expand again when expanding, and is fragile to brute damage." color = "#7B5A57" complementary_color = "#57787B" /datum/reagent/blob/replicating_foam/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() - M.apply_damage(0.6*reac_volume, BRUTE) + M.apply_damage(0.5*reac_volume, BRUTE) /datum/reagent/blob/replicating_foam/damage_reaction(obj/effect/blob/B, original_health, damage, damage_type, cause) var/effectivedamage = damage @@ -96,6 +103,8 @@ id = "shifting_fragments" description = "will do medium brute damage and shift away from damage." shortdesc = "will do medium brute damage." + analyzerdescdamage = "Does medium brute damage." + analyzerdesceffect = "When attacked, may shift away from the attacker." color = "#C8963C" complementary_color = "#3C6EC8" @@ -121,12 +130,14 @@ B.forceMove(T) //swap the blobs return ..() -//does low burn and a lot of stamina damage, immune to tesla bolts +//does low burn and a lot of stamina damage, immune to tesla bolts, weak to EMP /datum/reagent/blob/energized_fibers name = "Energized Fibers" id = "energized_fibers" - description = "will do low burn and high stamina damage and conduct electricity." + description = "will do low burn and high stamina damage and conduct electricity, but is weak to EMPs." shortdesc = "will do low burn and high stamina damage." + analyzerdescdamage = "Does low burn damage and massively drains stamina." + analyzerdesceffect = "Is immune to electricity and will easily conduct it, but is weak to EMPs." color = "#EFD65A" complementary_color = "#5A73EF" blobbernaut_message = "shocks" @@ -134,19 +145,25 @@ /datum/reagent/blob/energized_fibers/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() - M.apply_damage(0.4*reac_volume, BURN) + M.apply_damage(0.6*reac_volume, BURN) if(M) - M.adjustStaminaLoss(0.8*reac_volume) + M.adjustStaminaLoss(0.6*reac_volume) /datum/reagent/blob/energized_fibers/tesla_reaction(obj/effect/blob/B, power) return 0 +/datum/reagent/blob/energized_fibers/emp_reaction(obj/effect/blob/B, severity) + var/damage = rand(30, 50) - severity * rand(10, 15) + B.take_damage(damage, BURN) + //sets you on fire, does burn damage, weak to water /datum/reagent/blob/boiling_oil name = "Boiling Oil" id = "boiling_oil" description = "will do medium burn damage and set targets on fire, but is weak to water." shortdesc = "will do medium burn damage and set targets on fire." + analyzerdescdamage = "Does medium burn damage and sets targets on fire." + analyzerdesceffect = "Takes damage from water and other extinguishing liquids." color = "#B68D00" complementary_color = "#0029B6" blobbernaut_message = "splashes" @@ -155,10 +172,10 @@ /datum/reagent/blob/boiling_oil/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() - M.adjust_fire_stacks(round(reac_volume/12)) + M.adjust_fire_stacks(round(reac_volume/10)) M.IgniteMob() if(M) - M.apply_damage(0.5*reac_volume, BURN) + M.apply_damage(0.6*reac_volume, BURN) if(iscarbon(M)) M.emote("scream") @@ -169,8 +186,10 @@ /datum/reagent/blob/flammable_goo name = "Flammable Goo" id = "flammable_goo" - description = "will do low burn damage, medium toxin damage, and ignite when burned." - shortdesc = "will do low burn damage and medium toxin damage." + description = "will do medium burn and toxin damage, make targets flammable, and ignite when burned." + shortdesc = "will do medium burn and toxin damage, and make targets flammable." + analyzerdescdamage = "Does medium burn damage, medium toxin damage, and makes targets flammable." + analyzerdesceffect = "Releases bursts of flame when attacked with burn damage, but takes additional burn damage." color = "#BE5532" complementary_color = "#329BBE" blobbernaut_message = "splashes" @@ -179,15 +198,16 @@ /datum/reagent/blob/flammable_goo/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() - M.adjust_fire_stacks(round(reac_volume/10)) //apply, but don't ignite + M.adjust_fire_stacks(round(reac_volume/8)) //apply, but don't ignite M.apply_damage(0.4*reac_volume, TOX) if(M) - M.apply_damage(0.2*reac_volume, BURN) + M.apply_damage(0.4*reac_volume, BURN) /datum/reagent/blob/flammable_goo/damage_reaction(obj/effect/blob/B, original_health, damage, damage_type, cause) if(cause && damage_type == BURN) - for(var/turf/T in range(1, B)) - if(!(locate(/obj/effect/blob) in T) && prob(80)) + for(var/turf/open/T in range(1, B)) + var/obj/effect/blob/C = locate() in T + if(!(C && C.overmind && C.overmind.blob_reagent_datum.id == B.overmind.blob_reagent_datum.id) && prob(80)) PoolOrNew(/obj/effect/hotspot, T) return damage * 1.5 return ..() @@ -197,6 +217,7 @@ name = "Regenerative Materia" id = "regenerative_materia" description = "will do low toxin damage and cause targets to believe they are fully healed." + analyzerdescdamage = "Does low toxin damage and injects a toxin that causes the target to believe they are fully healed." color = "#C8A5DC" complementary_color = "#B9DCA5" message_living = ", and you feel alive" @@ -225,6 +246,7 @@ name = "Hallucinogenic Nectar" id = "hallucinogenic_nectar" description = "will do low toxin damage, vivid hallucinations, and inject targets with toxins." + analyzerdescdamage = "Does low toxin damage and injects a toxin that causes vivid hallucinations and blurried vision." color = "#CD7794" complementary_color = "#77CDB0" blobbernaut_message = "splashes" @@ -233,8 +255,8 @@ /datum/reagent/blob/hallucinogenic_nectar/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() - M.hallucination += 0.8*reac_volume - M.adjust_drugginess(0.8*reac_volume) + M.hallucination += reac_volume + M.adjust_drugginess(reac_volume) if(M.reagents) M.reagents.add_reagent("spore", 0.2*reac_volume) @@ -244,7 +266,8 @@ /datum/reagent/blob/zombifying_feelers name = "Zombifying Feelers" id = "zombifying_feelers" - description = "will cause medium toxin damage and turn sleeping targets into blob zombies." + description = "will do low toxin damage and turn sleeping targets into blob zombies." + analyzerdescdamage = "Does low toxin damage and kills unconscious humans, turning them into blob zombies." color = "#828264" complementary_color = "#646482" message_living = ", and you feel tired" @@ -259,13 +282,14 @@ O.blob_mobs.Add(BS) BS.Zombify(M) if(M) - M.apply_damage(0.6*reac_volume, TOX) + M.apply_damage(0.4*reac_volume, TOX) //toxin, stamina, and some bonus spore toxin /datum/reagent/blob/envenomed_filaments name = "Envenomed Filaments" id = "envenomed_filaments" - description = "will cause medium toxin and stamina damage, and inject targets with toxins." + description = "will do medium toxin and stamina damage, and inject targets with toxins." + analyzerdescdamage = "Does medium toxin damage, drains stamina, and injects a weak toxin." color = "#9ACD32" complementary_color = "#6532CD" message_living = ", and you feel sick and nauseated" @@ -283,6 +307,7 @@ name = "Poisonous Strands" id = "poisonous_strands" description = "will inject targets with poison." + analyzerdescdamage = "Injects a highly lethal poison that will gradually liquify the target's internal organs." color = "#7D6EB4" complementary_color = "#A5B46E" blobbernaut_message = "injects" @@ -304,6 +329,7 @@ name = "Cyclonic Grid" id = "cyclonic_grid" description = "will cause high oxygen damage and randomly throw targets to or from it." + analyzerdescdamage = "Does high oxygen damage and randomly throws targets at or away from it." color = "#9BCD9B" complementary_color = "#CD9BCD" message = "The blob blasts you with a gust of air" @@ -320,6 +346,7 @@ name = "Lexorin Jelly" id = "lexorin_jelly" description = "will cause low brute and high oxygen damage, and cause targets to be unable to breathe." + analyzerdescdamage = "Does low brute damage, high oxygen damage, and prevents targets from breathing." color = "#00E5B1" complementary_color = "#E50034" message_living = ", and your lungs feel heavy and weak" @@ -337,6 +364,8 @@ id = "explosive_lattice" description = "will do brute damage in an area around targets and is resistant to explosions." shortdesc = "will do brute damage in an area around targets." + analyzerdescdamage = "Does medium brute damage and causes damage to everyone near its targets." + analyzerdesceffect = "Is highly resistant to explosions." color = "#8B2500" complementary_color = "#00668B" blobbernaut_message = "blasts" @@ -370,6 +399,8 @@ id = "reactive_gelatin" description = "will do random brute damage and react to brute damage." shortdesc = "will do random brute damage." + analyzerdescdamage = "Does random brute damage." + analyzerdesceffect = "When attacked with brute damage, will lash out, attacking everything near it." color = "#FFA500" complementary_color = "#005AFF" blobbernaut_message = "pummels" @@ -377,7 +408,7 @@ /datum/reagent/blob/reactive_gelatin/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() - var/damage = rand(0, 30)/25 + var/damage = rand(5, 35)/25 M.apply_damage(damage*reac_volume, BRUTE) /datum/reagent/blob/reactive_gelatin/damage_reaction(obj/effect/blob/B, original_health, damage, damage_type, cause) @@ -393,6 +424,7 @@ name = "Cryogenic Liquid" id = "cryogenic_liquid" description = "will do low burn and stamina damage, and cause targets to freeze." + analyzerdescdamage = "Does low burn damage, drains stamina, and injects targets with a freezing liquid." color = "#8BA6E9" complementary_color = "#E9CE8B" blobbernaut_message = "splashes" @@ -402,11 +434,11 @@ /datum/reagent/blob/cryogenic_liquid/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() if(M.reagents) - M.reagents.add_reagent("frostoil", 0.4*reac_volume) - M.reagents.add_reagent("ice", 0.4*reac_volume) + M.reagents.add_reagent("frostoil", 0.3*reac_volume) + M.reagents.add_reagent("ice", 0.3*reac_volume) M.apply_damage(0.4*reac_volume, BURN) if(M) - M.adjustStaminaLoss(0.4*reac_volume) + M.adjustStaminaLoss(0.3*reac_volume) //does burn damage and EMPs, slightly fragile /datum/reagent/blob/electromagnetic_web @@ -414,6 +446,8 @@ id = "electromagnetic_web" description = "will do low burn damage and EMP targets, but is very fragile." shortdesc = "will do low burn damage and EMP targets." + analyzerdescdamage = "Does low burn damage and EMPs targets." + analyzerdesceffect = "Is fragile to all types of damage, but takes massive damage from brute. In addition, releases a small EMP when killed." color = "#83ECEC" complementary_color = "#EC8383" blobbernaut_message = "lashes" @@ -448,6 +482,8 @@ id = "synchronous_mesh" description = "will do brute damage for each nearby blob and spread damage between nearby blobs." shortdesc = "will do brute damage for each nearby blob." + analyzerdescdamage = "Does brute damage, increasing for each blob near the target." + analyzerdesceffect = "When attacked, spreads damage between all blobs near the attacked blob." color = "#65ADA2" complementary_color = "#AD6570" blobbernaut_message = "synchronously strikes" @@ -475,18 +511,20 @@ else return damage * 1.25 -//does brute damage through armor(but not though bio resistance) +//does brute damage through armor and bio resistance /datum/reagent/blob/penetrating_spines name = "Penetrating Spines" id = "penetrating_spines" - description = "will do medium brute damage through armor." + description = "will do medium brute damage through armor and bio resistance." + analyzerdescdamage = "Does medium brute damage, ignoring armor and bio resistance." color = "#6E4664" complementary_color = "#466E50" blobbernaut_message = "stabs" message = "The blob stabs you" /datum/reagent/blob/penetrating_spines/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) - reac_volume = ..() + if(M.stat == DEAD || istype(M, /mob/living/simple_animal/hostile/blob)) + return 0 //the dead, and blob mobs, don't cause reactions M.adjustBruteLoss(0.6*reac_volume) /datum/reagent/blob/adaptive_nexuses @@ -494,6 +532,7 @@ id = "adaptive_nexuses" description = "will do medium brute damage and kill unconscious targets, giving you bonus resources." shortdesc = "will do medium brute damage and kill unconscious targets, giving your overmind bonus resources." + analyzerdescdamage = "Does medium brute damage and kills unconscious humans, reaping resources from them." color = "#4A64C0" complementary_color = "#823ABB" @@ -506,7 +545,7 @@ O << "Gained [points] resources from the death of [M]." M.death() if(M) - M.apply_damage(0.6*reac_volume, BRUTE) + M.apply_damage(0.5*reac_volume, BRUTE) //does low brute damage, oxygen damage, and stamina damage and wets tiles when damaged /datum/reagent/blob/pressurized_slime @@ -514,6 +553,8 @@ id = "pressurized_slime" description = "will do low brute, oxygen, and stamina damage, and wet tiles when damaged or killed." shortdesc = "will do low brute, oxygen, and stamina damage, and wet tiles under targets." + analyzerdescdamage = "Does low brute damage, low oxygen damage, drains stamina, and wets tiles under targets, extinguishing them." + analyzerdesceffect = "When attacked or killed, wets nearby tiles, extinguishing anything on them." color = "#AAAABB" complementary_color = "#BBBBAA" blobbernaut_message = "emits slime at" @@ -525,30 +566,39 @@ var/turf/open/T = get_turf(M) if(istype(T) && prob(reac_volume)) T.MakeSlippery(TURF_WET_WATER) - M.apply_damage(0.2*reac_volume, BRUTE) + M.adjust_fire_stacks(-(reac_volume / 10)) + M.ExtinguishMob() + M.apply_damage(0.1*reac_volume, BRUTE) if(M) - M.apply_damage(0.4*reac_volume, OXY) + M.apply_damage(0.3*reac_volume, OXY) if(M) - M.adjustStaminaLoss(0.4*reac_volume) + M.adjustStaminaLoss(0.3*reac_volume) /datum/reagent/blob/pressurized_slime/damage_reaction(obj/effect/blob/B, original_health, damage, damage_type, cause) - for(var/turf/open/T in range(1, B)) - if(prob(damage)) - T.MakeSlippery(TURF_WET_WATER) + extinguisharea(B, damage) return ..() /datum/reagent/blob/pressurized_slime/death_reaction(obj/effect/blob/B, cause) if(!isnull(cause)) B.visible_message("The blob ruptures, spraying the area with liquid!") + extinguisharea(B, 50) + +/datum/reagent/blob/pressurized_slime/proc/extinguisharea(obj/effect/blob/B, probchance) for(var/turf/open/T in range(1, B)) - if(prob(50)) + if(prob(probchance)) T.MakeSlippery(TURF_WET_WATER) + for(var/obj/O in T) + O.extinguish() + for(var/mob/living/L in T) + L.adjust_fire_stacks(-2.5) + L.ExtinguishMob() //does brute damage and throws or pulls nearby objects at the target /datum/reagent/blob/dark_matter name = "Dark Matter" id = "dark_matter" description = "will do medium brute damage and pull nearby objects and enemies at the target." + analyzerdescdamage = "Does medium brute damage and pulls nearby objects and creatures at the target." color = "#61407E" complementary_color = "#5D7E40" message = "You feel a thrum as the blob strikes you, and everything flies at you" @@ -556,13 +606,14 @@ /datum/reagent/blob/dark_matter/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() reagent_vortex(M, 0, reac_volume) - M.apply_damage(0.4*reac_volume, BRUTE) + M.apply_damage(0.3*reac_volume, BRUTE) //does brute damage and throws or pushes nearby objects away from the target /datum/reagent/blob/b_sorium name = "Sorium" id = "b_sorium" description = "will do medium brute damage and throw nearby objects and enemies away from the target." + analyzerdescdamage = "Does medium brute damage and pushes nearby objects and creatures away from the target." color = "#808000" complementary_color = "#000080" message = "The blob slams into you and sends you flying" @@ -570,7 +621,7 @@ /datum/reagent/blob/b_sorium/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() reagent_vortex(M, 1, reac_volume) - M.apply_damage(0.4*reac_volume, BRUTE) + M.apply_damage(0.3*reac_volume, BRUTE) /datum/reagent/blob/proc/reagent_vortex(mob/living/M, setting_type, reac_volume) if(M && reac_volume)