mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-19 20:15:47 +01:00
Merge pull request #49613 from SteelSlayer/airlock-painter-improvements
Airlock painter code improvements. Fixes some mixed up in-hand sprites for it
This commit is contained in:
@@ -1126,82 +1126,33 @@
|
||||
locked = TRUE
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/door/airlock/proc/change_paintjob(obj/item/airlock_painter/W, mob/user)
|
||||
if(!W.can_use(user))
|
||||
// gets called when a player uses an airlock painter on this airlock
|
||||
/obj/machinery/door/airlock/proc/change_paintjob(obj/item/airlock_painter/painter, mob/user)
|
||||
if((!in_range(src, user) && loc != user) || !painter.can_use(user)) // user should be adjacent to the airlock, and the painter should have a toner cartridge that isn't empty
|
||||
return
|
||||
|
||||
var/list/optionlist
|
||||
if(airlock_material == "glass")
|
||||
optionlist = list("Standard", "Public", "Engineering", "Atmospherics", "Security", "Command", "Medical", "Research", "Science", "Virology", "Mining", "Maintenance", "External", "External Maintenance")
|
||||
// reads from the airlock painter's `available paintjob` list. lets the player choose a paint option, or cancel painting
|
||||
var/current_paintjob = input(user, "Please select a paintjob for this airlock.") as null|anything in sortList(painter.available_paint_jobs)
|
||||
if(!current_paintjob) // if the user clicked cancel on the popup, return
|
||||
return
|
||||
|
||||
var/airlock_type = painter.available_paint_jobs["[current_paintjob]"] // get the airlock type path associated with the airlock name the user just chose
|
||||
var/obj/machinery/door/airlock/airlock = new airlock_type // we need to create an new instance of the airlock and assembly to read vars from them
|
||||
var/obj/structure/door_assembly/assembly = new airlock.assemblytype
|
||||
|
||||
if(airlock_material == "glass" && assembly.noglass) // prevents painting glass airlocks with a paint job that doesn't have a glass version, such as the freezer
|
||||
to_chat(user, "<span class='warning'>This paint job can only be applied to non-glass airlocks.</span>")
|
||||
else
|
||||
optionlist = list("Standard", "Public", "Engineering", "Atmospherics", "Security", "Command", "Medical", "Research", "Freezer", "Science", "Virology", "Mining", "Maintenance", "External", "External Maintenance")
|
||||
// applies the user-chosen airlock's icon, overlays and assemblytype to the src airlock
|
||||
painter.use_paint(user)
|
||||
icon = airlock.icon
|
||||
overlays_file = airlock.overlays_file
|
||||
assemblytype = airlock.assemblytype
|
||||
update_icon()
|
||||
|
||||
var/paintjob = input(user, "Please select a paintjob for this airlock.") in sortList(optionlist)
|
||||
if((!in_range(src, usr) && loc != usr) || !W.use_paint(user))
|
||||
return
|
||||
switch(paintjob)
|
||||
if("Standard")
|
||||
icon = 'icons/obj/doors/airlocks/station/public.dmi'
|
||||
overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
|
||||
assemblytype = /obj/structure/door_assembly
|
||||
if("Public")
|
||||
icon = 'icons/obj/doors/airlocks/station2/glass.dmi'
|
||||
overlays_file = 'icons/obj/doors/airlocks/station2/overlays.dmi'
|
||||
assemblytype = /obj/structure/door_assembly/door_assembly_public
|
||||
if("Engineering")
|
||||
icon = 'icons/obj/doors/airlocks/station/engineering.dmi'
|
||||
overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
|
||||
assemblytype = /obj/structure/door_assembly/door_assembly_eng
|
||||
if("Atmospherics")
|
||||
icon = 'icons/obj/doors/airlocks/station/atmos.dmi'
|
||||
overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
|
||||
assemblytype = /obj/structure/door_assembly/door_assembly_atmo
|
||||
if("Security")
|
||||
icon = 'icons/obj/doors/airlocks/station/security.dmi'
|
||||
overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
|
||||
assemblytype = /obj/structure/door_assembly/door_assembly_sec
|
||||
if("Command")
|
||||
icon = 'icons/obj/doors/airlocks/station/command.dmi'
|
||||
overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
|
||||
assemblytype = /obj/structure/door_assembly/door_assembly_com
|
||||
if("Medical")
|
||||
icon = 'icons/obj/doors/airlocks/station/medical.dmi'
|
||||
overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
|
||||
assemblytype = /obj/structure/door_assembly/door_assembly_med
|
||||
if("Research")
|
||||
icon = 'icons/obj/doors/airlocks/station/research.dmi'
|
||||
overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
|
||||
assemblytype = /obj/structure/door_assembly/door_assembly_research
|
||||
if("Freezer")
|
||||
icon = 'icons/obj/doors/airlocks/station/freezer.dmi'
|
||||
overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
|
||||
assemblytype = /obj/structure/door_assembly/door_assembly_fre
|
||||
if("Science")
|
||||
icon = 'icons/obj/doors/airlocks/station/science.dmi'
|
||||
overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
|
||||
assemblytype = /obj/structure/door_assembly/door_assembly_science
|
||||
if("Virology")
|
||||
icon = 'icons/obj/doors/airlocks/station/virology.dmi'
|
||||
overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
|
||||
assemblytype = /obj/structure/door_assembly/door_assembly_viro
|
||||
if("Mining")
|
||||
icon = 'icons/obj/doors/airlocks/station/mining.dmi'
|
||||
overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
|
||||
assemblytype = /obj/structure/door_assembly/door_assembly_min
|
||||
if("Maintenance")
|
||||
icon = 'icons/obj/doors/airlocks/station/maintenance.dmi'
|
||||
overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
|
||||
assemblytype = /obj/structure/door_assembly/door_assembly_mai
|
||||
if("External")
|
||||
icon = 'icons/obj/doors/airlocks/external/external.dmi'
|
||||
overlays_file = 'icons/obj/doors/airlocks/external/overlays.dmi'
|
||||
assemblytype = /obj/structure/door_assembly/door_assembly_ext
|
||||
if("External Maintenance")
|
||||
icon = 'icons/obj/doors/airlocks/station/maintenanceexternal.dmi'
|
||||
overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
|
||||
assemblytype = /obj/structure/door_assembly/door_assembly_extmai
|
||||
update_icon()
|
||||
// these are just hanging around but are never placed, we need to delete them
|
||||
qdel(airlock)
|
||||
qdel(assembly)
|
||||
|
||||
/obj/machinery/door/airlock/CanAStarPass(obj/item/card/id/ID)
|
||||
//Airlock is passable if it is open (!density), bot has access, and is not bolted shut or powered off)
|
||||
|
||||
@@ -15,6 +15,24 @@
|
||||
usesound = 'sound/effects/spray2.ogg'
|
||||
|
||||
var/obj/item/toner/ink = null
|
||||
/// Associate list of all paint jobs the airlock painter can apply. The key is the name of the airlock the user will see. The value is the type path of the airlock
|
||||
var/list/available_paint_jobs = list(
|
||||
"Public" = /obj/machinery/door/airlock/public,
|
||||
"Engineering" = /obj/machinery/door/airlock/engineering,
|
||||
"Atmospherics" = /obj/machinery/door/airlock/atmos,
|
||||
"Security" = /obj/machinery/door/airlock/security,
|
||||
"Command" = /obj/machinery/door/airlock/command,
|
||||
"Medical" = /obj/machinery/door/airlock/medical,
|
||||
"Research" = /obj/machinery/door/airlock/research,
|
||||
"Freezer" = /obj/machinery/door/airlock/freezer,
|
||||
"Science" = /obj/machinery/door/airlock/science,
|
||||
"Mining" = /obj/machinery/door/airlock/mining,
|
||||
"Maintenance" = /obj/machinery/door/airlock/maintenance,
|
||||
"External" = /obj/machinery/door/airlock/external,
|
||||
"External Maintenance"= /obj/machinery/door/airlock/maintenance/external,
|
||||
"Virology" = /obj/machinery/door/airlock/virology,
|
||||
"Standard" = /obj/machinery/door/airlock
|
||||
)
|
||||
|
||||
/obj/item/airlock_painter/Initialize()
|
||||
. = ..()
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
Reference in New Issue
Block a user