diff --git a/code/game/machinery/computer3/laptop.dm b/code/game/machinery/computer3/laptop.dm index 38db574200..9a8ba02b00 100644 --- a/code/game/machinery/computer3/laptop.dm +++ b/code/game/machinery/computer3/laptop.dm @@ -28,6 +28,9 @@ var/obj/machinery/computer3/laptop/stored_computer = null +/obj/item/device/laptop/get_cell() + return stored_computer.battery + /obj/item/device/laptop/verb/open_computer() set name = "Open Laptop" set category = "Object" diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index 3d2601b59d..4cd3dfc970 100644 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -41,35 +41,12 @@ obj/machinery/recharger return if(istype(G, /obj/item/weapon/gun/energy)) var/obj/item/weapon/gun/energy/E = G - if(!E.power_supply) - to_chat(user, "Your gun has no power cell.") - return if(E.self_recharge) to_chat(user, "Your gun has no recharge port.") return - if(istype(G, /obj/item/weapon/gun/energy/staff)) + if(!G.get_cell()) + to_chat(user, "This device does not have a battery installed.") return - if(istype(G, /obj/item/device/flashlight)) - var/obj/item/device/flashlight/F = G - if(!F.power_use) - return - if(!F.cell) - return - if(istype(G, /obj/item/device/laptop)) - var/obj/item/device/laptop/L = G - if(!L.stored_computer.battery) - user << "There's no battery in it!" - return - if(istype(G, /obj/item/device/electronic_assembly)) - var/obj/item/device/electronic_assembly/assembly = G - if(!assembly.battery) - to_chat(user, "The assembly doesn't have a power cell.") - return - if(istype(G, /obj/item/weapon/weldingtool/electric)) - var/obj/item/weapon/weldingtool/electric/welder = G - if(!welder.power_supply) - to_chat(user, "Your welder has no power cell.") - return user.drop_item() G.loc = src @@ -109,71 +86,8 @@ obj/machinery/recharger update_use_power(1) icon_state = icon_state_idle else - if(istype(charging, /obj/item/weapon/gun/energy)) - var/obj/item/weapon/gun/energy/E = charging - if(!E.power_supply.fully_charged()) - icon_state = icon_state_charging - E.power_supply.give(active_power_usage*CELLRATE) - update_use_power(2) - else - icon_state = icon_state_charged - update_use_power(1) - return - - if(istype(charging, /obj/item/weapon/gun/magnetic)) - var/obj/item/weapon/gun/magnetic/M = charging - if(!M.cell.fully_charged()) - icon_state = icon_state_charging - M.cell.give(active_power_usage*CELLRATE) - update_use_power(2) - else - icon_state = icon_state_charged - update_use_power(1) - return - - if(istype(charging, /obj/item/weapon/melee/baton)) - var/obj/item/weapon/melee/baton/B = charging - if(B.bcell) - if(!B.bcell.fully_charged()) - icon_state = icon_state_charging - B.bcell.give(active_power_usage*CELLRATE) - update_use_power(2) - else - icon_state = icon_state_charged - update_use_power(1) - else - icon_state = icon_state_idle - update_use_power(1) - return - - if(istype(charging, /obj/item/device/laptop)) - var/obj/item/device/laptop/L = charging - if(!L.stored_computer.battery.fully_charged()) - icon_state = icon_state_charging - L.stored_computer.battery.give(active_power_usage*CELLRATE) - update_use_power(2) - else - icon_state = icon_state_charged - update_use_power(1) - return - - if(istype(charging, /obj/item/device/flashlight)) - var/obj/item/device/flashlight/F = charging - if(F.cell) - if(!F.cell.fully_charged()) - icon_state = icon_state_charging - F.cell.give(active_power_usage*CELLRATE) - update_use_power(2) - else - icon_state = icon_state_charged - update_use_power(1) - else - icon_state = icon_state_idle - update_use_power(1) - return - - if(istype(charging, /obj/item/weapon/cell)) - var/obj/item/weapon/cell/C = charging + var/obj/item/weapon/cell/C = charging.get_cell() + if(istype(C)) if(!C.fully_charged()) icon_state = icon_state_charging C.give(active_power_usage*CELLRATE) @@ -181,6 +95,7 @@ obj/machinery/recharger else icon_state = icon_state_charged update_use_power(1) +<<<<<<< HEAD return if(istype(charging, /obj/item/device/electronic_assembly)) @@ -221,21 +136,19 @@ obj/machinery/recharger icon_state = icon_state_charged update_use_power(1) return +======= +>>>>>>> 32557da... Merge pull request #5356 from Anewbe/recharger_refactor /obj/machinery/recharger/emp_act(severity) if(stat & (NOPOWER|BROKEN) || !anchored) ..(severity) return - if(istype(charging, /obj/item/weapon/gun/energy)) - var/obj/item/weapon/gun/energy/E = charging - if(E.power_supply) - E.power_supply.emp_act(severity) + if(charging) + var/obj/item/weapon/cell/C = charging.get_cell() + if(istype(C)) + C.emp_act(severity) - else if(istype(charging, /obj/item/weapon/melee/baton)) - var/obj/item/weapon/melee/baton/B = charging - if(B.bcell) - B.bcell.charge = 0 ..(severity) /obj/machinery/recharger/update_icon() //we have an update_icon() in addition to the stuff in process to make it feel a tiny bit snappier. @@ -244,7 +157,6 @@ obj/machinery/recharger else icon_state = icon_state_idle - /obj/machinery/recharger/wallcharger name = "wall recharger" icon = 'icons/obj/stationobjs.dmi' diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index d69c2c9d92..44d3c98c8c 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -41,6 +41,9 @@ processing_objects -= src return ..() +/obj/item/device/flashlight/get_cell() + return cell + /obj/item/device/flashlight/verb/toggle() set name = "Toggle Flashlight Brightness" set category = "Object" diff --git a/code/game/objects/items/devices/radio/jammer.dm b/code/game/objects/items/devices/radio/jammer.dm index 403b91e159..cc6554ea7c 100644 --- a/code/game/objects/items/devices/radio/jammer.dm +++ b/code/game/objects/items/devices/radio/jammer.dm @@ -38,6 +38,9 @@ var/global/list/active_radio_jammers = list() qdel_null(power_source) return ..() +/obj/item/device/radio_jammer/get_cell() + return power_source + /obj/item/device/radio_jammer/proc/turn_off(mob/user) if(user) to_chat(user,"\The [src] deactivates.") diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index 268a8d5ad7..e37b2f9977 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -19,16 +19,19 @@ var/obj/item/weapon/cell/bcell = null var/hitcost = 240 -/obj/item/weapon/melee/baton/suicide_act(mob/user) - var/datum/gender/TU = gender_datums[user.get_visible_gender()] - user.visible_message("\The [user] is putting the live [name] in [TU.his] mouth! It looks like [TU.he] [TU.is] trying to commit suicide.") - return (FIRELOSS) - /obj/item/weapon/melee/baton/New() ..() update_icon() return +/obj/item/weapon/melee/baton/get_cell() + return bcell + +/obj/item/weapon/melee/baton/suicide_act(mob/user) + var/datum/gender/TU = gender_datums[user.get_visible_gender()] + user.visible_message("\The [user] is putting the live [name] in [TU.his] mouth! It looks like [TU.he] [TU.is] trying to commit suicide.") + return (FIRELOSS) + /obj/item/weapon/melee/baton/MouseDrop(obj/over_object as obj) if(!canremove) return diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index 9a8937adbc..53acc20f16 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -776,6 +776,9 @@ acti_sound = 'sound/effects/sparks4.ogg' deac_sound = 'sound/effects/sparks4.ogg' +/obj/item/weapon/weldingtool/electric/unloaded/New() + cell_type = null + /obj/item/weapon/weldingtool/electric/New() ..() if(cell_type == null) @@ -786,8 +789,8 @@ power_supply = new /obj/item/weapon/cell/device(src) update_icon() -/obj/item/weapon/weldingtool/electric/unloaded/New() - cell_type = null +/obj/item/weapon/weldingtool/electric/get_cell() + return power_supply /obj/item/weapon/weldingtool/electric/examine(mob/user) if(get_dist(src, user) > 1) diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 3835b2a24b..0facb97eac 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -163,3 +163,6 @@ /obj/proc/show_message(msg, type, alt, alt_type)//Message, type of message (1 or 2), alternative message, alt message type (1 or 2) return + +/obj/proc/get_cell() + return \ No newline at end of file diff --git a/code/modules/integrated_electronics/core/device.dm b/code/modules/integrated_electronics/core/device.dm index 6b89a299a4..91243aefab 100644 --- a/code/modules/integrated_electronics/core/device.dm +++ b/code/modules/integrated_electronics/core/device.dm @@ -19,6 +19,9 @@ else ..() +/obj/item/device/electronic_assembly/get_cell() + return battery + /obj/item/device/assembly/electronic_assembly/proc/toggle_open(mob/user) playsound(get_turf(src), 'sound/items/Crowbar.ogg', 50, 1) opened = !opened diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index 4db4d40c4c..f9fca6222f 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -41,6 +41,9 @@ processing_objects -= src return ..() +/obj/item/weapon/cell/get_cell() + return src + /obj/item/weapon/cell/process() if(self_recharge) if(world.time >= last_use + charge_delay) diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index c87c37a085..9cfd0d152a 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -23,17 +23,6 @@ var/battery_lock = 0 //If set, weapon cannot switch batteries -/obj/item/weapon/gun/energy/attackby(var/obj/item/A as obj, mob/user as mob) - ..() - -/obj/item/weapon/gun/energy/switch_firemodes(mob/user) - if(..()) - update_icon() - -/obj/item/weapon/gun/energy/emp_act(severity) - ..() - update_icon() - /obj/item/weapon/gun/energy/New() ..() if(self_recharge) @@ -52,6 +41,9 @@ processing_objects.Remove(src) return ..() +/obj/item/weapon/gun/energy/get_cell() + return power_supply + /obj/item/weapon/gun/energy/process() if(self_recharge) //Every [recharge_time] ticks, recharge a shot for the battery if(world.time > last_shot + charge_delay) //Doesn't work if you've fired recently @@ -75,6 +67,17 @@ charge_tick = 0 return 1 +/obj/item/weapon/gun/energy/attackby(var/obj/item/A as obj, mob/user as mob) + ..() + +/obj/item/weapon/gun/energy/switch_firemodes(mob/user) + if(..()) + update_icon() + +/obj/item/weapon/gun/energy/emp_act(severity) + ..() + update_icon() + /obj/item/weapon/gun/energy/consume_next_projectile() if(!power_supply) return null if(!ispath(projectile_type)) return null diff --git a/code/modules/projectiles/guns/magnetic/magnetic.dm b/code/modules/projectiles/guns/magnetic/magnetic.dm index cbce1a7aa1..a34db52887 100644 --- a/code/modules/projectiles/guns/magnetic/magnetic.dm +++ b/code/modules/projectiles/guns/magnetic/magnetic.dm @@ -36,6 +36,9 @@ qdel_null(capacitor) . = ..() +/obj/item/weapon/gun/magnetic/get_cell() + return cell + /obj/item/weapon/gun/magnetic/process() if(capacitor) if(cell) diff --git a/code/modules/shieldgen/handheld_defuser.dm b/code/modules/shieldgen/handheld_defuser.dm index a2909fa7e6..d65a0060a8 100644 --- a/code/modules/shieldgen/handheld_defuser.dm +++ b/code/modules/shieldgen/handheld_defuser.dm @@ -7,11 +7,6 @@ var/obj/item/weapon/cell/device/cell var/enabled = 0 -/obj/item/weapon/shield_diffuser/update_icon() - if(enabled) - icon_state = "hdiffuser_on" - else - icon_state = "hdiffuser_off" /obj/item/weapon/shield_diffuser/New() cell = new(src) @@ -24,6 +19,9 @@ processing_objects.Remove(src) . = ..() +/obj/item/weapon/shield_diffuser/get_cell() + return cell + /obj/item/weapon/shield_diffuser/process() if(!enabled) return @@ -34,6 +32,12 @@ if(istype(S) && cell.checked_use(10 KILOWATTS * CELLRATE)) qdel(S) +/obj/item/weapon/shield_diffuser/update_icon() + if(enabled) + icon_state = "hdiffuser_on" + else + icon_state = "hdiffuser_off" + /obj/item/weapon/shield_diffuser/attack_self() enabled = !enabled update_icon()