diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index e2e342dd03a..1a113bf804e 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -127,6 +127,13 @@ #define SCREWYHUD_DEAD 2 #define SCREWYHUD_HEALTHY 3 +//Threshold levels for beauty for humans +#define BEAUTY_LEVEL_HORRID -66 +#define BEAUTY_LEVEL_BAD -33 +#define BEAUTY_LEVEL_DECENT 33 +#define BEAUTY_LEVEL_GOOD 66 +#define BEAUTY_LEVEL_GREAT 100 + //Moods levels for humans #define MOOD_LEVEL_HAPPY4 15 #define MOOD_LEVEL_HAPPY3 10 diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index 443b4eaab43..d9a87f523fc 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -177,6 +177,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_EMPATH "empath" #define TRAIT_FRIENDLY "friendly" #define TRAIT_GRABWEAKNESS "grab_weakness" +#define TRAIT_SNOB "snob" // common trait sources #define TRAIT_GENERIC "generic" diff --git a/code/datums/components/beauty.dm b/code/datums/components/beauty.dm new file mode 100644 index 00000000000..54d96626eb2 --- /dev/null +++ b/code/datums/components/beauty.dm @@ -0,0 +1,28 @@ +/datum/component/beauty + var/beauty = 0 + +/datum/component/beauty/Initialize(beautyamount) + if(!ismovableatom(parent)) + return COMPONENT_INCOMPATIBLE + beauty = beautyamount + RegisterSignal(parent, COMSIG_ENTER_AREA, .proc/enter_area) + RegisterSignal(parent, COMSIG_EXIT_AREA, .proc/exit_area) + var/area/A = get_area(parent) + enter_area(null, A) + +/datum/component/beauty/proc/enter_area(datum/source, area/A) + if(A.outdoors) + return + A.totalbeauty += beauty + A.update_beauty() + +/datum/component/beauty/proc/exit_area(datum/source, area/A) + if(A.outdoors) + return + A.totalbeauty -= beauty + A.update_beauty() + +/datum/component/beauty/Destroy() + . = ..() + var/area/A = get_area(parent) + exit_area(null, A) diff --git a/code/datums/components/mood.dm b/code/datums/components/mood.dm index ecf164c5725..0ad142f8aec 100644 --- a/code/datums/components/mood.dm +++ b/code/datums/components/mood.dm @@ -353,11 +353,34 @@ add_event(null, "charge", /datum/mood_event/charged) /datum/component/mood/proc/check_area_mood(datum/source, var/area/A) + update_beauty(A) if(A.mood_bonus) add_event(null, "area", /datum/mood_event/area, A.mood_bonus, A.mood_message) else clear_event(null, "area") +/datum/component/mood/proc/update_beauty(area/A) + if(A.outdoors) //if we're outside, we don't care. + clear_event(null, "area_beauty") + return FALSE + if(HAS_TRAIT(parent, TRAIT_SNOB)) + switch(A.beauty) + if(-INFINITY to BEAUTY_LEVEL_HORRID) + add_event(null, "area_beauty", /datum/mood_event/horridroom) + return + if(BEAUTY_LEVEL_HORRID to BEAUTY_LEVEL_BAD) + add_event(null, "area_beauty", /datum/mood_event/badroom) + return + switch(A.beauty) + if(BEAUTY_LEVEL_BAD to BEAUTY_LEVEL_DECENT) + clear_event(null, "area_beauty") + if(BEAUTY_LEVEL_DECENT to BEAUTY_LEVEL_GOOD) + add_event(null, "area_beauty", /datum/mood_event/decentroom) + if(BEAUTY_LEVEL_GOOD to BEAUTY_LEVEL_GREAT) + add_event(null, "area_beauty", /datum/mood_event/goodroom) + if(BEAUTY_LEVEL_GREAT to INFINITY) + add_event(null, "area_beauty", /datum/mood_event/greatroom) + ///Called when parent is ahealed. /datum/component/mood/proc/on_revive(datum/source, full_heal) if(!full_heal) diff --git a/code/datums/materials/_material.dm b/code/datums/materials/_material.dm index e1e8c29871d..f355ab3cf6e 100644 --- a/code/datums/materials/_material.dm +++ b/code/datums/materials/_material.dm @@ -26,6 +26,8 @@ Simple datum which is instanced once per type and is used for every object of sa var/value_per_unit = 0 ///Armor modifiers, multiplies an items normal armor vars by these amounts. var/armor_modifiers = list("melee" = 1, "bullet" = 1, "laser" = 1, "energy" = 1, "bomb" = 1, "bio" = 1, "rad" = 1, "fire" = 1, "acid" = 1) + ///How beautiful is this material per unit? + var/beauty_modifier = 0 ///This proc is called when the material is added to an object. /datum/material/proc/on_applied(atom/source, amount, material_flags) @@ -38,6 +40,9 @@ Simple datum which is instanced once per type and is used for every object of sa if(material_flags & MATERIAL_ADD_PREFIX) source.name = "[name] [source.name]" + if(beauty_modifier) + addtimer(CALLBACK(source, /datum.proc/AddComponent, /datum/component/beauty, beauty_modifier * amount), 0) + if(istype(source, /obj)) //objs on_applied_obj(source, amount, material_flags) diff --git a/code/datums/materials/basemats.dm b/code/datums/materials/basemats.dm index 55d3760cf5e..70e4245b8ef 100644 --- a/code/datums/materials/basemats.dm +++ b/code/datums/materials/basemats.dm @@ -18,7 +18,8 @@ categories = list(MAT_CATEGORY_RIGID = TRUE) integrity_modifier = 0.1 sheet_type = /obj/item/stack/sheet/glass - value_per_unit = 0.0025 + value_per_unit = 0.001 + beauty_modifier = 0.05 armor_modifiers = list("melee" = 0.2, "bullet" = 0.2, "laser" = 0, "energy" = 1, "bomb" = 0, "bio" = 0.2, "rad" = 0.2, "fire" = 1, "acid" = 0.2) // yeah ok retard ///Has no special properties. Could be good against vampires in the future perhaps. @@ -29,7 +30,8 @@ color = "#bdbebf" categories = list(MAT_CATEGORY_ORE = TRUE, MAT_CATEGORY_RIGID = TRUE) sheet_type = /obj/item/stack/sheet/mineral/silver - value_per_unit = 0.025 + value_per_unit = 0.25 + beauty_modifier = 0.075 ///Slight force increase /datum/material/gold @@ -41,6 +43,7 @@ categories = list(MAT_CATEGORY_ORE = TRUE, MAT_CATEGORY_RIGID = TRUE) sheet_type = /obj/item/stack/sheet/mineral/gold value_per_unit = 0.0625 + beauty_modifier = 0.15 armor_modifiers = list("melee" = 1.1, "bullet" = 1.1, "laser" = 1.15, "energy" = 1.15, "bomb" = 1, "bio" = 1, "rad" = 1, "fire" = 0.7, "acid" = 1.1) ///Has no special properties @@ -52,6 +55,7 @@ categories = list(MAT_CATEGORY_ORE = TRUE, MAT_CATEGORY_RIGID = TRUE) sheet_type = /obj/item/stack/sheet/mineral/diamond value_per_unit = 0.25 + beauty_modifier = 0.3 armor_modifiers = list("melee" = 1.3, "bullet" = 1.3, "laser" = 0.6, "energy" = 1, "bomb" = 1.2, "bio" = 1, "rad" = 1, "fire" = 1, "acid" = 1) ///Is slightly radioactive @@ -63,6 +67,7 @@ categories = list(MAT_CATEGORY_ORE = TRUE, MAT_CATEGORY_RIGID = TRUE) sheet_type = /obj/item/stack/sheet/mineral/uranium value_per_unit = 0.05 + beauty_modifier = 0.3 //It shines so beautiful armor_modifiers = list("melee" = 1.5, "bullet" = 1.4, "laser" = 0.5, "energy" = 0.5, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 1, "acid" = 1) /datum/material/uranium/on_applied(atom/source, amount, material_flags) @@ -83,6 +88,7 @@ categories = list(MAT_CATEGORY_ORE = TRUE, MAT_CATEGORY_RIGID = TRUE) sheet_type = /obj/item/stack/sheet/mineral/plasma value_per_unit = 0.1 + beauty_modifier = 0.15 armor_modifiers = list("melee" = 1.4, "bullet" = 0.7, "laser" = 0, "energy" = 1.2, "bomb" = 0, "bio" = 1.2, "rad" = 1, "fire" = 0, "acid" = 0.5) /datum/material/plasma/on_applied(atom/source, amount, material_flags) @@ -103,6 +109,7 @@ desc = "Crystals with bluespace properties" color = "#506bc7" categories = list(MAT_CATEGORY_ORE = TRUE) + beauty_modifier = 0.5 sheet_type = /obj/item/stack/sheet/bluespace_crystal value_per_unit = 0.15 @@ -115,6 +122,7 @@ categories = list(MAT_CATEGORY_ORE = TRUE, MAT_CATEGORY_RIGID = TRUE) sheet_type = /obj/item/stack/sheet/mineral/bananium value_per_unit = 0.5 + beauty_modifier = 0.5 armor_modifiers = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 100, "bio" = 0, "rad" = 0, "fire" = 10, "acid" = 0) //Clowns cant be blown away. /datum/material/bananium/on_applied(atom/source, amount, material_flags) @@ -139,6 +147,7 @@ categories = list(MAT_CATEGORY_ORE = TRUE, MAT_CATEGORY_RIGID = TRUE) sheet_type = /obj/item/stack/sheet/mineral/titanium value_per_unit = 0.0625 + beauty_modifier = 0.05 armor_modifiers = list("melee" = 1.35, "bullet" = 1.3, "laser" = 1.3, "energy" = 1.25, "bomb" = 1.25, "bio" = 1, "rad" = 1, "fire" = 0.7, "acid" = 1) /datum/material/runite @@ -150,6 +159,7 @@ categories = list(MAT_CATEGORY_RIGID = TRUE) sheet_type = /obj/item/stack/sheet/mineral/runite value_per_unit = 0.3 + beauty_modifier = 0.5 armor_modifiers = list("melee" = 1.35, "bullet" = 2, "laser" = 0.5, "energy" = 1.25, "bomb" = 1.25, "bio" = 1, "rad" = 1, "fire" = 1.4, "acid" = 1) //rune is weak against magic lasers but strong against bullets. This is the combat triangle. ///Force decrease @@ -161,6 +171,7 @@ strength_modifier = 0.85 sheet_type = /obj/item/stack/sheet/plastic value_per_unit = 0.0125 + beauty_modifier = -0.01 armor_modifiers = list("melee" = 1.5, "bullet" = 1.1, "laser" = 0.3, "energy" = 0.5, "bomb" = 1, "bio" = 1, "rad" = 1, "fire" = 1.1, "acid" = 1) ///Force decrease and mushy sound effect. (Not yet implemented) @@ -182,6 +193,7 @@ categories = list(MAT_CATEGORY_RIGID = TRUE) sheet_type = /obj/item/stack/sheet/mineral/adamantine value_per_unit = 0.25 + beauty_modifier = 0.4 armor_modifiers = list("melee" = 1.5, "bullet" = 1.5, "laser" = 1.3, "energy" = 1.3, "bomb" = 1, "bio" = 1, "rad" = 1, "fire" = 2.5, "acid" = 1) ///RPG Magic. (Admin only) @@ -193,6 +205,7 @@ categories = list(MAT_CATEGORY_RIGID = TRUE) sheet_type = /obj/item/stack/sheet/mineral/mythril value_per_unit = 0.75 + beauty_modifier = 0.5 armor_modifiers = list("melee" = 2, "bullet" = 2, "laser" = 2, "energy" = 2, "bomb" = 2, "bio" = 2, "rad" = 2, "fire" = 2, "acid" = 2) /datum/material/mythril/on_applied_obj(atom/source, amount, material_flags) diff --git a/code/datums/mood_events/beauty_events.dm b/code/datums/mood_events/beauty_events.dm new file mode 100644 index 00000000000..47c31811290 --- /dev/null +++ b/code/datums/mood_events/beauty_events.dm @@ -0,0 +1,19 @@ +/datum/mood_event/horridroom + description = "This room looks terrible!\n" + mood_change = -5 + +/datum/mood_event/badroom + description = "This room looks really bad.\n" + mood_change = -3 + +/datum/mood_event/decentroom + description = "This room looks alright.\n" + mood_change = 1 + +/datum/mood_event/goodroom + description = "This room looks really pretty!\n" + mood_change = 3 + +/datum/mood_event/greatroom + description = "This room is beautiful!\n" + mood_change = 5 diff --git a/code/datums/traits/neutral.dm b/code/datums/traits/neutral.dm index 014b18448c7..1f38a7d9cf6 100644 --- a/code/datums/traits/neutral.dm +++ b/code/datums/traits/neutral.dm @@ -33,6 +33,15 @@ if(!initial(species.disliked_food) & MEAT) species.disliked_food &= ~MEAT +/datum/quirk/snob + name = "Snob" + desc = "You care about the finer things, if a room doesn't look nice its just not really worth it, is it?" + value = 0 + gain_text = "You feel like you understand what things should look like." + lose_text = "Well who cares about deco anyways?" + medical_record_text = "Patient seems to be rather stuck up." + mob_trait = TRAIT_SNOB + /datum/quirk/pineapple_liker name = "Ananas Affinity" desc = "You find yourself greatly enjoying fruits of the ananas genus. You can't seem to ever get enough of their sweet goodness!" diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index 2dd73cde3fe..e53e16a2687 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -27,6 +27,10 @@ var/poweralm = TRUE var/lightswitch = TRUE + var/totalbeauty = 0 //All beauty in this area combined, only includes indoor area. + var/beauty = 0 // Beauty average per open turf in the area + var/beauty_threshold = 150 //If a room is too big it doesn't have beauty. + var/requires_power = TRUE var/always_unpowered = FALSE // This gets overridden to 1 for space in area/Initialize(). @@ -167,6 +171,7 @@ GLOBAL_LIST_EMPTY(teleportlocs) */ /area/LateInitialize() power_change() // all machines set to current power level, also updates icon + update_beauty() /** * Register this area as belonging to a z level @@ -596,6 +601,17 @@ GLOBAL_LIST_EMPTY(teleportlocs) L.client.played = TRUE addtimer(CALLBACK(L.client, /client/proc/ResetAmbiencePlayed), 600) +///Divides total beauty in the room by roomsize to allow us to get an average beauty per tile. +/area/proc/update_beauty() + if(!areasize) + beauty = 0 + return FALSE + if(areasize >= beauty_threshold) + beauty = 0 + return FALSE //Too big + beauty = totalbeauty / areasize + + /** * Called when an atom exits an area * diff --git a/code/game/objects/effects/contraband.dm b/code/game/objects/effects/contraband.dm index 9225f331674..706599a3152 100644 --- a/code/game/objects/effects/contraband.dm +++ b/code/game/objects/effects/contraband.dm @@ -66,6 +66,8 @@ original_name = name // can't use initial because of random posters name = "poster - [name]" desc = "A large piece of space-resistant printed paper. [desc]" + + addtimer(CALLBACK(src, /datum.proc/AddComponent, /datum/component/beauty, 300), 0) /obj/structure/sign/poster/proc/randomise(base_type) var/list/poster_types = subtypesof(base_type) diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index d4263dbd1c4..64f3eb4c08a 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -5,6 +5,7 @@ var/blood_state = "" //I'm sorry but cleanable/blood code is ass, and so is blood_DNA var/bloodiness = 0 //0-100, amount of blood in this decal, used for making footprints and affecting the alpha of bloody footprints var/mergeable_decal = TRUE //when two of these are on a same tile or do we need to merge them into just one? + var/beauty = 0 /obj/effect/decal/cleanable/Initialize(mapload, list/datum/disease/diseases) . = ..() @@ -25,6 +26,8 @@ if(LAZYLEN(diseases_to_add)) AddComponent(/datum/component/infective, diseases_to_add) + addtimer(CALLBACK(src, /datum.proc/AddComponent, /datum/component/beauty, beauty), 0) + var/turf/T = get_turf(src) if(T && is_station_level(T.z)) SSblackbox.record_feedback("tally", "station_mess_created", 1, name) diff --git a/code/game/objects/effects/decals/cleanable/aliens.dm b/code/game/objects/effects/decals/cleanable/aliens.dm index 0bf4387063d..3e36332aa87 100644 --- a/code/game/objects/effects/decals/cleanable/aliens.dm +++ b/code/game/objects/effects/decals/cleanable/aliens.dm @@ -8,6 +8,7 @@ random_icon_states = list("xfloor1", "xfloor2", "xfloor3", "xfloor4", "xfloor5", "xfloor6", "xfloor7") bloodiness = BLOOD_AMOUNT_PER_DECAL blood_state = BLOOD_STATE_XENO + beauty = -250 /obj/effect/decal/cleanable/xenoblood/Initialize() . = ..() diff --git a/code/game/objects/effects/decals/cleanable/food.dm b/code/game/objects/effects/decals/cleanable/food.dm index b0154535d14..dfb5a1d552e 100644 --- a/code/game/objects/effects/decals/cleanable/food.dm +++ b/code/game/objects/effects/decals/cleanable/food.dm @@ -2,6 +2,7 @@ /obj/effect/decal/cleanable/food icon = 'icons/effects/tomatodecal.dmi' gender = NEUTER + beauty = -100 /obj/effect/decal/cleanable/food/tomato_smudge name = "tomato smudge" diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index 25e5579655e..c82f7c8f73d 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -6,6 +6,7 @@ random_icon_states = list("floor1", "floor2", "floor3", "floor4", "floor5", "floor6", "floor7") blood_state = BLOOD_STATE_HUMAN bloodiness = BLOOD_AMOUNT_PER_DECAL + beauty = -100 /obj/effect/decal/cleanable/blood/replace_decal(obj/effect/decal/cleanable/blood/C) C.add_blood_DNA(return_blood_DNA()) @@ -34,11 +35,13 @@ desc = "They look like tracks left by wheels." icon_state = "tracks" random_icon_states = null + beauty = -50 /obj/effect/decal/cleanable/trail_holder //not a child of blood on purpose name = "blood" icon = 'icons/effects/blood.dmi' desc = "Your instincts say you shouldn't be following these." + beauty = -50 var/list/existing_dirs = list() /obj/effect/decal/cleanable/trail_holder/can_bloodcrawl_in() diff --git a/code/game/objects/effects/decals/cleanable/misc.dm b/code/game/objects/effects/decals/cleanable/misc.dm index ef4436c4d5b..96baf3f8fbe 100644 --- a/code/game/objects/effects/decals/cleanable/misc.dm +++ b/code/game/objects/effects/decals/cleanable/misc.dm @@ -3,6 +3,7 @@ desc = "Someone should clean that up." icon = 'icons/obj/objects.dmi' icon_state = "shards" + beauty = -50 /obj/effect/decal/cleanable/ash name = "ashes" @@ -10,6 +11,7 @@ icon = 'icons/obj/objects.dmi' icon_state = "ash" mergeable_decal = FALSE + beauty = -50 /obj/effect/decal/cleanable/ash/Initialize() . = ..() @@ -24,6 +26,7 @@ /obj/effect/decal/cleanable/ash/large name = "large pile of ashes" icon_state = "big_ash" + beauty = -100 /obj/effect/decal/cleanable/ash/large/Initialize() . = ..() @@ -34,6 +37,7 @@ desc = "Back to sand." icon = 'icons/obj/shards.dmi' icon_state = "tiny" + beauty = -100 /obj/effect/decal/cleanable/glass/Initialize() . = ..() @@ -52,6 +56,7 @@ canSmoothWith = list(/obj/effect/decal/cleanable/dirt, /turf/closed/wall, /obj/structure/falsewall) smooth = SMOOTH_FALSE mouse_opacity = MOUSE_OPACITY_TRANSPARENT + beauty = -75 /obj/effect/decal/cleanable/dirt/Initialize() . = ..() @@ -78,6 +83,7 @@ light_power = 3 light_range = 2 light_color = LIGHT_COLOR_GREEN + beauty = -300 /obj/effect/decal/cleanable/greenglow/ex_act() return @@ -93,6 +99,7 @@ layer = WALL_OBJ_LAYER icon_state = "cobweb1" resistance_flags = FLAMMABLE + beauty = -100 /obj/effect/decal/cleanable/cobweb/cobweb2 icon_state = "cobweb2" @@ -104,10 +111,12 @@ icon = 'icons/effects/effects.dmi' icon_state = "molten" mergeable_decal = FALSE + beauty = -150 /obj/effect/decal/cleanable/molten_object/large name = "big gooey grey mass" icon_state = "big_molten" + beauty = -300 //Vomit (sorry) /obj/effect/decal/cleanable/vomit @@ -116,6 +125,7 @@ icon = 'icons/effects/blood.dmi' icon_state = "vomit_1" random_icon_states = list("vomit_1", "vomit_2", "vomit_3", "vomit_4") + beauty = -150 /obj/effect/decal/cleanable/vomit/attack_hand(mob/user) . = ..() diff --git a/code/game/objects/effects/decals/cleanable/robots.dm b/code/game/objects/effects/decals/cleanable/robots.dm index 63d64150971..ca7cdaf90c7 100644 --- a/code/game/objects/effects/decals/cleanable/robots.dm +++ b/code/game/objects/effects/decals/cleanable/robots.dm @@ -10,6 +10,7 @@ blood_state = BLOOD_STATE_OIL bloodiness = BLOOD_AMOUNT_PER_DECAL mergeable_decal = FALSE + beauty = -50 /obj/effect/decal/cleanable/robot_debris/proc/streak(list/directions) set waitfor = 0 @@ -49,6 +50,7 @@ random_icon_states = list("floor1", "floor2", "floor3", "floor4", "floor5", "floor6", "floor7") blood_state = BLOOD_STATE_OIL bloodiness = BLOOD_AMOUNT_PER_DECAL + beauty = -100 /obj/effect/decal/cleanable/oil/Initialize() . = ..() @@ -74,6 +76,7 @@ /obj/effect/decal/cleanable/oil/streak icon_state = "streak1" random_icon_states = list("streak1", "streak2", "streak3", "streak4", "streak5") + beauty = -50 /obj/effect/decal/cleanable/oil/slippery/ComponentInitialize() . = ..() diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/weaponry.dm index 944b1634156..733e518ee09 100644 --- a/code/game/objects/items/weaponry.dm +++ b/code/game/objects/items/weaponry.dm @@ -473,6 +473,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 /obj/item/statuebust/Initialize() . = ..() AddComponent(/datum/component/art, impressiveness) + addtimer(CALLBACK(src, /datum.proc/AddComponent, /datum/component/beauty, 1000), 0) /obj/item/statuebust/hippocratic name = "hippocrates bust" diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index ed109a08bf4..547a6de518c 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -317,6 +317,7 @@ /obj/item/twohanded/required/kirbyplants/Initialize() . = ..() AddComponent(/datum/component/tactical) + addtimer(CALLBACK(src, /datum.proc/AddComponent, /datum/component/beauty, 500), 0) /obj/item/twohanded/required/kirbyplants/random icon = 'icons/obj/flora/_flora.dmi' diff --git a/code/game/objects/structures/statues.dm b/code/game/objects/structures/statues.dm index df8203bcab7..6ce62d69b45 100644 --- a/code/game/objects/structures/statues.dm +++ b/code/game/objects/structures/statues.dm @@ -15,6 +15,7 @@ /obj/structure/statue/Initialize() . = ..() AddComponent(art_type, impressiveness) + addtimer(CALLBACK(src, /datum.proc/AddComponent, /datum/component/beauty, impressiveness * 75), 0) /obj/structure/statue/attackby(obj/item/W, mob/living/user, params) add_fingerprint(user) @@ -298,4 +299,4 @@ name = "\improper Karl Marx bust" desc = "A bust depicting a certain 19th century economist. You get the feeling a specter is haunting the station." icon_state = "marx" - art_type = /datum/component/art/rev \ No newline at end of file + art_type = /datum/component/art/rev diff --git a/tgstation.dme b/tgstation.dme index 655fbe81973..68e58113754 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -354,6 +354,7 @@ #include "code\datums\components\armor_plate.dm" #include "code\datums\components\art.dm" #include "code\datums\components\bane.dm" +#include "code\datums\components\beauty.dm" #include "code\datums\components\beetlejuice.dm" #include "code\datums\components\butchering.dm" #include "code\datums\components\caltrop.dm" @@ -517,6 +518,7 @@ #include "code\datums\materials\_material.dm" #include "code\datums\materials\basemats.dm" #include "code\datums\mood_events\_mood_event.dm" +#include "code\datums\mood_events\beauty_events.dm" #include "code\datums\mood_events\drink_events.dm" #include "code\datums\mood_events\drug_events.dm" #include "code\datums\mood_events\generic_negative_events.dm"