The monkey portrait decoration is now a set of random pictures that also act as persistent photo frames. Every station map gets one. (#61844)

spriteadd: Desouled the picture frame sprites.
This commit is contained in:
Ghom
2021-10-08 06:10:03 -04:00
committed by GitHub
parent 92330a241e
commit 4d84a5b36e
15 changed files with 135 additions and 44 deletions
+12 -6
View File
@@ -28262,10 +28262,10 @@
},
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/mob/living/simple_animal/sloth/citrus,
/obj/structure/disposalpipe/segment{
dir = 9
},
/mob/living/simple_animal/sloth/citrus,
/turf/open/floor/iron,
/area/cargo/qm)
"dEb" = (
@@ -38671,8 +38671,8 @@
dir = 4
},
/obj/machinery/airalarm/directional/west,
/mob/living/simple_animal/pet/cat/runtime,
/obj/structure/disposalpipe/segment,
/mob/living/simple_animal/pet/cat/runtime,
/turf/open/floor/iron,
/area/command/heads_quarters/cmo)
"fCE" = (
@@ -49945,10 +49945,10 @@
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/mob/living/basic/cockroach,
/obj/structure/disposalpipe/segment{
dir = 4
},
/mob/living/basic/cockroach,
/turf/open/floor/plating,
/area/maintenance/port/aft)
"iRw" = (
@@ -73191,8 +73191,8 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/mob/living/simple_animal/pet/fox/renault,
/obj/machinery/newscaster/directional/south,
/mob/living/simple_animal/pet/fox/renault,
/turf/open/floor/iron/dark,
/area/command/heads_quarters/captain)
"pGD" = (
@@ -86972,6 +86972,12 @@
},
/turf/open/floor/iron,
/area/cargo/miningoffice)
"tIm" = (
/obj/structure/sign/picture_frame/portrait/bar{
pixel_x = -32
},
/turf/open/floor/iron/dark,
/area/service/bar)
"tIE" = (
/obj/structure/reagent_dispensers/fueltank,
/obj/effect/decal/cleanable/dirt,
@@ -138800,7 +138806,7 @@ bAY
alf
heA
cgp
heA
aXI
aXI
aXI
aXI
@@ -139057,7 +139063,7 @@ iXT
alf
hFM
gMU
unM
tIm
guN
stu
pqt
@@ -2455,6 +2455,7 @@
/obj/item/vending_refill/cigarette,
/obj/machinery/light/small/directional/east,
/obj/structure/table/wood,
/obj/machinery/airalarm/directional/east,
/turf/open/floor/iron,
/area/service/bar)
"mC" = (
@@ -5850,8 +5851,10 @@
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
dir = 1
},
/obj/machinery/status_display/evac/directional/south,
/obj/effect/decal/cleanable/dirt/dust,
/obj/structure/sign/picture_frame/portrait/bar{
pixel_y = -32
},
/turf/open/floor/iron,
/area/service/bar)
"Cx" = (
@@ -7836,8 +7839,8 @@
/obj/effect/turf_decal/siding/wood{
dir = 8
},
/mob/living/carbon/human/species/monkey/punpun,
/obj/structure/table/wood,
/mob/living/carbon/human/species/monkey/punpun,
/turf/open/floor/iron,
/area/service/bar)
"Ls" = (
@@ -9142,12 +9145,12 @@
/obj/effect/turf_decal/tile/red{
dir = 1
},
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/mob/living/simple_animal/bot/secbot/beepsky{
desc = "Powered by the tears and sweat of laborers.";
name = "Prison Ofitser"
},
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/turf/open/floor/iron,
/area/mine/laborcamp/security)
"Rx" = (
@@ -9508,6 +9511,7 @@
dir = 1
},
/obj/machinery/light/small/directional/east,
/obj/machinery/status_display/evac/directional/east,
/turf/open/floor/stone,
/area/service/bar/atrium)
"Te" = (
@@ -10001,7 +10005,6 @@
},
/obj/machinery/duct,
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
/obj/machinery/airalarm/directional/west,
/turf/open/floor/iron,
/area/service/bar)
"Vs" = (
+10 -10
View File
@@ -22285,11 +22285,11 @@
/area/security/warden)
"coG" = (
/obj/structure/bed/dogbed/renault,
/mob/living/simple_animal/pet/fox/renault,
/obj/machinery/button/door/directional/south{
id = "captain_escape";
name = "Tactical Relocation Toggle"
},
/mob/living/simple_animal/pet/fox/renault,
/turf/open/floor/wood,
/area/command/heads_quarters/captain)
"coH" = (
@@ -28523,11 +28523,6 @@
/obj/effect/turf_decal/tile/blue,
/obj/machinery/light/directional/south,
/obj/effect/turf_decal/stripes/corner,
/mob/living/simple_animal/bot/cleanbot{
auto_patrol = 1;
icon_state = "cleanbot1";
name = "Mopficcer Sweepsky"
},
/obj/machinery/button/door/directional/south{
id = "custodialwagon";
name = "Custodial Bay Toggle";
@@ -28536,6 +28531,11 @@
/obj/structure/disposalpipe/segment{
dir = 5
},
/mob/living/simple_animal/bot/cleanbot{
auto_patrol = 1;
icon_state = "cleanbot1";
name = "Mopficcer Sweepsky"
},
/turf/open/floor/iron,
/area/hallway/primary/starboard)
"dAD" = (
@@ -50912,8 +50912,8 @@
/obj/structure/reagent_dispensers/beerkeg{
pixel_y = 5
},
/obj/structure/sign/poster/contraband/red_rum{
pixel_y = -30
/obj/structure/sign/picture_frame/portrait/bar{
pixel_y = -32
},
/turf/open/floor/iron/dark,
/area/service/bar)
@@ -69344,10 +69344,10 @@
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/mob/living/simple_animal/bot/cleanbot/medbay,
/obj/structure/disposalpipe/segment{
dir = 10
},
/mob/living/simple_animal/bot/cleanbot/medbay,
/turf/open/floor/iron/dark,
/area/medical/storage)
"sMk" = (
@@ -83637,8 +83637,8 @@
/obj/structure/water_source/puddle,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/mob/living/carbon/human/species/monkey,
/obj/machinery/light_switch/directional/south,
/mob/living/carbon/human/species/monkey,
/turf/open/floor/grass,
/area/science/genetics)
"yll" = (
+1 -1
View File
@@ -44131,7 +44131,7 @@
/area/science/storage)
"nFR" = (
/obj/machinery/vending/boozeomat,
/obj/structure/sign/plaques/deempisi{
/obj/structure/sign/picture_frame/portrait/bar{
pixel_y = -28
},
/obj/effect/turf_decal/tile/bar{
+1 -1
View File
@@ -67028,7 +67028,7 @@
/obj/effect/turf_decal/tile/bar{
dir = 1
},
/obj/structure/sign/plaques/deempisi{
/obj/structure/sign/picture_frame/portrait/bar{
pixel_y = 28
},
/obj/structure/cable,
+2 -2
View File
@@ -1222,7 +1222,7 @@
/turf/open/floor/iron/dark,
/area/shuttle/escape)
"oH" = (
/obj/structure/sign/plaques/deempisi{
/obj/structure/sign/picture_frame/portrait{
pixel_y = 28
},
/obj/item/kirbyplants{
@@ -2269,7 +2269,7 @@
/area/shuttle/escape)
"zU" = (
/obj/structure/dresser,
/obj/structure/sign/plaques/deempisi{
/obj/structure/sign/picture_frame/portrait{
pixel_y = 28
},
/turf/open/floor/iron/grimy,
+3
View File
@@ -26,6 +26,9 @@ require only minor tweaks.
#define SPACERUIN_MAP_EDGE_PAD 15
/// Special map path value for custom adminloaded stations.
#define CUSTOM_MAP_PATH "custom"
// traits
// boolean - marks a level as having that property if present
#define ZTRAIT_CENTCOM "CentCom"
+1 -1
View File
@@ -293,7 +293,7 @@ Used by the AI doomsday and the self-destruct nuke.
#undef INIT_ANNOUNCE
// Custom maps are removed after station loading so the map files does not persist for no reason.
if(config.map_path == "custom")
if(config.map_path == CUSTOM_MAP_PATH)
fdel("_maps/custom/[config.map_file]")
// And as the file is now removed set the next map to default.
next_map_config = load_map_config(default_to_box = TRUE)
+13
View File
@@ -262,6 +262,19 @@ SUBSYSTEM_DEF(persistence)
if(fexists(frame_path))
return json_decode(file2text(frame_path))
/// Removes the identifier of a persitent photo frame from the json.
/datum/controller/subsystem/persistence/proc/RemovePhotoFrame(identifier)
var/frame_path = file("data/photo_frames.json")
if(!fexists(frame_path))
return
var/frame_json = json_decode(file2text(frame_path))
frame_json -= identifier
frame_json = json_encode(frame_json)
fdel(frame_path)
WRITE_FILE(frame_path, frame_json)
/datum/controller/subsystem/persistence/proc/LoadPhotoPersistence()
var/album_path = file("data/photo_albums.json")
var/frame_path = file("data/photo_frames.json")
+2 -4
View File
@@ -212,8 +212,8 @@
* the Atom subsystem intialization, or if the atom is being loaded from the map template.
* If the item is being created at runtime any time after the Atom subsystem is intialized then
* it's false.
*
* The mapload argument occupies the same position as loc when Initialize() is called by New().
*
* The mapload argument occupies the same position as loc when Initialize() is called by New().
* loc will no longer be needed after it passed New(), and thus it is being overwritten
* with mapload at the end of atom/New() before this proc (atom/Initialize()) is called.
*
@@ -681,8 +681,6 @@
/atom/proc/examine_more(mob/user)
. = list()
SEND_SIGNAL(src, COMSIG_PARENT_EXAMINE_MORE, user, .)
if(!LAZYLEN(.)) // lol ..length
return list(span_notice("<i>You examine [src] closer, but find nothing of interest...</i>"))
/**
* Updates the appearence of the icon
@@ -133,9 +133,3 @@
/obj/structure/sign/plaques/kiddie/perfect_drone
name = "\improper 'Perfect Drone' sign"
desc = "A guide to the drone shell dispenser, detailing the constructive and destructive applications of modern repair drones, as well as the development of the incorruptible cyborg servants of tomorrow, available today."
/obj/structure/sign/plaques/deempisi
name = "\improper Mr. Deempisi portrait"
desc = "Under the painting a plaque reads: 'While the meat grinder may not have spared you, fear not. Not one part of you has gone to waste... You were delicious.'"
icon_state = "monkey_painting"
custom_materials = list(/datum/material/wood = 2000) //The same as /obj/structure/sign/picture_frame
+1 -1
View File
@@ -80,7 +80,7 @@
continue
VM.shuttles[s] = shuttle
VM.map_path = "custom"
VM.map_path = CUSTOM_MAP_PATH
VM.map_file = "[map_file]"
VM.config_filename = "data/next_map.json"
var/json_value = list(
+2
View File
@@ -470,6 +470,8 @@
handle_eye_contact(examinify)
else
result = examinify.examine_more(src)
if(!length(result))
result += span_notice("<i>You examine [src] closer, but find nothing of interest...</i>")
else
result = examinify.examine(src) // if a tree is examined but no client is there to see it, did the tree ever really exist?
+79 -7
View File
@@ -67,6 +67,8 @@
custom_materials = list(/datum/material/wood = 2000)
var/obj/item/photo/framed
var/persistence_id
var/del_id_on_destroy = FALSE
var/art_value = OK_ART
var/can_decon = TRUE
#define FRAME_DEFINE(id) /obj/structure/sign/picture_frame/##id/persistence_id = #id
@@ -77,7 +79,7 @@
/obj/structure/sign/picture_frame/Initialize(mapload, dir, building)
. = ..()
AddElement(/datum/element/art, OK_ART)
AddElement(/datum/element/art, art_value)
LAZYADD(SSpersistence.photo_frames, src)
if(dir)
setDir(dir)
@@ -87,6 +89,8 @@
/obj/structure/sign/picture_frame/Destroy()
LAZYREMOVE(SSpersistence.photo_frames, src)
if(persistence_id && del_id_on_destroy)
SSpersistence.RemovePhotoFrame(persistence_id)
return ..()
/obj/structure/sign/picture_frame/proc/get_photo_id()
@@ -110,11 +114,9 @@
update_appearance()
/obj/structure/sign/picture_frame/examine(mob/user)
if(in_range(src, user) && framed)
framed.show(user)
return list()
else
return ..()
. = ..()
if(in_range(src, user))
framed?.show(user)
/obj/structure/sign/picture_frame/attackby(obj/item/I, mob/user, params)
if(can_decon && (I.tool_behaviour == TOOL_SCREWDRIVER || I.tool_behaviour == TOOL_WRENCH))
@@ -126,8 +128,9 @@
else if(I.tool_behaviour == TOOL_WIRECUTTER && framed)
framed.forceMove(drop_location())
framed = null
user.visible_message(span_warning("[user] cuts away [framed] from [src]!"))
framed = null
update_appearance()
return
else if(istype(I, /obj/item/photo))
@@ -172,6 +175,65 @@
desc = "A photo frame to commemorate crewmembers that distinguished themselves in the line of duty. WARNING: unauthorized tampering will be severely punished."
can_decon = FALSE
/// This used to be a plaque portrait of a monkey. Now it's been revamped into something more.
/obj/structure/sign/picture_frame/portrait
icon_state = "frame-monkey"
can_decon = FALSE
art_value = GOOD_ART
var/portrait_name
var/portrait_state
var/portrait_desc
/obj/structure/sign/picture_frame/portrait/Initialize()
. = ..()
switch(rand(1,4))
if(1) // Deempisi
name = "\improper Mr. Deempisi portrait"
icon_state = "frame-monkey"
desc = "Under the portrait a plaque reads: 'While the meat grinder may not have spared you, fear not. Not one part of you has gone to waste... You were delicious.'"
if(2) // A fruit
name = "picture of a fruit"
icon_state = "frame-fruit"
desc = "<i>Ceci n'est pas une orange.</i>"
if(3) // Rat
name = "\improper Tom portrait"
desc = "Jerry the cat is still not amused."
icon_state = "frame-rat"
if(4) // Ratvar
name = "portrait of the imprisoned god"
desc = "Under the portrait a plaque reads: 'In loving memory of Ratvar, ancient powerful entity and rival of Nar'Sie, \
ultimately struck down by NT bluespace artillery at the hands of Outpost 17 crew. Rust in peace.'" // common core lore.
icon_state = "frame-ratvar"
portrait_name = name
portrait_state = icon_state
portrait_desc = desc
/obj/structure/sign/picture_frame/portrait/update_name(updates)
if(framed)
name = initial(name)
else
name = portrait_name
return ..()
/obj/structure/sign/picture_frame/portrait/update_icon_state(updates)
. = ..()
if(framed)
icon_state = "frame-overlay"
else
icon_state = portrait_state
/obj/structure/sign/picture_frame/portrait/update_desc(updates)
. = ..()
if(framed)
desc = "Every time you look it makes you laugh."
else
desc = portrait_desc
/obj/structure/sign/picture_frame/portrait/examine_more(mob/user)
. = ..()
if(!framed)
. += span_notice("The frame and the picture are glued together, but you guess you could slip a photo between the two.")
//persistent frames, make sure the same ID doesn't appear more than once per map
/obj/structure/sign/picture_frame/showroom/one
persistence_id = "frame_showroom1"
@@ -184,3 +246,13 @@
/obj/structure/sign/picture_frame/showroom/four
persistence_id = "frame_showroom4"
/obj/structure/sign/picture_frame/portrait/bar
persistence_id = "frame_bar"
del_id_on_destroy = TRUE
///Generates a persistence id unique to the current map. Every bar should feel a little bit different after all.
/obj/structure/sign/picture_frame/portrait/bar/Initialize()
if(SSmapping.config.map_path != CUSTOM_MAP_PATH) //skip adminloaded custom maps.
persistence_id = "frame_bar_[SSmapping.config.map_name]"
return ..()
Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 36 KiB