* [READY] Several fixes/changes to mood, longterm mood effects, beauty component (#36344) cl Floyd / Qustinnus del: Removes short-term effects of mood add; Adds long-term effects of mood by implementing sanity which goes up with good mood, down with bad mood, but takes time to change. Your sanity can be seen as your average mood in the recent past. All effects of moods are now covered by this system add: Beauty component, currently only attached to cleanables, but you could attach it to any atom/movable and make them pretty/ugly, affecting mood of anyone in the room. refactor: Removes the original way of adding mood events, uses signals properly instead. fix: Cleanables "giving" area's free beauty during initialization fix: Fixes some events not clearing properly /cl Fixes #36444 From now on mood no longer affects you directly, instead it decides whether your sanity goes up or down, when your sanity gets too low you will get the effects of what mood did before. This means getting hit with bad moods due to being attacked while not mean you are doomed anymore, and you get a large timeframe to get away and just fix your mood later. I also added the beauty component, you could add this to any object and it would either make a room prettier or uglier, comparable to DF or Rimworld. You could add traits to make certain people ugly, for example. * [READY] Several fixes/changes to mood, longterm mood effects, beauty component
435 lines
12 KiB
Plaintext
435 lines
12 KiB
Plaintext
/obj/structure/flora
|
|
resistance_flags = FLAMMABLE
|
|
max_integrity = 150
|
|
anchored = TRUE
|
|
|
|
//trees
|
|
/obj/structure/flora/tree
|
|
name = "tree"
|
|
desc = "A large tree."
|
|
density = TRUE
|
|
pixel_x = -16
|
|
layer = FLY_LAYER
|
|
var/log_amount = 10
|
|
|
|
/obj/structure/flora/tree/attackby(obj/item/W, mob/user, params)
|
|
if(log_amount && (!(flags_1 & NODECONSTRUCT_1)))
|
|
if(W.sharpness && W.force > 0)
|
|
if(W.hitsound)
|
|
playsound(get_turf(src), W.hitsound, 100, 0, 0)
|
|
user.visible_message("<span class='notice'>[user] begins to cut down [src] with [W].</span>","<span class='notice'>You begin to cut down [src] with [W].</span>", "You hear the sound of sawing.")
|
|
if(do_after(user, 1000/W.force, target = src)) //5 seconds with 20 force, 8 seconds with a hatchet, 20 seconds with a shard.
|
|
user.visible_message("<span class='notice'>[user] fells [src] with the [W].</span>","<span class='notice'>You fell [src] with the [W].</span>", "You hear the sound of a tree falling.")
|
|
playsound(get_turf(src), 'sound/effects/meteorimpact.ogg', 100 , 0, 0)
|
|
for(var/i=1 to log_amount)
|
|
new /obj/item/grown/log/tree(get_turf(src))
|
|
|
|
var/obj/structure/flora/stump/S = new(loc)
|
|
S.name = "[name] stump"
|
|
|
|
qdel(src)
|
|
|
|
else
|
|
return ..()
|
|
|
|
/obj/structure/flora/stump
|
|
name = "stump"
|
|
desc = "This represents our promise to the crew, and the station itself, to cut down as many trees as possible." //running naked through the trees
|
|
icon = 'icons/obj/flora/pinetrees.dmi'
|
|
icon_state = "tree_stump"
|
|
density = FALSE
|
|
pixel_x = -16
|
|
|
|
/obj/structure/flora/tree/pine
|
|
name = "pine tree"
|
|
desc = "A coniferous pine tree."
|
|
icon = 'icons/obj/flora/pinetrees.dmi'
|
|
icon_state = "pine_1"
|
|
var/list/icon_states = list("pine_1", "pine_2", "pine_3")
|
|
|
|
/obj/structure/flora/tree/pine/Initialize()
|
|
. = ..()
|
|
|
|
if(islist(icon_states && icon_states.len))
|
|
icon_state = pick(icon_states)
|
|
|
|
/obj/structure/flora/tree/pine/xmas
|
|
name = "xmas tree"
|
|
desc = "A wondrous decorated Christmas tree."
|
|
icon_state = "pine_c"
|
|
icon_states = null
|
|
|
|
/obj/structure/flora/tree/pine/xmas/presents
|
|
icon_state = "pinepresents"
|
|
desc = "A wondrous decorated Christmas tree. It has presents!"
|
|
var/gift_type = /obj/item/a_gift/anything
|
|
var/list/ckeys_that_took = list()
|
|
|
|
/obj/structure/flora/tree/pine/xmas/presents/attack_hand(mob/living/user)
|
|
if(!user.ckey)
|
|
return
|
|
|
|
if(ckeys_that_took[user.ckey])
|
|
to_chat(user, "<span class='warning'>There are no presents with your name on.</span>")
|
|
return
|
|
to_chat(user, "<span class='warning'>After a bit of rummaging, you locate a gift with your name on it!</span>")
|
|
ckeys_that_took[user.ckey] = TRUE
|
|
var/obj/item/G = new gift_type(src)
|
|
user.put_in_hands(G)
|
|
|
|
/obj/structure/flora/tree/dead
|
|
icon = 'icons/obj/flora/deadtrees.dmi'
|
|
desc = "A dead tree. How it died, you know not."
|
|
icon_state = "tree_1"
|
|
|
|
/obj/structure/flora/tree/palm
|
|
icon = 'icons/misc/beach2.dmi'
|
|
desc = "A tree straight from the tropics."
|
|
icon_state = "palm1"
|
|
|
|
/obj/structure/flora/tree/palm/Initialize()
|
|
. = ..()
|
|
icon_state = pick("palm1","palm2")
|
|
pixel_x = 0
|
|
|
|
/obj/structure/festivus
|
|
name = "festivus pole"
|
|
icon = 'icons/obj/flora/pinetrees.dmi'
|
|
icon_state = "festivus_pole"
|
|
desc = "During last year's Feats of Strength the Research Director was able to suplex this passing immobile rod into a planter."
|
|
|
|
/obj/structure/flora/tree/dead/Initialize()
|
|
icon_state = "tree_[rand(1, 6)]"
|
|
. = ..()
|
|
|
|
/obj/structure/flora/tree/jungle
|
|
name = "tree"
|
|
icon_state = "tree"
|
|
desc = "It's seriously hampering your view of the jungle."
|
|
icon = 'icons/obj/flora/jungletrees.dmi'
|
|
pixel_x = -48
|
|
pixel_y = -20
|
|
|
|
/obj/structure/flora/tree/jungle/Initialize()
|
|
icon_state = "[icon_state][rand(1, 6)]"
|
|
. = ..()
|
|
|
|
/obj/structure/flora/tree/jungle/small
|
|
pixel_y = 0
|
|
pixel_x = -32
|
|
icon = 'icons/obj/flora/jungletreesmall.dmi'
|
|
|
|
//grass
|
|
/obj/structure/flora/grass
|
|
name = "grass"
|
|
desc = "A patch of overgrown grass."
|
|
icon = 'icons/obj/flora/snowflora.dmi'
|
|
gender = PLURAL //"this is grass" not "this is a grass"
|
|
|
|
/obj/structure/flora/grass/brown
|
|
icon_state = "snowgrass1bb"
|
|
|
|
/obj/structure/flora/grass/brown/Initialize()
|
|
icon_state = "snowgrass[rand(1, 3)]bb"
|
|
. = ..()
|
|
|
|
|
|
/obj/structure/flora/grass/green
|
|
icon_state = "snowgrass1gb"
|
|
|
|
/obj/structure/flora/grass/green/Initialize()
|
|
icon_state = "snowgrass[rand(1, 3)]gb"
|
|
. = ..()
|
|
|
|
/obj/structure/flora/grass/both
|
|
icon_state = "snowgrassall1"
|
|
|
|
/obj/structure/flora/grass/both/Initialize()
|
|
icon_state = "snowgrassall[rand(1, 3)]"
|
|
. = ..()
|
|
|
|
|
|
//bushes
|
|
/obj/structure/flora/bush
|
|
name = "bush"
|
|
desc = "Some type of shrub."
|
|
icon = 'icons/obj/flora/snowflora.dmi'
|
|
icon_state = "snowbush1"
|
|
anchored = TRUE
|
|
|
|
/obj/structure/flora/bush/Initialize()
|
|
icon_state = "snowbush[rand(1, 6)]"
|
|
. = ..()
|
|
|
|
//newbushes
|
|
|
|
/obj/structure/flora/ausbushes
|
|
name = "bush"
|
|
desc = "Some kind of plant."
|
|
icon = 'icons/obj/flora/ausflora.dmi'
|
|
icon_state = "firstbush_1"
|
|
|
|
/obj/structure/flora/ausbushes/Initialize()
|
|
if(icon_state == "firstbush_1")
|
|
icon_state = "firstbush_[rand(1, 4)]"
|
|
. = ..()
|
|
|
|
/obj/structure/flora/ausbushes/reedbush
|
|
icon_state = "reedbush_1"
|
|
|
|
/obj/structure/flora/ausbushes/reedbush/Initialize()
|
|
icon_state = "reedbush_[rand(1, 4)]"
|
|
. = ..()
|
|
|
|
/obj/structure/flora/ausbushes/leafybush
|
|
icon_state = "leafybush_1"
|
|
|
|
/obj/structure/flora/ausbushes/leafybush/Initialize()
|
|
icon_state = "leafybush_[rand(1, 3)]"
|
|
. = ..()
|
|
|
|
/obj/structure/flora/ausbushes/palebush
|
|
icon_state = "palebush_1"
|
|
|
|
/obj/structure/flora/ausbushes/palebush/Initialize()
|
|
icon_state = "palebush_[rand(1, 4)]"
|
|
. = ..()
|
|
|
|
/obj/structure/flora/ausbushes/stalkybush
|
|
icon_state = "stalkybush_1"
|
|
|
|
/obj/structure/flora/ausbushes/stalkybush/Initialize()
|
|
icon_state = "stalkybush_[rand(1, 3)]"
|
|
. = ..()
|
|
|
|
/obj/structure/flora/ausbushes/grassybush
|
|
icon_state = "grassybush_1"
|
|
|
|
/obj/structure/flora/ausbushes/grassybush/Initialize()
|
|
icon_state = "grassybush_[rand(1, 4)]"
|
|
. = ..()
|
|
|
|
/obj/structure/flora/ausbushes/fernybush
|
|
icon_state = "fernybush_1"
|
|
|
|
/obj/structure/flora/ausbushes/fernybush/Initialize()
|
|
icon_state = "fernybush_[rand(1, 3)]"
|
|
. = ..()
|
|
|
|
/obj/structure/flora/ausbushes/sunnybush
|
|
icon_state = "sunnybush_1"
|
|
|
|
/obj/structure/flora/ausbushes/sunnybush/Initialize()
|
|
icon_state = "sunnybush_[rand(1, 3)]"
|
|
. = ..()
|
|
|
|
/obj/structure/flora/ausbushes/genericbush
|
|
icon_state = "genericbush_1"
|
|
|
|
/obj/structure/flora/ausbushes/genericbush/Initialize()
|
|
icon_state = "genericbush_[rand(1, 4)]"
|
|
. = ..()
|
|
|
|
/obj/structure/flora/ausbushes/pointybush
|
|
icon_state = "pointybush_1"
|
|
|
|
/obj/structure/flora/ausbushes/pointybush/Initialize()
|
|
icon_state = "pointybush_[rand(1, 4)]"
|
|
. = ..()
|
|
|
|
/obj/structure/flora/ausbushes/lavendergrass
|
|
icon_state = "lavendergrass_1"
|
|
|
|
/obj/structure/flora/ausbushes/lavendergrass/Initialize()
|
|
icon_state = "lavendergrass_[rand(1, 4)]"
|
|
. = ..()
|
|
|
|
/obj/structure/flora/ausbushes/ywflowers
|
|
icon_state = "ywflowers_1"
|
|
|
|
/obj/structure/flora/ausbushes/ywflowers/Initialize()
|
|
icon_state = "ywflowers_[rand(1, 3)]"
|
|
. = ..()
|
|
|
|
/obj/structure/flora/ausbushes/brflowers
|
|
icon_state = "brflowers_1"
|
|
|
|
/obj/structure/flora/ausbushes/brflowers/Initialize()
|
|
icon_state = "brflowers_[rand(1, 3)]"
|
|
. = ..()
|
|
|
|
/obj/structure/flora/ausbushes/ppflowers
|
|
icon_state = "ppflowers_1"
|
|
|
|
/obj/structure/flora/ausbushes/ppflowers/Initialize()
|
|
icon_state = "ppflowers_[rand(1, 3)]"
|
|
. = ..()
|
|
|
|
/obj/structure/flora/ausbushes/sparsegrass
|
|
icon_state = "sparsegrass_1"
|
|
|
|
/obj/structure/flora/ausbushes/sparsegrass/Initialize()
|
|
icon_state = "sparsegrass_[rand(1, 3)]"
|
|
. = ..()
|
|
|
|
/obj/structure/flora/ausbushes/fullgrass
|
|
icon_state = "fullgrass_1"
|
|
|
|
/obj/structure/flora/ausbushes/fullgrass/Initialize()
|
|
icon_state = "fullgrass_[rand(1, 3)]"
|
|
. = ..()
|
|
|
|
/obj/item/twohanded/required/kirbyplants
|
|
name = "potted plant"
|
|
icon = 'icons/obj/flora/plants.dmi'
|
|
icon_state = "plant-01"
|
|
desc = "A little bit of nature contained in a pot."
|
|
layer = ABOVE_MOB_LAYER
|
|
w_class = WEIGHT_CLASS_HUGE
|
|
force = 10
|
|
throwforce = 13
|
|
throw_speed = 2
|
|
throw_range = 4
|
|
|
|
/obj/item/twohanded/required/kirbyplants/Initialize()
|
|
. = ..()
|
|
addtimer(CALLBACK(src, /datum.proc/AddComponent, /datum/component/beauty, 750), 0)
|
|
|
|
/obj/item/twohanded/required/kirbyplants/equipped(mob/living/user)
|
|
var/image/I = image(icon = 'icons/obj/flora/plants.dmi' , icon_state = src.icon_state, loc = user)
|
|
I.copy_overlays(src)
|
|
I.override = 1
|
|
add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/everyone, "sneaking_mission", I)
|
|
I.layer = ABOVE_MOB_LAYER
|
|
..()
|
|
|
|
/obj/item/twohanded/required/kirbyplants/dropped(mob/living/user)
|
|
..()
|
|
user.remove_alt_appearance("sneaking_mission")
|
|
|
|
/obj/item/twohanded/required/kirbyplants/random
|
|
icon = 'icons/obj/flora/_flora.dmi'
|
|
icon_state = "random_plant"
|
|
var/list/static/states
|
|
|
|
/obj/item/twohanded/required/kirbyplants/random/Initialize()
|
|
. = ..()
|
|
icon = 'icons/obj/flora/plants.dmi'
|
|
if(!states)
|
|
generate_states()
|
|
icon_state = pick(states)
|
|
|
|
/obj/item/twohanded/required/kirbyplants/random/proc/generate_states()
|
|
states = list()
|
|
for(var/i in 1 to 25)
|
|
var/number
|
|
if(i < 10)
|
|
number = "0[i]"
|
|
else
|
|
number = "[i]"
|
|
states += "plant-[number]"
|
|
states += "applebush"
|
|
|
|
|
|
/obj/item/twohanded/required/kirbyplants/dead
|
|
name = "RD's potted plant"
|
|
desc = "A gift from the botanical staff, presented after the RD's reassignment. There's a tag on it that says \"Y'all come back now, y'hear?\"\nIt doesn't look very healthy..."
|
|
icon_state = "plant-25"
|
|
|
|
/obj/item/twohanded/required/kirbyplants/photosynthetic
|
|
name = "photosynthetic potted plant"
|
|
desc = "A bioluminescent plant."
|
|
icon_state = "plant-09"
|
|
light_color = "#2cb2e8"
|
|
light_range = 3
|
|
|
|
|
|
//a rock is flora according to where the icon file is
|
|
//and now these defines
|
|
|
|
/obj/structure/flora/rock
|
|
icon_state = "basalt"
|
|
desc = "A volcanic rock. Pioneers used to ride these babies for miles."
|
|
icon = 'icons/obj/flora/rocks.dmi'
|
|
resistance_flags = FIRE_PROOF
|
|
density = TRUE
|
|
|
|
/obj/structure/flora/rock/Initialize()
|
|
. = ..()
|
|
icon_state = "[icon_state][rand(1,3)]"
|
|
|
|
/obj/structure/flora/rock/pile
|
|
icon_state = "lavarocks"
|
|
desc = "A pile of rocks."
|
|
|
|
/obj/structure/flora/rock/pile/Initialize()
|
|
. = ..()
|
|
icon_state = "[icon_state][rand(1,3)]"
|
|
|
|
//Jungle grass
|
|
|
|
/obj/structure/flora/grass/jungle
|
|
name = "jungle grass"
|
|
desc = "Thick alien flora."
|
|
icon = 'icons/obj/flora/jungleflora.dmi'
|
|
icon_state = "grassa"
|
|
|
|
|
|
/obj/structure/flora/grass/jungle/Initialize()
|
|
icon_state = "[icon_state][rand(1, 5)]"
|
|
. = ..()
|
|
|
|
/obj/structure/flora/grass/jungle/b
|
|
icon_state = "grassb"
|
|
|
|
//Jungle rocks
|
|
|
|
/obj/structure/flora/rock/jungle
|
|
icon_state = "pile of rocks"
|
|
desc = "A pile of rocks."
|
|
icon_state = "rock"
|
|
icon = 'icons/obj/flora/jungleflora.dmi'
|
|
density = FALSE
|
|
|
|
/obj/structure/flora/rock/jungle/Initialize()
|
|
. = ..()
|
|
icon_state = "[initial(icon_state)][rand(1,5)]"
|
|
|
|
|
|
//Jungle bushes
|
|
|
|
/obj/structure/flora/junglebush
|
|
name = "bush"
|
|
desc = "A wild plant that is found in jungles."
|
|
icon = 'icons/obj/flora/jungleflora.dmi'
|
|
icon_state = "busha"
|
|
|
|
/obj/structure/flora/junglebush/Initialize()
|
|
icon_state = "[icon_state][rand(1, 3)]"
|
|
. = ..()
|
|
|
|
/obj/structure/flora/junglebush/b
|
|
icon_state = "bushb"
|
|
|
|
/obj/structure/flora/junglebush/c
|
|
icon_state = "bushc"
|
|
|
|
/obj/structure/flora/junglebush/large
|
|
icon_state = "bush"
|
|
icon = 'icons/obj/flora/largejungleflora.dmi'
|
|
pixel_x = -16
|
|
pixel_y = -12
|
|
layer = ABOVE_ALL_MOB_LAYER
|
|
|
|
/obj/structure/flora/rock/pile/largejungle
|
|
name = "rocks"
|
|
icon_state = "rocks"
|
|
icon = 'icons/obj/flora/largejungleflora.dmi'
|
|
density = FALSE
|
|
pixel_x = -16
|
|
pixel_y = -16
|
|
|
|
/obj/structure/flora/rock/pile/largejungle/Initialize()
|
|
. = ..()
|
|
icon_state = "[initial(icon_state)][rand(1,3)]"
|