diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index c20ca8468a..6f3041dd6d 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -196,47 +196,51 @@ if(icon_update_tick == 0) build_overlays() -/obj/machinery/recharge_station/Bumped(var/mob/AM) - move_inside(AM) +/obj/machinery/recharge_station/Bumped(var/mob/living/silicon/robot/R) + if(istype(R)) + go_in(R) + +/obj/machinery/recharge_station/proc/go_in(var/mob/living/silicon/robot/R) + if(!istype(R)) + return + if(occupant) + return + + R.reset_view(src) + R.forceMove(src) + occupant = R + update_icon() /obj/machinery/recharge_station/proc/go_out() - if(!(occupant)) + if(!occupant) return - occupant.loc = loc + + occupant.forceMove(loc) occupant.reset_view() occupant = null update_icon() - return /obj/machinery/recharge_station/verb/move_eject() set category = "Object" + set name = "Eject Recharger" set src in oview(1) - if(usr.stat != 0) + + // TODO : Change to incapacitated() on merge. + if(usr.stat || usr.lying || usr.resting || usr.buckled) return + go_out() add_fingerprint(usr) return /obj/machinery/recharge_station/verb/move_inside() set category = "Object" + set name = "Enter Recharger" set src in oview(1) - if(usr.stat == DEAD) - return - if(occupant) - usr << "\The [src] is already occupied!" + // TODO : Change to incapacitated() on merge. + if(usr.stat || usr.lying || usr.resting || usr.buckled) return - var/mob/living/silicon/robot/R = usr - if(!istype(R)) - usr << "Only synthetics may enter the recharger!" - return - if(!R.cell) - usr << "Without a powercell, you can't be recharged." - return - - usr.reset_view(src) - usr.loc = src - occupant = usr + go_in(usr) add_fingerprint(usr) - update_icon() diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 914664bbda..bf3393f903 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -394,8 +394,8 @@ // returns whether this light has power // true if area has power and lightswitch is on /obj/machinery/light/proc/has_power() - var/area/A = src.loc.loc - return A.lightswitch && (!A.requires_power || A.power_light) + var/area/A = get_area(src) + return A && A.lightswitch && (!A.requires_power || A.power_light) /obj/machinery/light/proc/flicker(var/amount = rand(10, 20)) if(flickering) return