diff --git a/code/game/objects/items/trash.dm b/code/game/objects/items/trash.dm
index d9eab69e270..0e07bacf73d 100644
--- a/code/game/objects/items/trash.dm
+++ b/code/game/objects/items/trash.dm
@@ -76,6 +76,7 @@
name = "candle"
icon = 'icons/obj/candle.dmi'
icon_state = "candle4"
+ drop_sound = 'sound/items/drop/gloves.ogg'
/obj/item/trash/liquidfood
name = "\improper \"LiquidFood\" ration"
diff --git a/code/game/objects/items/weapons/candle.dm b/code/game/objects/items/weapons/candle.dm
index a9a3f4131d0..be20c315720 100644
--- a/code/game/objects/items/weapons/candle.dm
+++ b/code/game/objects/items/weapons/candle.dm
@@ -4,13 +4,14 @@
icon = 'icons/obj/candle.dmi'
icon_state = "candle1"
item_state = "candle1"
+ drop_sound = 'sound/items/drop/gloves.ogg'
w_class = 1
light_color = "#E09D37"
var/wax = 2000
-/obj/item/weapon/flame/candle/New()
+/obj/item/weapon/flame/candle/Initialize()
+ . = ..()
wax = rand(800, 1000) // Enough for 27-33 minutes. 30 minutes on average.
- ..()
/obj/item/weapon/flame/candle/update_icon()
var/i
@@ -38,22 +39,26 @@
/obj/item/weapon/flame/candle/proc/light(var/flavor_text = "\The [usr] lights the [name].")
if(!src.lit)
- src.lit = 1
+ src.lit = TRUE
+ playsound(src.loc, 'sound/items/cigs_lighters/cig_light.ogg', 50, 1)
//src.damtype = "fire"
for(var/mob/O in viewers(usr, null))
O.show_message(flavor_text, 1)
set_light(CANDLE_LUM)
+ update_icon()
START_PROCESSING(SSprocessing, src)
-/obj/item/weapon/flame/candle/process()
+/obj/item/weapon/flame/candle/process(mob/user as mob)
if(!lit)
return
+ update_icon()
wax--
if(!wax)
- new/obj/item/trash/candle(src.loc)
+ new /obj/item/trash/candle(src.loc)
if(istype(src.loc, /mob))
src.dropped()
-
+ to_chat(user, span("notice", "The candle burns out."))
+ playsound(src.loc, 'sound/items/cigs_lighters/cig_snuff.ogg', 50, 1)
STOP_PROCESSING(SSprocessing, src)
qdel(src)
update_icon()
@@ -63,6 +68,8 @@
/obj/item/weapon/flame/candle/attack_self(mob/user as mob)
if(lit)
- lit = 0
+ lit = FALSE
+ to_chat(user, span("notice", "You snuff out the flame."))
+ playsound(src.loc, 'sound/items/cigs_lighters/cig_snuff.ogg', 50, 1)
update_icon()
- set_light(0)
+ set_light(0)
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/storage/fancy.dm b/code/game/objects/items/weapons/storage/fancy.dm
index 330fe116ebd..a4a4eb8572b 100644
--- a/code/game/objects/items/weapons/storage/fancy.dm
+++ b/code/game/objects/items/weapons/storage/fancy.dm
@@ -13,12 +13,15 @@
* Cigarette Box
*/
-/obj/item/weapon/storage/fancy/
+/obj/item/weapon/storage/fancy
+ name = "donut box"
+ desc = "A box of half-a-dozen donuts."
icon = 'icons/obj/food.dmi'
icon_state = "donutbox6"
- name = "donut box"
var/icon_type = "donut"
var/storage_type = "box"
+ drop_sound = 'sound/items/drop/box.ogg'
+ use_sound = 'sound/items/storage/box.ogg'
/obj/item/weapon/storage/fancy/update_icon(var/itemremoved = 0)
var/total_contents = src.contents.len - itemremoved
@@ -43,11 +46,12 @@
*/
/obj/item/weapon/storage/fancy/egg_box
+ name = "egg box"
+ desc = "A carton of eggs."
icon = 'icons/obj/food.dmi'
icon_state = "eggbox"
- center_of_mass = list("x" = 16,"y" = 7)
icon_type = "egg"
- name = "egg box"
+ center_of_mass = list("x" = 16,"y" = 7)
storage_slots = 12
can_hold = list(
/obj/item/weapon/reagent_containers/food/snacks/egg,
@@ -79,8 +83,9 @@
desc = "A box of crayons for all your rune drawing needs."
icon = 'icons/obj/crayons.dmi'
icon_state = "crayonbox"
- w_class = 2.0
icon_type = "crayon"
+ drop_sound = 'sound/items/drop/box.ogg'
+ w_class = 2.0
can_hold = list(
/obj/item/weapon/pen/crayon
)
@@ -123,6 +128,8 @@
icon = 'icons/obj/cigs_lighters.dmi'
icon_state = "cigpacket"
item_state = "cigpacket"
+ drop_sound = 'sound/items/drop/gloves.ogg'
+ use_sound = 'sound/items/storage/paper.ogg'
w_class = 1
throwforce = 2
slot_flags = SLOT_BELT
@@ -204,6 +211,8 @@
icon_state = "cigarcase"
item_state = "cigarcase"
icon = 'icons/obj/cigs_lighters.dmi'
+ drop_sound = 'sound/items/drop/gloves.ogg'
+ use_sound = 'sound/items/storage/paper.ogg'
w_class = 1
throwforce = 2
slot_flags = SLOT_BELT
@@ -251,10 +260,11 @@
*/
/obj/item/weapon/storage/fancy/vials
+ name = "vial storage box"
icon = 'icons/obj/vialbox.dmi'
icon_state = "vialbox6"
icon_type = "vial"
- name = "vial storage box"
+ drop_sound = 'sound/items/drop/metalboots.ogg'
storage_slots = 6
can_hold = list(/obj/item/weapon/reagent_containers/glass/beaker/vial)
starts_with = list(/obj/item/weapon/reagent_containers/glass/beaker/vial = 6)
@@ -265,6 +275,7 @@
icon = 'icons/obj/vialbox.dmi'
icon_state = "vialbox0"
item_state = "syringe_kit"
+ drop_sound = 'sound/items/drop/metalboots.ogg'
max_w_class = 2
can_hold = list(/obj/item/weapon/reagent_containers/glass/beaker/vial)
max_storage_space = 12 //The sum of the w_classes of all the items in this storage item.
diff --git a/code/game/objects/random/random.dm b/code/game/objects/random/random.dm
index c74f40c7d3c..94a1fde88c8 100644
--- a/code/game/objects/random/random.dm
+++ b/code/game/objects/random/random.dm
@@ -691,7 +691,7 @@
/obj/item/clothing/head/kitty = 0.2,
/obj/item/clothing/head/pirate = 0.2,
/obj/item/clothing/head/plaguedoctorhat = 0.3,
- /obj/item/clothing/head/pumpkinhead = 0.4,
+ /obj/item/clothing/head/pumpkin/lantern = 0.4,
/obj/item/clothing/head/redcoat = 0.2,
/obj/item/clothing/head/richard = 0.3,
/obj/item/clothing/head/soft/rainbow = 0.7,
diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm
index 93b9bfa2fde..6fe7937b485 100644
--- a/code/modules/clothing/head/hardhat.dm
+++ b/code/modules/clothing/head/hardhat.dm
@@ -1,7 +1,7 @@
/obj/item/clothing/head/hardhat
name = "hard hat"
desc = "A piece of headgear used in dangerous working conditions to protect the head. Comes with a built-in flashlight."
- icon_state = "hardhat0_yellow"
+ icon_state = "hardhat_yellow"
action_button_name = "Toggle Headlamp"
brightness_on = 4 //luminosity when on
light_overlay = "hardhat_light"
@@ -12,23 +12,23 @@
drop_sound = 'sound/items/drop/helm.ogg'
/obj/item/clothing/head/hardhat/orange
- icon_state = "hardhat0_orange"
+ icon_state = "hardhat_orange"
/obj/item/clothing/head/hardhat/red
- icon_state = "hardhat0_red"
name = "firefighter helmet"
+ icon_state = "hardhat_red"
heat_protection = HEAD
max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE
/obj/item/clothing/head/hardhat/white
- icon_state = "hardhat0_white"
desc = "A piece of headgear used in dangerous working conditions to protect the head. Comes with a built-in flashlight. This one looks heat-resistant."
+ icon_state = "hardhat_white"
heat_protection = HEAD
max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE
/obj/item/clothing/head/hardhat/dblue
- icon_state = "hardhat0_dblue"
- item_state = "hardhat0_dblue"
+ icon_state = "hardhat_dblue"
+ item_state = "hardhat_dblue"
/obj/item/clothing/head/hardhat/red/atmos
name = "atmospheric firefighter helmet"
diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm
index b1439f53492..b8bee3b551f 100644
--- a/code/modules/clothing/head/misc_special.dm
+++ b/code/modules/clothing/head/misc_special.dm
@@ -139,16 +139,96 @@
/*
* Pumpkin head
*/
-/obj/item/clothing/head/pumpkinhead
+
+/obj/item/clothing/head/pumpkin
name = "carved pumpkin"
- desc = "A jack o' lantern! Believed to ward off evil spirits."
- icon_state = "hardhat0_pumpkin"//Could stand to be renamed
+ desc = "A pumpkin with a spooky face carved on it. Looks like it needs a candle."
+ icon_state = "pumpkin_carved"
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|BLOCKHAIR
body_parts_covered = HEAD|FACE|EYES
- brightness_on = 2
- light_overlay = "helmet_light"
- w_class = 3
drop_sound = 'sound/items/drop/herb.ogg'
+ w_class = 3
+ throwforce = 1
+ throw_speed = 0.5
+
+/obj/item/clothing/head/pumpkin/attackby(var/obj/O, mob/user as mob)
+ if(istype(O, /obj/item/weapon/flame/candle))
+ var/obj/item/weapon/flame/candle/c = O
+ var/candle_wax = c.wax
+ to_chat(user, "You add [O] to [src].")
+ playsound(src.loc, 'sound/items/drop/gloves.ogg', 50, 1)
+ qdel(O)
+ var/obj/item/clothing/head/pumpkin/lantern/L = new /obj/item/clothing/head/pumpkin/lantern(user.loc)
+ L.wax = candle_wax
+ user.put_in_hands(L)
+ qdel(src)
+ return
+
+/obj/item/clothing/head/pumpkin/lantern
+ name = "jack o' lantern"
+ desc = "A pumpkin with a spooky face carved on it, with a candle inside. Believed to ward off evil spirits."
+ light_color = "#E09D37"
+ var/wax = 900
+ var/lit = FALSE
+
+/obj/item/clothing/head/pumpkin/lantern/update_icon()
+ icon_state = "pumpkin_carved[lit ? "_lit" : ""]"
+ if(ismob(loc))
+ var/mob/living/M = loc
+ M.update_inv_head(0)
+ M.update_inv_l_hand(0)
+ M.update_inv_r_hand(1)
+
+/obj/item/clothing/head/pumpkin/lantern/attackby(obj/item/weapon/W as obj, mob/user as mob)
+ ..()
+ if(W.iswelder())
+ var/obj/item/weapon/weldingtool/WT = W
+ if(WT.isOn()) //Badasses dont get blinded by lighting their candle with a welding tool
+ light("\The [user] casually lights the [name] with [W].")
+ else if(isflamesource(W))
+ light()
+ else if(istype(W, /obj/item/weapon/flame/candle))
+ var/obj/item/weapon/flame/candle/C = W
+ if(C.lit)
+ light()
+
+/obj/item/clothing/head/pumpkin/lantern/proc/light(var/flavor_text = "\The [usr] lights the [name].")
+ if(!src.lit)
+ src.lit = TRUE
+ playsound(src.loc, 'sound/items/cigs_lighters/cig_light.ogg', 50, 1)
+ //src.damtype = "fire"
+ for(var/mob/O in viewers(usr, null))
+ O.show_message(flavor_text, 1)
+ set_light(CANDLE_LUM)
+ update_icon()
+ update_clothing_icon()
+ START_PROCESSING(SSprocessing, src)
+
+/obj/item/clothing/head/pumpkin/lantern/process(mob/user as mob)
+ if(!lit)
+ return
+ wax--
+ if(!wax)
+ new /obj/item/clothing/head/pumpkin(src.loc)
+ new /obj/item/trash/candle(src.loc)
+ if(istype(src.loc, /mob))
+ src.dropped()
+ to_chat(user, span("notice", "The candle burns out."))
+ playsound(src.loc, 'sound/items/cigs_lighters/cig_snuff.ogg', 50, 1)
+ STOP_PROCESSING(SSprocessing, src)
+ qdel(src)
+ update_icon()
+ if(istype(loc, /turf)) //start a fire if possible
+ var/turf/T = loc
+ T.hotspot_expose(700, 5)
+
+/obj/item/clothing/head/pumpkin/lantern/attack_self(mob/user as mob)
+ if(lit)
+ lit = FALSE
+ to_chat(user, span("notice", "You snuff out the flame."))
+ playsound(src.loc, 'sound/items/cigs_lighters/cig_snuff.ogg', 50, 1)
+ update_icon()
+ set_light(0)
/*
* Kitty ears
diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm
index 7bd5ba9e50b..ac54d12eb09 100644
--- a/code/modules/hydroponics/grown.dm
+++ b/code/modules/hydroponics/grown.dm
@@ -189,7 +189,7 @@
else if(W.sharp && !W.noslice)
if(seed.kitchen_tag == "pumpkin") // Ugggh these checks are awful.
user.show_message("You carve a face into [src]!", 1)
- new /obj/item/clothing/head/pumpkinhead (user.loc)
+ user.put_in_hands(new /obj/item/clothing/head/pumpkin)
qdel(src)
return
else if(seed.chems)
diff --git a/html/changelogs/wezzy_pumpkin_head.yml b/html/changelogs/wezzy_pumpkin_head.yml
new file mode 100644
index 00000000000..9a33e51e9c2
--- /dev/null
+++ b/html/changelogs/wezzy_pumpkin_head.yml
@@ -0,0 +1,42 @@
+################################
+# Example Changelog File
+#
+# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
+#
+# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
+# When it is, any changes listed below will disappear.
+#
+# Valid Prefixes:
+# bugfix
+# wip (For works in progress)
+# tweak
+# soundadd
+# sounddel
+# rscadd (general adding of nice things)
+# rscdel (general deleting of nice things)
+# imageadd
+# imagedel
+# maptweak
+# spellcheck (typo fixes)
+# experiment
+# balance
+# admin
+# backend
+# security
+# refactor
+#################################
+
+# Your name.
+author: Wowzewow
+
+# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
+delete-after: True
+
+# Any changes you've made. See valid prefix list above.
+# INDENT WITH TWO SPACES. NOT TABS. SPACES.
+# SCREW THIS UP AND IT WON'T WORK.
+# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
+# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
+changes:
+ - bugfix: "Fixes Jack O' Lanterns. Carve a pumpkin, shove a candle in it and light it with a lighter."
+ - imageadd: "New pumpkin, carved pumpkin, jack o' lantern and candle sprites."
\ No newline at end of file
diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi
index 80aa2f65556..b26ce553539 100644
Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ
diff --git a/icons/obj/candle.dmi b/icons/obj/candle.dmi
index d42fe176c88..8206cc7312f 100644
Binary files a/icons/obj/candle.dmi and b/icons/obj/candle.dmi differ
diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi
index 9ddaadbe083..a671594ae47 100644
Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ
diff --git a/icons/obj/hydroponics_products.dmi b/icons/obj/hydroponics_products.dmi
index 2bdcabb5a71..adfb241c218 100644
Binary files a/icons/obj/hydroponics_products.dmi and b/icons/obj/hydroponics_products.dmi differ