diff --git a/code/game/objects/items/weapons/batons.dm b/code/game/objects/items/weapons/batons.dm index 991d7745d57..995ff2eff86 100644 --- a/code/game/objects/items/weapons/batons.dm +++ b/code/game/objects/items/weapons/batons.dm @@ -54,10 +54,9 @@ return ..() if(on_cooldown) return - if(issilicon(target) && !affect_silicon) + if((issilicon(target) || isbot(target)) && !affect_silicon) return ..() - else - baton_knockdown(target, user) + baton_knockdown(target, user) /** * Called when a target is about to be hit non-lethally. @@ -71,15 +70,21 @@ user.visible_message("[user] pulses [target]'s sensors with [src]!",\ "You pulse [target]'s sensors with [src]!") on_silicon_stun(target, user) - else - // Check for shield/countering - if(ishuman(target)) - var/mob/living/carbon/human/H = target - if(H.check_shields(src, 0, "[user]'s [name]", MELEE_ATTACK)) - return FALSE + + // Check for shield/countering + else if(ishuman(target)) + var/mob/living/carbon/human/H = target + if(H.check_shields(src, 0, "[user]'s [name]", MELEE_ATTACK)) + return FALSE user.visible_message("[user] knocks down [target] with [src]!",\ "You knock down [target] with [src]!") on_non_silicon_stun(target, user) + + else if(isbot(target)) + user.visible_message("[user] pulses [target]'s sensors with [src]!",\ + "You pulse [target]'s sensors with [src]!") + var/mob/living/simple_animal/bot/H = target + H.disable(stun_time_silicon) // Visuals and sound user.do_attack_animation(target) playsound(target, stun_sound, 75, TRUE, -1) diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index b51f66e8d6a..ff5b3ab9770 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -32,6 +32,7 @@ var/allow_pai = TRUE // Are we even allowed to insert a pai card. var/bot_name + var/disabling_timer_id = null var/list/player_access = list() var/emagged = 0 var/obj/item/card/id/access_card // the ID card that the bot "holds" @@ -121,6 +122,8 @@ return "[mode_name[mode]]" /mob/living/simple_animal/bot/proc/turn_on() + if(disabling_timer_id) + return FALSE if(stat) return 0 on = TRUE @@ -417,6 +420,20 @@ if(was_on) turn_on() +/mob/living/simple_animal/bot/proc/disable(time) + if(disabling_timer_id) + deltimer(disabling_timer_id) // if we already have disabling timer, lets replace it with new one + if(on) + turn_off() + disabling_timer_id = addtimer(CALLBACK(src, PROC_REF(enable)), time, TIMER_STOPPABLE) + +/mob/living/simple_animal/bot/proc/enable() + if(disabling_timer_id) + deltimer(disabling_timer_id) + disabling_timer_id = null + if(!on) + turn_on() + /mob/living/simple_animal/bot/rename_character(oldname, newname) if(!..(oldname, newname)) return 0