diff --git a/code/datums/mood_events/generic_negative_events.dm b/code/datums/mood_events/generic_negative_events.dm
index daca0678052..750f09770f9 100644
--- a/code/datums/mood_events/generic_negative_events.dm
+++ b/code/datums/mood_events/generic_negative_events.dm
@@ -178,6 +178,11 @@
/datum/mood_event/sad_empath/add_effects(mob/sadtarget)
description = "[sadtarget.name] seems upset...\n"
+/datum/mood_event/artbad
+ description = "I've produced better art than that from my ass.\n"
+ mood_change = -2
+ timeout = 1200
+
//These are unused so far but I want to remember them to use them later
/datum/mood_event/cloned_corpse
description = "I recently saw my own corpse...\n"
diff --git a/code/datums/mood_events/generic_positive_events.dm b/code/datums/mood_events/generic_positive_events.dm
index f9e7097ace2..c76681beb9d 100644
--- a/code/datums/mood_events/generic_positive_events.dm
+++ b/code/datums/mood_events/generic_positive_events.dm
@@ -125,3 +125,18 @@
/datum/mood_event/clownshoes
description = "The shoes are a clown's legacy, I never want to take them off!\n"
mood_change = 5
+
+/datum/mood_event/artok
+ description = "It's nice to see people are making art around here.\n"
+ mood_change = 2
+ timeout = 2 MINUTES
+
+/datum/mood_event/artgood
+ description = "What a thought-provoking piece of art. I'll remember that for a while.\n"
+ mood_change = 3
+ timeout = 3 MINUTES
+
+/datum/mood_event/artgreat
+ description = "That work of art was so great it made me believe in the goodness of humanity. Says a lot in a place like this.\n"
+ mood_change = 4
+ timeout = 4 MINUTES
\ No newline at end of file
diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/weaponry.dm
index 40880543052..133762c57b6 100644
--- a/code/game/objects/items/weaponry.dm
+++ b/code/game/objects/items/weaponry.dm
@@ -474,6 +474,20 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
desc = "A bust of the famous Greek physician Hippocrates of Kos, often referred to as the father of western medicine."
icon_state = "hippocratic"
+/obj/item/statuebust/attack_self(mob/living/user)
+ add_fingerprint(user)
+ user.examinate(src)
+
+/obj/item/statuebust/examine(mob/living/user)
+ . = ..()
+ if(.)
+ return
+ if (!isliving(user))
+ return
+ user.visible_message("[user] stops to admire [src].", \
+ "You take in [src], admiring its fine craftsmanship.")
+ SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, "artgood", /datum/mood_event/artgood)
+
/obj/item/tailclub
name = "tail club"
desc = "For the beating to death of lizards with their own tails."
diff --git a/code/game/objects/structures/statues.dm b/code/game/objects/structures/statues.dm
index 8160bbddf51..3e12d09725e 100644
--- a/code/game/objects/structures/statues.dm
+++ b/code/game/objects/structures/statues.dm
@@ -1,3 +1,8 @@
+
+#define BAD_ART 12.5
+#define GOOD_ART 25
+#define GREAT_ART 50
+
/obj/structure/statue
name = "statue"
desc = "Placeholder. Yell at Firecage if you SOMEHOW see this."
@@ -8,12 +13,12 @@
max_integrity = 100
var/oreAmount = 5
var/material_drop_type = /obj/item/stack/sheet/metal
+ var/impressiveness = 15
CanAtmosPass = ATMOS_PASS_DENSITY
/obj/structure/statue/attackby(obj/item/W, mob/living/user, params)
add_fingerprint(user)
- user.changeNext_move(CLICK_CD_MELEE)
if(!(flags_1 & NODECONSTRUCT_1))
if(default_unfasten_wrench(user, W))
return
@@ -34,10 +39,23 @@
. = ..()
if(.)
return
- user.changeNext_move(CLICK_CD_MELEE)
add_fingerprint(user)
- user.visible_message("[user] rubs some dust off from the [name]'s surface.", \
- "You rub some dust off from the [name]'s surface.")
+ if(!do_after(user, 20, target = src))
+ return
+ user.visible_message("[user] rubs some dust off [src].", \
+ "You take in [src], rubbing some dust off its surface.")
+ if(!ishuman(user)) // only humans have the capacity to appreciate art
+ return
+ var/totalimpressiveness = (impressiveness *(obj_integrity/max_integrity))
+ switch(totalimpressiveness)
+ if(GREAT_ART to 100)
+ SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, "artgreat", /datum/mood_event/artgreat)
+ if (GOOD_ART to GREAT_ART)
+ SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, "artgood", /datum/mood_event/artgood)
+ if (BAD_ART to GOOD_ART)
+ SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, "artok", /datum/mood_event/artok)
+ if (0 to BAD_ART)
+ SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, "artbad", /datum/mood_event/artbad)
/obj/structure/statue/deconstruct(disassembled = TRUE)
if(!(flags_1 & NODECONSTRUCT_1))
@@ -58,6 +76,8 @@
material_drop_type = /obj/item/stack/sheet/mineral/uranium
var/last_event = 0
var/active = null
+ impressiveness = 25 // radiation makes an impression
+
/obj/structure/statue/uranium/nuke
name = "statue of a nuclear fission explosive"
@@ -100,6 +120,7 @@
/obj/structure/statue/plasma
max_integrity = 200
material_drop_type = /obj/item/stack/sheet/mineral/plasma
+ impressiveness = 20
desc = "This statue is suitably made from plasma."
/obj/structure/statue/plasma/scientist
@@ -150,6 +171,7 @@
/obj/structure/statue/gold
max_integrity = 300
material_drop_type = /obj/item/stack/sheet/mineral/gold
+ impressiveness = 25
desc = "This is a highly valuable statue made from gold."
/obj/structure/statue/gold/hos
@@ -177,6 +199,7 @@
/obj/structure/statue/silver
max_integrity = 300
material_drop_type = /obj/item/stack/sheet/mineral/silver
+ impressiveness = 25
desc = "This is a valuable statue made from silver."
/obj/structure/statue/silver/md
@@ -204,6 +227,7 @@
/obj/structure/statue/diamond
max_integrity = 1000
material_drop_type = /obj/item/stack/sheet/mineral/diamond
+ impressiveness = 50
desc = "This is a very expensive diamond statue."
/obj/structure/statue/diamond/captain
@@ -223,6 +247,7 @@
/obj/structure/statue/bananium
max_integrity = 300
material_drop_type = /obj/item/stack/sheet/mineral/bananium
+ impressiveness = 50
desc = "A bananium statue with a small engraving:'HOOOOOOONK'."
var/spam_flag = 0
@@ -258,6 +283,7 @@
/obj/structure/statue/sandstone
max_integrity = 50
material_drop_type = /obj/item/stack/sheet/mineral/sandstone
+ impressiveness = 15
/obj/structure/statue/sandstone/assistant
name = "statue of an assistant"
diff --git a/code/modules/photography/photos/frame.dm b/code/modules/photography/photos/frame.dm
index 7e42b45cc9e..8daff9fa148 100644
--- a/code/modules/photography/photos/frame.dm
+++ b/code/modules/photography/photos/frame.dm
@@ -109,6 +109,7 @@
/obj/structure/sign/picture_frame/examine(mob/user)
if(in_range(src, user) && framed)
framed.show(user)
+ SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, "artok", /datum/mood_event/artok)
else
..()