mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-26 14:39:58 +01:00
Makes smoke and foam attempt to fill the available space. (#65281)
Have you ever noticed that the chemical smoke and chemical foam reactions are a lot less effective in confined spaces? This is because they currently attempt to spread to all tiles within n steps of their origin. If they can't expand onto a tile they get blocked and the expanding cloud/flood misses out on all the tiles that would be in range, but that can't be reached. Obviously smoke and foam getting blocked by walls and the like makes intuitive sense, but it seemed a bit nonsensical that walls would basically delete a significant chunk of an expanding, amoebic mass. The solution I came up with is making smoke and foam expand until they cover a certain area, with a shared tracker for the target size and total size of the flood. The flood will simply expand as normal until it covers the desired target area. Blocked expansions just don't count and will be made up for with expansion elsewhere. Attendant to these changes are a whole bunch of minor code improvement to smoke, foam, and one for wizard spells because I was already in the area and :pain:. There have been some minor balance changes to the chemical smoke and foam reactions: I converted them over to passing the desired area of the resulting smoke cloud/foam flood. The old equation for the resulting area was along the lines of 2sqrt(x)(sqrt(x) + 1) + 1 given reaction volume x and given unobstructed expansion. I've made them just pass around 2x instead. This is actually less than they used to try for, but now they're guaranteed to reach that unless the flood is fully contained. Not entirely certain if buff or nerf. Probably buff on the station. Also, foam dilution is now based on covered area instead of target expansion range. Since this scales faster than it used to foam has been effectively nerfed at high volumes. To compensate for this I removed the jank 6/7 effect multiplier and increased the base reagent scaling a bit. Again, not certain if buff or nerf.
This commit is contained in:
@@ -109,7 +109,7 @@
|
||||
if(!stat && !user.combat_mode)
|
||||
to_chat(user, span_nicegreen("[src] whispers you some intense wisdoms and then disappears!"))
|
||||
user.mind?.adjust_experience(pick(GLOB.skill_types), 500)
|
||||
do_smoke(1, get_turf(src))
|
||||
do_smoke(DIAMOND_AREA(1), get_turf(src))
|
||||
qdel(src)
|
||||
return
|
||||
return ..()
|
||||
|
||||
@@ -355,7 +355,7 @@
|
||||
T.MakeSlippery(TURF_WET_WATER, min_wet_time = 20 SECONDS, wet_time_to_add = 15 SECONDS)
|
||||
else
|
||||
visible_message(span_danger("[src] whirs and bubbles violently, before releasing a plume of froth!"))
|
||||
new /obj/effect/particle_effect/foam(loc)
|
||||
new /obj/effect/particle_effect/fluid/foam(loc)
|
||||
|
||||
else
|
||||
..()
|
||||
|
||||
@@ -267,7 +267,7 @@
|
||||
|
||||
/mob/living/simple_animal/bot/firebot/atmos_expose(datum/gas_mixture/air, exposed_temperature)
|
||||
if(COOLDOWN_FINISHED(src, foam_cooldown))
|
||||
new /obj/effect/particle_effect/foam/firefighting(loc)
|
||||
new /obj/effect/particle_effect/fluid/foam/firefighting(loc)
|
||||
COOLDOWN_START(src, foam_cooldown, FOAM_INTERVAL)
|
||||
|
||||
/mob/living/simple_animal/bot/firebot/proc/spray_water(atom/target, mob/user)
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
ADD_TRAIT(src, TRAIT_SPRAY_PAINTABLE, INNATE_TRAIT)
|
||||
|
||||
/mob/living/simple_animal/bot/hygienebot/explode()
|
||||
new /obj/effect/particle_effect/foam(loc)
|
||||
new /obj/effect/particle_effect/fluid/foam(loc)
|
||||
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -230,8 +230,8 @@
|
||||
visible_message(span_boldwarning("[src] spews smoke from the tip of their spine!"))
|
||||
else
|
||||
visible_message(span_boldwarning("[src] spews smoke from its maw!"))
|
||||
var/datum/effect_system/smoke_spread/smoke = new
|
||||
smoke.set_up(2, smoke_location)
|
||||
var/datum/effect_system/fluid_spread/smoke/smoke = new
|
||||
smoke.set_up(2, location = smoke_location)
|
||||
smoke.start()
|
||||
|
||||
//The legionnaire's head. Basically the same as any legion head, but we have to tell our creator when we die so they can generate another head.
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
response_disarm_continuous = "gently scoops and pours aside"
|
||||
response_disarm_simple = "gently scoop and pour aside"
|
||||
emote_see = list("bubbles", "oozes")
|
||||
loot = list(/obj/item/clothing/mask/gas/clown_hat, /obj/effect/particle_effect/foam)
|
||||
loot = list(/obj/item/clothing/mask/gas/clown_hat, /obj/effect/particle_effect/fluid/foam)
|
||||
|
||||
/mob/living/simple_animal/hostile/retaliate/clown/lube/Initialize(mapload)
|
||||
. = ..()
|
||||
@@ -293,7 +293,7 @@
|
||||
attack_verb_continuous = "steals the girlfriend of"
|
||||
attack_verb_simple = "steal the girlfriend of"
|
||||
attack_sound = 'sound/items/airhorn2.ogg'
|
||||
loot = list(/obj/item/clothing/mask/gas/clown_hat, /obj/effect/gibspawner/human, /obj/effect/particle_effect/foam, /obj/item/soap)
|
||||
loot = list(/obj/item/clothing/mask/gas/clown_hat, /obj/effect/gibspawner/human, /obj/effect/particle_effect/fluid/foam, /obj/item/soap)
|
||||
|
||||
/mob/living/simple_animal/hostile/retaliate/clown/clownhulk/honcmunculus
|
||||
name = "Honkmunculus"
|
||||
@@ -316,7 +316,7 @@
|
||||
attack_verb_continuous = "ferociously mauls"
|
||||
attack_verb_simple = "ferociously maul"
|
||||
environment_smash = ENVIRONMENT_SMASH_NONE
|
||||
loot = list(/obj/item/clothing/mask/gas/clown_hat, /obj/effect/gibspawner/xeno/bodypartless, /obj/effect/particle_effect/foam, /obj/item/soap)
|
||||
loot = list(/obj/item/clothing/mask/gas/clown_hat, /obj/effect/gibspawner/xeno/bodypartless, /obj/effect/particle_effect/fluid/foam, /obj/item/soap)
|
||||
attack_reagent = /datum/reagent/peaceborg/confuse
|
||||
|
||||
/mob/living/simple_animal/hostile/retaliate/clown/clownhulk/destroyer
|
||||
@@ -339,7 +339,7 @@
|
||||
attack_verb_simple = "act out divine vengeance on"
|
||||
obj_damage = 50
|
||||
environment_smash = ENVIRONMENT_SMASH_RWALLS
|
||||
loot = list(/obj/item/clothing/mask/gas/clown_hat, /obj/effect/gibspawner/human, /obj/effect/particle_effect/foam, /obj/item/soap)
|
||||
loot = list(/obj/item/clothing/mask/gas/clown_hat, /obj/effect/gibspawner/human, /obj/effect/particle_effect/fluid/foam, /obj/item/soap)
|
||||
|
||||
/mob/living/simple_animal/hostile/retaliate/clown/mutant
|
||||
name = "Unknown"
|
||||
|
||||
Reference in New Issue
Block a user