Files
Bubberstation/code/game/objects/effects/effect_system/effects_smoke.dm
T
ExcessiveUseOfCobblestone 5ed5566dbf modified: _maps/RandomRuins/LavaRuins/lavaland_surface_fountain_hall.dmm
modified:   _maps/RandomZLevels/Academy.dmm
 	modified:   _maps/RandomZLevels/caves.dmm
 	modified:   _maps/RandomZLevels/research.dmm
 	modified:   _maps/map_files/MetaStation/MetaStation.dmm
 	modified:   _maps/map_files/MiniStation/cargopacks.dm
 	modified:   _maps/map_files/TgStation/tgstation.2.1.3.dmm
 	modified:   _maps/map_files/generic/z2.dmm
 	modified:   code/__DEFINES/clothing.dm
 	modified:   code/__DEFINES/flags.dm
 	modified:   code/__DEFINES/hud.dm
 	modified:   code/__DEFINES/is_helpers.dm
 	modified:   code/__DEFINES/layers.dm
 	modified:   code/__DEFINES/machines.dm
 	modified:   code/__DEFINES/misc.dm
 	modified:   code/__DEFINES/role_preferences.dm
 	modified:   code/__DEFINES/say.dm
 	modified:   code/__DEFINES/wires.dm
 	modified:   code/__HELPERS/global_lists.dm
 	modified:   code/__HELPERS/matrices.dm
 	modified:   code/__HELPERS/mobs.dm
 	modified:   code/__HELPERS/type2type.dm
 	modified:   code/__HELPERS/unsorted.dm
 	modified:   code/_globalvars/lists/flavor_misc.dm
 	modified:   code/_onclick/click.dm
 	modified:   code/_onclick/hud/_defines.dm
 	modified:   code/_onclick/hud/alien.dm
 	modified:   code/_onclick/hud/alien_larva.dm
 	modified:   code/_onclick/hud/fullscreen.dm
 	modified:   code/_onclick/hud/hud.dm
 	modified:   code/_onclick/hud/human.dm
 	modified:   code/_onclick/hud/monkey.dm
 	modified:   code/_onclick/hud/other_mobs.dm
 	modified:   code/_onclick/hud/robot.dm
 	modified:   code/_onclick/hud/screen_objects.dm
 	modified:   code/controllers/subsystem/minimap.dm
 	new file:   code/controllers/subsystem/orbit.dm
 	modified:   code/controllers/subsystem/spacedrift.dm
 	modified:   code/controllers/subsystem/ticker.dm
 	modified:   code/datums/diseases/advance/advance.dm
 	modified:   code/datums/diseases/advance/symptoms/damage_converter.dm
 	modified:   code/datums/diseases/advance/symptoms/heal.dm
 	modified:   code/datums/hud.dm
 	modified:   code/datums/mind.dm
 	modified:   code/datums/outfit.dm
 	modified:   code/datums/wires/airalarm.dm
 	modified:   code/datums/wires/airlock.dm
 	modified:   code/datums/wires/apc.dm
 	modified:   code/datums/wires/autolathe.dm
 	modified:   code/datums/wires/explosive.dm
 	modified:   code/datums/wires/particle_accelerator.dm
 	modified:   code/datums/wires/radio.dm
 	modified:   code/datums/wires/suit_storage_unit.dm
 	modified:   code/datums/wires/vending.dm
 	modified:   code/datums/wires/wires.dm
 	modified:   code/game/area/Space_Station_13_areas.dm
 	modified:   code/game/area/areas.dm
 	modified:   code/game/atoms_movable.dm
 	modified:   code/game/data_huds.dm
 	modified:   code/game/gamemodes/antag_spawner.dm
 	modified:   code/game/gamemodes/blob/blob.dm
 	modified:   code/game/gamemodes/blob/blobs/core.dm
 	modified:   code/game/gamemodes/clock_cult/clock_items.dm
 	modified:   code/game/gamemodes/clock_cult/clock_machines.dm
 	modified:   code/game/gamemodes/clock_cult/clock_mobs.dm
 	new file:   code/game/gamemodes/clock_cult/clock_powerdrain.dm
 	modified:   code/game/gamemodes/clock_cult/clock_scripture.dm
 	modified:   code/game/gamemodes/clock_cult/clock_structures.dm
 	modified:   code/game/gamemodes/cult/ritual.dm
 	modified:   code/game/gamemodes/cult/runes.dm
 	modified:   code/game/gamemodes/cult/talisman.dm
 	modified:   code/game/gamemodes/game_mode.dm
 	deleted:    code/game/gamemodes/handofgod/_handofgod.dm
 	deleted:    code/game/gamemodes/handofgod/actions.dm
 	deleted:    code/game/gamemodes/handofgod/god.dm
 	deleted:    code/game/gamemodes/handofgod/objectives.dm
 	deleted:    code/game/gamemodes/handofgod/powers.dm
 	deleted:    code/game/gamemodes/handofgod/structures.dm
 	modified:   code/game/gamemodes/miniantags/abduction/abduction_gear.dm
 	modified:   code/game/gamemodes/miniantags/revenant/revenant_blight.dm
 	modified:   code/game/gamemodes/miniantags/slaughter/slaughter.dm
 	modified:   code/game/gamemodes/nuclear/nuclearbomb.dm
 	modified:   code/game/gamemodes/wizard/soulstone.dm
 	modified:   code/game/machinery/computer/computer.dm
 	modified:   code/game/machinery/doors/windowdoor.dm
 	new file:   code/game/machinery/limbgrower.dm
 	modified:   code/game/machinery/machinery.dm
 	modified:   code/game/machinery/recharger.dm
 	modified:   code/game/machinery/syndicatebomb.dm
 	modified:   code/game/machinery/vending.dm
 	modified:   code/game/mecha/mecha_defense.dm
 	modified:   code/game/mecha/working/ripley.dm
 	modified:   code/game/objects/effects/decals/Cleanable/aliens.dm
 	modified:   code/game/objects/effects/decals/Cleanable/humans.dm
 	modified:   code/game/objects/effects/decals/Cleanable/misc.dm
 	modified:   code/game/objects/effects/decals/Cleanable/robots.dm
 	modified:   code/game/objects/effects/decals/cleanable.dm
 	modified:   code/game/objects/effects/decals/crayon.dm
 	modified:   code/game/objects/effects/effect_system/effects_smoke.dm
 	modified:   code/game/objects/effects/overlays.dm
 	modified:   code/game/objects/effects/step_triggers.dm
 	modified:   code/game/objects/items.dm
 	modified:   code/game/objects/items/blueprints.dm
 	modified:   code/game/objects/items/devices/PDA/PDA.dm
 	modified:   code/game/objects/items/devices/chameleonproj.dm
 	modified:   code/game/objects/items/devices/megaphone.dm
 	renamed:    code/game/gamemodes/handofgod/items.dm -> code/game/objects/items/religion.dm
 	modified:   code/game/objects/items/robot/robot_items.dm
 	modified:   code/game/objects/items/stacks/stack.dm
 	modified:   code/game/objects/items/weapons/cigs_lighters.dm
 	modified:   code/game/objects/items/weapons/grenades/grenade.dm
 	modified:   code/game/objects/items/weapons/grenades/spawnergrenade.dm
 	modified:   code/game/objects/items/weapons/implants/implant_loyality.dm
 	modified:   code/game/objects/items/weapons/kitchen.dm
 	modified:   code/game/objects/items/weapons/melee/energy.dm
 	modified:   code/game/objects/items/weapons/melee/misc.dm
 	modified:   code/game/objects/items/weapons/mop.dm
 	modified:   code/game/objects/items/weapons/storage/belt.dm
 	modified:   code/game/objects/items/weapons/storage/uplink_kits.dm
 	modified:   code/game/objects/items/weapons/tools.dm
 	modified:   code/game/objects/items/weapons/vending_items.dm
 	modified:   code/game/objects/items/weapons/weaponry.dm
 	modified:   code/game/objects/objs.dm
 	modified:   code/game/objects/structures/crates_lockers/closets/fitness.dm
 	new file:   code/game/objects/structures/divine.dm
 	modified:   code/game/objects/structures/flora.dm
 	modified:   code/game/objects/structures/fluff.dm
 	modified:   code/game/objects/structures/grille.dm
 	modified:   code/game/objects/structures/kitchen_spike.dm
 	modified:   code/game/objects/structures/tables_racks.dm
 	renamed:    code/game/gamemodes/handofgod/traps.dm -> code/game/objects/structures/traps.dm
 	modified:   code/game/objects/structures/window.dm
 	modified:   code/game/turfs/simulated/dirtystation.dm
 	modified:   code/game/turfs/simulated/floor/fancy_floor.dm
 	modified:   code/game/turfs/simulated/floor/light_floor.dm
 	modified:   code/game/turfs/simulated/floor/misc_floor.dm
 	modified:   code/game/turfs/simulated/floor/plating.dm
 	modified:   code/game/turfs/turf.dm
 	modified:   code/modules/admin/player_panel.dm
 	modified:   code/modules/admin/verbs/onlyone.dm
 	modified:   code/modules/admin/verbs/pray.dm
 	modified:   code/modules/assembly/flash.dm
 	modified:   code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm
 	modified:   code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm
 	modified:   code/modules/awaymissions/capture_the_flag.dm
 	modified:   code/modules/cargo/packs.dm
 	modified:   code/modules/client/client_colour.dm
 	modified:   code/modules/client/preferences.dm
 	modified:   code/modules/client/preferences_savefile.dm
 	modified:   code/modules/clothing/clothing.dm
 	modified:   code/modules/clothing/glasses/glasses.dm
 	modified:   code/modules/clothing/glasses/hud.dm
 	modified:   code/modules/clothing/spacesuits/hardsuit.dm
 	modified:   code/modules/clothing/suits/miscellaneous.dm
 	modified:   code/modules/clothing/suits/wiz_robe.dm
 	modified:   code/modules/clothing/under/jobs/civilian.dm
 	modified:   code/modules/clothing/under/shorts.dm
 	modified:   code/modules/events/holiday/halloween.dm
 	modified:   code/modules/events/shuttle_loan.dm
 	modified:   code/modules/food_and_drinks/food/snacks/meat.dm
 	modified:   code/modules/food_and_drinks/food/snacks_burgers.dm
 	modified:   code/modules/food_and_drinks/food/snacks_other.dm
 	modified:   code/modules/food_and_drinks/kitchen_machinery/processor.dm
 	modified:   code/modules/food_and_drinks/recipes/tablecraft/recipes_burger.dm
 	modified:   code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm
 	modified:   code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm
 	modified:   code/modules/holodeck/areas.dm
 	modified:   code/modules/holodeck/turfs.dm
 	modified:   code/modules/jobs/job_types/cargo_service.dm
 	modified:   code/modules/mining/abandoned_crates.dm
 	modified:   code/modules/mining/lavaland/necropolis_chests.dm
 	modified:   code/modules/mining/machine_vending.dm
 	modified:   code/modules/mining/mine_areas.dm
 	modified:   code/modules/mining/mine_turfs.dm
 	modified:   code/modules/mob/dead/observer/observer.dm
 	modified:   code/modules/mob/inventory.dm
 	modified:   code/modules/mob/living/carbon/alien/larva/life.dm
 	modified:   code/modules/mob/living/carbon/carbon.dm
 	modified:   code/modules/mob/living/carbon/carbon_defense.dm
 	modified:   code/modules/mob/living/carbon/human/human_defense.dm
 	modified:   code/modules/mob/living/carbon/human/inventory.dm
 	modified:   code/modules/mob/living/carbon/human/life.dm
 	modified:   code/modules/mob/living/carbon/human/species.dm
 	modified:   code/modules/mob/living/carbon/human/species_types.dm
 	modified:   code/modules/mob/living/carbon/human/update_icons.dm
 	modified:   code/modules/mob/living/carbon/inventory.dm
 	modified:   code/modules/mob/living/carbon/life.dm
 	modified:   code/modules/mob/living/carbon/monkey/punpun.dm
 	modified:   code/modules/mob/living/carbon/say.dm
 	modified:   code/modules/mob/living/carbon/update_icons.dm
 	modified:   code/modules/mob/living/death.dm
 	modified:   code/modules/mob/living/life.dm
 	modified:   code/modules/mob/living/living.dm
 	modified:   code/modules/mob/living/say.dm
 	modified:   code/modules/mob/living/silicon/ai/life.dm
 	modified:   code/modules/mob/living/silicon/login.dm
 	modified:   code/modules/mob/living/silicon/pai/life.dm
 	modified:   code/modules/mob/living/silicon/robot/login.dm
 	modified:   code/modules/mob/living/silicon/robot/robot.dm
 	modified:   code/modules/mob/living/silicon/robot/robot_modules.dm
 	modified:   code/modules/mob/living/simple_animal/friendly/cockroach.dm
 	modified:   code/modules/mob/living/simple_animal/friendly/drone/_drone.dm
 	modified:   code/modules/mob/living/simple_animal/hostile/hostile.dm
 	modified:   code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm
 	modified:   code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
 	modified:   code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm
 	modified:   code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm
 	modified:   code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm
 	modified:   code/modules/mob/living/simple_animal/hostile/skeleton.dm
 	modified:   code/modules/mob/living/simple_animal/simple_animal.dm
 	modified:   code/modules/mob/mob.dm
 	modified:   code/modules/mob/mob_helpers.dm
 	modified:   code/modules/mob/new_player/new_player.dm
 	modified:   code/modules/mob/new_player/sprite_accessories.dm
 	modified:   code/modules/mob/transform_procs.dm
 	modified:   code/modules/modular_computers/computers/item/computer.dm
 	modified:   code/modules/modular_computers/computers/item/computer_components.dm
 	modified:   code/modules/modular_computers/computers/item/computer_damage.dm
 	modified:   code/modules/modular_computers/computers/item/computer_power.dm
 	modified:   code/modules/modular_computers/computers/item/computer_ui.dm
 	modified:   code/modules/modular_computers/computers/item/processor.dm
 	modified:   code/modules/modular_computers/computers/item/tablet.dm
 	modified:   code/modules/modular_computers/computers/machinery/console_presets.dm
 	modified:   code/modules/modular_computers/computers/machinery/modular_computer.dm
 	modified:   code/modules/modular_computers/computers/machinery/modular_console.dm
 	deleted:    code/modules/modular_computers/documentation.dm
 	new file:   code/modules/modular_computers/documentation.md
 	modified:   code/modules/modular_computers/file_system/program.dm
 	modified:   code/modules/modular_computers/file_system/programs/antagonist/dos.dm
 	modified:   code/modules/modular_computers/file_system/programs/antagonist/revelation.dm
 	modified:   code/modules/modular_computers/file_system/programs/card.dm
 	modified:   code/modules/modular_computers/file_system/programs/configurator.dm
 	modified:   code/modules/modular_computers/file_system/programs/file_browser.dm
 	modified:   code/modules/modular_computers/file_system/programs/ntdownloader.dm
 	modified:   code/modules/modular_computers/file_system/programs/ntnrc_client.dm
 	modified:   code/modules/modular_computers/file_system/programs/nttransfer.dm
 	modified:   code/modules/modular_computers/hardware/CPU.dm
 	modified:   code/modules/modular_computers/hardware/_hardware.dm
 	modified:   code/modules/modular_computers/hardware/battery_module.dm
 	modified:   code/modules/modular_computers/hardware/card_slot.dm
 	modified:   code/modules/modular_computers/hardware/hard_drive.dm
 	modified:   code/modules/modular_computers/hardware/network_card.dm
 	modified:   code/modules/modular_computers/hardware/portable_disk.dm
 	modified:   code/modules/modular_computers/hardware/printer.dm
 	modified:   code/modules/modular_computers/hardware/recharger.dm
 	modified:   code/modules/modular_computers/laptop_vendor.dm
 	new file:   code/modules/orbit/orbit.dm
 	modified:   code/modules/power/lighting.dm
 	modified:   code/modules/power/supermatter/supermatter.dm
 	modified:   code/modules/power/tesla/coil.dm
 	modified:   code/modules/power/tesla/energy_ball.dm
 	modified:   code/modules/projectiles/ammunition.dm
 	modified:   code/modules/projectiles/ammunition/ammo_casings.dm
 	modified:   code/modules/projectiles/ammunition/energy.dm
 	modified:   code/modules/projectiles/ammunition/special.dm
 	modified:   code/modules/projectiles/firing.dm
 	modified:   code/modules/projectiles/guns/energy/kinetic_accelerator.dm
 	modified:   code/modules/projectiles/guns/energy/stun.dm
 	modified:   code/modules/projectiles/projectile.dm
 	modified:   code/modules/projectiles/projectile/beams.dm
 	modified:   code/modules/projectiles/projectile/bullets.dm
 	modified:   code/modules/projectiles/projectile/energy.dm
 	modified:   code/modules/projectiles/projectile/reusable.dm
 	modified:   code/modules/projectiles/projectile/special.dm
 	modified:   code/modules/reagents/chemistry/machinery/pandemic.dm
 	modified:   code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
 	modified:   code/modules/reagents/chemistry/reagents/drink_reagents.dm
 	modified:   code/modules/reagents/chemistry/reagents/other_reagents.dm
 	modified:   code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm
 	modified:   code/modules/reagents/chemistry/reagents/toxin_reagents.dm
 	modified:   code/modules/reagents/chemistry/recipes.dm
 	modified:   code/modules/reagents/chemistry/recipes/pyrotechnics.dm
 	modified:   code/modules/reagents/chemistry/recipes/toxins.dm
 	modified:   code/modules/reagents/reagent_containers/glass.dm
 	new file:   code/modules/research/designs/limbgrower_designs.dm
 	modified:   code/modules/research/designs/weapon_designs.dm
 	modified:   code/modules/research/research.dm
 	modified:   code/modules/stock_market/computer.dm
 	modified:   code/modules/surgery/bodyparts/bodyparts.dm
 	modified:   code/modules/surgery/bodyparts/dismemberment.dm
 	modified:   code/modules/surgery/bodyparts/helpers.dm
 	modified:   code/modules/surgery/organs/augments_arms.dm
 	modified:   code/modules/surgery/organs/augments_chest.dm
 	modified:   code/modules/surgery/organs/organ_internal.dm
 	modified:   config/tips.txt
 	modified:   html/changelog.html
 	modified:   html/changelogs/.all_changelog.yml
 	deleted:    html/changelogs/AutoChangeLog-pr-20404.yml
 	deleted:    html/changelogs/AutoChangeLog-pr-20419.yml
 	deleted:    html/changelogs/AutoChangeLog-pr-20447.yml
 	deleted:    html/changelogs/AutoChangeLog-pr-20467.yml
 	deleted:    html/changelogs/AutoChangeLog-pr-20479.yml
 	modified:   icons/effects/blood.dmi
 	new file:   icons/effects/bubblegum.dmi
 	modified:   icons/effects/effects.dmi
 	modified:   icons/mob/hud.dmi
 	modified:   icons/mob/human_parts_greyscale.dmi
 	modified:   icons/mob/inhands/items_lefthand.dmi
 	modified:   icons/mob/inhands/items_righthand.dmi
 	modified:   icons/mob/mask.dmi
 	modified:   icons/mob/mutant_bodyparts.dmi
 	modified:   icons/mob/screen_gen.dmi
 	modified:   icons/mob/screen_midnight.dmi
 	modified:   icons/mob/screen_operative.dmi
 	modified:   icons/mob/screen_plasmafire.dmi
 	modified:   icons/mob/screen_retro.dmi
 	modified:   icons/mob/screen_slimecore.dmi
 	modified:   icons/mob/suit.dmi
 	modified:   icons/mob/uniform.dmi
 	modified:   icons/obj/clothing/glasses.dmi
 	modified:   icons/obj/clothing/masks.dmi
 	modified:   icons/obj/clothing/suits.dmi
 	modified:   icons/obj/food/burgerbread.dmi
 	modified:   icons/obj/food/food.dmi
 	new file:   icons/obj/machines/limbgrower.dmi
 	modified:   icons/obj/modular_tablet.dmi
 	modified:   icons/obj/projectiles.dmi
 	modified:   icons/obj/weapons.dmi
 	modified:   interface/skin.dmf
 	new file:   sound/effects/pop_expl.ogg
2016-09-26 12:40:26 -04:00

312 lines
8.6 KiB
Plaintext

/////////////////////////////////////////////
//// SMOKE SYSTEMS
/////////////////////////////////////////////
/obj/effect/particle_effect/smoke
name = "smoke"
icon = 'icons/effects/96x96.dmi'
icon_state = "smoke"
pixel_x = -32
pixel_y = -32
opacity = 0
layer = FLY_LAYER
anchored = 1
mouse_opacity = 0
animate_movement = 0
var/amount = 4
var/lifetime = 5
var/opaque = 1 //whether the smoke can block the view when in enough amount
/obj/effect/particle_effect/smoke/proc/fade_out(frames = 16)
if(alpha == 0) //Handle already transparent case
return
if(frames == 0)
frames = 1 //We will just assume that by 0 frames, the coder meant "during one frame".
var/step = alpha / frames
for(var/i = 0, i < frames, i++)
alpha -= step
if(alpha < 160)
opacity = 0 //if we were blocking view, we aren't now because we're fading out
stoplag()
/obj/effect/particle_effect/smoke/New()
..()
create_reagents(500)
START_PROCESSING(SSobj, src)
/obj/effect/particle_effect/smoke/Destroy()
STOP_PROCESSING(SSobj, src)
return ..()
/obj/effect/particle_effect/smoke/proc/kill_smoke()
STOP_PROCESSING(SSobj, src)
addtimer(src, "fade_out", 0)
QDEL_IN(src, 10)
/obj/effect/particle_effect/smoke/process()
lifetime--
if(lifetime < 1)
kill_smoke()
return 0
for(var/mob/living/L in range(0,src))
smoke_mob(L)
return 1
/obj/effect/particle_effect/smoke/proc/smoke_mob(mob/living/carbon/C)
if(!istype(C))
return 0
if(lifetime<1)
return 0
if(C.internal != null || C.has_smoke_protection())
return 0
if(C.smoke_delay)
return 0
C.smoke_delay++
addtimer(src, "remove_smoke_delay", 10, FALSE, C)
return 1
/obj/effect/particle_effect/smoke/proc/remove_smoke_delay(mob/living/carbon/C)
if(C)
C.smoke_delay = 0
/obj/effect/particle_effect/smoke/proc/spread_smoke()
var/turf/t_loc = get_turf(src)
var/list/newsmokes = list()
for(var/turf/T in t_loc.GetAtmosAdjacentTurfs())
var/obj/effect/particle_effect/smoke/foundsmoke = locate() in T //Don't spread smoke where there's already smoke!
if(foundsmoke)
continue
for(var/mob/living/L in T)
smoke_mob(L)
var/obj/effect/particle_effect/smoke/S = new type(T)
reagents.copy_to(S, reagents.total_volume)
S.setDir(pick(cardinal))
S.amount = amount-1
S.color = color
S.lifetime = lifetime
if(S.amount>0)
if(opaque)
S.opacity = 1
newsmokes.Add(S)
if(newsmokes.len)
spawn(1) //the smoke spreads rapidly but not instantly
for(var/obj/effect/particle_effect/smoke/SM in newsmokes)
SM.spread_smoke()
/datum/effect_system/smoke_spread
var/amount = 10
effect_type = /obj/effect/particle_effect/smoke
/datum/effect_system/smoke_spread/set_up(radius = 5, loca)
if(isturf(loca))
location = loca
else
location = get_turf(loca)
amount = radius
/datum/effect_system/smoke_spread/start()
if(holder)
location = get_turf(holder)
var/obj/effect/particle_effect/smoke/S = new effect_type(location)
S.amount = amount
if(S.amount)
S.spread_smoke()
/////////////////////////////////////////////
// Bad smoke
/////////////////////////////////////////////
/obj/effect/particle_effect/smoke/bad
lifetime = 8
/obj/effect/particle_effect/smoke/bad/smoke_mob(mob/living/carbon/M)
if(..())
M.drop_item()
M.adjustOxyLoss(1)
M.emote("cough")
return 1
/obj/effect/particle_effect/smoke/bad/CanPass(atom/movable/mover, turf/target, height=0)
if(height==0) return 1
if(istype(mover, /obj/item/projectile/beam))
var/obj/item/projectile/beam/B = mover
B.damage = (B.damage/2)
return 1
/datum/effect_system/smoke_spread/bad
effect_type = /obj/effect/particle_effect/smoke/bad
/////////////////////////////////////////////
// Nanofrost smoke
/////////////////////////////////////////////
/obj/effect/particle_effect/smoke/freezing
name = "nanofrost smoke"
color = "#B2FFFF"
opaque = 0
/datum/effect_system/smoke_spread/freezing
effect_type = /obj/effect/particle_effect/smoke/freezing
var/blast = 0
/datum/effect_system/smoke_spread/freezing/proc/Chilled(atom/A)
if(istype(A,/turf/open))
var/turf/open/T = A
if(T.air)
var/datum/gas_mixture/G = T.air
if(get_dist(T, location) < 2) // Otherwise we'll get silliness like people using Nanofrost to kill people through walls with cold air
G.temperature = 2
T.air_update_turf()
for(var/obj/effect/hotspot/H in T)
qdel(H)
var/list/G_gases = G.gases
if(G_gases["plasma"])
G.assert_gas("n2")
G_gases["n2"][MOLES] += (G_gases["plasma"][MOLES])
G_gases["plasma"][MOLES] = 0
G.garbage_collect()
for(var/obj/machinery/atmospherics/components/unary/U in T)
if(!isnull(U.welded) && !U.welded) //must be an unwelded vent pump or vent scrubber.
U.welded = 1
U.update_icon()
U.visible_message("<span class='danger'>[U] was frozen shut!</span>")
for(var/mob/living/L in T)
L.ExtinguishMob()
for(var/obj/item/Item in T)
Item.extinguish()
/datum/effect_system/smoke_spread/freezing/set_up(radius = 5, loca, blasting = 0)
..()
blast = blasting
/datum/effect_system/smoke_spread/freezing/start()
if(blast)
for(var/turf/T in RANGE_TURFS(2, location))
Chilled(T)
..()
/////////////////////////////////////////////
// Sleep smoke
/////////////////////////////////////////////
/obj/effect/particle_effect/smoke/sleeping
color = "#9C3636"
lifetime = 10
/obj/effect/particle_effect/smoke/sleeping/smoke_mob(mob/living/carbon/M)
if(..())
M.drop_item()
M.Sleeping(max(M.sleeping,10))
M.emote("cough")
return 1
/datum/effect_system/smoke_spread/sleeping
effect_type = /obj/effect/particle_effect/smoke/sleeping
/////////////////////////////////////////////
// Chem smoke
/////////////////////////////////////////////
/obj/effect/particle_effect/smoke/chem
lifetime = 10
/obj/effect/particle_effect/smoke/chem/process()
if(..())
var/turf/T = get_turf(src)
var/fraction = 1/initial(lifetime)
for(var/atom/movable/AM in T)
if(AM.type == src.type)
continue
reagents.reaction(AM, TOUCH, fraction)
reagents.reaction(T, TOUCH, fraction)
return 1
/obj/effect/particle_effect/smoke/chem/smoke_mob(mob/living/carbon/M)
if(lifetime<1)
return 0
if(!istype(M))
return 0
var/mob/living/carbon/C = M
if(C.internal != null || C.has_smoke_protection())
return 0
var/fraction = 1/initial(lifetime)
reagents.copy_to(C, fraction*reagents.total_volume)
reagents.reaction(M, INGEST, fraction)
return 1
/datum/effect_system/smoke_spread/chem
var/obj/chemholder
effect_type = /obj/effect/particle_effect/smoke/chem
/datum/effect_system/smoke_spread/chem/New()
..()
chemholder = PoolOrNew(/obj)
var/datum/reagents/R = new/datum/reagents(500)
chemholder.reagents = R
R.my_atom = chemholder
/datum/effect_system/smoke_spread/chem/Destroy()
qdel(chemholder)
chemholder = null
return ..()
/datum/effect_system/smoke_spread/chem/set_up(datum/reagents/carry = null, radius = 1, loca, silent = 0)
if(istype(loca, /turf/))
location = loca
else
location = get_turf(loca)
amount = radius
carry.copy_to(chemholder, 4*carry.total_volume) //The smoke holds 4 times the total reagents volume for balance purposes.
if(!silent)
var/contained = ""
for(var/reagent in carry.reagent_list)
contained += " [reagent] "
if(contained)
contained = "\[[contained]\]"
var/area/A = get_area(location)
var/where = "[A.name] | [location.x], [location.y]"
var/whereLink = "<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[location.x];Y=[location.y];Z=[location.z]'>[where]</a>"
if(carry.my_atom.fingerprintslast)
var/mob/M = get_mob_by_key(carry.my_atom.fingerprintslast)
var/more = ""
if(M)
more = "(<A HREF='?_src_=holder;adminmoreinfo=\ref[M]'>?</a>) (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[M]'>FLW</A>) "
message_admins("Smoke: ([whereLink])[contained]. Key: [carry.my_atom.fingerprintslast][more].", 0, 1)
log_game("A chemical smoke reaction has taken place in ([where])[contained]. Last associated key is [carry.my_atom.fingerprintslast].")
else
message_admins("Smoke: ([whereLink])[contained]. No associated key.", 0, 1)
log_game("A chemical smoke reaction has taken place in ([where])[contained]. No associated key.")
/datum/effect_system/smoke_spread/chem/start()
var/color = mix_color_from_reagents(chemholder.reagents.reagent_list)
if(holder)
location = get_turf(holder)
var/obj/effect/particle_effect/smoke/chem/S = new effect_type(location)
if(chemholder.reagents.total_volume > 1) // can't split 1 very well
chemholder.reagents.copy_to(S, chemholder.reagents.total_volume)
if(color)
S.color = color // give the smoke color, if it has any to begin with
S.amount = amount
if(S.amount)
S.spread_smoke() //calling process right now so the smoke immediately attacks mobs.