Re-adds room beauty without the negative moodlets (#46848)

* re-add

* epic

* fix

* epic
This commit is contained in:
Qustinnus
2019-10-06 04:47:49 +02:00
committed by moo
parent dd20f0e757
commit 26a95ac867
20 changed files with 152 additions and 3 deletions
+7
View File
@@ -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
+1
View File
@@ -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"
+28
View File
@@ -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)
+23
View File
@@ -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)
+5
View File
@@ -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)
+15 -2
View File
@@ -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)
+19
View File
@@ -0,0 +1,19 @@
/datum/mood_event/horridroom
description = "<span class='boldwarning'>This room looks terrible!</span>\n"
mood_change = -5
/datum/mood_event/badroom
description = "<span class='warning'>This room looks really bad.</span>\n"
mood_change = -3
/datum/mood_event/decentroom
description = "<span class='nicegreen'>This room looks alright.</span>\n"
mood_change = 1
/datum/mood_event/goodroom
description = "<span class='nicegreen'>This room looks really pretty!</span>\n"
mood_change = 3
/datum/mood_event/greatroom
description = "<span class='nicegreen'>This room is beautiful!</span>\n"
mood_change = 5
+9
View File
@@ -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 = "<span class='notice'>You feel like you understand what things should look like.</span>"
lose_text = "<span class='notice'>Well who cares about deco anyways?</span>"
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!"
+16
View File
@@ -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
*
+2
View File
@@ -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)
@@ -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)
@@ -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()
. = ..()
@@ -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"
@@ -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()
@@ -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)
. = ..()
@@ -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()
. = ..()
+1
View File
@@ -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"
+1
View File
@@ -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'
+2 -1
View File
@@ -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
art_type = /datum/component/art/rev
+2
View File
@@ -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"