Files
Bubberstation/code/game/objects/items/paint.dm
SkyratBot ca0d88c7dd [MIRROR] Make paint cans limited use again [MDB IGNORE] (#20990)
* Make paint cans limited use again (#75198)

## About The Pull Request
Apparently paint cans were never decrementing their `paintleft`
variable. They do this now, plus an error message for the funny
multicolor paint can when you try changing the color while it's empty.
Fixes #75110 by decrementing the variable.
This also makes sure clown borgs aren't hampered by their inability to
just get a new paint can by making their specifically infinite use.
## Why It's Good For The Game
Apparently paint cans were supposed to be limited use in the first
place, considering they had a `paintleft` variable that was never
decremented. We could also look at a few different options for refilling
these cans in the future that could further the creativity available
with them.
## Changelog
🆑
fix: Paint cans have become limited use as intended by the gods of code
fix: Clown borgs get unlimited paint, as a treat.
/🆑

---------

Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>

* Make paint cans limited use again

---------

Co-authored-by: Gear <9438930+the-og-gear@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
2023-05-08 03:03:51 +01:00

142 lines
3.8 KiB
Plaintext

//NEVER USE THIS IT SUX -PETETHEGOAT
//IT SUCKS A BIT LESS -GIACOM
/obj/item/paint
gender= PLURAL
name = "paint"
desc = "Used to recolor floors and walls. Can be removed by the janitor."
icon = 'icons/obj/art/paint.dmi'
icon_state = "paint_neutral"
inhand_icon_state = "paintcan"
w_class = WEIGHT_CLASS_NORMAL
resistance_flags = FLAMMABLE
max_integrity = 100
/// With what color will we paint with
var/paint_color = COLOR_WHITE
/// How many uses are left
var/paintleft = 10
/obj/item/paint/Initialize(mapload)
. = ..()
AddElement(/datum/element/falling_hazard, damage = 20, wound_bonus = 5, hardhat_safety = TRUE, crushes = FALSE) // You ever watched home alone?
/obj/item/paint/red
name = "red paint"
paint_color = COLOR_RED
icon_state = "paint_red"
/obj/item/paint/green
name = "green paint"
paint_color = COLOR_VIBRANT_LIME
icon_state = "paint_green"
/obj/item/paint/blue
name = "blue paint"
paint_color = COLOR_BLUE
icon_state = "paint_blue"
/obj/item/paint/yellow
name = "yellow paint"
paint_color = COLOR_YELLOW
icon_state = "paint_yellow"
/obj/item/paint/violet
name = "violet paint"
paint_color = COLOR_MAGENTA
icon_state = "paint_violet"
/obj/item/paint/black
name = "black paint"
paint_color = COLOR_ALMOST_BLACK
icon_state = "paint_black"
/obj/item/paint/white
name = "white paint"
paint_color = COLOR_WHITE
icon_state = "paint_white"
/obj/item/paint/anycolor
gender = PLURAL
name = "adaptive paint"
icon_state = "paint_neutral"
/obj/item/paint/anycolor/cyborg
paintleft = INFINITY
/obj/item/paint/anycolor/attack_self(mob/user)
if(paintleft <= 0)
balloon_alert(user, "no paint left!")
return // Don't do any of the following because there's no paint left to be able to change the color of
var/list/possible_colors = list(
"black" = image(icon = src.icon, icon_state = "paint_black"),
"blue" = image(icon = src.icon, icon_state = "paint_blue"),
"green" = image(icon = src.icon, icon_state = "paint_green"),
"red" = image(icon = src.icon, icon_state = "paint_red"),
"violet" = image(icon = src.icon, icon_state = "paint_violet"),
"white" = image(icon = src.icon, icon_state = "paint_white"),
"yellow" = image(icon = src.icon, icon_state = "paint_yellow")
)
var/picked_color = show_radial_menu(user, src, possible_colors, custom_check = CALLBACK(src, PROC_REF(check_menu), user), radius = 38, require_near = TRUE)
switch(picked_color)
if("black")
paint_color = COLOR_ALMOST_BLACK
if("blue")
paint_color = COLOR_BLUE
if("green")
paint_color = COLOR_VIBRANT_LIME
if("red")
paint_color = COLOR_RED
if("violet")
paint_color = COLOR_MAGENTA
if("white")
paint_color = COLOR_WHITE
if("yellow")
paint_color = COLOR_YELLOW
else
return
icon_state = "paint_[picked_color]"
add_fingerprint(user)
/**
* Checks if we are allowed to interact with a radial menu
*
* Arguments:
* * user The mob interacting with the menu
*/
/obj/item/paint/anycolor/proc/check_menu(mob/user)
if(!istype(user))
return FALSE
if(!user.is_holding(src))
return FALSE
if(user.incapacitated())
return FALSE
return TRUE
/obj/item/paint/afterattack(atom/target, mob/user, proximity)
. = ..()
if(!proximity)
return
if(paintleft <= 0)
icon_state = "paint_empty"
return
if(!isturf(target) || isspaceturf(target))
return
paintleft--
target.add_atom_colour(paint_color, WASHABLE_COLOUR_PRIORITY)
/obj/item/paint/paint_remover
gender = PLURAL
name = "paint remover"
desc = "Used to remove color from anything."
icon_state = "paint_neutral"
/obj/item/paint/paint_remover/afterattack(atom/target, mob/user, proximity)
. = ..()
if(!proximity)
return
if(!isturf(target) || !isobj(target))
return
. |= AFTERATTACK_PROCESSED_ITEM
if(target.color != initial(target.color))
target.remove_atom_colour(WASHABLE_COLOUR_PRIORITY)