/obj/machinery/pdapainter name = "\improper PDA painter" desc = "A PDA painting machine. To use, simply insert your PDA and choose the desired preset paint scheme." icon = 'icons/obj/pda.dmi' icon_state = "pdapainter" density = TRUE anchored = TRUE var/obj/item/device/pda/storedpda = null var/list/colorlist = list() max_integrity = 200 /obj/machinery/pdapainter/update_icon() cut_overlays() if(stat & BROKEN) icon_state = "[initial(icon_state)]-broken" return if(storedpda) add_overlay("[initial(icon_state)]-closed") if(powered()) icon_state = initial(icon_state) else icon_state = "[initial(icon_state)]-off" return /obj/machinery/pdapainter/New() ..() var/blocked = list(/obj/item/device/pda/ai/pai, /obj/item/device/pda/ai, /obj/item/device/pda/heads, /obj/item/device/pda/clear, /obj/item/device/pda/syndicate) for(var/P in typesof(/obj/item/device/pda)-blocked) var/obj/item/device/pda/D = new P //D.name = "PDA Style [colorlist.len+1]" //Gotta set the name, otherwise it all comes up as "PDA" D.name = D.icon_state //PDAs don't have unique names, but using the sprite names works. src.colorlist += D /obj/machinery/pdapainter/Destroy() if(storedpda) qdel(storedpda) storedpda = null return ..() /obj/machinery/pdapainter/on_deconstruction() if(storedpda) storedpda.forceMove(loc) storedpda = null /obj/machinery/pdapainter/contents_explosion(severity, target) if(storedpda) storedpda.ex_act(severity, target) /obj/machinery/pdapainter/handle_atom_del(atom/A) if(A == storedpda) storedpda = null update_icon() /obj/machinery/pdapainter/attackby(obj/item/O, mob/user, params) if(default_unfasten_wrench(user, O)) power_change() return else if(istype(O, /obj/item/device/pda)) if(storedpda) to_chat(user, "There is already a PDA inside!") return else var/obj/item/device/pda/P = user.get_active_held_item() if(istype(P)) if(!user.drop_item()) return storedpda = P P.loc = src P.add_fingerprint(user) update_icon() else if(istype(O, /obj/item/weapon/weldingtool) && user.a_intent != INTENT_HARM) var/obj/item/weapon/weldingtool/WT = O if(stat & BROKEN) if(WT.remove_fuel(0,user)) user.visible_message("[user] is repairing [src].", \ "You begin repairing [src]...", \ "You hear welding.") playsound(loc, WT.usesound, 40, 1) if(do_after(user,40*WT.toolspeed, 1, target = src)) if(!WT.isOn() || !(stat & BROKEN)) return to_chat(user, "You repair [src].") playsound(loc, 'sound/items/welder2.ogg', 50, 1) stat &= ~BROKEN obj_integrity = max_integrity update_icon() else to_chat(user, "[src] does not need repairs.") else return ..() /obj/machinery/pdapainter/deconstruct(disassembled = TRUE) if(!(flags & NODECONSTRUCT)) if(!(stat & BROKEN)) stat |= BROKEN update_icon() /obj/machinery/pdapainter/attack_hand(mob/user) if(!..()) add_fingerprint(user) if(storedpda) var/obj/item/device/pda/P P = input(user, "Select your color!", "PDA Painting") as null|anything in colorlist if(!P) return if(!in_range(src, user)) return if(!storedpda)//is the pda still there? return storedpda.icon_state = P.icon_state storedpda.desc = P.desc ejectpda() else to_chat(user, "\The [src] is empty.") /obj/machinery/pdapainter/verb/ejectpda() set name = "Eject PDA" set category = "Object" set src in oview(1) if(usr.stat || usr.restrained() || !usr.canmove) return if(storedpda) storedpda.loc = get_turf(src.loc) storedpda = null update_icon() else to_chat(usr, "The [src] is empty.") /obj/machinery/pdapainter/power_change() ..() update_icon()