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