Slipping Refactor and Floors
@@ -118,7 +118,7 @@
|
||||
|
||||
perform_exposure()
|
||||
|
||||
if(location.wet) location.wet = 0
|
||||
if(location.wet) location.wet = TURF_DRY
|
||||
|
||||
if(bypassing)
|
||||
icon_state = "3"
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)]"
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 98 KiB After Width: | Height: | Size: 100 KiB |
|
Before Width: | Height: | Size: 314 KiB After Width: | Height: | Size: 329 KiB |