mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-30 00:29:02 +01:00
Merge branch 'master' of https://github.com/tgstation/-tg-station into PullvsGrab
Conflicts: code/__DEFINES/misc.dm code/game/objects/structures/tables_racks.dm code/modules/mob/living/carbon/carbon.dm code/modules/mob/living/living.dm code/modules/mob/living/living_defines.dm
This commit is contained in:
@@ -141,7 +141,7 @@
|
||||
user << "<span class='warning'>This MMI does not seem to fit!</span>"
|
||||
return
|
||||
|
||||
if(M.syndiemmi)
|
||||
if(M.hacked)
|
||||
user << "<span class='warning'>This MMI does not seem to fit!</span>"
|
||||
return
|
||||
|
||||
|
||||
@@ -16,7 +16,8 @@
|
||||
handle_layer()
|
||||
|
||||
/obj/structure/chair/deconstruct()
|
||||
if(buildstacktype)
|
||||
// If we have materials, and don't have the NOCONSTRUCT flag
|
||||
if(buildstacktype && (!(flags & NODECONSTRUCT)))
|
||||
new buildstacktype(loc,buildstackamount)
|
||||
..()
|
||||
|
||||
|
||||
@@ -381,10 +381,10 @@
|
||||
|
||||
/obj/structure/closet/AltClick(mob/user)
|
||||
..()
|
||||
if(!user.canUseTopic(user))
|
||||
if(!user.canUseTopic(src, be_close=TRUE))
|
||||
user << "<span class='warning'>You can't do that right now!</span>"
|
||||
return
|
||||
if(opened || !secure || !in_range(src, user))
|
||||
if(opened || !secure)
|
||||
return
|
||||
else
|
||||
togglelock(user)
|
||||
|
||||
@@ -77,8 +77,8 @@
|
||||
new /obj/item/weapon/shield/riot/tele(src)
|
||||
new /obj/item/weapon/storage/belt/security/full(src)
|
||||
new /obj/item/weapon/gun/energy/gun/hos(src)
|
||||
new /obj/item/weapon/door_remote/head_of_security(src)
|
||||
new /obj/item/device/flashlight/seclite(src)
|
||||
new /obj/item/weapon/pinpointer(src)
|
||||
|
||||
/obj/structure/closet/secure_closet/warden
|
||||
name = "\proper warden's locker"
|
||||
@@ -101,6 +101,7 @@
|
||||
new /obj/item/weapon/storage/belt/security/full(src)
|
||||
new /obj/item/device/flashlight/seclite(src)
|
||||
new /obj/item/clothing/gloves/color/black/krav_maga/sec(src)
|
||||
new /obj/item/weapon/door_remote/head_of_security(src)
|
||||
|
||||
/obj/structure/closet/secure_closet/security
|
||||
name = "security officer's locker"
|
||||
|
||||
@@ -239,38 +239,23 @@
|
||||
|
||||
//a rock is flora according to where the icon file is
|
||||
//and now these defines
|
||||
|
||||
/obj/structure/flora/rock
|
||||
name = "rock"
|
||||
desc = "a rock"
|
||||
icon_state = "rock"
|
||||
icon_state = "basalt"
|
||||
desc = "A volcanic rock"
|
||||
icon = 'icons/obj/flora/rocks.dmi'
|
||||
anchored = 1
|
||||
burn_state = FIRE_PROOF
|
||||
density = 1
|
||||
|
||||
/obj/structure/flora/rock/New()
|
||||
..()
|
||||
icon_state = "[icon_state][rand(1,5)]"
|
||||
|
||||
/obj/structure/flora/rock/pile
|
||||
name = "rocks"
|
||||
desc = "some rocks"
|
||||
icon_state = "rockpile"
|
||||
density = 0
|
||||
|
||||
|
||||
/obj/structure/flora/rock/volcanic
|
||||
icon_state = "basalt"
|
||||
desc = "A volcanic rock"
|
||||
|
||||
|
||||
/obj/structure/flora/rock/volcanic/New()
|
||||
..()
|
||||
icon_state = "[icon_state][rand(1,3)]"
|
||||
|
||||
/obj/structure/flora/rock/pile/volcanic
|
||||
/obj/structure/flora/rock/pile
|
||||
icon_state = "lavarocks"
|
||||
desc = "A pile of rocks"
|
||||
|
||||
/obj/structure/flora/rock/pile/volcanic/New()
|
||||
/obj/structure/flora/rock/pile/New()
|
||||
..()
|
||||
icon_state = "[icon_state][rand(1,3)]"
|
||||
@@ -376,7 +376,7 @@
|
||||
user.visible_message("<span class='notice'>[user] plates [src] with runed metal.</span>", "<span class='notice'>You construct a runed wall.</span>")
|
||||
R.use(1)
|
||||
var/turf/T = get_turf(src)
|
||||
T.ChangeTurf(/turf/closed/wall/cult)
|
||||
T.ChangeTurf(/turf/closed/wall/mineral/cult)
|
||||
qdel(src)
|
||||
|
||||
else
|
||||
|
||||
@@ -258,3 +258,13 @@
|
||||
|
||||
/obj/structure/grille/storage_contents_dump_act(obj/item/weapon/storage/src_object, mob/user)
|
||||
return 0
|
||||
|
||||
/obj/structure/grille/broken // Pre-broken grilles for map placement
|
||||
icon_state = "brokengrille"
|
||||
density = 0
|
||||
health = 0
|
||||
destroyed = 1
|
||||
|
||||
/obj/structure/grille/broken/New()
|
||||
..()
|
||||
stored.amount = 1
|
||||
@@ -124,11 +124,9 @@
|
||||
|
||||
/obj/structure/reflector/AltClick(mob/user)
|
||||
..()
|
||||
if(!user.canUseTopic(user))
|
||||
if(!user.canUseTopic(src, be_close=TRUE))
|
||||
user << "<span class='warning'>You can't do that right now!</span>"
|
||||
return
|
||||
if(!in_range(src, user))
|
||||
return
|
||||
else
|
||||
rotate()
|
||||
|
||||
|
||||
@@ -252,29 +252,54 @@
|
||||
buildstack = /obj/item/stack/sheet/glass
|
||||
canSmoothWith = null
|
||||
health = 50
|
||||
var/list/debris = list()
|
||||
|
||||
/obj/structure/table/glass/New()
|
||||
. = ..()
|
||||
debris += new frame
|
||||
debris += new /obj/item/weapon/shard
|
||||
|
||||
/obj/structure/table/glass/Destroy()
|
||||
for(var/i in debris)
|
||||
qdel(i)
|
||||
. = ..()
|
||||
|
||||
/obj/structure/table/glass/Crossed(atom/movable/AM)
|
||||
. = ..()
|
||||
if(flags & NODECONSTRUCT)
|
||||
return
|
||||
if(!isliving(AM))
|
||||
return
|
||||
// Don't break if they're just flying past
|
||||
if(AM.throwing)
|
||||
return
|
||||
spawn(5)
|
||||
// Check again in a bit though
|
||||
if(AM.loc == get_turf(src))
|
||||
check_break(AM)
|
||||
else
|
||||
check_break(AM)
|
||||
|
||||
if(istype(AM, /mob/living))
|
||||
var/mob/living/M = AM
|
||||
if(has_gravity(M) && M.mob_size > MOB_SIZE_SMALL)
|
||||
table_shatter(M)
|
||||
/obj/structure/table/glass/proc/check_break(mob/living/M)
|
||||
if(has_gravity(M) && M.mob_size > MOB_SIZE_SMALL)
|
||||
table_shatter(M)
|
||||
|
||||
/obj/structure/table/glass/proc/table_shatter(mob/M)
|
||||
visible_message("<span class='warning'>[src] breaks!</span>")
|
||||
visible_message("<span class='warning'>[src] breaks!</span>",
|
||||
"<span class='danger'>You hear breaking glass.</span>")
|
||||
playsound(src.loc, "shatter", 50, 1)
|
||||
new frame(src.loc)
|
||||
var/obj/item/weapon/shard/S = new(src.loc)
|
||||
S.throw_impact(M)
|
||||
for(var/i in debris)
|
||||
var/atom/movable/AM = i
|
||||
AM.loc = get_turf(src)
|
||||
if(istype(AM, /obj/item/weapon/shard))
|
||||
AM.throw_impact(M)
|
||||
M.Weaken(5)
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/table/glass/narsie_act()
|
||||
color = NARSIE_WINDOW_COLOUR
|
||||
for(var/obj/item/weapon/shard/S in debris)
|
||||
S.color = NARSIE_WINDOW_COLOUR
|
||||
|
||||
/*
|
||||
* Wooden tables
|
||||
*/
|
||||
|
||||
@@ -167,7 +167,7 @@
|
||||
else
|
||||
if(istype(loc, /turf/open))
|
||||
var/turf/open/tile = loc
|
||||
tile.MakeSlippery()
|
||||
tile.MakeSlippery(min_wet_time = 5, wet_time_to_add = 1)
|
||||
|
||||
|
||||
/obj/machinery/shower/attackby(obj/item/I, mob/user, params)
|
||||
@@ -477,4 +477,4 @@
|
||||
/obj/structure/sink/puddle/attackby(obj/item/O, mob/user, params)
|
||||
icon_state = "puddle-splash"
|
||||
. = ..()
|
||||
icon_state = "puddle"
|
||||
icon_state = "puddle"
|
||||
|
||||
@@ -14,10 +14,10 @@
|
||||
var/reinf = 0
|
||||
var/wtype = "glass"
|
||||
var/fulltile = 0
|
||||
var/list/storeditems = list()
|
||||
// var/silicate = 0 // number of units of silicate
|
||||
// var/icon/silicateIcon = null // the silicated icon
|
||||
var/image/crack_overlay
|
||||
var/list/debris = list()
|
||||
can_be_unanchored = 1
|
||||
|
||||
/obj/structure/window/examine(mob/user)
|
||||
@@ -32,21 +32,25 @@
|
||||
if(reinf)
|
||||
state = 2*anchored
|
||||
|
||||
spawn(5) // The NODECONSTRUCT flag gets added immediately by the holodeck (but not immediately enough)
|
||||
if(!(flags & NODECONSTRUCT))
|
||||
storeditems.Add(new/obj/item/weapon/shard(src))
|
||||
if(fulltile)
|
||||
storeditems.Add(new/obj/item/weapon/shard(src))
|
||||
if(reinf)
|
||||
var/obj/item/stack/rods/R = new/obj/item/stack/rods(src)
|
||||
storeditems.Add(R)
|
||||
if(fulltile)
|
||||
R.add(1)
|
||||
|
||||
ini_dir = dir
|
||||
air_update_turf(1)
|
||||
|
||||
return
|
||||
// Precreate our own debris
|
||||
|
||||
var/shards = 1
|
||||
if(fulltile)
|
||||
shards++
|
||||
var/rods = 0
|
||||
if(reinf)
|
||||
rods++
|
||||
if(fulltile)
|
||||
rods++
|
||||
|
||||
for(var/i in 1 to shards)
|
||||
debris += new /obj/item/weapon/shard(src)
|
||||
if(rods)
|
||||
debris += new /obj/item/stack/rods(src, rods)
|
||||
|
||||
|
||||
/obj/structure/window/bullet_act(obj/item/projectile/P)
|
||||
. = ..()
|
||||
@@ -65,7 +69,9 @@
|
||||
shatter()
|
||||
|
||||
/obj/structure/window/narsie_act()
|
||||
color = "#7D1919"
|
||||
color = NARSIE_WINDOW_COLOUR
|
||||
for(var/obj/item/weapon/shard/shard in debris)
|
||||
shard.color = NARSIE_WINDOW_COLOUR
|
||||
|
||||
/obj/structure/window/singularity_pull(S, current_size)
|
||||
if(current_size >= STAGE_FIVE)
|
||||
@@ -276,9 +282,13 @@
|
||||
return
|
||||
playsound(src, "shatter", 70, 1)
|
||||
var/turf/T = loc
|
||||
for(var/obj/item/I in storeditems)
|
||||
I.loc = T
|
||||
transfer_fingerprints_to(I)
|
||||
|
||||
if(!(flags & NODECONSTRUCT))
|
||||
for(var/i in debris)
|
||||
var/obj/item/I = i
|
||||
|
||||
I.loc = T
|
||||
transfer_fingerprints_to(I)
|
||||
qdel(src)
|
||||
update_nearby_icons()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user