Merge pull request #10493 from phil235/SmokeFoamBuff

Foam&Smoke buff, some tweaks to sorium/ldm effect, plus some fixes.
This commit is contained in:
Remie Richards
2015-07-18 03:45:38 +01:00
16 changed files with 136 additions and 77 deletions
+1 -1
View File
@@ -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
+22 -9
View File
@@ -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"
+27 -18
View File
@@ -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)