From 282350fb712bfcbde59f4226c6c7302166ca35e6 Mon Sep 17 00:00:00 2001 From: Fox McCloud Date: Thu, 4 Apr 2019 05:06:39 -0400 Subject: [PATCH] Tweaks Foam and Pyrotechnics --- .../effects/effect_system/effects_foam.dm | 8 +- .../mob/living/carbon/human/species/grey.dm | 7 +- .../living/carbon/human/species/plasmaman.dm | 2 +- .../living/carbon/human/species/skeleton.dm | 6 +- .../chemistry/reagents/pyrotechnic.dm | 4 +- .../reagents/chemistry/reagents/toxins.dm | 136 +++++++----------- .../reagents/chemistry/reagents/water.dm | 69 +++------ 7 files changed, 88 insertions(+), 144 deletions(-) diff --git a/code/game/objects/effects/effect_system/effects_foam.dm b/code/game/objects/effects/effect_system/effects_foam.dm index 6d746377ec7..1116140c5c2 100644 --- a/code/game/objects/effects/effect_system/effects_foam.dm +++ b/code/game/objects/effects/effect_system/effects_foam.dm @@ -76,10 +76,10 @@ F = new /obj/effect/particle_effect/foam(T, metal) F.amount = amount if(!metal) - F.create_reagents(15) + F.create_reagents(25) if(reagents) for(var/datum/reagent/R in reagents.reagent_list) - F.reagents.add_reagent(R.id, min(R.volume, 3), R.data, reagents.chem_temp) + F.reagents.add_reagent(R.id, min(R.volume, 5), R.data, reagents.chem_temp) F.color = mix_color_from_reagents(reagents.reagent_list) // foam disolves when heated @@ -149,14 +149,14 @@ F.amount = amount if(!metal) // don't carry other chemicals if a metal foam - F.create_reagents(15) + F.create_reagents(25) if(carried_reagents) for(var/id in carried_reagents) if(banned_reagents.Find("[id]")) continue var/datum/reagent/reagent_volume = carried_reagents[id] - F.reagents.add_reagent(id, min(reagent_volume, 3), null, temperature) + F.reagents.add_reagent(id, min(reagent_volume, 5), null, temperature) F.color = mix_color_from_reagents(F.reagents.reagent_list) else F.reagents.add_reagent("cleaner", 1) diff --git a/code/modules/mob/living/carbon/human/species/grey.dm b/code/modules/mob/living/carbon/human/species/grey.dm index e5492e60293..5bb314c4f43 100644 --- a/code/modules/mob/living/carbon/human/species/grey.dm +++ b/code/modules/mob/living/carbon/human/species/grey.dm @@ -56,6 +56,9 @@ /datum/species/grey/handle_reagents(mob/living/carbon/human/H, datum/reagent/R) if(R.id == "sacid") - H.reagents.del_reagent(R.id) - return 0 + H.reagents.remove_reagent(R.id, REAGENTS_METABOLISM) + return FALSE + if(R.id == "water") + H.adjustFireLoss(1) + return TRUE return ..() diff --git a/code/modules/mob/living/carbon/human/species/plasmaman.dm b/code/modules/mob/living/carbon/human/species/plasmaman.dm index ba249edb5a8..35d02f82509 100644 --- a/code/modules/mob/living/carbon/human/species/plasmaman.dm +++ b/code/modules/mob/living/carbon/human/species/plasmaman.dm @@ -188,6 +188,6 @@ H.adjustFireLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER) H.adjustPlasma(20) H.reagents.remove_reagent(R.id, REAGENTS_METABOLISM) - return 0 //Handling reagent removal on our own. Prevents plasma from dealing toxin damage to Plasmamen. + return FALSE //Handling reagent removal on our own. Prevents plasma from dealing toxin damage to Plasmamen. return ..() diff --git a/code/modules/mob/living/carbon/human/species/skeleton.dm b/code/modules/mob/living/carbon/human/species/skeleton.dm index 50920798d70..0199722d1f4 100644 --- a/code/modules/mob/living/carbon/human/species/skeleton.dm +++ b/code/modules/mob/living/carbon/human/species/skeleton.dm @@ -41,7 +41,7 @@ /datum/species/skeleton/handle_reagents(mob/living/carbon/human/H, datum/reagent/R) // Crazylemon is still silly if(R.id == "milk") - H.heal_overall_damage(4,4) + H.heal_overall_damage(4, 4) if(prob(5)) // 5% chance per proc to find a random limb, and mend it var/list/our_organs = H.bodyparts.Copy() shuffle(our_organs) @@ -54,7 +54,7 @@ L.perma_injury = 0 break // We're only checking one limb here, bucko if(prob(3)) - H.say(pick("Thanks Mr Skeltal", "Thank for strong bones", "Doot doot!")) - return 1 + H.say(pick("Thanks Mr. Skeltal", "Thank for strong bones", "Doot doot!")) + return TRUE return ..() diff --git a/code/modules/reagents/chemistry/reagents/pyrotechnic.dm b/code/modules/reagents/chemistry/reagents/pyrotechnic.dm index d91a76da7fc..d062de0e761 100644 --- a/code/modules/reagents/chemistry/reagents/pyrotechnic.dm +++ b/code/modules/reagents/chemistry/reagents/pyrotechnic.dm @@ -22,7 +22,7 @@ M.adjust_fire_stacks(mob_burning) M.IgniteMob() if(method == INGEST) - M.adjustFireLoss(min(max(15, volume * 3), 45)) + M.adjustFireLoss(min(max(10, volume * 2), 45)) to_chat(M, "It burns!") M.emote("scream") @@ -242,7 +242,7 @@ M.adjust_fire_stacks(10) M.IgniteMob() if(method == INGEST) - M.adjustFireLoss(min(max(30, volume * 6), 90)) + M.adjustFireLoss(min(max(15, volume * 2.5), 90)) to_chat(M, "It burns!") M.emote("scream") diff --git a/code/modules/reagents/chemistry/reagents/toxins.dm b/code/modules/reagents/chemistry/reagents/toxins.dm index 76be206f35f..b1685d13b83 100644 --- a/code/modules/reagents/chemistry/reagents/toxins.dm +++ b/code/modules/reagents/chemistry/reagents/toxins.dm @@ -245,7 +245,7 @@ id = "sacid" description = "A strong mineral acid with the molecular formula H2SO4." reagent_state = LIQUID - color = "#00D72B" + color = "#00FF32" process_flags = ORGANIC | SYNTHETIC taste_message = "ACID" @@ -254,58 +254,34 @@ update_flags |= M.adjustFireLoss(1, FALSE) return ..() | update_flags -/datum/reagent/sacid/reaction_mob(mob/living/M, method=TOUCH, volume) - if(method == TOUCH) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(isgrey(H)) - return - +/datum/reagent/sacid/reaction_mob(mob/living/M, method = TOUCH, volume) + if(ishuman(M) && !isgrey(M)) + var/mob/living/carbon/human/H = M + if(method == TOUCH) if(volume > 25) - if(H.wear_mask) - to_chat(H, "Your mask protects you from the acid!") + to_chat(H, "Your [H.wear_mask] protects you from the acid!") return if(H.head) - to_chat(H, "Your helmet protects you from the acid!") + to_chat(H, "Your [H.wear_mask] protects you from the acid!") return - if(!M.unacidable) - if(prob(75)) - var/obj/item/organ/external/affecting = H.get_organ("head") - if(affecting) - affecting.receive_damage(5, 10) - H.UpdateDamageIcon() - H.emote("scream") - else - M.take_organ_damage(5,10) + if(prob(75)) + H.take_organ_damage(5, 10) + H.emote("scream") + var/obj/item/organ/external/affecting = H.get_organ("head") + if(affecting) + affecting.disfigure() + else + H.take_organ_damage(5, 10) else - M.take_organ_damage(5,10) - - if(method == INGEST) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - - if(isgrey(H)) - return - - if(volume >=10 && volume <=25) - if(!H.unacidable) - M.take_organ_damage(0,min(max(volume-10,2)*2,20)) - M.emote("scream") - - - if(volume > 25) - if(!M.unacidable) - if(prob(75)) - var/obj/item/organ/external/affecting = H.get_organ("head") - if(affecting) - affecting.receive_damage(0, 20) - H.UpdateDamageIcon() - H.emote("scream") - else - M.take_organ_damage(0,20) + H.take_organ_damage(5, 10) + else + to_chat(H, "The greenish acidic substance stings[volume < 10 ? " you, but isn't concentrated enough to harm you" : null]!") + if(volume >= 10) + H.adjustFireLoss(min(max(4, (volume - 10) * 2), 20)) + H.emote("scream") /datum/reagent/sacid/reaction_obj(obj/O, volume) if((istype(O,/obj/item) || istype(O,/obj/structure/glowshroom)) && prob(40)) @@ -614,7 +590,7 @@ id = "facid" description = "Fluorosulfuric acid is a an extremely corrosive super-acid." reagent_state = LIQUID - color = "#4141D2" + color = "#5050FF" process_flags = ORGANIC | SYNTHETIC taste_message = "ACID" @@ -624,47 +600,39 @@ update_flags |= M.adjustFireLoss(1, FALSE) return ..() | update_flags -/datum/reagent/facid/reaction_mob(mob/living/M, method=TOUCH, volume) - if(method == TOUCH || method == INGEST) - if(ishuman(M)) - var/mob/living/carbon/human/H = M +/datum/reagent/facid/reaction_mob(mob/living/M, method = TOUCH, volume) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(method == TOUCH) + if(volume > 9) + if(!H.wear_mask && !H.head) + if(!H.unacidable) + var/obj/item/organ/external/affecting = H.get_organ("head") + if(affecting) + affecting.disfigure() + H.adjustFireLoss(min(max(8, (volume - 5) * 3), 75)) + H.emote("scream") + return + else + var/melted_something = FALSE + if(H.wear_mask && !H.wear_mask.unacidable) + qdel(H.wear_mask) + H.update_inv_wear_mask() + to_chat(H, "Your [H.wear_mask] melts away!") + melted_something = TRUE - if(volume < 5) - to_chat(M, "The blueish acidic substance stings you, but isn't concentrated enough to harm you!") - - if(volume >=5 && volume <=10) - if(!H.unacidable) - M.take_organ_damage(0,max(volume-5,2)*4) - M.emote("scream") - - - if(volume > 10) - - if(method == TOUCH) - if(H.wear_mask) - if(!H.wear_mask.unacidable) - qdel(H.wear_mask) - H.update_inv_wear_mask() - to_chat(H, "Your mask melts away but protects you from the acid!") - else - to_chat(H, "Your mask protects you from the acid!") + if(H.head && !H.head.unacidable) + qdel(H.head) + H.update_inv_head() + to_chat(H, "Your [H.head] melts away!") + melted_something = TRUE + if(melted_something) return - if(H.head) - if(!H.head.unacidable) - qdel(H.head) - H.update_inv_head() - to_chat(H, "Your helmet melts away but protects you from the acid") - else - to_chat(H, "Your helmet protects you from the acid!") - return - - if(!H.unacidable) - var/obj/item/organ/external/head/affecting = H.get_organ("head") - if(affecting) - affecting.receive_damage(0, 75) - H.UpdateDamageIcon() - H.emote("scream") + if(volume >= 5) + H.emote("scream") + H.adjustFireLoss(min(max(8, (volume - 5) * 3), 75)) + to_chat(H, "The blueish acidic substance stings[volume < 5 ? " you, but isn't concentrated enough to harm you" : null]!") /datum/reagent/facid/reaction_obj(obj/O, volume) if((istype(O, /obj/item) || istype(O, /obj/structure/glowshroom))) diff --git a/code/modules/reagents/chemistry/reagents/water.dm b/code/modules/reagents/chemistry/reagents/water.dm index 5623023659b..dcd21f639d1 100644 --- a/code/modules/reagents/chemistry/reagents/water.dm +++ b/code/modules/reagents/chemistry/reagents/water.dm @@ -24,61 +24,34 @@ if(method == TOUCH) // Put out fire M.adjust_fire_stacks(-(volume * 0.2)) - if(ishuman(M)) - - var/mob/living/carbon/human/H = M - - if(!isgrey(H)) //God this is so gross I hate it. - return + if(isgrey(M)) // You gosh darn snowflakes + var/mob/living/carbon/human/G = M + if(method == TOUCH) if(volume > 25) - - if(H.wear_mask) - to_chat(H, "Your mask protects you from the water!") + if(G.wear_mask) + to_chat(G, "Your [G.wear_mask] protects you from the acid!") return - if(H.head) - to_chat(H, "Your helmet protects you from the water!") + if(G.head) + to_chat(G, "Your [G.wear_mask] protects you from the acid!") return - if(!M.unacidable) - if(prob(75)) - var/obj/item/organ/external/affecting = H.get_organ("head") - if(affecting) - affecting.receive_damage(5, 10) - H.UpdateDamageIcon() - H.emote("scream") - else - M.take_organ_damage(5,10) + if(prob(75)) + G.take_organ_damage(5, 10) + G.emote("scream") + var/obj/item/organ/external/affecting = G.get_organ("head") + if(affecting) + affecting.disfigure() + else + G.take_organ_damage(5, 10) else - M.take_organ_damage(5,10) - - if(method == INGEST) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - - if(!isgrey(H)) - return - - if(volume < 10) - to_chat(M, "The watery solvent substance stings you, but isn't concentrated enough to harm you!") - - if(volume >=10 && volume <=25) - if(!H.unacidable) - M.take_organ_damage(0,min(max(volume-10,2)*2,20)) - M.emote("scream") - - - if(volume > 25) - if(!M.unacidable) - if(prob(75)) - var/obj/item/organ/external/affecting = H.get_organ("head") - if(affecting) - affecting.receive_damage(0, 20) - H.UpdateDamageIcon() - H.emote("scream") - else - M.take_organ_damage(0,20) + G.take_organ_damage(5, 10) + else + to_chat(G, "The water stings[volume < 10 ? " you, but isn't concentrated enough to harm you" : null]!") + if(volume >= 10) + G.adjustFireLoss(min(max(4, (volume - 10) * 2), 20)) + G.emote("scream") /datum/reagent/water/reaction_turf(turf/simulated/T, volume) if(!istype(T))