Files

86 lines
2.6 KiB
Plaintext

var/global/list/ashtray_cache = list()
/obj/item/material/ashtray
name = "ashtray"
icon = 'icons/obj/objects.dmi'
icon_state = "blank"
material_significance = MATERIAL_SIGNIFICANCE_SHARD
materials_base = list(MAT_STEEL = 4000)
material_parts = /datum/prototype/material/steel
var/image/base_image
var/max_butts = 10
/obj/item/material/ashtray/Initialize(mapload, material)
. = ..()
pixel_y = rand(-5, 5)
pixel_x = rand(-6, 6)
update_icon()
/obj/item/material/ashtray/update_icon()
color = null
cut_overlays()
. = ..()
var/datum/prototype/material/material = get_primary_material()
var/list/overlays_to_add = list()
var/cache_key = "base-[material.name]"
if(!ashtray_cache[cache_key])
var/image/I = image('icons/obj/objects.dmi',"ashtray")
I.color = material.icon_colour
ashtray_cache[cache_key] = I
overlays_to_add += ashtray_cache[cache_key]
if (contents.len == max_butts)
if(!ashtray_cache["full"])
ashtray_cache["full"] = image('icons/obj/objects.dmi',"ashtray_full")
overlays_to_add += ashtray_cache["full"]
desc = "It's stuffed full."
else if (contents.len > max_butts/2)
if(!ashtray_cache["half"])
ashtray_cache["half"] = image('icons/obj/objects.dmi',"ashtray_half")
overlays_to_add += ashtray_cache["half"]
desc = "It's half-filled."
else
desc = "An ashtray made of [material.display_name]."
add_overlay(overlays_to_add)
/obj/item/material/ashtray/attackby(obj/item/I, mob/living/user, list/params, clickchain_flags, damage_multiplier)
if (istype(I,/obj/item/cigbutt) || istype(I,/obj/item/clothing/mask/smokable/cigarette) || istype(I, /obj/item/flame/match))
. = CLICKCHAIN_DO_NOT_PROPAGATE
if (contents.len >= max_butts)
to_chat(user, "\The [src] is full.")
return
if(!user.attempt_insert_item_for_installation(I, src))
return
if (istype(I,/obj/item/clothing/mask/smokable/cigarette))
var/obj/item/clothing/mask/smokable/cigarette/cig = I
if (cig.lit == 1)
src.visible_message("[user] crushes [cig] in \the [src], putting it out.")
STOP_PROCESSING(SSobj, cig)
var/obj/item/butt = new cig.type_butt(src)
cig.transfer_fingerprints_to(butt)
qdel(cig)
I = butt
//spawn(1)
// TemperatureAct(150)
else if (cig.lit == 0)
to_chat(user, "You place [cig] in [src] without even smoking it. Why would you do that?")
visible_message("[user] places [I] in [src].")
add_fingerprint(user)
update_icon()
return
return ..()
/obj/item/material/ashtray/plastic
material_parts = /datum/prototype/material/plastic
/obj/item/material/ashtray/bronze
material_parts = /datum/prototype/material/bronze
/obj/item/material/ashtray/glass
material_parts = /datum/prototype/material/glass