mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-25 14:08:31 +01:00
Merge pull request #10493 from phil235/SmokeFoamBuff
Foam&Smoke buff, some tweaks to sorium/ldm effect, plus some fixes.
This commit is contained in:
@@ -71,7 +71,7 @@
|
||||
if(!has_smoke_protection())
|
||||
for(var/obj/effect/effect/smoke/chem/S in range(1, src))
|
||||
if(S.reagents.total_volume && S.lifetime)
|
||||
var/fraction = 1/S.max_lifetime
|
||||
var/fraction = 1/initial(S.lifetime)
|
||||
S.reagents.reaction(src,INGEST, fraction)
|
||||
var/amount = round(S.reagents.total_volume*fraction,0.1)
|
||||
S.reagents.copy_to(src, amount)
|
||||
|
||||
@@ -173,16 +173,33 @@
|
||||
|
||||
/datum/reagent/blob/proc/reagent_vortex(mob/living/M, setting_type)
|
||||
var/turf/pull = get_turf(M)
|
||||
for(var/atom/movable/X in range(4,pull))
|
||||
if(istype(X, /atom/movable))
|
||||
if((X) && !X.anchored)
|
||||
if(setting_type)
|
||||
step_away(X,pull)
|
||||
step_away(X,pull)
|
||||
step_away(X,pull)
|
||||
step_away(X,pull)
|
||||
var/range_power = Clamp(round(volume/5, 1), 1, 5)
|
||||
for(var/atom/movable/X in range(range_power,pull))
|
||||
if(istype(X, /obj/effect))
|
||||
continue
|
||||
if(!X.anchored)
|
||||
var/distance = get_dist(X, pull)
|
||||
var/moving_power = max(range_power - distance, 1)
|
||||
spawn(0)
|
||||
if(moving_power > 2) //if the vortex is powerful and we're close, we get thrown
|
||||
if(setting_type)
|
||||
var/atom/throw_target = get_edge_target_turf(X, get_dir(X, get_step_away(X, pull)))
|
||||
var/throw_range = 5 - distance
|
||||
X.throw_at(throw_target, throw_range, 1)
|
||||
else
|
||||
X.throw_at(pull, distance, 1)
|
||||
else
|
||||
X.throw_at(pull)
|
||||
if(setting_type)
|
||||
for(var/i = 0, i < moving_power, i++)
|
||||
sleep(2)
|
||||
if(!step_away(X, pull))
|
||||
break
|
||||
else
|
||||
for(var/i = 0, i < moving_power, i++)
|
||||
sleep(2)
|
||||
if(!step_towards(X, pull))
|
||||
break
|
||||
|
||||
|
||||
/datum/reagent/blob/proc/send_message(mob/living/M)
|
||||
var/totalmessage = message
|
||||
|
||||
@@ -78,15 +78,28 @@
|
||||
for(var/j = 1, j <= rand(1, 3), j++)
|
||||
step(C, pick(NORTH,SOUTH,EAST,WEST))
|
||||
|
||||
/datum/chemical_reaction/proc/goonchem_vortex(turf/simulated/T, setting_type, range, pull_times)
|
||||
/datum/chemical_reaction/proc/goonchem_vortex(turf/simulated/T, setting_type, range)
|
||||
for(var/atom/movable/X in orange(range, T))
|
||||
if(istype(X, /obj/effect))
|
||||
continue //stop pulling smoke and hotspots please
|
||||
if(istype(X, /atom/movable))
|
||||
if((X) && !X.anchored)
|
||||
if(setting_type)
|
||||
for(var/i = 0, i < pull_times, i++)
|
||||
step_away(X,T)
|
||||
continue
|
||||
if(!X.anchored)
|
||||
var/distance = get_dist(X, T)
|
||||
var/moving_power = max(range - distance, 1)
|
||||
spawn(0) //so everything moves at the same time.
|
||||
if(moving_power > 2) //if the vortex is powerful and we're close, we get thrown
|
||||
if(setting_type)
|
||||
var/atom/throw_target = get_edge_target_turf(X, get_dir(X, get_step_away(X, T)))
|
||||
X.throw_at(throw_target, moving_power, 1)
|
||||
else
|
||||
X.throw_at(T, moving_power, 1)
|
||||
else
|
||||
for(var/i = 0, i < pull_times, i++)
|
||||
step_towards(X,T)
|
||||
if(setting_type)
|
||||
for(var/i = 0, i < moving_power, i++)
|
||||
sleep(2)
|
||||
if(!step_away(X, T))
|
||||
break
|
||||
else
|
||||
for(var/i = 0, i < moving_power, i++)
|
||||
sleep(2)
|
||||
if(!step_towards(X, T))
|
||||
break
|
||||
@@ -124,18 +124,21 @@
|
||||
return
|
||||
holder.remove_reagent("sorium", created_volume)
|
||||
var/turf/simulated/T = get_turf(holder.my_atom)
|
||||
goonchem_vortex(T, 1, 5, 6)
|
||||
var/range = Clamp(sqrt(created_volume), 1, 6)
|
||||
goonchem_vortex(T, 1, range)
|
||||
|
||||
/datum/chemical_reaction/sorium_vortex
|
||||
name = "sorium_vortex"
|
||||
id = "sorium_vortex"
|
||||
result = null
|
||||
result_amount = 1
|
||||
required_reagents = list("sorium" = 1)
|
||||
required_temp = 474
|
||||
|
||||
/datum/chemical_reaction/sorium_vortex/on_reaction(datum/reagents/holder, created_volume)
|
||||
var/turf/simulated/T = get_turf(holder.my_atom)
|
||||
goonchem_vortex(T, 1, 5, 6)
|
||||
var/range = Clamp(sqrt(created_volume), 1, 6)
|
||||
goonchem_vortex(T, 1, range)
|
||||
|
||||
|
||||
/datum/chemical_reaction/liquid_dark_matter
|
||||
@@ -150,18 +153,21 @@
|
||||
return
|
||||
holder.remove_reagent("liquid_dark_matter", created_volume)
|
||||
var/turf/simulated/T = get_turf(holder.my_atom)
|
||||
goonchem_vortex(T, 0, 5, 6)
|
||||
var/range = Clamp(sqrt(created_volume), 1, 6)
|
||||
goonchem_vortex(T, 0, range)
|
||||
|
||||
/datum/chemical_reaction/ldm_vortex
|
||||
name = "LDM Vortex"
|
||||
id = "ldm_vortex"
|
||||
result = null
|
||||
result_amount = 1
|
||||
required_reagents = list("liquid_dark_matter" = 1)
|
||||
required_temp = 474
|
||||
|
||||
/datum/chemical_reaction/ldm_vortex/on_reaction(datum/reagents/holder, created_volume)
|
||||
var/turf/simulated/T = get_turf(holder.my_atom)
|
||||
goonchem_vortex(T, 0, 5, 6)
|
||||
var/range = Clamp(sqrt(created_volume/2), 1, 6)
|
||||
goonchem_vortex(T, 0, range)
|
||||
|
||||
/datum/chemical_reaction/flash_powder
|
||||
name = "Flash powder"
|
||||
|
||||
@@ -49,6 +49,10 @@
|
||||
if (N)
|
||||
amount_per_transfer_from_this = N
|
||||
|
||||
/obj/structure/reagent_dispensers/examine(mob/user)
|
||||
..()
|
||||
user << "It contains [reagents.total_volume] units."
|
||||
|
||||
//Dispensers
|
||||
/obj/structure/reagent_dispensers/watertank
|
||||
name = "watertank"
|
||||
@@ -56,9 +60,10 @@
|
||||
icon = 'icons/obj/objects.dmi'
|
||||
icon_state = "watertank"
|
||||
amount_per_transfer_from_this = 10
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("water",1000)
|
||||
|
||||
/obj/structure/reagent_dispensers/watertank/New()
|
||||
..()
|
||||
reagents.add_reagent("water",1000)
|
||||
|
||||
/obj/structure/reagent_dispensers/watertank/ex_act(severity, target)
|
||||
switch(severity)
|
||||
@@ -89,9 +94,10 @@
|
||||
icon = 'icons/obj/objects.dmi'
|
||||
icon_state = "weldtank"
|
||||
amount_per_transfer_from_this = 10
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("welding_fuel",1000)
|
||||
|
||||
/obj/structure/reagent_dispensers/fueltank/New()
|
||||
..()
|
||||
reagents.add_reagent("welding_fuel",1000)
|
||||
|
||||
|
||||
/obj/structure/reagent_dispensers/fueltank/bullet_act(obj/item/projectile/Proj)
|
||||
@@ -127,9 +133,10 @@
|
||||
anchored = 1
|
||||
density = 0
|
||||
amount_per_transfer_from_this = 45
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("condensedcapsaicin",1000)
|
||||
|
||||
/obj/structure/reagent_dispensers/peppertank/New()
|
||||
..()
|
||||
reagents.add_reagent("condensedcapsaicin",1000)
|
||||
|
||||
|
||||
/obj/structure/reagent_dispensers/water_cooler
|
||||
@@ -141,9 +148,10 @@
|
||||
possible_transfer_amounts = null
|
||||
anchored = 1
|
||||
var/cups = 50
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("water",500)
|
||||
|
||||
/obj/structure/reagent_dispensers/water_cooler/New()
|
||||
..()
|
||||
reagents.add_reagent("water",500)
|
||||
|
||||
/obj/structure/reagent_dispensers/water_cooler/attack_hand(mob/living/carbon/human/user)
|
||||
if((!istype(user)) || (user.stat))
|
||||
@@ -170,9 +178,10 @@
|
||||
icon = 'icons/obj/objects.dmi'
|
||||
icon_state = "beertankTEMP"
|
||||
amount_per_transfer_from_this = 10
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("beer",1000)
|
||||
|
||||
/obj/structure/reagent_dispensers/beerkeg/New()
|
||||
..()
|
||||
reagents.add_reagent("beer",1000)
|
||||
|
||||
/obj/structure/reagent_dispensers/beerkeg/blob_act()
|
||||
explosion(src.loc,0,3,5,7,10)
|
||||
@@ -186,6 +195,6 @@
|
||||
amount_per_transfer_from_this = 10
|
||||
anchored = 1
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("virusfood", 1000)
|
||||
/obj/structure/reagent_dispensers/virusfood/New()
|
||||
..()
|
||||
reagents.add_reagent("virusfood", 1000)
|
||||
|
||||
Reference in New Issue
Block a user