diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index 8f300aaaf7..c908f30e17 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -20,23 +20,19 @@ /obj/item/device/flashlight/Initialize() . = ..() - update_icon() - -/obj/item/device/flashlight/New() - if(power_use) - START_PROCESSING(SSobj, src) - if(cell_type) - cell = new cell_type(src) - brightness_levels = list("low" = 0.25, "medium" = 0.5, "high" = 1) - power_usage = brightness_levels[brightness_level] + if(power_use && cell_type) + cell = new cell_type(src) + brightness_levels = list("low" = 0.25, "medium" = 0.5, "high" = 1) + power_usage = brightness_levels[brightness_level] else verbs -= /obj/item/device/flashlight/verb/toggle - ..() + + update_icon() /obj/item/device/flashlight/Destroy() - if(power_use) - STOP_PROCESSING(SSobj, src) + STOP_PROCESSING(SSobj, src) + qdel_null(cell) return ..() /obj/item/device/flashlight/get_cell() @@ -57,18 +53,17 @@ update_icon() /obj/item/device/flashlight/process() - if(on) - if(cell) - if(brightness_level && power_usage) - if(power_usage < cell.charge) - cell.charge -= power_usage - else - cell.charge = 0 - visible_message("\The [src] flickers before going dull.") - set_light(0) - playsound(src.loc, 'sound/effects/sparks3.ogg', 10, 1, -3) //Small cue that your light went dull in your pocket. - on = 0 - update_icon() + if(!on || !cell) + return PROCESS_KILL + + if(brightness_level && power_usage) + if(cell.use(power_usage) != power_usage) // we weren't able to use our full power_usage amount! + visible_message("\The [src] flickers before going dull.") + set_light(0) + playsound(src.loc, 'sound/effects/sparks3.ogg', 10, 1, -3) //Small cue that your light went dull in your pocket. + on = 0 + update_icon() + return PROCESS_KILL /obj/item/device/flashlight/update_icon() if(on) @@ -110,6 +105,10 @@ to_chat(user, "You flick the switch on [src], but nothing happens.") return 0 on = !on + if(on && power_use) + START_PROCESSING(SSobj, src) + else if(power_use) + STOP_PROCESSING(SSobj, src) playsound(src.loc, 'sound/weapons/empty.ogg', 15, 1, -3) update_icon() user.update_action_buttons()