Slipping Refactor and Floors

This commit is contained in:
Fox-McCloud
2016-01-04 21:22:59 -05:00
parent 103372e92b
commit 4221d033ab
25 changed files with 194 additions and 83 deletions
+1 -1
View File
@@ -118,7 +118,7 @@
perform_exposure()
if(location.wet) location.wet = 0
if(location.wet) location.wet = TURF_DRY
if(bypassing)
icon_state = "3"
+6
View File
@@ -174,3 +174,9 @@
#define MANIFEST_ERROR_NAME 1
#define MANIFEST_ERROR_COUNT 2
#define MANIFEST_ERROR_ITEM 4
//Turf wet states
#define TURF_DRY 0
#define TURF_WET_WATER 1
#define TURF_WET_LUBE 2
#define TURF_WET_ICE 3
+6
View File
@@ -1233,6 +1233,12 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine
cost = 10
containername = "replacement lights crate"
/datum/supply_packs/misc/noslipfloor
name = "High-traction Floor Tiles"
contains = list(/obj/item/stack/tile/noslip/loaded)
cost = 20
containername = "high-traction floor tiles"
///////////// Costumes
/datum/supply_packs/misc/costume
+1
View File
@@ -39,6 +39,7 @@
/obj/item/toy/toy_xeno = 2,
/obj/random/figure = 16,
/obj/random/plushie = 7,
/obj/item/stack/tile/fakespace/loaded = 2,
)
/obj/machinery/computer/arcade/power_change()
@@ -70,4 +70,26 @@
throw_range = 7
flags = CONDUCT
turf_type = /turf/simulated/floor/plasteel
mineralType = "metal"
mineralType = "metal"
/obj/item/stack/tile/fakespace
name = "astral carpet"
singular_name = "astral carpet"
desc = "A piece of carpet with a convincing star pattern."
icon_state = "tile_space"
turf_type = /turf/simulated/floor/fakespace
/obj/item/stack/tile/fakespace/loaded
amount = 30
//High-traction
/obj/item/stack/tile/noslip
name = "high-traction floor tile"
singular_name = "high-traction floor tile"
desc = "A high-traction floor tile. It feels rubbery in your hand."
icon_state = "tile_noslip"
turf_type = /turf/simulated/floor/noslip
origin_tech = "materials=3"
/obj/item/stack/tile/noslip/loaded
amount = 20
@@ -116,6 +116,7 @@
/obj/item/clothing/under/syndicate/tacticool,
/obj/item/weapon/storage/box/fakesyndiesuit,
/obj/item/toy/crossbow/tommygun,
/obj/item/stack/tile/fakespace/loaded,
)
if(!ispath(gift_type,/obj/item)) return
+1 -1
View File
@@ -80,7 +80,7 @@
handle_rotation()
if(istype(src.loc, /turf/simulated))
var/turf/simulated/T = src.loc
if(T.wet == 2) //Lube! Fall off!
if(T.wet == TURF_WET_LUBE) //Lube! Fall off!
playsound(src, 'sound/misc/slip.ogg', 50, 1, -3)
buckled_mob.Stun(7)
buckled_mob.Weaken(7)
+18 -10
View File
@@ -17,24 +17,32 @@
/turf/simulated/proc/burn_tile()
/turf/simulated/proc/MakeSlippery(var/wet_setting = 1) // 1 = Water, 2 = Lube
/turf/simulated/proc/MakeSlippery(wet_setting = TURF_WET_WATER) // 1 = Water, 2 = Lube, 3 = Ice
if(wet >= wet_setting)
return
wet = wet_setting
if(wet_setting == 1)
if(wet_setting != TURF_DRY)
if(wet_overlay)
overlays -= wet_overlay
wet_overlay = null
wet_overlay = image('icons/effects/water.dmi', src, "wet_floor_static")
var/turf/simulated/floor/F = src
if(istype(F))
wet_overlay = image('icons/effects/water.dmi', src, "wet_floor_static")
else
wet_overlay = image('icons/effects/water.dmi', src, "wet_static")
overlays += wet_overlay
spawn(rand(790, 820)) // Purely so for visual effect
if(!istype(src, /turf/simulated)) //Because turfs don't get deleted, they change, adapt, transform, evolve and deform. they are one and they are all.
return
if(wet > wet_setting) return
wet = 0
if(wet_overlay)
overlays -= wet_overlay
MakeDry(wet_setting)
/turf/simulated/proc/MakeDry(wet_setting = TURF_WET_WATER)
if(wet > wet_setting)
return
wet = TURF_DRY
if(wet_overlay)
overlays -= wet_overlay
/turf/simulated/proc/AddTracks(var/typepath,var/bloodDNA,var/comingdir,var/goingdir,var/bloodcolor="#A10808")
var/obj/effect/decal/cleanable/blood/tracks/tracks = locate(typepath) in src
@@ -94,7 +102,7 @@
if (noslip)
return // no slipping while sitting in a chair, plz
switch (src.wet)
if(1)
if(TURF_WET_WATER)
if ((M.m_intent == "run") && !(istype(M:shoes, /obj/item/clothing/shoes) && M.shoes.flags&NOSLIP))
M.stop_pulling()
step(M, M.dir)
@@ -107,7 +115,7 @@
return
if(2) //lube //can cause infinite loops - needs work
if(TURF_WET_LUBE) //lube //can cause infinite loops - needs work
if(!M.buckled)
M.stop_pulling()
step(M, M.dir)
@@ -120,7 +128,7 @@
playsound(src, 'sound/misc/slip.ogg', 50, 1, -3)
M.Weaken(7)
if(3) // Ice
if(TURF_WET_ICE) // Ice
if ((M.m_intent == "run") && !(istype(M:shoes, /obj/item/clothing/shoes) && M:shoes.flags&NOSLIP) && prob(30))
M.stop_pulling()
step(M, M.dir)
+11 -1
View File
@@ -82,4 +82,14 @@
/turf/simulated/floor/carpet/burn_tile()
burnt = 1
update_icon()
update_icon()
/turf/simulated/floor/fakespace
icon = 'icons/turf/space.dmi'
icon_state = "0"
floor_tile = /obj/item/stack/tile/fakespace
broken_states = list("damaged")
/turf/simulated/floor/fakespace/New()
..()
icon_state = "[rand(0,25)]"
+12 -1
View File
@@ -54,4 +54,15 @@
/turf/simulated/floor/beach/water/New()
..()
overlays += image("icon"='icons/misc/beach.dmi',"icon_state"="water5","layer"=MOB_LAYER+0.1)
overlays += image("icon"='icons/misc/beach.dmi',"icon_state"="water5","layer"=MOB_LAYER+0.1)
/turf/simulated/floor/noslip
name = "high-traction floor"
icon_state = "noslip"
floor_tile = /obj/item/stack/tile/noslip
broken_states = list("noslip-damaged1","noslip-damaged2","noslip-damaged3")
burnt_states = list("noslip-scorched1","noslip-scorched2")
slowdown = -0.3
/turf/simulated/floor/noslip/MakeSlippery()
return
+1
View File
@@ -4,6 +4,7 @@
luminosity = 1
var/intact = 1
var/slowdown = 0 //negative for faster, positive for slower
//Properties for open tiles (/floor)
var/oxygen = 0
@@ -57,6 +57,16 @@
put_on_delay = 50
species_restricted = null
/obj/item/clothing/shoes/galoshes/dry
name = "absorbent galoshes"
desc = "A pair of purple rubber boots, designed to prevent slipping on wet surfaces while also drying them."
icon_state = "galoshes_dry"
/obj/item/clothing/shoes/galoshes/dry/step_action()
var/turf/simulated/t_loc = get_turf(src)
if(istype(t_loc) && t_loc.wet)
t_loc.MakeDry(TURF_WET_WATER)
/obj/item/clothing/shoes/clown_shoes
desc = "The prankster's standard-issue clowning shoes. Damn they're huge!"
name = "clown shoes"
@@ -925,6 +925,50 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75
if(!uses)
qdel(src)
/obj/item/stack/tile/bluespace
name = "bluespace floor tile"
singular_name = "floor tile"
desc = "Through a series of micro-teleports these tiles let people move at incredible speeds"
icon_state = "tile-bluespace"
w_class = 3
force = 6
materials = list(MAT_METAL=500)
throwforce = 10
throw_speed = 3
throw_range = 7
flags = CONDUCT
max_amount = 60
turf_type = /turf/simulated/floor/bluespace
/turf/simulated/floor/bluespace
slowdown = -1
icon_state = "bluespace"
desc = "Through a series of micro-teleports these tiles let people move at incredible speeds"
floor_tile = /obj/item/stack/tile/bluespace
/obj/item/stack/tile/sepia
name = "sepia floor tile"
singular_name = "floor tile"
desc = "Time seems to flow very slowly around these tiles"
icon_state = "tile-sepia"
w_class = 3
force = 6
materials = list(MAT_METAL=500)
throwforce = 10
throw_speed = 3
throw_range = 7
flags = CONDUCT
max_amount = 60
turf_type = /turf/simulated/floor/sepia
/turf/simulated/floor/sepia
slowdown = 2
icon_state = "sepia"
desc = "Time seems to flow very slowly around these tiles"
floor_tile = /obj/item/stack/tile/sepia
/obj/effect/goleRUNe
anchored = 1
+2 -1
View File
@@ -236,7 +236,9 @@
src << "\blue You're pinned to a wall by [mob.pinned[1]]!"
return 0
var/turf/T = mob.loc
move_delay = world.time//set move delay
move_delay += T.slowdown
mob.last_movement = world.time
mob.last_move_intent = world.time + 10
switch(mob.m_intent)
@@ -265,7 +267,6 @@
var/mob/M = L[1]
if(M)
if ((get_dist(mob, M) <= 1 || M.loc == mob.loc))
var/turf/T = mob.loc
. = ..()
if (isturf(M.loc))
var/diag = get_dir(mob, M)
+2 -6
View File
@@ -1016,12 +1016,8 @@ datum/reagent/haloperidol/on_mob_life(var/mob/living/M as mob)
if (!istype(T)) return
src = null
if(volume >= 1)
if(T.wet >= 2) //Clears lube! Fight back against the slipping, and WIN!
T.wet = 0
if(T.wet_overlay)
T.overlays -= T.wet_overlay
T.wet_overlay = null
return
if(istype(T) && T.wet)
T.MakeDry(TURF_WET_LUBE)
/datum/reagent/degreaser/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
@@ -196,4 +196,11 @@
result = "lsd"
required_reagents = list("diethylamine" = 1, "fungus" = 1)
result_amount = 3
mix_message = "The mixture turns a rather unassuming color and settles."
mix_message = "The mixture turns a rather unassuming color and settles."
drying_agent
name = "Drying agent"
id = "drying_agent"
result = "drying_agent"
required_reagents = list("plasma" = 2, "ethanol" = 1, "sodium" = 1)
result_amount = 3
@@ -450,11 +450,25 @@
Z.loc = get_turf(holder.my_atom)
Z.announce_to_ghosts()
//Bluespace
slimefloor2
name = "Bluespace Floor"
id = "m_floor2"
result = null
required_reagents = list("blood" = 1)
result_amount = 1
required_container = /obj/item/slime_extract/bluespace
required_other = 1
on_reaction(datum/reagents/holder, created_volume)
feedback_add_details("slime_cores_used","[type]")
var/obj/item/stack/tile/bluespace/P = new /obj/item/stack/tile/bluespace
P.amount = 25
P.loc = get_turf(holder.my_atom)
slimecrystal
name = "Slime Crystal"
id = "m_crystal"
result = null
required_reagents = list("blood" = 1)
required_reagents = list("plasma" = 1)
result_amount = 1
required_container = /obj/item/slime_extract/bluespace
required_other = 1
@@ -489,20 +503,23 @@
feedback_add_details("slime_cores_used","[replacetext(name," ","_")]")
var/obj/item/device/camera/P = new /obj/item/device/camera
P.loc = get_turf(holder.my_atom)
var/obj/item/device/camera_film/Z = new /obj/item/device/camera_film
Z.loc = get_turf(holder.my_atom)
slimefilm
name = "Slime Film"
id = "m_film"
slimefloor
name = "Sepia Floor"
id = "m_floor"
result = null
required_reagents = list("blood" = 1)
result_amount = 1
required_container = /obj/item/slime_extract/sepia
required_other = 1
on_reaction(var/datum/reagents/holder)
feedback_add_details("slime_cores_used","[replacetext(name," ","_")]")
var/obj/item/device/camera_film/P = new /obj/item/device/camera_film
on_reaction(datum/reagents/holder)
feedback_add_details("slime_cores_used","[type]")
var/obj/item/stack/tile/sepia/P = new /obj/item/stack/tile/sepia
P.amount = 25
P.loc = get_turf(holder.my_atom)
//Pyrite
slimepaint
name = "Slime Paint"
@@ -281,21 +281,7 @@
if (!istype(T)) return
src = null
if(volume >= 3)
if(T.wet >= 1) return
T.wet = 1
if(T.wet_overlay)
T.overlays -= T.wet_overlay
T.wet_overlay = null
T.wet_overlay = image('icons/effects/water.dmi',T,"wet_floor")
T.overlays += T.wet_overlay
spawn(800)
if (!istype(T)) return
if(T.wet >= 2) return
T.wet = 0
if(T.wet_overlay)
T.overlays -= T.wet_overlay
T.wet_overlay = null
T.MakeSlippery()
var/hotspot = (locate(/obj/effect/hotspot) in T)
if(hotspot)
var/datum/gas_mixture/lowertemp = T.remove_air( T:air:total_moles() )
@@ -31,21 +31,7 @@
if (!istype(T)) return
src = null
if(volume >= 3)
if(T.wet >= 1) return
T.wet = 1
if(T.wet_overlay)
T.overlays -= T.wet_overlay
T.wet_overlay = null
T.wet_overlay = image('icons/effects/water.dmi',T,"wet_floor")
T.overlays += T.wet_overlay
spawn(800)
if (!istype(T)) return
if(T.wet >= 2) return
T.wet = 0
if(T.wet_overlay)
T.overlays -= T.wet_overlay
T.wet_overlay = null
T.MakeSlippery()
for(var/mob/living/carbon/slime/M in T)
M.apply_water()
@@ -91,15 +77,7 @@
if (!istype(T)) return
src = null
if(volume >= 1)
if(T.wet >= 2) return
T.wet = 2
spawn(800)
if (!istype(T)) return
T.wet = 0
if(T.wet_overlay)
T.overlays -= T.wet_overlay
T.wet_overlay = null
return
T.MakeSlippery(TURF_WET_LUBE)
/datum/reagent/space_cleaner
@@ -350,6 +328,23 @@
reagent_state = LIQUID
color = "#FFFFD6" // very very light yellow
/datum/reagent/drying_agent
name = "Drying agent"
id = "drying_agent"
description = "Can be used to dry things."
reagent_state = LIQUID
color = "#A70FFF"
/datum/reagent/drying_agent/reaction_turf(turf/simulated/T, reac_volume)
if(istype(T) && T.wet)
T.MakeDry(TURF_WET_WATER)
/datum/reagent/drying_agent/reaction_obj(obj/O, reac_volume)
if(istype(O, /obj/item/clothing/shoes/galoshes))
var/t_loc = get_turf(O)
qdel(O)
new /obj/item/clothing/shoes/galoshes/dry(t_loc)
/*
/datum/reagent/vaccine
//data must contain virus type
+2 -13
View File
@@ -556,19 +556,8 @@
if(istype(mob.loc,/turf/simulated))
var/turf/simulated/T = mob.loc
if(T.wet < 1)
T.wet = 1
if(T.wet_overlay)
T.overlays -= T.wet_overlay
T.wet_overlay = null
T.wet_overlay = image('icons/effects/water.dmi',T,"wet_floor")
T.overlays += T.wet_overlay
spawn(800)
if (istype(T) && T.wet < 2)
T.wet = 0
if(T.wet_overlay)
T.overlays -= T.wet_overlay
T.wet_overlay = null
if(T.wet < TURF_WET_WATER)
T.MakeSlippery()
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 98 KiB

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 314 KiB

After

Width:  |  Height:  |  Size: 329 KiB