Merge branch 'master' into Refactors-beds-stools-chairs

This commit is contained in:
Purpose
2018-09-29 15:36:27 +01:00
committed by GitHub
243 changed files with 2079 additions and 1399 deletions
-136
View File
@@ -1,136 +0,0 @@
///////////
// EASEL //
///////////
/obj/structure/easel
name = "easel"
desc = "only for the finest of art!"
icon = 'icons/obj/artstuff.dmi'
icon_state = "easel"
density = 1
burn_state = FLAMMABLE
burntime = 15
var/obj/item/canvas/painting = null
/obj/structure/easel/Destroy()
QDEL_NULL(painting)
return ..()
//Adding canvases
/obj/structure/easel/attackby(var/obj/item/I, var/mob/user, params)
if(istype(I, /obj/item/canvas))
var/obj/item/canvas/C = I
user.unEquip(C)
painting = C
C.loc = get_turf(src)
C.layer = layer+0.1
user.visible_message("<span class='notice'>[user] puts \the [C] on \the [src].</span>","<span class='notice'>You place \the [C] on \the [src].</span>")
return
..()
//Stick to the easel like glue
/obj/structure/easel/Move()
var/turf/T = get_turf(src)
..()
if(painting && painting.loc == T) //Only move if it's near us.
painting.loc = get_turf(src)
else
painting = null
//////////////
// CANVASES //
//////////////
#define AMT_OF_CANVASES 4 //Keep this up to date or shit will break.
//To safe memory on making /icons we cache the blanks..
var/global/list/globalBlankCanvases[AMT_OF_CANVASES]
/obj/item/canvas
name = "11px by 11px canvas"
desc = "Draw out your soul on this canvas! Only crayons can draw on it. Examine it to focus on the canvas."
icon = 'icons/obj/artstuff.dmi'
icon_state = "11x11"
burn_state = FLAMMABLE
var/whichGlobalBackup = 1 //List index
/obj/item/canvas/nineteenXnineteen
name = "19px by 19px canvas"
icon_state = "19x19"
whichGlobalBackup = 2
/obj/item/canvas/twentythreeXnineteen
name = "23px by 19px canvas"
icon_state = "23x19"
whichGlobalBackup = 3
/obj/item/canvas/twentythreeXtwentythree
name = "23px by 23px canvas"
icon_state = "23x23"
whichGlobalBackup = 4
//Find the right size blank canvas
/obj/item/canvas/proc/getGlobalBackup()
. = null
if(globalBlankCanvases[whichGlobalBackup])
. = globalBlankCanvases[whichGlobalBackup]
else
var/icon/I = icon(initial(icon),initial(icon_state))
globalBlankCanvases[whichGlobalBackup] = I
. = I
//One pixel increments
/obj/item/canvas/attackby(var/obj/item/I, var/mob/user, params)
//Click info
var/list/click_params = params2list(params)
var/pixX = text2num(click_params["icon-x"])
var/pixY = text2num(click_params["icon-y"])
//Should always be true, otherwise you didn't click the object, but let's check because SS13~
if(!click_params || !click_params["icon-x"] || !click_params["icon-y"])
return
var/icon/masterpiece = icon(icon,icon_state)
//Cleaning one pixel with a soap or rag
if(istype(I, /obj/item/soap) || istype(I, /obj/item/reagent_containers/glass/rag))
//Pixel info created only when needed
var/thePix = masterpiece.GetPixel(pixX,pixY)
var/icon/Ico = getGlobalBackup()
if(!Ico)
qdel(masterpiece)
return
var/theOriginalPix = Ico.GetPixel(pixX,pixY)
if(thePix != theOriginalPix) //colour changed
DrawPixelOn(theOriginalPix,pixX,pixY)
qdel(masterpiece)
return 1
//Drawing one pixel with a crayon
if(istype(I, /obj/item/toy/crayon))
var/obj/item/toy/crayon/C = I
var/pix = masterpiece.GetPixel(pixX, pixY)
if(pix && pix != C.colour) // if the located pixel isn't blank (null))
DrawPixelOn(C.colour, pixX, pixY)
qdel(masterpiece)
return 1
..()
//Clean the whole canvas
/obj/item/canvas/attack_self(var/mob/user)
if(!user)
return
var/icon/blank = getGlobalBackup()
if(blank)
//it's basically a giant etch-a-sketch
icon = blank
user.visible_message("<span class='notice'>[user] cleans the canvas.</span>","<span class='notice'>You clean the canvas.</span>")
#undef AMT_OF_CANVASES
@@ -423,4 +423,7 @@
/obj/structure/closet/get_remote_view_fullscreens(mob/user)
if(user.stat == DEAD || !(user.sight & (SEEOBJS|SEEMOBS)))
user.overlay_fullscreen("remote_view", /obj/screen/fullscreen/impaired, 1)
user.overlay_fullscreen("remote_view", /obj/screen/fullscreen/impaired, 1)
/obj/structure/closet/AllowDrop()
return TRUE
+52 -3
View File
@@ -1,3 +1,8 @@
#define NO_EXTINGUISHER 0
#define NORMAL_EXTINGUISHER 1
#define MINI_EXTINGUISHER 2
/obj/structure/extinguisher_cabinet
name = "extinguisher cabinet"
desc = "A small wall mounted cabinet designed to hold a fire extinguisher."
@@ -5,13 +10,28 @@
icon_state = "extinguisher_closed"
anchored = 1
density = 0
var/obj/item/extinguisher/has_extinguisher = new/obj/item/extinguisher
var/obj/item/extinguisher/has_extinguisher = null
var/extinguishertype
var/opened = 0
var/material_drop = /obj/item/stack/sheet/metal
/obj/structure/extinguisher_cabinet/New(turf/loc, ndir = null)
..()
if(ndir)
pixel_x = (ndir & EAST|WEST) ? (ndir == EAST ? 28 : -28) : 0
pixel_y = (ndir & NORTH|SOUTH)? (ndir == WEST ? 28 : -28) : 0
switch(extinguishertype)
if(NO_EXTINGUISHER)
return
if(MINI_EXTINGUISHER)
has_extinguisher = new/obj/item/extinguisher/mini
else
has_extinguisher = new/obj/item/extinguisher
/obj/structure/extinguisher_cabinet/Destroy()
QDEL_NULL(has_extinguisher)
return ..()
/obj/structure/extinguisher_cabinet/attackby(obj/item/O, mob/user, params)
if(isrobot(user) || isalien(user))
return
@@ -23,13 +43,34 @@
to_chat(user, "<span class='notice'>You place [O] in [src].</span>")
else
opened = !opened
else if(istype(O, /obj/item/weldingtool))
if(has_extinguisher)
to_chat(user, "<span class='warning'>You need to remove the extinguisher before deconstructing the cabinet!</span>")
return
if(!opened)
to_chat(user, "<span class='warning'>Open the cabinet before cutting it apart!</span>")
return
var/obj/item/weldingtool/WT = O
if(!WT.remove_fuel(0, user))
return
to_chat(user, "<span class='notice'>You begin cutting [src] apart...</span>")
playsound(loc, WT.usesound, 40, 1)
if(do_after(user, 40 * WT.toolspeed, 1, target = src))
if(!src ||!opened || !WT.isOn()) // !src to prevent it being duped
return
visible_message("<span class='notice'>[user] slices apart [src].</span>",
"<span class='notice'>You cut [src] apart with [WT].</span>",
"<span class='italics'>You hear welding.</span>")
var/turf/T = get_turf(src)
new material_drop(T)
qdel(src)
else
opened = !opened
update_icon()
/obj/structure/extinguisher_cabinet/attack_hand(mob/user)
if(isrobot(user) || isalien(user))
to_chat(user, "<span class='notice'>You don't have the dexterity to do this!</span>")
return
if(ishuman(user))
var/mob/living/carbon/human/H = user
@@ -70,3 +111,11 @@
icon_state = "extinguisher_full"
else
icon_state = "extinguisher_empty"
/obj/structure/extinguisher_cabinet/empty/New(turf/loc, ndir = null)
extinguishertype = NO_EXTINGUISHER
..()
#undef NO_EXTINGUISHER
#undef NORMAL_EXTINGUISHER
#undef MINI_EXTINGUISHER
+1 -2
View File
@@ -243,7 +243,7 @@
icon_state = "shower"
density = 0
anchored = 1
use_power = 0
use_power = NO_POWER_USE
var/on = 0
var/obj/effect/mist/mymist = null
var/ismist = 0 //needs a var so we can make it linger~
@@ -756,4 +756,3 @@
qdel(src)
if(prob(50))
new /obj/item/stack/sheet/cardboard(T)