iron foam is now blue steel color just like aluminium foam.

Fixes metal foam from backpack firefighter watertank.
Fixes nanofrost not freezing shut vent scrubbers.
Atmos backpack watertank now starts full of water.
Change foam layer to Objlayer +0.1 so that it is above foammetalstructure so it doesn't hide the dissolving animation and also above tables.
Buff foam and smoke: smoke/foam contains four times the amount of reagents that was inserted in them, for balancing.
Add a little more smoke clouds for tear gas grenade.
Removed the no longer needed max_lifetime smoke var.
Reagent_dispensers (watertank) now show how much reagents they have left upon examination.
Fixed some code formatting in reagent_dispensers.
Fixes nanofrost temperature lowering effect that wasn't working.
Adjusted reagent volume in blob spore smoke because of the buff.
Change to sorium and ldm: effect varies with created volume.
If you are close to a powerful vortex you are thrown, otherwise you are just moved instead.
Vortex blobs now only make you step if you are far from it when reaction hits, otherwise it throws you. The vortex blob range gets +1 to compensate. Also the range and effect depends on the reagent volume which means lower effect for blobspore smoke.
This commit is contained in:
phil235
2015-07-09 19:49:06 +02:00
parent ca88306125
commit d4cdd8eaa1
17 changed files with 135 additions and 78 deletions
+1 -1
View File
@@ -20,7 +20,7 @@ Pipelines + Other Objects -> Pipe network
var/initialize_directions = 0
var/pipe_color
var/obj/item/pipe/stored
var/welded = 0 //Used on pumps and scrubbers
var/welded //Used on pumps and scrubbers
var/global/list/iconsetids = list()
var/global/list/pipeimages = list()
var/datum/pipeline/parent = null
@@ -7,6 +7,8 @@
can_unwrench = 1
welded = 0
var/area/initial_loc
level = 1
var/area_uid
@@ -9,6 +9,8 @@
can_unwrench = 1
welded = 0
var/area/initial_loc
var/id_tag = null
var/frequency = 1439
-2
View File
@@ -514,7 +514,6 @@ Turf and target are seperate in case you want to teleport some distance from a t
// returns the turf located at the map edge in the specified direction relative to A
// used for mass driver
/proc/get_edge_target_turf(var/atom/A, var/direction)
var/turf/target = locate(A.x, A.y, A.z)
if(!A || !target)
return 0
@@ -530,7 +529,6 @@ Turf and target are seperate in case you want to teleport some distance from a t
target = locate(world.maxx, target.y, target.z)
if(direction & WEST)
target = locate(1, target.y, target.z)
return target
// returns turf relative to A in given direction at set range
+4 -7
View File
@@ -94,16 +94,13 @@
return
/atom/movable/Bump(var/atom/A as mob|obj|turf|area, yes)
if(src.throwing)
src.throw_impact(A)
src.throwing = 0
if(throwing)
throw_impact(A)
throwing = 0
if ((A && yes))
A.last_bumped = world.time
A.Bumped(src)
return
..()
return
/atom/movable/proc/forceMove(atom/destination)
if(destination)
+4 -4
View File
@@ -94,16 +94,16 @@
var/turf/location = get_turf(src)
// Create the reagents to put into the air
create_reagents(25)
create_reagents(5)
if(overmind && overmind.blob_reagent_datum)
reagents.add_reagent(overmind.blob_reagent_datum.id, 25)
reagents.add_reagent(overmind.blob_reagent_datum.id, 5)
else
reagents.add_reagent("spore", 25)
reagents.add_reagent("spore", 5)
// Attach the smoke spreader and setup/start it.
S.attach(location)
S.set_up(reagents, 1, 1, location, 15, 1) // only 1-2 smoke cloud
S.set_up(reagents, 1, 1, location, 15, 1) // only 1 smoke cloud
S.start()
ghostize()
@@ -7,7 +7,7 @@
opacity = 0
anchored = 1
density = 0
layer = TURF_LAYER + 0.1
layer = OBJ_LAYER + 0.05 //above table, below windoor/airlock/foamed metal.
mouse_opacity = 0
var/amount = 3
animate_movement = 0
@@ -15,7 +15,7 @@
var/lifetime = 6
/obj/effect/effect/foam/metal/aluminium
/obj/effect/effect/foam/metal
name = "aluminium foam"
metal = 1
icon_state = "mfoam"
@@ -153,7 +153,7 @@
location = get_turf(loca)
amount = round(sqrt(amt / 2), 1)
carry.copy_to(chemholder, carry.total_volume)
carry.copy_to(chemholder, 4*carry.total_volume) //The foam holds 4 times the total reagents volume for balance purposes.
/datum/effect/effect/system/foam_spread/metal/set_up(amt=5, loca, var/datum/reagents/carry = null, var/metaltype)
..()
@@ -166,7 +166,7 @@
else
var/obj/effect/effect/foam/F = PoolOrNew(foamtype, location)
var/foamcolor = mix_color_from_reagents(chemholder.reagents.reagent_list)
chemholder.reagents.copy_to(F, chemholder.reagents.total_volume/amount) //how much reagents each foam cell holds
chemholder.reagents.copy_to(F, chemholder.reagents.total_volume/amount)
F.color = foamcolor
F.amount = amount
F.metal = metal
@@ -149,11 +149,10 @@
icon = 'icons/effects/chemsmoke.dmi'
icon_state = ""
lifetime = 10
var/max_lifetime = 10
/obj/effect/effect/smoke/chem/process()
if(..())
var/fraction = 1/max_lifetime
var/fraction = 1/initial(lifetime)
for(var/obj/O in range(1,src))
if(O.type == src.type)
continue
@@ -173,7 +172,7 @@
return 0
if(!istype(M))
return 0
var/fraction = 1/max_lifetime
var/fraction = 1/initial(lifetime)
reagents.reaction(M, TOUCH, fraction)
lifetime--
return 1
@@ -207,7 +206,7 @@
location = get_turf(loca)
if(direct)
direction = direct
carry.copy_to(chemholder, carry.total_volume)
carry.copy_to(chemholder, 4*carry.total_volume) //The smoke holds 4 times the total reagents volume for balance purposes.
if(!silent)
var/contained = ""
@@ -256,8 +255,6 @@
else
S.steps = pick(0,1,1,1,2,2,2,3)
S.max_lifetime = S.lifetime
if(chemholder.reagents.total_volume > 1) // can't split 1 very well
chemholder.reagents.copy_to(S, chemholder.reagents.total_volume/number) // copy reagents to each smoke, divide evenly
@@ -355,11 +355,11 @@
var/obj/item/weapon/reagent_containers/glass/beaker/large/B1 = new(src)
var/obj/item/weapon/reagent_containers/glass/beaker/large/B2 = new(src)
B1.reagents.add_reagent("condensedcapsaicin", 70)
B1.reagents.add_reagent("potassium", 30)
B2.reagents.add_reagent("phosphorus", 30)
B2.reagents.add_reagent("sugar", 30)
B1.reagents.add_reagent("condensedcapsaicin", 40)
B1.reagents.add_reagent("condensedcapsaicin", 60)
B1.reagents.add_reagent("potassium", 40)
B2.reagents.add_reagent("phosphorus", 40)
B2.reagents.add_reagent("sugar", 40)
B1.reagents.add_reagent("condensedcapsaicin", 20)
beakers += B1
beakers += B2
@@ -191,6 +191,10 @@
item_state = "waterbackpackatmos"
volume = 200
/obj/item/weapon/watertank/atmos/New()
..()
reagents.add_reagent("water", 200)
/obj/item/weapon/watertank/atmos/make_noz()
return new /obj/item/weapon/extinguisher/mini/nozzle(src)
@@ -294,8 +298,7 @@
F.amount = 0
metal_synthesis_cooldown++
spawn(100)
if(src)
metal_synthesis_cooldown--
metal_synthesis_cooldown--
else
user << "<span class='warning'>Metal foam mix is still being synthesized...</span>"
return
@@ -333,7 +336,7 @@
var/turf/simulated/T = A
if(T.air)
var/datum/gas_mixture/G = T.air
if(get_dist(T, src) < 2) // Otherwise we'll get silliness like people using Nanofrost to kill people through walls with cold 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)
@@ -341,10 +344,11 @@
if(G.toxins)
G.nitrogen += (G.toxins)
G.toxins = 0
for(var/obj/machinery/atmospherics/unary/vent_pump/V in T)
V.welded = 1
V.update_icon()
V.visible_message("<span class='danger'>[V] was frozen shut!</span>")
for(var/obj/machinery/atmospherics/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)
@@ -1177,7 +1177,7 @@
if(!H.has_smoke_protection())
for(var/obj/effect/effect/smoke/chem/S in range(1, H))
if(S.reagents.total_volume && S.lifetime)
var/fraction = 1/S.max_lifetime
var/fraction = 1/initial(S.lifetime)
S.reagents.reaction(H,INGEST, fraction)
var/amount = round(S.reagents.total_volume*fraction,0.1)
S.reagents.copy_to(H, amount)
+1 -1
View File
@@ -73,7 +73,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,31 @@
/datum/reagent/blob/proc/reagent_vortex(var/mob/living/M as mob, var/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(X && !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(var/mob/living/M as mob)
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(var/turf/simulated/T, var/setting_type, var/range, var/pull_times)
/datum/chemical_reaction/proc/goonchem_vortex(var/turf/simulated/T, var/setting_type, var/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 && !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(var/datum/reagents/holder, var/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(var/datum/reagents/holder, var/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(var/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(var/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)
+14
View File
@@ -0,0 +1,14 @@
author: phil
delete-after: True
# Any changes you've made. See valid prefix list above.
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
# SCREW THIS UP AND IT WON'T WORK.
# Also, this gets changed to [] after reading. Just remove the brackets when you add new shit.
# Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog.
changes:
- tweak: "Smoke and foam touch reactions gets buffed."
- rscadd: "Reagent dispensers (watertank, fueltank) tells you how much reagents they have left when examined."
- tweak: "Liquid dark matter blob spore smoke now cannot throw you. The effects of sorium, blob sorium, liquid dark matter and blob liquid dark matter are now scaled by their volume. Sorium/LDM blob's touch now throws the mobs who are close but simply moves the mobs that are further away."