/mob/living/bot
name = "Bot"
health = 20
maxHealth = 20
icon = 'icons/obj/aibots.dmi'
layer = MOB_LAYER
universal_speak = 1
density = 0
var/obj/item/weapon/card/id/botcard = null
var/list/botcard_access = list()
var/on = 1
var/open = 0
var/locked = 1
var/emagged = 0
var/light_strength = 3
var/obj/access_scanner = null
var/list/req_access = list()
/mob/living/bot/New()
..()
update_icons()
botcard = new /obj/item/weapon/card/id(src)
botcard.access = botcard_access.Copy()
access_scanner = new /obj(src)
access_scanner.req_access = req_access.Copy()
/mob/living/bot/Life()
..()
weakened = 0
stunned = 0
paralysis = 0
if(health <= 0)
death()
/mob/living/bot/updatehealth()
if(status_flags & GODMODE)
health = maxHealth
stat = CONSCIOUS
else
health = maxHealth - getFireLoss() - getBruteLoss()
oxyloss = 0
toxloss = 0
cloneloss = 0
halloss = 0
/mob/living/bot/death()
explode()
/mob/living/bot/attackby(var/obj/item/O, var/mob/user)
if(O.GetID())
if(access_scanner.allowed(user) && !open && !emagged)
locked = !locked
user << "Controls are now [locked ? "locked." : "unlocked."]"
attack_hand(user)
else
if(emagged)
user << "ERROR"
if(open)
user << "Please close the access panel before locking it."
else
user << "Access denied."
return
else if(istype(O, /obj/item/weapon/screwdriver))
if(!locked)
open = !open
user << "Maintenance panel is now [open ? "opened" : "closed"]."
else
user << "You need to unlock the controls first."
return
else if(istype(O, /obj/item/weapon/weldingtool))
if(health < maxHealth)
if(open)
health = min(maxHealth, health + 10)
user.visible_message("[user] repairs [src].","You repair [src].")
else
user << "Unable to repair with the maintenance panel closed."
else
user << "[src] does not need a repair."
return
else
..()
/mob/living/bot/attack_ai(var/mob/user)
return attack_hand(user)
/mob/living/bot/say(var/message)
var/verb = "beeps"
message = sanitize(message)
..(message, null, verb)
/mob/living/bot/Bump(var/atom/A)
if(istype(A, /obj/machinery/door) && botcard)
var/obj/machinery/door/D = A
if(!istype(D, /obj/machinery/door/firedoor) && !istype(D, /obj/machinery/door/blast) && D.check_access(botcard))
D.open()
/mob/living/bot/emag_act(var/remaining_charges, var/mob/user)
return 0
/mob/living/bot/proc/turn_on()
if(stat)
return 0
on = 1
set_light(light_strength)
update_icons()
return 1
/mob/living/bot/proc/turn_off()
on = 0
set_light(0)
update_icons()
/mob/living/bot/proc/explode()
qdel(src)
/mob/living/bot/attack_throat()
return