Skip to content

Commit 7384b4a

Browse files
authored
Merge pull request NebulaSS13#4854 from MistakeNot4892/fix/buckets
Generalizing lid states for glass containers.
2 parents 126bb92 + 5c75352 commit 7384b4a

File tree

26 files changed

+97
-68
lines changed

26 files changed

+97
-68
lines changed

code/datums/supplypacks/nonessent.dm

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@
1515
/obj/item/camera,
1616
/obj/item/camera_film = 2,
1717
/obj/item/photo_album,
18-
/obj/item/chems/glass/paint/red,
19-
/obj/item/chems/glass/paint/green,
20-
/obj/item/chems/glass/paint/blue,
21-
/obj/item/chems/glass/paint/yellow,
22-
/obj/item/chems/glass/paint/purple,
23-
/obj/item/chems/glass/paint/black,
24-
/obj/item/chems/glass/paint/white,
18+
/obj/item/chems/glass/bucket/paint/red,
19+
/obj/item/chems/glass/bucket/paint/green,
20+
/obj/item/chems/glass/bucket/paint/blue,
21+
/obj/item/chems/glass/bucket/paint/yellow,
22+
/obj/item/chems/glass/bucket/paint/purple,
23+
/obj/item/chems/glass/bucket/paint/black,
24+
/obj/item/chems/glass/bucket/paint/white,
2525
/obj/item/poster,
2626
/obj/item/stack/package_wrap/fifty = 2,
2727
/obj/item/stack/package_wrap/gift/fifty = 2

code/game/objects/items/waterskin.dm

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@
3737
update_icon()
3838
return TRUE
3939

40-
/obj/item/chems/glass/waterskin/on_update_icon() // TODO: filled/empty sprites
40+
// TODO: filled/empty sprites
41+
/obj/item/chems/glass/waterskin/update_overlays()
4142
. = ..() // cuts overlays
4243
var/image/stopper_overlay = get_stopper_overlay()
4344
if(stopper_overlay)
Lines changed: 14 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,69 +1,58 @@
1-
//NEVER USE THIS IT SUX -PETETHEGOAT
2-
//THE GOAT WAS RIGHT - RKF
3-
4-
/obj/item/chems/glass/paint
5-
desc = "It's a paint bucket."
1+
/obj/item/chems/glass/bucket/paint
62
name = "paint bucket"
3+
desc = "It's a paint bucket."
74
icon = 'icons/obj/items/paint_bucket.dmi'
8-
icon_state = "paintbucket"
9-
item_state = "paintcan"
105
material = /decl/material/solid/metal/aluminium
116
w_class = ITEM_SIZE_NORMAL
127
amount_per_transfer_from_this = 10
138
possible_transfer_amounts = @"[10,20,30,60]"
149
volume = 60
15-
atom_flags = ATOM_FLAG_OPEN_CONTAINER
1610
var/pigment
1711

18-
/obj/item/chems/glass/paint/populate_reagents()
12+
/obj/item/chems/glass/bucket/paint/populate_reagents()
1913
var/amt = reagents.maximum_volume
2014
if(pigment)
2115
amt = round(amt/2)
2216
add_to_reagents(pigment, amt)
2317
add_to_reagents(/decl/material/liquid/paint, amt)
2418

25-
/obj/item/chems/glass/paint/get_edible_material_amount(mob/eater)
19+
/obj/item/chems/glass/bucket/paint/get_edible_material_amount(mob/eater)
2620
return 0
2721

28-
/obj/item/chems/glass/paint/get_utensil_food_type()
22+
/obj/item/chems/glass/bucket/paint/get_utensil_food_type()
2923
return null
3024

31-
/obj/item/chems/glass/paint/on_update_icon()
32-
. = ..()
33-
if(reagents?.total_volume)
34-
add_overlay(overlay_image('icons/obj/reagentfillings.dmi', "paintbucket", reagents.get_color()))
35-
36-
/obj/item/chems/glass/paint/red
25+
/obj/item/chems/glass/bucket/paint/red
3726
name = "red paint bucket"
3827
pigment = /decl/material/liquid/pigment/red
3928

40-
/obj/item/chems/glass/paint/yellow
29+
/obj/item/chems/glass/bucket/paint/yellow
4130
name = "yellow paint bucket"
4231
pigment = /decl/material/liquid/pigment/yellow
4332

44-
/obj/item/chems/glass/paint/green
33+
/obj/item/chems/glass/bucket/paint/green
4534
name = "green paint bucket"
4635
pigment = /decl/material/liquid/pigment/green
4736

48-
/obj/item/chems/glass/paint/blue
37+
/obj/item/chems/glass/bucket/paint/blue
4938
name = "blue paint bucket"
5039
pigment = /decl/material/liquid/pigment/blue
5140

52-
/obj/item/chems/glass/paint/purple
41+
/obj/item/chems/glass/bucket/paint/purple
5342
name = "purple paint bucket"
5443
pigment = /decl/material/liquid/pigment/purple
5544

56-
/obj/item/chems/glass/paint/black
45+
/obj/item/chems/glass/bucket/paint/black
5746
name = "black paint bucket"
5847
pigment = /decl/material/liquid/pigment/black
5948

60-
/obj/item/chems/glass/paint/white
49+
/obj/item/chems/glass/bucket/paint/white
6150
name = "white paint bucket"
6251
pigment = /decl/material/liquid/pigment/white
6352

64-
/obj/item/chems/glass/paint/random
53+
/obj/item/chems/glass/bucket/paint/random
6554
name = "odd paint bucket"
6655

67-
/obj/item/chems/glass/paint/random/Initialize()
56+
/obj/item/chems/glass/bucket/paint/random/Initialize()
6857
pigment = pick(decls_repository.get_decl_paths_of_subtype(/decl/material/liquid/pigment))
6958
. = ..()

code/modules/detectivework/tools/rag.dm

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@
1515
var/on_fire = 0
1616
var/burn_time = 20 //if the rag burns for too long it turns to ashes
1717

18+
/obj/item/chems/glass/rag/can_lid()
19+
return FALSE
20+
1821
/obj/item/chems/glass/rag/get_edible_material_amount(mob/eater)
1922
return 0
2023

code/modules/paperwork/pen/quill_and_ink.dm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@
7575
. = ..()
7676
add_to_reagents(/decl/material/liquid/pigment/black/ink, rand(starting_volume_low, starting_volume_high))
7777

78-
/obj/item/chems/glass/inkwell/on_update_icon()
78+
/obj/item/chems/glass/inkwell/update_overlays()
7979
. = ..()
8080
icon_state = get_world_inventory_state()
8181
if(locate(/obj/item/pen/fancy/quill) in src)

code/modules/reagents/reagent_containers/_glass.dm

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,32 @@
6464
var/decl/material/drinking = reagents.get_primary_reagent_decl()
6565
return drinking ? !drinking.is_unsafe_to_drink(drinker) : FALSE
6666

67+
#ifdef UNIT_TEST
68+
// Will get generated during atom creation/deletion tests so no need for a distinct unit test.
69+
var/global/list/lid_check_glass_types = list()
70+
/obj/item/chems/glass/Initialize()
71+
. = ..()
72+
if(can_lid() && !global.lid_check_glass_types[type])
73+
if(!check_state_in_icon("[icon_state]_lid", icon))
74+
log_error("Liddable vessel [type] missing lid state from [icon]!")
75+
global.lid_check_glass_types[type] = TRUE
76+
#endif
77+
78+
/obj/item/chems/glass/on_update_icon()
79+
. = ..()
80+
update_overlays()
81+
compile_overlays()
82+
83+
/obj/item/chems/glass/proc/get_lid_color()
84+
return COLOR_WHITE
85+
86+
/obj/item/chems/glass/proc/get_lid_flags()
87+
return RESET_COLOR | RESET_ALPHA
88+
89+
/obj/item/chems/glass/proc/update_overlays()
90+
if (can_lid() && !ATOM_IS_OPEN_CONTAINER(src))
91+
add_overlay(overlay_image(icon, "[icon_state]_lid", get_lid_color(), get_lid_flags()))
92+
6793
/obj/item/chems/glass/attack_self(mob/user)
6894

6995
if(can_lid() && user.a_intent == I_HELP)

code/modules/reagents/reagent_containers/beaker.dm

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
/obj/item/chems/glass/beaker
32
name = "beaker"
43
desc = "A beaker."
@@ -11,6 +10,9 @@
1110
presentation_flags = PRESENTATION_FLAG_NAME
1211
var/lid_color = COLOR_BEASTY_BROWN
1312

13+
/obj/item/chems/glass/beaker/get_lid_color()
14+
return lid_color
15+
1416
/obj/item/chems/glass/beaker/examine(mob/user, distance)
1517
. = ..()
1618
to_chat(user, " It can hold up to [volume] units.")
@@ -27,9 +29,7 @@
2729
. = ..()
2830
update_icon()
2931

30-
/obj/item/chems/glass/beaker/on_update_icon()
31-
. = ..()
32-
cut_overlays()
32+
/obj/item/chems/glass/beaker/update_overlays()
3333

3434
if(reagents?.total_volume)
3535
var/image/filling = mutable_appearance(icon, "[icon_state]1", reagents.get_color())
@@ -53,8 +53,7 @@
5353
shine.alpha = material.reflectiveness * 3
5454
add_overlay(shine)
5555

56-
if (!ATOM_IS_OPEN_CONTAINER(src))
57-
add_overlay(mutable_appearance(icon, "[icon_state]_lid", lid_color))
56+
. = ..()
5857

5958
compile_overlays()
6059

@@ -108,6 +107,9 @@
108107
obj_flags = OBJ_FLAG_HOLLOW | OBJ_FLAG_INSULATED_HANDLE
109108
material_alteration = MAT_FLAG_ALTERATION_COLOR | MAT_FLAG_ALTERATION_NAME | MAT_FLAG_ALTERATION_DESC
110109

110+
/obj/item/chems/glass/beaker/kettle/can_lid()
111+
return FALSE
112+
111113
/obj/item/chems/glass/beaker/noreact
112114
name = "cryostasis beaker"
113115
desc = "A cryostasis beaker that allows for chemical storage without reactions."

code/modules/reagents/reagent_containers/bucket.dm

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,13 @@
1515
drop_sound = 'sound/foley/donk1.ogg'
1616
pickup_sound = 'sound/foley/pickup2.ogg'
1717

18+
/obj/item/chems/glass/bucket/proc/get_handle_overlay()
19+
return overlay_image(icon, "[icon_state]-handle", COLOR_WHITE, RESET_COLOR)
20+
21+
/obj/item/chems/glass/bucket/update_overlays()
22+
add_overlay(get_handle_overlay())
23+
. = ..()
24+
1825
/obj/item/chems/glass/bucket/get_edible_material_amount(mob/eater)
1926
return 0
2027

@@ -34,11 +41,6 @@
3441
return TRUE
3542
return ..()
3643

37-
/obj/item/chems/glass/bucket/on_update_icon()
38-
. = ..()
39-
if (!ATOM_IS_OPEN_CONTAINER(src))
40-
add_overlay("lid_[initial(icon_state)]")
41-
4244
/obj/item/chems/glass/bucket/get_reagents_overlay(state_prefix)
4345
if(!ATOM_IS_OPEN_CONTAINER(src))
4446
return null // no overlay while closed!
@@ -70,9 +72,12 @@
7072
overlay.add_overlay(overlay_image(icon, "[overlay.icon_state]_overlay", rivet_material.get_reagent_color(), RESET_COLOR | RESET_ALPHA))
7173
return ..()
7274

73-
/obj/item/chems/glass/bucket/wood/on_update_icon()
75+
/obj/item/chems/glass/bucket/wood/update_overlays()
7476
. = ..()
7577
add_overlay(overlay_image(icon, "[icon_state]_overlay", rivet_material.get_reagent_color(), RESET_COLOR | RESET_ALPHA))
7678

79+
/obj/item/chems/glass/bucket/wood/get_handle_overlay()
80+
return overlay_image(icon, "[icon_state]-handle", rivet_material.get_reagent_color(), RESET_COLOR | RESET_ALPHA)
81+
7782
/obj/item/chems/glass/bucket/wood/can_lid()
78-
return FALSE // todo: add lid sprite?
83+
return FALSE // todo: add lid sprite?

code/modules/reagents/reagent_containers/glass/bottle.dm

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@
2222
var/lid_color = COLOR_GRAY80
2323
var/autolabel = TRUE // if set, will add label with the name of the first initial reagent
2424

25+
/obj/item/chems/glass/bottle/get_lid_color()
26+
return lid_color
27+
2528
/obj/item/chems/glass/bottle/on_picked_up(mob/user)
2629
. = ..()
2730
update_icon()
@@ -34,30 +37,20 @@
3437
. = ..()
3538
update_icon()
3639

37-
/obj/item/chems/glass/bottle/on_update_icon()
38-
. = ..()
39-
cut_overlays()
40-
40+
/obj/item/chems/glass/bottle/update_overlays()
4141
if(reagents?.total_volume)
4242
var/percent = round(reagents.total_volume / volume * 100, 25)
4343
add_overlay(mutable_appearance(icon, "[icon_state]_filling_[percent]", reagents.get_color()))
44-
4544
var/image/overglass = mutable_appearance(icon, "[icon_state]_over", color)
4645
overglass.alpha = alpha * ((alpha/255) ** 3)
4746
add_overlay(overglass)
48-
4947
if(material.reflectiveness >= MAT_VALUE_SHINY)
5048
var/mutable_appearance/shine = mutable_appearance(icon, "[icon_state]_shine", adjust_brightness(color, 20 + material.reflectiveness))
5149
shine.alpha = material.reflectiveness * 3
5250
add_overlay(shine)
53-
5451
if(label_text)
5552
add_overlay(mutable_appearance(icon, "[icon_state]_label", label_color))
56-
57-
if (!ATOM_IS_OPEN_CONTAINER(src))
58-
add_overlay(mutable_appearance(icon, "[icon_state]_lid", lid_color))
59-
60-
compile_overlays()
53+
. = ..()
6154

6255
/obj/item/chems/glass/bottle/Initialize()
6356
. = ..()

code/modules/reagents/reagent_containers/mortar.dm

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@
1515
return
1616
return try_grind(using_item, user)
1717

18+
/obj/item/chems/glass/mortar/can_lid()
19+
return FALSE
20+
1821
/obj/item/chems/glass/mortar/proc/try_grind(obj/item/using_item, mob/living/user)
1922
if(!istype(using_item))
2023
return FALSE

0 commit comments

Comments
 (0)