Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Showers don't put out fires
#3
(08-19-2016, 10:37 AM)Arborinus Wrote: http://forum.ss13.co/showthread.php?tid=709

Actually, that's not quite correct.

Let's take a look at the code to see why! For Science! 


Here's the reaction_mob() for firefoam
Code:
            reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
                src = null
                if (method == TOUCH)
                    var/mob/living/L = M
                    if (istype(L) && L.burning)
                        L.update_burning(-50)
                return

And here's the equivalent for water:

Code:
            reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
                ..()
                src = null
                if(!volume)
                    volume = 10
                if(method == TOUCH)
                    var/mob/living/L = M
                    if(istype(L) && L.burning)
                        L.update_burning(-volume)
                return

Both reagents will reduce burning when applied to someone, they just scale differently.

Water reduces burning by 1 per unit of water splashed on the person, while firefoam reduces it by a flat 50 regardless of volume. 

Here's the relevant part of shower code
Code:
    proc/spray()

        src.last_spray = world.time

        if (src && src.default_reagent)

            src.reagents.add_reagent(default_reagent,120)

            //also add some water for ~wet floor~ immersion

            src.reagents.add_reagent("water",40)




        if (src && src.reagents.total_volume) //We still have reagents after, I dunno, a potassium reaction




            // "blood - 2.7867e-018" because remove_any() uses ratios (Convair880).

            for (var/current_id in src.reagents.reagent_list)

                var/datum/reagent/current_reagent = src.reagents.reagent_list[current_id]

                if (current_reagent.id == "water" || current_reagent.id == "cleaner")

                    continue

                if (current_reagent.volume < 0.5)

                    src.reagents.del_reagent(current_reagent.id)




            var/datum/effects/system/steam_spread/steam = unpool(/datum/effects/system/steam_spread)

            steam.set_up(5, 0, get_turf(src))

            steam.attach(src)

            steam.start()




            for (var/atom/A in range(1, get_turf(src))) // View and oview are unreliable as heck, apparently?

                if ( A == src ) continue




                // Added. We don't care about unmodified shower heads, though (Convair880).

                if (ismob(A))

                    var/mob/M = A

                    if (M.stat != 2)

                        if ((!src.reagents.has_reagent("water") && !src.reagents.has_reagent("cleaner")) || ((src.reagents.has_reagent("water") && src.reagents.has_reagent("cleaner")) && src.reagents.reagent_list.len > 2))

                            logTheThing("combat", M, null, "is hit by chemicals [log_reagents(src)] from a shower head at [log_loc(M)].")




                src.reagents.reaction(A, 1, 40) // why the FUCK was this ingest ?? ?? ? ?? ? ?? ? ?? ? ???




        spawn(50)

            if (src && src.reagents.total_volume)

                src.reagents.del_reagent(default_reagent)

                src.reagents.remove_any(40)




        src.use_power(50)

        return

Note that the 1 in src.reagents.reaction(A, 1, 40) means it's a touch reaction.

In other words, code-wise, a shower SHOULD be putting out people who are on fire.

If I had to guess why people aren't getting properly extinguished, I'd say that it probably has something to do with the relatively small amount of water being splashed onto people. Of those 40 units in the reaction, there are 30 units of space cleaner and only 10 units of water.
10 units every half second is going to take a while to extinguish any burning assistants under the showerhead.


Messages In This Thread
Showers don't put out fires - by NateTheSquid - 08-19-2016, 03:19 AM
RE: Showers don't put out fires - by Arborinus - 08-19-2016, 10:37 AM
RE: Showers don't put out fires - by Noah Buttes - 08-19-2016, 10:57 AM
RE: Showers don't put out fires - by atamusvaleo - 08-19-2016, 12:12 PM

Forum Jump:


Users browsing this thread: 1 Guest(s)