/********************************************************************** Cyborg Spec Items ***********************************************************************/ /obj/item/borg icon = 'icons/mob/robot_items.dmi' /obj/item/borg/stun name = "electrically-charged arm" icon_state = "elecarm" /obj/item/borg/stun/attack(mob/living/M, mob/living/silicon/robot/user) if(!user.cell.use(30)) return M.Weaken(5) M.apply_effect(STUTTER, 5) M.Stun(5) M.visible_message("[user] has prodded [M] with [src]!", \ "[user] has prodded you with [src]!") add_logs(user, M, "stunned", src, "(INTENT: [uppertext(user.a_intent)])") /obj/item/borg/charger name = "power connector" icon_state = "charger_draw" flags = NOBLUDGEON var/mode = "draw" var/list/charge_machines = list(/obj/machinery/cell_charger, /obj/machinery/recharger, /obj/machinery/recharge_station, /obj/machinery/mech_bay_recharge_port) var/list/charge_items = list(/obj/item/weapon/stock_parts/cell, /obj/item/weapon/gun/energy, ) /obj/item/borg/charger/update_icon() ..() icon_state = "charger_[mode]" /obj/item/borg/charger/attack_self(mob/user) if(mode == "draw") mode = "charge" else mode = "draw" user << "You toggle [src] to \"[mode]\" mode." update_icon() /obj/item/borg/charger/afterattack(obj/item/target, mob/living/silicon/robot/user, proximity_flag) if(!proximity_flag || !isrobot(user)) return if(mode == "draw") if(is_type_in_list(target, charge_machines)) var/obj/machinery/M = target if((M.stat & (NOPOWER|BROKEN)) || !M.anchored) user << "[M] is unpowered!" return user << "You connect to [M]'s power line..." while(do_after(user, 15, target = M, progress = 0)) if(!user || !user.cell || mode != "draw") return if((M.stat & (NOPOWER|BROKEN)) || !M.anchored) break if(!user.cell.give(150)) break M.use_power(200) user << "You stop charging youself." else if(is_type_in_list(target, charge_items)) var/obj/item/weapon/stock_parts/cell/cell = target if(!istype(cell)) cell = locate(/obj/item/weapon/stock_parts/cell) in target if(!cell) user << "[target] has no power cell!" return if(istype(target, /obj/item/weapon/gun/energy)) var/obj/item/weapon/gun/energy/E = target if(!E.can_charge) user << "[target] has no power port!" return if(!cell.charge) user << "[target] has no power!" user << "You connect to [target]'s power port..." while(do_after(user, 15, target = target, progress = 0)) if(!user || !user.cell || mode != "draw") return if(!cell || !target) return if(cell != target && cell.loc != target) return var/draw = min(cell.charge, cell.chargerate*0.5, user.cell.maxcharge-user.cell.charge) if(!cell.use(draw)) break if(!user.cell.give(draw)) break target.update_icon() user << "You stop charging youself." else if(is_type_in_list(target, charge_items)) var/obj/item/weapon/stock_parts/cell/cell = target if(!istype(cell)) cell = locate(/obj/item/weapon/stock_parts/cell) in target if(!cell) user << "[target] has no power cell!" return if(istype(target, /obj/item/weapon/gun/energy)) var/obj/item/weapon/gun/energy/E = target if(!E.can_charge) user << "[target] has no power port!" return if(cell.charge >= cell.maxcharge) user << "[target] is already charged!" user << "You connect to [target]'s power port..." while(do_after(user, 15, target = target, progress = 0)) if(!user || !user.cell || mode != "charge") return if(!cell || !target) return if(cell != target && cell.loc != target) return var/draw = min(user.cell.charge, cell.chargerate*0.5, cell.maxcharge-cell.charge) if(!user.cell.use(draw)) break if(!cell.give(draw)) break target.update_icon() user << "You stop charging [target]." /********************************************************************** HUD/SIGHT things ***********************************************************************/ /obj/item/borg/sight var/sight_mode = null /obj/item/borg/sight/xray name = "\proper x-ray Vision" icon = 'icons/obj/decals.dmi' icon_state = "securearea" sight_mode = BORGXRAY /obj/item/borg/sight/thermal name = "\proper thermal vision" sight_mode = BORGTHERM icon_state = "thermal" /obj/item/borg/sight/meson name = "\proper meson vision" sight_mode = BORGMESON icon_state = "meson" /obj/item/borg/sight/hud name = "hud" var/obj/item/clothing/glasses/hud/hud = null /obj/item/borg/sight/hud/med name = "medical hud" icon_state = "healthhud" /obj/item/borg/sight/hud/med/New() ..() hud = new /obj/item/clothing/glasses/hud/health(src) return /obj/item/borg/sight/hud/sec name = "security hud" icon_state = "securityhud" /obj/item/borg/sight/hud/sec/New() ..() hud = new /obj/item/clothing/glasses/hud/security(src) return