/obj/item/weapon/beartrap name = "mechanical trap" throw_speed = 2 throw_range = 1 gender = PLURAL icon = 'icons/obj/items.dmi' icon_state = "beartrap0" desc = "A mechanically activated leg trap. Low-tech, but reliable. Looks like it could really hurt if you set it off." throwforce = 0 w_class = 3 origin_tech = "materials=1" matter = list(DEFAULT_WALL_MATERIAL = 18750) var/deployed = 0 /obj/item/weapon/beartrap/suicide_act(mob/user) viewers(user) << "[user] is putting the [src.name] on \his head! It looks like \he's trying to commit suicide." return (BRUTELOSS) /obj/item/weapon/beartrap/proc/can_use(mob/user) return (user.IsAdvancedToolUser() && !issilicon(user) && !user.stat && !user.restrained()) /obj/item/weapon/beartrap/attack_self(mob/user as mob) ..() if(!deployed && can_use(user)) user.visible_message( "[user] starts to deploy \the [src].", "You begin deploying \the [src]!", "You hear the slow creaking of a spring." ) if (do_after(user, 60)) user.visible_message( "[user] has deployed \the [src].", "You have deployed \the [src]!", "You hear a latch click loudly." ) deployed = 1 user.drop_from_inventory(src) update_icon() anchored = 1 /obj/item/weapon/beartrap/attack_hand(mob/user as mob) if(buckled_mob && can_use(user)) user.visible_message( "[user] begins freeing [buckled_mob] from \the [src].", "You carefully begin to free [buckled_mob] from \the [src].", ) if(do_after(user, 60)) user.visible_message("[buckled_mob] has been freed from \the [src] by [user].") unbuckle_mob() anchored = 0 else if(deployed && can_use(user)) user.visible_message( "[user] starts to disarm \the [src].", "You begin disarming \the [src]!", "You hear a latch click followed by the slow creaking of a spring." ) if(do_after(user, 60)) user.visible_message( "[user] has disarmed \the [src].", "You have disarmed \the [src]!" ) deployed = 0 anchored = 0 update_icon() else ..() /obj/item/weapon/beartrap/proc/attack_mob(mob/living/L) var/target_zone if(L.lying) target_zone = ran_zone() else target_zone = pick("l_foot", "r_foot", "l_leg", "r_leg") //armour var/blocked = L.run_armor_check(target_zone, "melee") if(blocked >= 2) return if(!L.apply_damage(30, BRUTE, target_zone, blocked, used_weapon=src)) return 0 //trap the victim in place if(!blocked) set_dir(L.dir) can_buckle = 1 buckle_mob(L) L << "The steel jaws of \the [src] bite into you, trapping you in place!" deployed = 0 can_buckle = initial(can_buckle) /obj/item/weapon/beartrap/Crossed(AM as mob|obj) if(deployed && isliving(AM)) var/mob/living/L = AM if(L.m_intent == "run") L.visible_message( "[L] steps on \the [src].", "You step on \the [src]!", "You hear a loud metallic snap!" ) attack_mob(L) if(!buckled_mob) anchored = 0 deployed = 0 update_icon() ..() /obj/item/weapon/beartrap/update_icon() ..() if(!deployed) icon_state = "beartrap0" else icon_state = "beartrap1"