Bleeding edgy refresh (#303)
* not code stuff * other things * global vars, defines, helpers * onclick hud stuff, orphans, world.dm * controllers and datums * game folder * everything not client/mobs in modules * client folder * stage 1 mob stuff * simple animal things * silicons * carbon things * ayylmaos and monkeys * hyoomahn * icons n shit * sprite fixes * compile fixes * some fixes I cherrypicked. * qdel fixes * forgot brain refractors
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
//used to optimize map expansion
|
||||
/turf/basic/New()
|
||||
|
||||
/turf/basic/ChangeTurf(var/T)
|
||||
new T(src)
|
||||
var/static/warned
|
||||
if(!warned)
|
||||
warned = TRUE
|
||||
CRASH("Basic ChangeTurf")
|
||||
@@ -29,15 +29,13 @@
|
||||
|
||||
/turf/closed/indestructible/splashscreen
|
||||
name = "Space Station 13"
|
||||
icon = 'icons/misc/fullscreen.dmi'
|
||||
icon_state = "title1"
|
||||
icon = 'config/title_screens/images/blank.png'
|
||||
icon_state = ""
|
||||
layer = FLY_LAYER
|
||||
var/titlescreen = TITLESCREEN
|
||||
|
||||
/turf/closed/indestructible/splashscreen/Initialize()
|
||||
/turf/closed/indestructible/splashscreen/New()
|
||||
SStitle.title_screen = src
|
||||
..()
|
||||
if(titlescreen)
|
||||
icon_state = pick("title1","title2","title3","title4","title5")
|
||||
|
||||
/turf/closed/indestructible/riveted
|
||||
icon = 'icons/turf/walls/riveted.dmi'
|
||||
|
||||
@@ -111,7 +111,7 @@
|
||||
|
||||
/turf/open/freon_gas_act()
|
||||
for(var/obj/I in contents)
|
||||
if(!I.is_frozen) //let it go
|
||||
if(!HAS_SECONDARY_FLAG(I, FROZEN)) //let it go
|
||||
I.make_frozen_visual()
|
||||
for(var/mob/living/L in contents)
|
||||
if(L.bodytemperature >= 10)
|
||||
@@ -153,8 +153,8 @@
|
||||
if(C.m_intent == MOVE_INTENT_WALK && (lube&NO_SLIP_WHEN_WALKING))
|
||||
return 0
|
||||
if(!(lube&SLIDE_ICE))
|
||||
C << "<span class='notice'>You slipped[ O ? " on the [O.name]" : ""]!</span>"
|
||||
C.attack_log += "\[[time_stamp()]\] <font color='orange'>Slipped[O ? " on the [O.name]" : ""][(lube&SLIDE)? " (LUBE)" : ""]!</font>"
|
||||
to_chat(C, "<span class='notice'>You slipped[ O ? " on the [O.name]" : ""]!</span>")
|
||||
C.log_message("<font color='orange'>Slipped[O ? " on the [O.name]" : ""][(lube&SLIDE)? " (LUBE)" : ""]!</font>", INDIVIDUAL_ATTACK_LOG)
|
||||
if(!(lube&SLIDE_ICE))
|
||||
playsound(C.loc, 'sound/misc/slip.ogg', 50, 1, -3)
|
||||
|
||||
@@ -225,7 +225,7 @@
|
||||
wet_time = MAXIMUM_WET_TIME
|
||||
if(wet == TURF_WET_ICE && air.temperature > T0C)
|
||||
for(var/obj/O in contents)
|
||||
if(O.is_frozen)
|
||||
if(HAS_SECONDARY_FLAG(O, FROZEN))
|
||||
O.make_unfrozen()
|
||||
MakeDry(TURF_WET_ICE)
|
||||
MakeSlippery(TURF_WET_WATER)
|
||||
|
||||
@@ -5,9 +5,10 @@
|
||||
name = "chasm"
|
||||
desc = "Watch your step."
|
||||
baseturf = /turf/open/chasm
|
||||
smooth = SMOOTH_TRUE | SMOOTH_BORDER
|
||||
smooth = SMOOTH_TRUE | SMOOTH_BORDER | SMOOTH_MORE
|
||||
icon = 'icons/turf/floors/Chasms.dmi'
|
||||
icon_state = "smooth"
|
||||
canSmoothWith = list(/turf/open/floor/fakepit, /turf/open/chasm)
|
||||
var/drop_x = 1
|
||||
var/drop_y = 1
|
||||
var/drop_z = 1
|
||||
@@ -20,6 +21,34 @@
|
||||
if(!drop_stuff())
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
|
||||
/turf/open/chasm/attackby(obj/item/C, mob/user, params, area/area_restriction)
|
||||
..()
|
||||
if(istype(C, /obj/item/stack/rods))
|
||||
var/obj/item/stack/rods/R = C
|
||||
var/obj/structure/lattice/L = locate(/obj/structure/lattice, src)
|
||||
if(!L)
|
||||
if(R.use(1))
|
||||
to_chat(user, "<span class='notice'>You construct a lattice.</span>")
|
||||
playsound(src, 'sound/weapons/Genhit.ogg', 50, 1)
|
||||
ReplaceWithLattice()
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You need one rod to build a lattice.</span>")
|
||||
return
|
||||
if(istype(C, /obj/item/stack/tile/plasteel))
|
||||
var/obj/structure/lattice/L = locate(/obj/structure/lattice, src)
|
||||
if(L)
|
||||
var/obj/item/stack/tile/plasteel/S = C
|
||||
if(S.use(1))
|
||||
qdel(L)
|
||||
playsound(src, 'sound/weapons/Genhit.ogg', 50, 1)
|
||||
to_chat(user, "<span class='notice'>You build a floor.</span>")
|
||||
ChangeTurf(/turf/open/floor/plating)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You need one floor tile to build a floor!</span>")
|
||||
else
|
||||
to_chat(user, "<span class='warning'>The plating is going to need some support! Place metal rods first.</span>")
|
||||
|
||||
|
||||
/turf/open/chasm/proc/drop_stuff(AM)
|
||||
. = 0
|
||||
var/thing_to_check = src
|
||||
@@ -112,4 +141,4 @@
|
||||
qdel(AM)
|
||||
|
||||
/turf/open/chasm/straight_down/lava_land_surface/normal_air
|
||||
initial_gas_mix = "o2=22;n2=82;TEMP=293.15"
|
||||
initial_gas_mix = "o2=22;n2=82;TEMP=293.15"
|
||||
@@ -137,22 +137,38 @@ var/list/icons_to_ignore_at_floor_init = list("damaged1","damaged2","damaged3","
|
||||
if(..())
|
||||
return 1
|
||||
if(intact && istype(C, /obj/item/weapon/crowbar))
|
||||
if(broken || burnt)
|
||||
broken = 0
|
||||
burnt = 0
|
||||
user << "<span class='danger'>You remove the broken plating.</span>"
|
||||
else
|
||||
if(istype(src, /turf/open/floor/wood))
|
||||
user << "<span class='danger'>You forcefully pry off the planks, destroying them in the process.</span>"
|
||||
else
|
||||
user << "<span class='danger'>You remove the floor tile.</span>"
|
||||
if(floor_tile)
|
||||
new floor_tile(src)
|
||||
make_plating()
|
||||
playsound(src, C.usesound, 80, 1)
|
||||
pry_tile(C, user)
|
||||
return 1
|
||||
if(intact && istype(C, /obj/item/stack/tile))
|
||||
var/obj/item/stack/tile/T = C
|
||||
if(T.turf_type == type)
|
||||
return
|
||||
var/obj/item/weapon/crowbar/CB = user.is_holding_item_of_type(/obj/item/weapon/crowbar)
|
||||
if(!CB)
|
||||
return
|
||||
var/turf/open/floor/plating/P = pry_tile(CB, user, TRUE)
|
||||
if(!istype(P))
|
||||
return
|
||||
P.attackby(T, user, params)
|
||||
return 0
|
||||
|
||||
/turf/open/floor/proc/pry_tile(obj/item/C, mob/user, silent = FALSE)
|
||||
playsound(src, C.usesound, 80, 1)
|
||||
return remove_tile(user, silent)
|
||||
|
||||
/turf/open/floor/proc/remove_tile(mob/user, silent = FALSE, make_tile = TRUE)
|
||||
if(broken || burnt)
|
||||
broken = 0
|
||||
burnt = 0
|
||||
if(user && !silent)
|
||||
to_chat(user, "<span class='danger'>You remove the broken plating.</span>")
|
||||
else
|
||||
if(user && !silent)
|
||||
to_chat(user, "<span class='danger'>You remove the floor tile.</span>")
|
||||
if(floor_tile && make_tile)
|
||||
new floor_tile(src)
|
||||
return make_plating()
|
||||
|
||||
/turf/open/floor/singularity_pull(S, current_size)
|
||||
if(current_size == STAGE_THREE)
|
||||
if(prob(30))
|
||||
@@ -183,3 +199,54 @@ var/list/icons_to_ignore_at_floor_init = list("damaged1","damaged2","damaged3","
|
||||
|
||||
/turf/open/floor/acid_melt()
|
||||
ChangeTurf(baseturf)
|
||||
|
||||
/turf/open/floor/rcd_vals(mob/user, obj/item/weapon/rcd/the_rcd)
|
||||
switch(the_rcd.mode)
|
||||
if(RCD_FLOORWALL)
|
||||
return list("mode" = RCD_FLOORWALL, "delay" = 20, "cost" = 16)
|
||||
if(RCD_AIRLOCK)
|
||||
return list("mode" = RCD_AIRLOCK, "delay" = 50, "cost" = 16)
|
||||
if(RCD_DECONSTRUCT)
|
||||
return list("mode" = RCD_DECONSTRUCT, "delay" = 50, "cost" = 33)
|
||||
if(RCD_WINDOWGRILLE)
|
||||
return list("mode" = RCD_WINDOWGRILLE, "delay" = 40, "cost" = 4)
|
||||
return FALSE
|
||||
|
||||
/turf/open/floor/rcd_act(mob/user, obj/item/weapon/rcd/the_rcd, passed_mode)
|
||||
switch(passed_mode)
|
||||
if(RCD_FLOORWALL)
|
||||
to_chat(user, "<span class='notice'>You build a wall.</span>")
|
||||
ChangeTurf(/turf/closed/wall)
|
||||
return TRUE
|
||||
if(RCD_AIRLOCK)
|
||||
if(locate(/obj/machinery/door/airlock) in src)
|
||||
return FALSE
|
||||
to_chat(user, "<span class='notice'>You build an airlock.</span>")
|
||||
var/obj/machinery/door/airlock/A = new the_rcd.airlock_type(src)
|
||||
|
||||
A.electronics = new/obj/item/weapon/electronics/airlock(src)
|
||||
|
||||
if(the_rcd.conf_access)
|
||||
A.electronics.accesses = the_rcd.conf_access.Copy()
|
||||
A.electronics.one_access = the_rcd.use_one_access
|
||||
|
||||
if(A.electronics.one_access)
|
||||
A.req_one_access = A.electronics.accesses
|
||||
else
|
||||
A.req_access = A.electronics.accesses
|
||||
A.autoclose = TRUE
|
||||
return TRUE
|
||||
if(RCD_DECONSTRUCT)
|
||||
if(istype(src, baseturf))
|
||||
return FALSE
|
||||
to_chat(user, "<span class='notice'>You deconstruct [src].</span>")
|
||||
ChangeTurf(baseturf)
|
||||
return TRUE
|
||||
if(RCD_WINDOWGRILLE)
|
||||
if(locate(/obj/structure/grille) in src)
|
||||
return FALSE
|
||||
to_chat(user, "<span class='notice'>You construct the grille.</span>")
|
||||
var/obj/structure/grille/G = new(src)
|
||||
G.anchored = TRUE
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
* Wood floor
|
||||
* Grass floor
|
||||
* Carpet floor
|
||||
* Fake pits
|
||||
* Fake space
|
||||
*/
|
||||
|
||||
/turf/open/floor/wood
|
||||
@@ -13,14 +15,31 @@
|
||||
if(..())
|
||||
return
|
||||
if(istype(C, /obj/item/weapon/screwdriver))
|
||||
if(broken || burnt)
|
||||
return
|
||||
user << "<span class='danger'>You unscrew the planks.</span>"
|
||||
new floor_tile(src)
|
||||
make_plating()
|
||||
playsound(src, C.usesound, 80, 1)
|
||||
pry_tile(C, user)
|
||||
return
|
||||
|
||||
/turf/open/floor/wood/pry_tile(obj/item/C, mob/user, silent = FALSE)
|
||||
var/is_screwdriver = istype(C, /obj/item/weapon/screwdriver)
|
||||
playsound(src, C.usesound, 80, 1)
|
||||
return remove_tile(user, silent, make_tile = is_screwdriver)
|
||||
|
||||
/turf/open/floor/wood/remove_tile(mob/user, silent = FALSE, make_tile = TRUE)
|
||||
if(broken || burnt)
|
||||
broken = 0
|
||||
burnt = 0
|
||||
if(user && !silent)
|
||||
to_chat(user, "<span class='danger'>You remove the broken planks.</span>")
|
||||
else
|
||||
if(make_tile)
|
||||
if(user && !silent)
|
||||
to_chat(user, "<span class='danger'>You unscrew the planks.</span>")
|
||||
if(floor_tile)
|
||||
new floor_tile(src)
|
||||
else
|
||||
if(user && !silent)
|
||||
to_chat(user, "<span class='danger'>You forcefully pry off the planks, destroying them in the process.</span>")
|
||||
return make_plating()
|
||||
|
||||
/turf/open/floor/wood/cold
|
||||
temperature = 255.37
|
||||
|
||||
@@ -79,10 +98,7 @@
|
||||
..()
|
||||
if(prob(15))
|
||||
icon_state = "basalt[rand(0, 12)]"
|
||||
switch(icon_state)
|
||||
if("basalt1", "basalt2", "basalt3")
|
||||
SetLuminosity(1, 1)
|
||||
|
||||
set_basalt_light(src)
|
||||
|
||||
/turf/open/floor/carpet
|
||||
name = "carpet"
|
||||
@@ -92,7 +108,7 @@
|
||||
floor_tile = /obj/item/stack/tile/carpet
|
||||
broken_states = list("damaged")
|
||||
smooth = SMOOTH_TRUE
|
||||
canSmoothWith = null
|
||||
canSmoothWith = list(/turf/open/floor/carpet, /turf/open/chasm)
|
||||
flags = NONE
|
||||
|
||||
/turf/open/floor/carpet/Initialize()
|
||||
@@ -122,6 +138,14 @@
|
||||
update_icon()
|
||||
|
||||
|
||||
|
||||
turf/open/floor/fakepit
|
||||
desc = "A clever illusion designed to look like a bottomless pit."
|
||||
smooth = SMOOTH_TRUE | SMOOTH_BORDER | SMOOTH_MORE
|
||||
canSmoothWith = list(/turf/open/floor/fakepit, /turf/open/chasm)
|
||||
icon = 'icons/turf/floors/Chasms.dmi'
|
||||
icon_state = "smooth"
|
||||
|
||||
/turf/open/floor/fakespace
|
||||
icon = 'icons/turf/space.dmi'
|
||||
icon_state = "0"
|
||||
@@ -131,4 +155,4 @@
|
||||
|
||||
/turf/open/floor/fakespace/Initialize()
|
||||
..()
|
||||
icon_state = "[rand(0,25)]"
|
||||
icon_state = "[rand(0,25)]"
|
||||
@@ -1,7 +1,7 @@
|
||||
/turf/open/floor/light
|
||||
name = "light floor"
|
||||
desc = "A wired glass tile embedded into the floor."
|
||||
luminosity = 5
|
||||
light_range = 5
|
||||
icon_state = "light_on"
|
||||
floor_tile = /obj/item/stack/tile/light
|
||||
broken_states = list("light_broken")
|
||||
@@ -22,24 +22,24 @@
|
||||
switch(state)
|
||||
if(0)
|
||||
icon_state = "light_on-[coloredlights[currentcolor]]"
|
||||
SetLuminosity(1)
|
||||
set_light(1)
|
||||
if(1)
|
||||
var/num = pick("1","2","3","4")
|
||||
icon_state = "light_on_flicker[num]"
|
||||
SetLuminosity(1)
|
||||
set_light(1)
|
||||
if(2)
|
||||
icon_state = "light_on_broken"
|
||||
SetLuminosity(1)
|
||||
set_light(1)
|
||||
if(3)
|
||||
icon_state = "light_off"
|
||||
SetLuminosity(0)
|
||||
set_light(0)
|
||||
else
|
||||
SetLuminosity(0)
|
||||
set_light(0)
|
||||
icon_state = "light_off"
|
||||
|
||||
|
||||
/turf/open/floor/light/ChangeTurf(turf/T)
|
||||
SetLuminosity(0)
|
||||
set_light(0)
|
||||
return ..()
|
||||
|
||||
/turf/open/floor/light/attack_hand(mob/user)
|
||||
@@ -67,9 +67,9 @@
|
||||
qdel(C)
|
||||
state = 0 //fixing it by bashing it with a light bulb, fun eh?
|
||||
update_icon()
|
||||
user << "<span class='notice'>You replace the light bulb.</span>"
|
||||
to_chat(user, "<span class='notice'>You replace the light bulb.</span>")
|
||||
else
|
||||
user << "<span class='notice'>The lightbulb seems fine, no need to replace it.</span>"
|
||||
to_chat(user, "<span class='notice'>The lightbulb seems fine, no need to replace it.</span>")
|
||||
|
||||
|
||||
//Cycles through all of the colours
|
||||
|
||||
@@ -8,24 +8,88 @@
|
||||
icon_state = "rockvault"
|
||||
floor_tile = /obj/item/stack/tile/plasteel
|
||||
|
||||
/turf/open/floor/bluegrid
|
||||
//Circuit flooring, glows a little
|
||||
/turf/open/floor/circuit
|
||||
icon = 'icons/turf/floors.dmi'
|
||||
icon_state = "bcircuit"
|
||||
floor_tile = /obj/item/stack/tile/plasteel
|
||||
var/icon_normal = "bcircuit"
|
||||
light_color = LIGHT_COLOR_CYAN
|
||||
floor_tile = /obj/item/stack/tile/circuit
|
||||
var/on = TRUE
|
||||
|
||||
/turf/open/floor/bluegrid/Initialize()
|
||||
/turf/open/floor/circuit/Initialize()
|
||||
SSmapping.nuke_tiles += src
|
||||
update_icon()
|
||||
..()
|
||||
|
||||
/turf/open/floor/bluegrid/Destroy()
|
||||
/turf/open/floor/circuit/Destroy()
|
||||
SSmapping.nuke_tiles -= src
|
||||
return ..()
|
||||
|
||||
/turf/open/floor/greengrid
|
||||
icon = 'icons/turf/floors.dmi'
|
||||
icon_state = "gcircuit"
|
||||
floor_tile = /obj/item/stack/tile/plasteel
|
||||
/turf/open/floor/circuit/update_icon()
|
||||
if(on)
|
||||
if(LAZYLEN(SSmapping.nuke_threats))
|
||||
icon_state = "rcircuitanim"
|
||||
light_color = LIGHT_COLOR_FLARE
|
||||
else
|
||||
icon_state = icon_normal
|
||||
light_color = initial(light_color)
|
||||
set_light(1.4, 0.5)
|
||||
else
|
||||
icon_state = "[icon_normal]off"
|
||||
set_light(0)
|
||||
|
||||
/turf/open/floor/circuit/off
|
||||
icon_state = "bcircuitoff"
|
||||
on = FALSE
|
||||
|
||||
/turf/open/floor/circuit/airless
|
||||
initial_gas_mix = "TEMP=2.7"
|
||||
|
||||
/turf/open/floor/circuit/telecomms
|
||||
initial_gas_mix = "n2=100;TEMP=80"
|
||||
|
||||
/turf/open/floor/circuit/green
|
||||
icon_state = "gcircuit"
|
||||
icon_normal = "gcircuit"
|
||||
light_color = LIGHT_COLOR_GREEN
|
||||
floor_tile = /obj/item/stack/tile/circuit/green
|
||||
|
||||
/turf/open/floor/circuit/green/off
|
||||
icon_state = "gcircuitoff"
|
||||
on = FALSE
|
||||
|
||||
/turf/open/floor/circuit/green/anim
|
||||
icon_state = "gcircuitanim"
|
||||
icon_normal = "gcircuitanim"
|
||||
floor_tile = /obj/item/stack/tile/circuit/green/anim
|
||||
|
||||
/turf/open/floor/circuit/green/airless
|
||||
initial_gas_mix = "TEMP=2.7"
|
||||
|
||||
/turf/open/floor/circuit/green/telecomms
|
||||
initial_gas_mix = "n2=100;TEMP=80"
|
||||
|
||||
/turf/open/floor/circuit/red
|
||||
icon_state = "rcircuit"
|
||||
icon_normal = "rcircuit"
|
||||
light_color = LIGHT_COLOR_FLARE
|
||||
floor_tile = /obj/item/stack/tile/circuit/red
|
||||
|
||||
/turf/open/floor/circuit/red/off
|
||||
icon_state = "rcircuitoff"
|
||||
on = FALSE
|
||||
|
||||
/turf/open/floor/circuit/red/anim
|
||||
icon_state = "rcircuitanim"
|
||||
icon_normal = "rcircuitanim"
|
||||
floor_tile = /obj/item/stack/tile/circuit/red/anim
|
||||
|
||||
/turf/open/floor/circuit/red/airless
|
||||
initial_gas_mix = "TEMP=2.7"
|
||||
|
||||
/turf/open/floor/circuit/red/telecomms
|
||||
initial_gas_mix = "n2=100;TEMP=80"
|
||||
|
||||
/turf/open/floor/pod
|
||||
name = "pod floor"
|
||||
@@ -201,4 +265,3 @@
|
||||
for(var/obj/structure/spacevine/SV in src)
|
||||
if(!QDESTROYING(SV))//Helps avoid recursive loops
|
||||
qdel(SV)
|
||||
UpdateAffectingLights()
|
||||
|
||||
@@ -256,30 +256,6 @@
|
||||
icon_state = "podhatchcorner"
|
||||
|
||||
|
||||
|
||||
/turf/open/floor/plasteel/circuit
|
||||
icon_state = "bcircuit"
|
||||
/turf/open/floor/plasteel/airless/circuit
|
||||
icon_state = "bcircuit"
|
||||
/turf/open/floor/plasteel/circuit/off
|
||||
icon_state = "bcircuitoff"
|
||||
|
||||
/turf/open/floor/plasteel/circuit/gcircuit
|
||||
icon_state = "gcircuit"
|
||||
/turf/open/floor/plasteel/airless/circuit/gcircuit
|
||||
icon_state = "gcircuit"
|
||||
/turf/open/floor/plasteel/circuit/gcircuit/off
|
||||
icon_state = "gcircuitoff"
|
||||
/turf/open/floor/plasteel/circuit/gcircuit/animated
|
||||
icon_state = "gcircuitanim"
|
||||
|
||||
/turf/open/floor/plasteel/circuit/rcircuit
|
||||
icon_state = "rcircuit"
|
||||
/turf/open/floor/plasteel/circuit/rcircuit/animated
|
||||
icon_state = "rcircuitanim"
|
||||
|
||||
|
||||
|
||||
/turf/open/floor/plasteel/loadingarea
|
||||
icon_state = "loadingarea"
|
||||
/turf/open/floor/plasteel/loadingarea/dirty
|
||||
|
||||
@@ -32,20 +32,20 @@
|
||||
return
|
||||
if(istype(C, /obj/item/stack/rods))
|
||||
if(broken || burnt)
|
||||
user << "<span class='warning'>Repair the plating first!</span>"
|
||||
to_chat(user, "<span class='warning'>Repair the plating first!</span>")
|
||||
return
|
||||
var/obj/item/stack/rods/R = C
|
||||
if (R.get_amount() < 2)
|
||||
user << "<span class='warning'>You need two rods to make a reinforced floor!</span>"
|
||||
to_chat(user, "<span class='warning'>You need two rods to make a reinforced floor!</span>")
|
||||
return
|
||||
else
|
||||
user << "<span class='notice'>You begin reinforcing the floor...</span>"
|
||||
to_chat(user, "<span class='notice'>You begin reinforcing the floor...</span>")
|
||||
if(do_after(user, 30, target = src))
|
||||
if (R.get_amount() >= 2 && !istype(src, /turf/open/floor/engine))
|
||||
ChangeTurf(/turf/open/floor/engine)
|
||||
playsound(src, 'sound/items/Deconstruct.ogg', 80, 1)
|
||||
R.use(2)
|
||||
user << "<span class='notice'>You reinforce the floor.</span>"
|
||||
to_chat(user, "<span class='notice'>You reinforce the floor.</span>")
|
||||
return
|
||||
else if(istype(C, /obj/item/stack/tile))
|
||||
if(!broken && !burnt)
|
||||
@@ -59,12 +59,12 @@
|
||||
F.state = L.state
|
||||
playsound(src, 'sound/weapons/Genhit.ogg', 50, 1)
|
||||
else
|
||||
user << "<span class='warning'>This section is too damaged to support a tile! Use a welder to fix the damage.</span>"
|
||||
to_chat(user, "<span class='warning'>This section is too damaged to support a tile! Use a welder to fix the damage.</span>")
|
||||
else if(istype(C, /obj/item/weapon/weldingtool))
|
||||
var/obj/item/weapon/weldingtool/welder = C
|
||||
if( welder.isOn() && (broken || burnt) )
|
||||
if(welder.remove_fuel(0,user))
|
||||
user << "<span class='danger'>You fix some dents on the broken plating.</span>"
|
||||
to_chat(user, "<span class='danger'>You fix some dents on the broken plating.</span>")
|
||||
playsound(src, welder.usesound, 80, 1)
|
||||
icon_state = icon_plating
|
||||
burnt = 0
|
||||
|
||||
@@ -53,15 +53,15 @@
|
||||
return
|
||||
|
||||
if (dug)
|
||||
user << "<span class='warning'>This area has already been dug!</span>"
|
||||
to_chat(user, "<span class='warning'>This area has already been dug!</span>")
|
||||
return
|
||||
|
||||
user << "<span class='notice'>You start digging...</span>"
|
||||
to_chat(user, "<span class='notice'>You start digging...</span>")
|
||||
playsound(src, 'sound/effects/shovel_dig.ogg', 50, 1)
|
||||
|
||||
if(do_after(user, digging_speed, target = src))
|
||||
if(istype(src, /turf/open/floor/plating/asteroid))
|
||||
user << "<span class='notice'>You dig a hole.</span>"
|
||||
to_chat(user, "<span class='notice'>You dig a hole.</span>")
|
||||
gets_dug()
|
||||
feedback_add_details("pick_used_mining","[W.type]")
|
||||
|
||||
@@ -119,13 +119,18 @@
|
||||
|
||||
/turf/open/floor/plating/asteroid/basalt/Initialize()
|
||||
..()
|
||||
switch(icon_state)
|
||||
if("basalt1", "basalt2", "basalt3") //5 and 9 are too dark to glow and make the amount of glows in tunnels too high
|
||||
SetLuminosity(1, 1) //this is basically a 3.75% chance that a basalt floor glows
|
||||
set_basalt_light(src)
|
||||
|
||||
/proc/set_basalt_light(turf/open/floor/B)
|
||||
switch(B.icon_state)
|
||||
if("basalt1", "basalt2", "basalt3")
|
||||
B.set_light(2, 0.6, LIGHT_COLOR_LAVA) //more light
|
||||
if("basalt5", "basalt9")
|
||||
B.set_light(1.4, 0.6, LIGHT_COLOR_LAVA) //barely anything!
|
||||
|
||||
/turf/open/floor/plating/asteroid/basalt/gets_dug()
|
||||
if(!dug)
|
||||
SetLuminosity(0)
|
||||
set_light(0)
|
||||
..()
|
||||
|
||||
|
||||
@@ -323,6 +328,3 @@
|
||||
|
||||
/turf/open/floor/plating/asteroid/snow/atmosphere
|
||||
initial_gas_mix = "o2=22;n2=82;TEMP=180"
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -6,7 +6,10 @@
|
||||
gender = PLURAL //"That's some lava."
|
||||
baseturf = /turf/open/floor/plating/lava //lava all the way down
|
||||
slowdown = 2
|
||||
luminosity = 1
|
||||
|
||||
light_range = 2
|
||||
light_power = 0.75
|
||||
light_color = LIGHT_COLOR_LAVA
|
||||
|
||||
/turf/open/floor/plating/lava/ex_act()
|
||||
return
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
if(!C || !user)
|
||||
return
|
||||
if(istype(C, /obj/item/weapon/wrench))
|
||||
user << "<span class='notice'>You begin removing rods...</span>"
|
||||
to_chat(user, "<span class='notice'>You begin removing rods...</span>")
|
||||
playsound(src, C.usesound, 80, 1)
|
||||
if(do_after(user, 30*C.toolspeed, target = src))
|
||||
if(!istype(src, /turf/open/floor/engine))
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
/turf/closed/mineral/attackby(obj/item/weapon/pickaxe/P, mob/user, params)
|
||||
|
||||
if (!user.IsAdvancedToolUser())
|
||||
usr << "<span class='warning'>You don't have the dexterity to do this!</span>"
|
||||
to_chat(usr, "<span class='warning'>You don't have the dexterity to do this!</span>")
|
||||
return
|
||||
|
||||
if (istype(P, /obj/item/weapon/pickaxe))
|
||||
@@ -57,12 +57,12 @@
|
||||
if(last_act+P.digspeed > world.time)//prevents message spam
|
||||
return
|
||||
last_act = world.time
|
||||
user << "<span class='notice'>You start picking...</span>"
|
||||
to_chat(user, "<span class='notice'>You start picking...</span>")
|
||||
P.playDigSound()
|
||||
|
||||
if(do_after(user,P.digspeed, target = src))
|
||||
if(ismineralturf(src))
|
||||
user << "<span class='notice'>You finish cutting into the rock.</span>"
|
||||
to_chat(user, "<span class='notice'>You finish cutting into the rock.</span>")
|
||||
gets_drilled(user)
|
||||
feedback_add_details("pick_used_mining","[P.type]")
|
||||
else
|
||||
@@ -86,10 +86,10 @@
|
||||
..()
|
||||
|
||||
/turf/closed/mineral/attack_alien(mob/living/carbon/alien/M)
|
||||
M << "<span class='notice'>You start digging into the rock...</span>"
|
||||
to_chat(M, "<span class='notice'>You start digging into the rock...</span>")
|
||||
playsound(src, 'sound/effects/break_stone.ogg', 50, 1)
|
||||
if(do_after(M,40, target = src))
|
||||
M << "<span class='notice'>You tunnel into the rock.</span>"
|
||||
to_chat(M, "<span class='notice'>You tunnel into the rock.</span>")
|
||||
gets_drilled(M)
|
||||
|
||||
/turf/closed/mineral/Bumped(AM as mob|obj)
|
||||
@@ -206,9 +206,9 @@
|
||||
|
||||
/turf/closed/mineral/random/labormineral
|
||||
mineralSpawnChanceList = list(
|
||||
/turf/closed/mineral/uranium = 2, /turf/closed/mineral/diamond = 1, /turf/closed/mineral/gold = 3, /turf/closed/mineral/titanium = 4,
|
||||
/turf/closed/mineral/silver = 6, /turf/closed/mineral/plasma = 15, /turf/closed/mineral/iron = 80,
|
||||
/turf/closed/mineral/gibtonite = 3)
|
||||
/turf/closed/mineral/uranium = 3, /turf/closed/mineral/diamond = 1, /turf/closed/mineral/gold = 8, /turf/closed/mineral/titanium = 8,
|
||||
/turf/closed/mineral/silver = 20, /turf/closed/mineral/plasma = 30, /turf/closed/mineral/iron = 95,
|
||||
/turf/closed/mineral/gibtonite = 2)
|
||||
icon_state = "rock_labor"
|
||||
|
||||
|
||||
@@ -219,9 +219,9 @@
|
||||
initial_gas_mix = "o2=14;n2=23;TEMP=300"
|
||||
defer_change = 1
|
||||
mineralSpawnChanceList = list(
|
||||
/turf/closed/mineral/uranium/volcanic = 2, /turf/closed/mineral/diamond/volcanic = 1, /turf/closed/mineral/gold/volcanic = 3, /turf/closed/mineral/titanium/volcanic = 4,
|
||||
/turf/closed/mineral/silver/volcanic = 6, /turf/closed/mineral/plasma/volcanic = 15, /turf/closed/mineral/iron/volcanic = 80,
|
||||
/turf/closed/mineral/gibtonite/volcanic = 3)
|
||||
/turf/closed/mineral/uranium/volcanic = 3, /turf/closed/mineral/diamond/volcanic = 1, /turf/closed/mineral/gold/volcanic = 8, /turf/closed/mineral/titanium/volcanic = 8,
|
||||
/turf/closed/mineral/silver/volcanic = 20, /turf/closed/mineral/plasma/volcanic = 30, /turf/closed/mineral/bscrystal/volcanic = 1, /turf/closed/mineral/gibtonite/volcanic = 2,
|
||||
/turf/closed/mineral/iron/volcanic = 95)
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -174,7 +174,7 @@
|
||||
icon_state = "map-shuttle"
|
||||
sheet_type = /obj/item/stack/sheet/mineral/titanium
|
||||
smooth = SMOOTH_MORE|SMOOTH_DIAGONAL
|
||||
canSmoothWith = list(/turf/closed/wall/mineral/titanium, /obj/machinery/door/airlock/shuttle, /obj/machinery/door/airlock/, /turf/closed/wall/shuttle, /obj/structure/window/shuttle, /obj/structure/shuttle/engine, /obj/structure/shuttle/engine/heater, )
|
||||
canSmoothWith = list(/turf/closed/wall/mineral/titanium, /obj/machinery/door/airlock/shuttle, /obj/machinery/door/airlock/, /turf/closed/wall/shuttle, /obj/structure/window/shuttle, /obj/structure/shuttle/engine/heater)
|
||||
|
||||
/turf/closed/wall/mineral/titanium/nodiagonal
|
||||
smooth = SMOOTH_MORE
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
/turf/closed/wall/clockwork/examine(mob/user)
|
||||
..()
|
||||
if((is_servant_of_ratvar(user) || isobserver(user)) && linkedcache)
|
||||
user << "<span class='brass'>It is linked to a Tinkerer's Cache, generating components!</span>"
|
||||
to_chat(user, "<span class='brass'>It is linked to a Tinkerer's Cache, generating components!</span>")
|
||||
|
||||
/turf/closed/wall/clockwork/Destroy()
|
||||
if(linkedcache)
|
||||
|
||||
@@ -17,19 +17,19 @@
|
||||
..()
|
||||
switch(d_state)
|
||||
if(INTACT)
|
||||
user << "<span class='notice'>The outer <b>grille</b> is fully intact.</span>"
|
||||
to_chat(user, "<span class='notice'>The outer <b>grille</b> is fully intact.</span>")
|
||||
if(SUPPORT_LINES)
|
||||
user << "<span class='notice'>The outer <i>grille</i> has been cut, and the support lines are <b>screwed</b> securely to the outer cover.</span>"
|
||||
to_chat(user, "<span class='notice'>The outer <i>grille</i> has been cut, and the support lines are <b>screwed</b> securely to the outer cover.</span>")
|
||||
if(COVER)
|
||||
user << "<span class='notice'>The support lines have been <i>unscrewed</i>, and the metal cover is <b>welded</b> firmly in place.</span>"
|
||||
to_chat(user, "<span class='notice'>The support lines have been <i>unscrewed</i>, and the metal cover is <b>welded</b> firmly in place.</span>")
|
||||
if(CUT_COVER)
|
||||
user << "<span class='notice'>The metal cover has been <i>sliced through</i>, and is <b>connected loosely</b> to the girder.</span>"
|
||||
to_chat(user, "<span class='notice'>The metal cover has been <i>sliced through</i>, and is <b>connected loosely</b> to the girder.</span>")
|
||||
if(BOLTS)
|
||||
user << "<span class='notice'>The outer cover has been <i>pried away</i>, and the bolts anchoring the support rods are <b>wrenched</b> in place.</span>"
|
||||
to_chat(user, "<span class='notice'>The outer cover has been <i>pried away</i>, and the bolts anchoring the support rods are <b>wrenched</b> in place.</span>")
|
||||
if(SUPPORT_RODS)
|
||||
user << "<span class='notice'>The bolts anchoring the support rods have been <i>loosened</i>, but are still <b>welded</b> firmly to the girder.</span>"
|
||||
to_chat(user, "<span class='notice'>The bolts anchoring the support rods have been <i>loosened</i>, but are still <b>welded</b> firmly to the girder.</span>")
|
||||
if(SHEATH)
|
||||
user << "<span class='notice'>The support rods have been <i>sliced through</i>, and the outer sheath is <b>connected loosely</b> to the girder.</span>"
|
||||
to_chat(user, "<span class='notice'>The support rods have been <i>sliced through</i>, and the outer sheath is <b>connected loosely</b> to the girder.</span>")
|
||||
|
||||
/turf/closed/wall/r_wall/devastate_wall()
|
||||
new sheet_type(src, sheet_amount)
|
||||
@@ -43,12 +43,12 @@
|
||||
playsound(src, 'sound/effects/meteorimpact.ogg', 100, 1)
|
||||
else
|
||||
playsound(src, 'sound/effects/bang.ogg', 50, 1)
|
||||
M << "<span class='warning'>This wall is far too strong for you to destroy.</span>"
|
||||
to_chat(M, "<span class='warning'>This wall is far too strong for you to destroy.</span>")
|
||||
|
||||
/turf/closed/wall/r_wall/try_destroy(obj/item/weapon/W, mob/user, turf/T)
|
||||
if(istype(W, /obj/item/weapon/pickaxe/drill/jackhammer))
|
||||
var/obj/item/weapon/pickaxe/drill/jackhammer/D = W
|
||||
user << "<span class='notice'>You begin to smash though the [name]...</span>"
|
||||
to_chat(user, "<span class='notice'>You begin to smash though the [name]...</span>")
|
||||
if(do_after(user, 50, target = src))
|
||||
if(!istype(src, /turf/closed/wall/r_wall) || !W)
|
||||
return 1
|
||||
@@ -66,170 +66,170 @@
|
||||
playsound(src, W.usesound, 100, 1)
|
||||
d_state = SUPPORT_LINES
|
||||
update_icon()
|
||||
user << "<span class='notice'>You cut the outer grille.</span>"
|
||||
to_chat(user, "<span class='notice'>You cut the outer grille.</span>")
|
||||
return 1
|
||||
|
||||
if(SUPPORT_LINES)
|
||||
if(istype(W, /obj/item/weapon/screwdriver))
|
||||
user << "<span class='notice'>You begin unsecuring the support lines...</span>"
|
||||
to_chat(user, "<span class='notice'>You begin unsecuring the support lines...</span>")
|
||||
playsound(src, W.usesound, 100, 1)
|
||||
if(do_after(user, 40*W.toolspeed, target = src))
|
||||
if(!istype(src, /turf/closed/wall/r_wall) || !W || d_state != SUPPORT_LINES)
|
||||
return 1
|
||||
d_state = COVER
|
||||
update_icon()
|
||||
user << "<span class='notice'>You unsecure the support lines.</span>"
|
||||
to_chat(user, "<span class='notice'>You unsecure the support lines.</span>")
|
||||
return 1
|
||||
|
||||
else if(istype(W, /obj/item/weapon/wirecutters))
|
||||
playsound(src, W.usesound, 100, 1)
|
||||
d_state = INTACT
|
||||
update_icon()
|
||||
user << "<span class='notice'>You repair the outer grille.</span>"
|
||||
to_chat(user, "<span class='notice'>You repair the outer grille.</span>")
|
||||
return 1
|
||||
|
||||
if(COVER)
|
||||
if(istype(W, /obj/item/weapon/weldingtool))
|
||||
var/obj/item/weapon/weldingtool/WT = W
|
||||
if(WT.remove_fuel(0,user))
|
||||
user << "<span class='notice'>You begin slicing through the metal cover...</span>"
|
||||
to_chat(user, "<span class='notice'>You begin slicing through the metal cover...</span>")
|
||||
playsound(src, W.usesound, 100, 1)
|
||||
if(do_after(user, 60*W.toolspeed, target = src))
|
||||
if(!istype(src, /turf/closed/wall/r_wall) || !WT || !WT.isOn() || d_state != COVER)
|
||||
return 1
|
||||
d_state = CUT_COVER
|
||||
update_icon()
|
||||
user << "<span class='notice'>You press firmly on the cover, dislodging it.</span>"
|
||||
to_chat(user, "<span class='notice'>You press firmly on the cover, dislodging it.</span>")
|
||||
return 1
|
||||
|
||||
if(istype(W, /obj/item/weapon/gun/energy/plasmacutter))
|
||||
user << "<span class='notice'>You begin slicing through the metal cover...</span>"
|
||||
to_chat(user, "<span class='notice'>You begin slicing through the metal cover...</span>")
|
||||
playsound(src, 'sound/items/Welder.ogg', 100, 1)
|
||||
if(do_after(user, 60*W.toolspeed, target = src))
|
||||
if(!istype(src, /turf/closed/wall/r_wall) || !W || d_state != COVER)
|
||||
return 1
|
||||
d_state = CUT_COVER
|
||||
update_icon()
|
||||
user << "<span class='notice'>You press firmly on the cover, dislodging it.</span>"
|
||||
to_chat(user, "<span class='notice'>You press firmly on the cover, dislodging it.</span>")
|
||||
return 1
|
||||
|
||||
if(istype(W, /obj/item/weapon/screwdriver))
|
||||
user << "<span class='notice'>You begin securing the support lines...</span>"
|
||||
to_chat(user, "<span class='notice'>You begin securing the support lines...</span>")
|
||||
playsound(src, W.usesound, 100, 1)
|
||||
if(do_after(user, 40*W.toolspeed, target = src))
|
||||
if(!istype(src, /turf/closed/wall/r_wall) || !W || d_state != COVER)
|
||||
return 1
|
||||
d_state = SUPPORT_LINES
|
||||
update_icon()
|
||||
user << "<span class='notice'>The support lines have been secured.</span>"
|
||||
to_chat(user, "<span class='notice'>The support lines have been secured.</span>")
|
||||
return 1
|
||||
|
||||
if(CUT_COVER)
|
||||
if(istype(W, /obj/item/weapon/crowbar))
|
||||
user << "<span class='notice'>You struggle to pry off the cover...</span>"
|
||||
to_chat(user, "<span class='notice'>You struggle to pry off the cover...</span>")
|
||||
playsound(src, W.usesound, 100, 1)
|
||||
if(do_after(user, 100*W.toolspeed, target = src))
|
||||
if(!istype(src, /turf/closed/wall/r_wall) || !W || d_state != CUT_COVER)
|
||||
return 1
|
||||
d_state = BOLTS
|
||||
update_icon()
|
||||
user << "<span class='notice'>You pry off the cover.</span>"
|
||||
to_chat(user, "<span class='notice'>You pry off the cover.</span>")
|
||||
return 1
|
||||
|
||||
if(istype(W, /obj/item/weapon/weldingtool))
|
||||
var/obj/item/weapon/weldingtool/WT = W
|
||||
if(WT.remove_fuel(0,user))
|
||||
user << "<span class='notice'>You begin welding the metal cover back to the frame...</span>"
|
||||
to_chat(user, "<span class='notice'>You begin welding the metal cover back to the frame...</span>")
|
||||
playsound(src, WT.usesound, 100, 1)
|
||||
if(do_after(user, 60*WT.toolspeed, target = src))
|
||||
if(!istype(src, /turf/closed/wall/r_wall) || !WT || !WT.isOn() || d_state != CUT_COVER)
|
||||
return 1
|
||||
d_state = COVER
|
||||
update_icon()
|
||||
user << "<span class='notice'>The metal cover has been welded securely to the frame.</span>"
|
||||
to_chat(user, "<span class='notice'>The metal cover has been welded securely to the frame.</span>")
|
||||
return 1
|
||||
|
||||
if(BOLTS)
|
||||
if(istype(W, /obj/item/weapon/wrench))
|
||||
user << "<span class='notice'>You start loosening the anchoring bolts which secure the support rods to their frame...</span>"
|
||||
to_chat(user, "<span class='notice'>You start loosening the anchoring bolts which secure the support rods to their frame...</span>")
|
||||
playsound(src, W.usesound, 100, 1)
|
||||
if(do_after(user, 40*W.toolspeed, target = src))
|
||||
if(!istype(src, /turf/closed/wall/r_wall) || !W || d_state != BOLTS)
|
||||
return 1
|
||||
d_state = SUPPORT_RODS
|
||||
update_icon()
|
||||
user << "<span class='notice'>You remove the bolts anchoring the support rods.</span>"
|
||||
to_chat(user, "<span class='notice'>You remove the bolts anchoring the support rods.</span>")
|
||||
return 1
|
||||
|
||||
if(istype(W, /obj/item/weapon/crowbar))
|
||||
user << "<span class='notice'>You start to pry the cover back into place...</span>"
|
||||
to_chat(user, "<span class='notice'>You start to pry the cover back into place...</span>")
|
||||
playsound(src, W.usesound, 100, 1)
|
||||
if(do_after(user, 20*W.toolspeed, target = src))
|
||||
if(!istype(src, /turf/closed/wall/r_wall) || !W || d_state != BOLTS)
|
||||
return 1
|
||||
d_state = CUT_COVER
|
||||
update_icon()
|
||||
user << "<span class='notice'>The metal cover has been pried back into place.</span>"
|
||||
to_chat(user, "<span class='notice'>The metal cover has been pried back into place.</span>")
|
||||
return 1
|
||||
|
||||
if(SUPPORT_RODS)
|
||||
if(istype(W, /obj/item/weapon/weldingtool))
|
||||
var/obj/item/weapon/weldingtool/WT = W
|
||||
if(WT.remove_fuel(0,user))
|
||||
user << "<span class='notice'>You begin slicing through the support rods...</span>"
|
||||
to_chat(user, "<span class='notice'>You begin slicing through the support rods...</span>")
|
||||
playsound(src, W.usesound, 100, 1)
|
||||
if(do_after(user, 100*W.toolspeed, target = src))
|
||||
if(!istype(src, /turf/closed/wall/r_wall) || !WT || !WT.isOn() || d_state != SUPPORT_RODS)
|
||||
return 1
|
||||
d_state = SHEATH
|
||||
update_icon()
|
||||
user << "<span class='notice'>You slice through the support rods.</span>"
|
||||
to_chat(user, "<span class='notice'>You slice through the support rods.</span>")
|
||||
return 1
|
||||
|
||||
if(istype(W, /obj/item/weapon/gun/energy/plasmacutter))
|
||||
user << "<span class='notice'>You begin slicing through the support rods...</span>"
|
||||
to_chat(user, "<span class='notice'>You begin slicing through the support rods...</span>")
|
||||
playsound(src, 'sound/items/Welder.ogg', 100, 1)
|
||||
if(do_after(user, 100*W.toolspeed, target = src))
|
||||
if(!istype(src, /turf/closed/wall/r_wall) || !W || d_state != SUPPORT_RODS)
|
||||
return 1
|
||||
d_state = SHEATH
|
||||
update_icon()
|
||||
user << "<span class='notice'>You slice through the support rods.</span>"
|
||||
to_chat(user, "<span class='notice'>You slice through the support rods.</span>")
|
||||
return 1
|
||||
|
||||
if(istype(W, /obj/item/weapon/wrench))
|
||||
user << "<span class='notice'>You start tightening the bolts which secure the support rods to their frame...</span>"
|
||||
to_chat(user, "<span class='notice'>You start tightening the bolts which secure the support rods to their frame...</span>")
|
||||
playsound(src, W.usesound, 100, 1)
|
||||
if(do_after(user, 40*W.toolspeed, target = src))
|
||||
if(!istype(src, /turf/closed/wall/r_wall) || !W || d_state != SUPPORT_RODS)
|
||||
return 1
|
||||
d_state = BOLTS
|
||||
update_icon()
|
||||
user << "<span class='notice'>You tighten the bolts anchoring the support rods.</span>"
|
||||
to_chat(user, "<span class='notice'>You tighten the bolts anchoring the support rods.</span>")
|
||||
return 1
|
||||
|
||||
if(SHEATH)
|
||||
if(istype(W, /obj/item/weapon/crowbar))
|
||||
user << "<span class='notice'>You struggle to pry off the outer sheath...</span>"
|
||||
to_chat(user, "<span class='notice'>You struggle to pry off the outer sheath...</span>")
|
||||
playsound(src, W.usesound, 100, 1)
|
||||
if(do_after(user, 100*W.toolspeed, target = src))
|
||||
if(!istype(src, /turf/closed/wall/r_wall) || !W || d_state != SHEATH)
|
||||
return 1
|
||||
user << "<span class='notice'>You pry off the outer sheath.</span>"
|
||||
to_chat(user, "<span class='notice'>You pry off the outer sheath.</span>")
|
||||
dismantle_wall()
|
||||
return 1
|
||||
|
||||
if(istype(W, /obj/item/weapon/weldingtool))
|
||||
var/obj/item/weapon/weldingtool/WT = W
|
||||
if(WT.remove_fuel(0,user))
|
||||
user << "<span class='notice'>You begin welding the support rods back together...</span>"
|
||||
to_chat(user, "<span class='notice'>You begin welding the support rods back together...</span>")
|
||||
playsound(src, WT.usesound, 100, 1)
|
||||
if(do_after(user, 100*WT.toolspeed, target = src))
|
||||
if(!istype(src, /turf/closed/wall/r_wall) || !WT || !WT.isOn() || d_state != SHEATH)
|
||||
return 1
|
||||
d_state = SUPPORT_RODS
|
||||
update_icon()
|
||||
user << "<span class='notice'>You weld the support rods back together.</span>"
|
||||
to_chat(user, "<span class='notice'>You weld the support rods back together.</span>")
|
||||
return 1
|
||||
return 0
|
||||
|
||||
@@ -248,3 +248,9 @@
|
||||
if(current_size >= STAGE_FIVE)
|
||||
if(prob(30))
|
||||
dismantle_wall()
|
||||
|
||||
/turf/closed/wall/r_vall/rcd_vals(mob/user, obj/item/weapon/rcd/the_rcd)
|
||||
return FALSE
|
||||
|
||||
/turf/closed/wall/r_vall/rcd_act(mob/user, obj/item/weapon/rcd/the_rcd, passed_mode)
|
||||
return FALSE
|
||||
@@ -114,12 +114,12 @@
|
||||
dismantle_wall(1)
|
||||
else
|
||||
playsound(src, 'sound/effects/bang.ogg', 50, 1)
|
||||
user << text("<span class='notice'>You punch the wall.</span>")
|
||||
to_chat(user, text("<span class='notice'>You punch the wall.</span>"))
|
||||
return 1
|
||||
|
||||
/turf/closed/wall/attack_hand(mob/user)
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
user << "<span class='notice'>You push the wall but nothing happens!</span>"
|
||||
to_chat(user, "<span class='notice'>You push the wall but nothing happens!</span>")
|
||||
playsound(src, 'sound/weapons/Genhit.ogg', 25, 1)
|
||||
src.add_fingerprint(user)
|
||||
..()
|
||||
@@ -128,7 +128,7 @@
|
||||
/turf/closed/wall/attackby(obj/item/weapon/W, mob/user, params)
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
if (!user.IsAdvancedToolUser())
|
||||
user << "<span class='warning'>You don't have the dexterity to do this!</span>"
|
||||
to_chat(user, "<span class='warning'>You don't have the dexterity to do this!</span>")
|
||||
return
|
||||
|
||||
//get the user's location
|
||||
@@ -154,8 +154,8 @@
|
||||
//check for wall mounted frames
|
||||
if(istype(W,/obj/item/wallframe))
|
||||
var/obj/item/wallframe/F = W
|
||||
if(F.try_build(src))
|
||||
F.attach(src)
|
||||
if(F.try_build(src, user))
|
||||
F.attach(src, user)
|
||||
return 1
|
||||
//Poster stuff
|
||||
else if(istype(W,/obj/item/weapon/poster))
|
||||
@@ -169,23 +169,23 @@
|
||||
if( istype(W, /obj/item/weapon/weldingtool) )
|
||||
var/obj/item/weapon/weldingtool/WT = W
|
||||
if( WT.remove_fuel(0,user) )
|
||||
user << "<span class='notice'>You begin slicing through the outer plating...</span>"
|
||||
to_chat(user, "<span class='notice'>You begin slicing through the outer plating...</span>")
|
||||
playsound(src, W.usesound, 100, 1)
|
||||
if(do_after(user, slicing_duration*W.toolspeed, target = src))
|
||||
if(!iswallturf(src) || !user || !WT || !WT.isOn() || !T)
|
||||
return 1
|
||||
if( user.loc == T && user.get_active_held_item() == WT )
|
||||
user << "<span class='notice'>You remove the outer plating.</span>"
|
||||
to_chat(user, "<span class='notice'>You remove the outer plating.</span>")
|
||||
dismantle_wall()
|
||||
return 1
|
||||
else if( istype(W, /obj/item/weapon/gun/energy/plasmacutter) )
|
||||
user << "<span class='notice'>You begin slicing through the outer plating...</span>"
|
||||
to_chat(user, "<span class='notice'>You begin slicing through the outer plating...</span>")
|
||||
playsound(src, 'sound/items/Welder.ogg', 100, 1)
|
||||
if(do_after(user, slicing_duration*W.toolspeed, target = src))
|
||||
if(!iswallturf(src) || !user || !W || !T)
|
||||
return 1
|
||||
if( user.loc == T && user.get_active_held_item() == W )
|
||||
user << "<span class='notice'>You remove the outer plating.</span>"
|
||||
to_chat(user, "<span class='notice'>You remove the outer plating.</span>")
|
||||
dismantle_wall()
|
||||
visible_message("The wall was sliced apart by [user]!", "<span class='italics'>You hear metal being sliced apart.</span>")
|
||||
return 1
|
||||
@@ -257,3 +257,17 @@
|
||||
|
||||
/turf/closed/wall/acid_melt()
|
||||
dismantle_wall(1)
|
||||
|
||||
/turf/closed/wall/rcd_vals(mob/user, obj/item/weapon/rcd/the_rcd)
|
||||
switch(the_rcd.mode)
|
||||
if(RCD_DECONSTRUCT)
|
||||
return list("mode" = RCD_DECONSTRUCT, "delay" = 40, "cost" = 26)
|
||||
return FALSE
|
||||
|
||||
/turf/closed/wall/rcd_act(mob/user, obj/item/weapon/rcd/the_rcd, passed_mode)
|
||||
switch(passed_mode)
|
||||
if(RCD_DECONSTRUCT)
|
||||
to_chat(user, "<span class='notice'>You deconstruct the wall.</span>")
|
||||
ChangeTurf(/turf/open/floor/plating)
|
||||
return TRUE
|
||||
return FALSE
|
||||
@@ -14,6 +14,8 @@
|
||||
|
||||
var/global/datum/gas_mixture/space/space_gas = new
|
||||
plane = PLANE_SPACE
|
||||
light_power = 0.25
|
||||
dynamic_lighting = DYNAMIC_LIGHTING_DISABLED
|
||||
|
||||
/turf/open/space/Initialize()
|
||||
icon_state = SPACE_ICON_STATE
|
||||
@@ -23,9 +25,19 @@
|
||||
stack_trace("Warning: [src]([type]) initialized multiple times!")
|
||||
initialized = TRUE
|
||||
|
||||
var/area/A = loc
|
||||
if(!IS_DYNAMIC_LIGHTING(src) && IS_DYNAMIC_LIGHTING(A))
|
||||
add_overlay(/obj/effect/fullbright)
|
||||
|
||||
if(requires_activation)
|
||||
SSair.add_to_active(src)
|
||||
|
||||
if (light_power && light_range)
|
||||
update_light()
|
||||
|
||||
if (opacity)
|
||||
has_opaque_atom = TRUE
|
||||
|
||||
/turf/open/space/attack_ghost(mob/dead/observer/user)
|
||||
if(destination_z)
|
||||
var/turf/T = locate(destination_x, destination_y, destination_z)
|
||||
@@ -52,15 +64,14 @@
|
||||
if(isspaceturf(t))
|
||||
//let's NOT update this that much pls
|
||||
continue
|
||||
SetLuminosity(4,5)
|
||||
light.mode = LIGHTING_STARLIGHT
|
||||
set_light(2)
|
||||
return
|
||||
SetLuminosity(0)
|
||||
set_light(0)
|
||||
|
||||
/turf/open/space/attack_paw(mob/user)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/turf/open/space/attackby(obj/item/C, mob/user, area/area_restriction)
|
||||
/turf/open/space/attackby(obj/item/C, mob/user, params, area/area_restriction)
|
||||
..()
|
||||
if(istype(C, /obj/item/stack/rods))
|
||||
if(istype(area_restriction) && !istype(get_area(src), area_restriction))
|
||||
@@ -69,22 +80,22 @@
|
||||
var/obj/structure/lattice/L = locate(/obj/structure/lattice, src)
|
||||
var/obj/structure/lattice/catwalk/W = locate(/obj/structure/lattice/catwalk, src)
|
||||
if(W)
|
||||
user << "<span class='warning'>There is already a catwalk here!</span>"
|
||||
to_chat(user, "<span class='warning'>There is already a catwalk here!</span>")
|
||||
return
|
||||
if(L)
|
||||
if(R.use(1))
|
||||
user << "<span class='notice'>You construct a catwalk.</span>"
|
||||
to_chat(user, "<span class='notice'>You construct a catwalk.</span>")
|
||||
playsound(src, 'sound/weapons/Genhit.ogg', 50, 1)
|
||||
new/obj/structure/lattice/catwalk(src)
|
||||
else
|
||||
user << "<span class='warning'>You need two rods to build a catwalk!</span>"
|
||||
to_chat(user, "<span class='warning'>You need two rods to build a catwalk!</span>")
|
||||
return
|
||||
if(R.use(1))
|
||||
user << "<span class='notice'>You construct a lattice.</span>"
|
||||
to_chat(user, "<span class='notice'>You construct a lattice.</span>")
|
||||
playsound(src, 'sound/weapons/Genhit.ogg', 50, 1)
|
||||
ReplaceWithLattice()
|
||||
else
|
||||
user << "<span class='warning'>You need one rod to build a lattice.</span>"
|
||||
to_chat(user, "<span class='warning'>You need one rod to build a lattice.</span>")
|
||||
return
|
||||
if(istype(C, /obj/item/stack/tile/plasteel))
|
||||
var/obj/structure/lattice/L = locate(/obj/structure/lattice, src)
|
||||
@@ -93,12 +104,12 @@
|
||||
if(S.use(1))
|
||||
qdel(L)
|
||||
playsound(src, 'sound/weapons/Genhit.ogg', 50, 1)
|
||||
user << "<span class='notice'>You build a floor.</span>"
|
||||
to_chat(user, "<span class='notice'>You build a floor.</span>")
|
||||
ChangeTurf(/turf/open/floor/plating)
|
||||
else
|
||||
user << "<span class='warning'>You need one floor tile to build a floor!</span>"
|
||||
to_chat(user, "<span class='warning'>You need one floor tile to build a floor!</span>")
|
||||
else
|
||||
user << "<span class='warning'>The plating is going to need some support! Place metal rods first.</span>"
|
||||
to_chat(user, "<span class='warning'>The plating is going to need some support! Place metal rods first.</span>")
|
||||
|
||||
/turf/open/space/Entered(atom/movable/A)
|
||||
..()
|
||||
@@ -175,3 +186,18 @@
|
||||
|
||||
/turf/open/space/acid_act(acidpwr, acid_volume)
|
||||
return 0
|
||||
|
||||
|
||||
/turf/open/space/rcd_vals(mob/user, obj/item/weapon/rcd/the_rcd)
|
||||
switch(the_rcd.mode)
|
||||
if(RCD_FLOORWALL)
|
||||
return list("mode" = RCD_FLOORWALL, "delay" = 0, "cost" = 2)
|
||||
return FALSE
|
||||
|
||||
/turf/open/space/rcd_act(mob/user, obj/item/weapon/rcd/the_rcd, passed_mode)
|
||||
switch(passed_mode)
|
||||
if(RCD_FLOORWALL)
|
||||
to_chat(user, "<span class='notice'>You build a floor.</span>")
|
||||
ChangeTurf(/turf/open/floor/plating)
|
||||
return TRUE
|
||||
return FALSE
|
||||
@@ -30,8 +30,9 @@
|
||||
|
||||
var/list/possible_transtitons = list()
|
||||
var/k = 1
|
||||
for(var/a in map_transition_config)
|
||||
if(map_transition_config[a] == CROSSLINKED) // Only pick z-levels connected to station space
|
||||
var/list/config_list = SSmapping.config.transition_config
|
||||
for(var/a in config_list)
|
||||
if(config_list[a] == CROSSLINKED) // Only pick z-levels connected to station space
|
||||
possible_transtitons += k
|
||||
k++
|
||||
var/_z = pick(possible_transtitons)
|
||||
@@ -58,8 +59,8 @@
|
||||
AM.newtonian_move(dir)
|
||||
|
||||
//Overwrite because we dont want people building rods
|
||||
/turf/open/space/transit/attackby(obj/item/C, mob/user)
|
||||
..(C, user, /area/shuttle)
|
||||
/turf/open/space/transit/attackby(obj/item/C, mob/user, params)
|
||||
..(C, user, params, /area/shuttle)
|
||||
|
||||
/turf/open/space/transit/Initialize()
|
||||
..()
|
||||
@@ -80,8 +81,6 @@
|
||||
if(EAST)
|
||||
angle = 90
|
||||
state = ((x+p*y) % 15) + 1
|
||||
if(state < 1)
|
||||
state += 15
|
||||
if(WEST)
|
||||
angle = -90
|
||||
state = ((x-p*y) % 15) + 1
|
||||
@@ -89,8 +88,6 @@
|
||||
state += 15
|
||||
else
|
||||
state = ((p*x+y) % 15) + 1
|
||||
if(state < 1)
|
||||
state += 15
|
||||
|
||||
icon_state = "speedspace_ns_[state]"
|
||||
transform = turn(matrix(), angle)
|
||||
|
||||
+35
-10
@@ -26,8 +26,9 @@
|
||||
var/requires_activation //add to air processing after initialize?
|
||||
var/changing_turf = FALSE
|
||||
|
||||
/turf/SDQL_update(const/var_name, new_value)
|
||||
if(var_name == "x" || var_name == "y" || var_name == "z")
|
||||
/turf/vv_edit_var(var_name, new_value)
|
||||
var/static/list/banned_edits = list("x", "y", "z")
|
||||
if(var_name in banned_edits)
|
||||
return FALSE
|
||||
. = ..()
|
||||
|
||||
@@ -44,23 +45,42 @@
|
||||
for(var/atom/movable/AM in src)
|
||||
Entered(AM)
|
||||
|
||||
var/area/A = loc
|
||||
if(!IS_DYNAMIC_LIGHTING(src) && IS_DYNAMIC_LIGHTING(A))
|
||||
add_overlay(/obj/effect/fullbright)
|
||||
|
||||
if(requires_activation)
|
||||
CalculateAdjacentTurfs()
|
||||
SSair.add_to_active(src)
|
||||
|
||||
if (light_power && light_range)
|
||||
update_light()
|
||||
|
||||
if (opacity)
|
||||
has_opaque_atom = TRUE
|
||||
|
||||
/turf/proc/Initalize_Atmos(times_fired)
|
||||
CalculateAdjacentTurfs()
|
||||
|
||||
/turf/Destroy(force)
|
||||
. = QDEL_HINT_IWILLGC
|
||||
if(!changing_turf)
|
||||
stack_trace("Incorrect turf deletion")
|
||||
changing_turf = FALSE
|
||||
if(force)
|
||||
..()
|
||||
//this will completely wipe turf state
|
||||
var/turf/basic/B = new /turf/basic(src)
|
||||
for(var/A in B.contents)
|
||||
qdel(A)
|
||||
for(var/I in B.vars)
|
||||
B.vars[I] = null
|
||||
return
|
||||
SSair.remove_from_active(src)
|
||||
visibilityChanged()
|
||||
initialized = FALSE
|
||||
requires_activation = FALSE
|
||||
..()
|
||||
return QDEL_HINT_IWILLGC
|
||||
|
||||
/turf/attack_hand(mob/user)
|
||||
user.Move_Pulled(src)
|
||||
@@ -110,7 +130,7 @@
|
||||
var/list/large_dense = list()
|
||||
//Next, check objects to block entry that are on the border
|
||||
for(var/atom/movable/border_obstacle in src)
|
||||
if(border_obstacle.flags&ON_BORDER)
|
||||
if(border_obstacle.flags & ON_BORDER)
|
||||
if(!border_obstacle.CanPass(mover, mover.loc, 1) && (forget != border_obstacle))
|
||||
mover.Bump(border_obstacle, 1)
|
||||
return 0
|
||||
@@ -123,10 +143,16 @@
|
||||
return 0
|
||||
|
||||
//Finally, check objects/mobs to block entry that are not on the border
|
||||
var/atom/movable/tompost_bump
|
||||
var/top_layer = 0
|
||||
for(var/atom/movable/obstacle in large_dense)
|
||||
if(!obstacle.CanPass(mover, mover.loc, 1) && (forget != obstacle))
|
||||
mover.Bump(obstacle, 1)
|
||||
return 0
|
||||
if(obstacle.layer > top_layer)
|
||||
tompost_bump = obstacle
|
||||
top_layer = obstacle.layer
|
||||
if(tompost_bump)
|
||||
mover.Bump(tompost_bump,1)
|
||||
return 0
|
||||
return 1 //Nothing found to block so return success!
|
||||
|
||||
/turf/Entered(atom/movable/AM)
|
||||
@@ -160,7 +186,7 @@
|
||||
//melting
|
||||
if(isobj(AM) && air && air.temperature > T0C)
|
||||
var/obj/O = AM
|
||||
if(O.is_frozen)
|
||||
if(HAS_SECONDARY_FLAG(O, FROZEN))
|
||||
O.make_unfrozen()
|
||||
|
||||
/turf/proc/is_plasteel_floor()
|
||||
@@ -276,7 +302,7 @@
|
||||
|
||||
/turf/storage_contents_dump_act(obj/item/weapon/storage/src_object, mob/user)
|
||||
if(src_object.contents.len)
|
||||
usr << "<span class='notice'>You start dumping out the contents...</span>"
|
||||
to_chat(usr, "<span class='notice'>You start dumping out the contents...</span>")
|
||||
if(!do_after(usr,20,target=src_object))
|
||||
return 0
|
||||
|
||||
@@ -392,7 +418,6 @@
|
||||
|
||||
T0.ChangeTurf(turf_type)
|
||||
|
||||
T0.redraw_lighting()
|
||||
SSair.remove_from_active(T0)
|
||||
T0.CalculateAdjacentTurfs()
|
||||
SSair.add_to_active(T0,1)
|
||||
@@ -462,4 +487,4 @@
|
||||
/turf/proc/remove_decal(group)
|
||||
LAZYINITLIST(decals)
|
||||
cut_overlay(decals[group])
|
||||
decals[group] = null
|
||||
decals[group] = null
|
||||
|
||||
Reference in New Issue
Block a user