/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 = ITEMSIZE_NORMAL origin_tech = list(TECH_MATERIAL = 1) matter = list(DEFAULT_WALL_MATERIAL = 18750) var/deployed = 0 /obj/item/weapon/beartrap/suicide_act(mob/user) var/datum/gender/T = gender_datums[user.get_visible_gender()] viewers(user) << "[user] is putting the [src.name] on [T.his] head! It looks like [T.hes] 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." ) playsound(src.loc, 'sound/machines/click.ogg',70, 1) deployed = 1 user.drop_from_inventory(src) update_icon() anchored = 1 /obj/item/weapon/beartrap/attack_hand(mob/user as mob) if(has_buckled_mobs() && can_use(user)) var/victim = english_list(buckled_mobs) user.visible_message( "[user] begins freeing [victim] from \the [src].", "You carefully begin to free [victim] from \the [src].", ) if(do_after(user, 60)) user.visible_message("[victim] has been freed from \the [src] by [user].") for(var/A in buckled_mobs) unbuckle_mob(A) 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." ) playsound(src.loc, 'sound/machines/click.ogg', 50, 1) 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") var/soaked = L.get_armor_soak(target_zone, "melee") if(blocked >= 100) return if(soaked >= 30) return if(!L.apply_damage(30, BRUTE, target_zone, blocked, soaked, used_weapon=src)) return 0 //trap the victim in place 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(!has_buckled_mobs()) anchored = 0 deployed = 0 update_icon() ..() /obj/item/weapon/beartrap/update_icon() ..() if(!deployed) icon_state = "beartrap0" else icon_state = "beartrap1"