mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-21 06:25:59 +00:00
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.
283 lines
8.3 KiB
Plaintext
283 lines
8.3 KiB
Plaintext
/obj/structure/statue
|
|
name = "statue"
|
|
desc = "Placeholder. Yell at Firecage if you SOMEHOW see this."
|
|
icon = 'icons/obj/statue.dmi'
|
|
icon_state = ""
|
|
density = TRUE
|
|
anchored = FALSE
|
|
max_integrity = 100
|
|
var/oreAmount = 5
|
|
var/material_drop_type = /obj/item/stack/sheet/metal
|
|
CanAtmosPass = ATMOS_PASS_DENSITY
|
|
|
|
|
|
/obj/structure/statue/Initialize()
|
|
. = ..()
|
|
addtimer(CALLBACK(src, /datum.proc/AddComponent, /datum/component/beauty, 1250), 0)
|
|
|
|
/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
|
|
if(istype(W, /obj/item/weldingtool) || istype(W, /obj/item/gun/energy/plasmacutter))
|
|
if(!W.tool_start_check(user, amount=0))
|
|
return FALSE
|
|
|
|
user.visible_message("[user] is slicing apart the [name].", \
|
|
"<span class='notice'>You are slicing apart the [name]...</span>")
|
|
if(W.use_tool(src, user, 40, volume=50))
|
|
user.visible_message("[user] slices apart the [name].", \
|
|
"<span class='notice'>You slice apart the [name]!</span>")
|
|
deconstruct(TRUE)
|
|
return
|
|
return ..()
|
|
|
|
/obj/structure/statue/attack_hand(mob/living/user)
|
|
user.changeNext_move(CLICK_CD_MELEE)
|
|
add_fingerprint(user)
|
|
user.visible_message("[user] rubs some dust off from the [name]'s surface.", \
|
|
"<span class='notice'>You rub some dust off from the [name]'s surface.</span>")
|
|
|
|
/obj/structure/statue/deconstruct(disassembled = TRUE)
|
|
if(!(flags_1 & NODECONSTRUCT_1))
|
|
if(material_drop_type)
|
|
var/drop_amt = oreAmount
|
|
if(!disassembled)
|
|
drop_amt -= 2
|
|
if(drop_amt > 0)
|
|
new material_drop_type(get_turf(src), drop_amt)
|
|
qdel(src)
|
|
|
|
//////////////////////////////////////STATUES/////////////////////////////////////////////////////////////
|
|
////////////////////////uranium///////////////////////////////////
|
|
|
|
/obj/structure/statue/uranium
|
|
max_integrity = 300
|
|
light_range = 2
|
|
material_drop_type = /obj/item/stack/sheet/mineral/uranium
|
|
var/last_event = 0
|
|
var/active = null
|
|
|
|
/obj/structure/statue/uranium/nuke
|
|
name = "statue of a nuclear fission explosive"
|
|
desc = "This is a grand statue of a Nuclear Explosive. It has a sickening green colour."
|
|
icon_state = "nuke"
|
|
|
|
/obj/structure/statue/uranium/eng
|
|
name = "Statue of an engineer"
|
|
desc = "This statue has a sickening green colour."
|
|
icon_state = "eng"
|
|
|
|
/obj/structure/statue/uranium/attackby(obj/item/W, mob/user, params)
|
|
radiate()
|
|
return ..()
|
|
|
|
/obj/structure/statue/uranium/CollidedWith(atom/movable/AM)
|
|
radiate()
|
|
..()
|
|
|
|
/obj/structure/statue/uranium/attack_hand(mob/user)
|
|
radiate()
|
|
..()
|
|
|
|
/obj/structure/statue/uranium/attack_paw(mob/user)
|
|
radiate()
|
|
..()
|
|
|
|
/obj/structure/statue/uranium/proc/radiate()
|
|
if(!active)
|
|
if(world.time > last_event+15)
|
|
active = 1
|
|
radiation_pulse(src, 30)
|
|
last_event = world.time
|
|
active = null
|
|
return
|
|
return
|
|
|
|
////////////////////////////plasma///////////////////////////////////////////////////////////////////////
|
|
|
|
/obj/structure/statue/plasma
|
|
max_integrity = 200
|
|
material_drop_type = /obj/item/stack/sheet/mineral/plasma
|
|
desc = "This statue is suitably made from plasma."
|
|
|
|
/obj/structure/statue/plasma/scientist
|
|
name = "statue of a scientist"
|
|
icon_state = "sci"
|
|
|
|
/obj/structure/statue/plasma/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
|
|
if(exposed_temperature > 300)
|
|
PlasmaBurn(exposed_temperature)
|
|
|
|
|
|
/obj/structure/statue/plasma/bullet_act(obj/item/projectile/Proj)
|
|
var/burn = FALSE
|
|
if(!(Proj.nodamage) && Proj.damage_type == BURN)
|
|
PlasmaBurn(2500)
|
|
burn = TRUE
|
|
if(burn)
|
|
var/turf/T = get_turf(src)
|
|
if(Proj.firer)
|
|
message_admins("Plasma statue ignited by [ADMIN_LOOKUPFLW(Proj.firer)] in [ADMIN_COORDJMP(T)]",0,1)
|
|
log_game("Plasma statue ignited by [key_name(Proj.firer)] in [COORD(T)]")
|
|
else
|
|
message_admins("Plasma statue ignited by [Proj]. No known firer, in [ADMIN_COORDJMP(T)]",0,1)
|
|
log_game("Plasma statue ignited by [Proj] in [COORD(T)]. No known firer.")
|
|
..()
|
|
|
|
/obj/structure/statue/plasma/attackby(obj/item/W, mob/user, params)
|
|
if(W.is_hot() > 300)//If the temperature of the object is over 300, then ignite
|
|
var/turf/T = get_turf(src)
|
|
message_admins("Plasma statue ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_COORDJMP(T)]",0,1)
|
|
log_game("Plasma statue ignited by [key_name(user)] in [COORD(T)]")
|
|
ignite(W.is_hot())
|
|
else
|
|
return ..()
|
|
|
|
/obj/structure/statue/plasma/proc/PlasmaBurn(exposed_temperature)
|
|
atmos_spawn_air("plasma=[oreAmount*10];TEMP=[exposed_temperature]")
|
|
deconstruct(FALSE)
|
|
|
|
/obj/structure/statue/plasma/proc/ignite(exposed_temperature)
|
|
if(exposed_temperature > 300)
|
|
PlasmaBurn(exposed_temperature)
|
|
|
|
//////////////////////gold///////////////////////////////////////
|
|
|
|
/obj/structure/statue/gold
|
|
max_integrity = 300
|
|
material_drop_type = /obj/item/stack/sheet/mineral/gold
|
|
desc = "This is a highly valuable statue made from gold."
|
|
|
|
/obj/structure/statue/gold/hos
|
|
name = "statue of the head of security"
|
|
icon_state = "hos"
|
|
|
|
/obj/structure/statue/gold/hop
|
|
name = "statue of the head of personnel"
|
|
icon_state = "hop"
|
|
|
|
/obj/structure/statue/gold/cmo
|
|
name = "statue of the chief medical officer"
|
|
icon_state = "cmo"
|
|
|
|
/obj/structure/statue/gold/ce
|
|
name = "statue of the chief engineer"
|
|
icon_state = "ce"
|
|
|
|
/obj/structure/statue/gold/rd
|
|
name = "statue of the research director"
|
|
icon_state = "rd"
|
|
|
|
//////////////////////////silver///////////////////////////////////////
|
|
|
|
/obj/structure/statue/silver
|
|
max_integrity = 300
|
|
material_drop_type = /obj/item/stack/sheet/mineral/silver
|
|
desc = "This is a valuable statue made from silver."
|
|
|
|
/obj/structure/statue/silver/md
|
|
name = "statue of a medical officer"
|
|
icon_state = "md"
|
|
|
|
/obj/structure/statue/silver/janitor
|
|
name = "statue of a janitor"
|
|
icon_state = "jani"
|
|
|
|
/obj/structure/statue/silver/sec
|
|
name = "statue of a security officer"
|
|
icon_state = "sec"
|
|
|
|
/obj/structure/statue/silver/secborg
|
|
name = "statue of a security cyborg"
|
|
icon_state = "secborg"
|
|
|
|
/obj/structure/statue/silver/medborg
|
|
name = "statue of a medical cyborg"
|
|
icon_state = "medborg"
|
|
|
|
/////////////////////////diamond/////////////////////////////////////////
|
|
|
|
/obj/structure/statue/diamond
|
|
max_integrity = 1000
|
|
material_drop_type = /obj/item/stack/sheet/mineral/diamond
|
|
desc = "This is a very expensive diamond statue."
|
|
|
|
/obj/structure/statue/diamond/captain
|
|
name = "statue of THE captain."
|
|
icon_state = "cap"
|
|
|
|
/obj/structure/statue/diamond/ai1
|
|
name = "statue of the AI hologram."
|
|
icon_state = "ai1"
|
|
|
|
/obj/structure/statue/diamond/ai2
|
|
name = "statue of the AI core."
|
|
icon_state = "ai2"
|
|
|
|
////////////////////////bananium///////////////////////////////////////
|
|
|
|
/obj/structure/statue/bananium
|
|
max_integrity = 300
|
|
material_drop_type = /obj/item/stack/sheet/mineral/bananium
|
|
desc = "A bananium statue with a small engraving:'HOOOOOOONK'."
|
|
var/spam_flag = 0
|
|
|
|
/obj/structure/statue/bananium/clown
|
|
name = "statue of a clown"
|
|
icon_state = "clown"
|
|
|
|
/obj/structure/statue/bananium/CollidedWith(atom/movable/AM)
|
|
honk()
|
|
..()
|
|
|
|
/obj/structure/statue/bananium/attackby(obj/item/W, mob/user, params)
|
|
honk()
|
|
return ..()
|
|
|
|
/obj/structure/statue/bananium/attack_hand(mob/user)
|
|
honk()
|
|
..()
|
|
|
|
/obj/structure/statue/bananium/attack_paw(mob/user)
|
|
honk()
|
|
..()
|
|
|
|
/obj/structure/statue/bananium/proc/honk()
|
|
if(!spam_flag)
|
|
spam_flag = 1
|
|
playsound(src.loc, 'sound/items/bikehorn.ogg', 50, 1)
|
|
spawn(20)
|
|
spam_flag = 0
|
|
|
|
/////////////////////sandstone/////////////////////////////////////////
|
|
|
|
/obj/structure/statue/sandstone
|
|
max_integrity = 50
|
|
material_drop_type = /obj/item/stack/sheet/mineral/sandstone
|
|
|
|
/obj/structure/statue/sandstone/assistant
|
|
name = "statue of an assistant"
|
|
desc = "A cheap statue of sandstone for a greyshirt."
|
|
icon_state = "assist"
|
|
|
|
|
|
/obj/structure/statue/sandstone/venus //call me when we add marble i guess
|
|
name = "statue of a pure maiden"
|
|
desc = "An ancient marble statue. The subject is depicted with a floor-length braid and is wielding a toolbox. By Jove, it's easily the most gorgeous depiction of a woman you've ever seen. The artist must truly be a master of his craft. Shame about the broken arm, though."
|
|
icon = 'icons/obj/statuelarge.dmi'
|
|
icon_state = "venus"
|
|
|
|
/////////////////////snow/////////////////////////////////////////
|
|
|
|
/obj/structure/statue/snow
|
|
max_integrity = 50
|
|
material_drop_type = /obj/item/stack/sheet/mineral/snow
|
|
|
|
/obj/structure/statue/snow/snowman
|
|
name = "snowman"
|
|
desc = "Several lumps of snow put together to form a snowman."
|
|
icon_state = "snowman"
|