mirror of
https://github.com/CHOMPstation/CHOMPstation.git
synced 2026-08-25 04:56:29 +01:00
Merge branch 'master' of https://github.com/PolarisSS13/Polaris into bone_fixer
# Conflicts: # icons/obj/abductor.dmi
This commit is contained in:
@@ -317,6 +317,20 @@
|
||||
item_state = "headset"
|
||||
ks2type = /obj/item/device/encryptionkey/heads/hos
|
||||
|
||||
/obj/item/device/radio/headset/mmi_radio
|
||||
name = "brain-integrated radio"
|
||||
desc = "MMIs and synthetic brains are often equipped with these."
|
||||
icon = 'icons/obj/robot_component.dmi'
|
||||
icon_state = "radio"
|
||||
item_state = "headset"
|
||||
var/mmiowner = null
|
||||
var/radio_enabled = 1
|
||||
|
||||
/obj/item/device/radio/headset/mmi_radio/receive_range(freq, level)
|
||||
if (!radio_enabled || istype(src.loc.loc, /mob/living/silicon) || istype(src.loc.loc, /obj/item/organ/internal))
|
||||
return -1 //Transciever Disabled.
|
||||
return ..(freq, level, 1)
|
||||
|
||||
/obj/item/device/radio/headset/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
// ..()
|
||||
user.set_machine(src)
|
||||
|
||||
@@ -353,8 +353,8 @@ REAGENT SCANNER
|
||||
|
||||
/obj/item/device/slime_scanner
|
||||
name = "slime scanner"
|
||||
icon_state = "adv_spectrometer"
|
||||
item_state = "analyzer"
|
||||
icon_state = "xenobio"
|
||||
item_state = "xenobio"
|
||||
origin_tech = list(TECH_BIO = 1)
|
||||
w_class = ITEMSIZE_SMALL
|
||||
flags = CONDUCT
|
||||
|
||||
@@ -22,6 +22,14 @@
|
||||
charge_costs = list(500)
|
||||
stacktype = /obj/item/stack/rods
|
||||
|
||||
/obj/item/stack/rods/New()
|
||||
..()
|
||||
recipes = rods_recipes
|
||||
|
||||
var/global/list/datum/stack_recipe/rods_recipes = list( \
|
||||
new/datum/stack_recipe("grille", /obj/structure/grille, 2, time = 10, one_per_turf = 1, on_floor = 1),
|
||||
new/datum/stack_recipe("catwalk", /obj/structure/catwalk, 2, time = 80, one_per_turf = 1, on_floor = 1))
|
||||
|
||||
/obj/item/stack/rods/attackby(obj/item/W as obj, mob/user as mob)
|
||||
if (istype(W, /obj/item/weapon/weldingtool))
|
||||
var/obj/item/weapon/weldingtool/WT = W
|
||||
@@ -55,7 +63,7 @@
|
||||
|
||||
..()
|
||||
|
||||
|
||||
/*
|
||||
/obj/item/stack/rods/attack_self(mob/user as mob)
|
||||
src.add_fingerprint(user)
|
||||
|
||||
@@ -87,3 +95,4 @@
|
||||
F.add_fingerprint(usr)
|
||||
use(2)
|
||||
return
|
||||
*/
|
||||
@@ -40,3 +40,22 @@
|
||||
spawner_type = /mob/living/simple_animal/hostile/carp
|
||||
deliveryamt = 5
|
||||
origin_tech = list(TECH_MATERIAL = 3, TECH_MAGNET = 4, TECH_ILLEGAL = 4)
|
||||
|
||||
/obj/item/weapon/grenade/spawnergrenade/spider
|
||||
name = "spider delivery grenade"
|
||||
spawner_type = /mob/living/simple_animal/hostile/giant_spider/hunter
|
||||
deliveryamt = 3
|
||||
origin_tech = list(TECH_MATERIAL = 3, TECH_MAGNET = 4, TECH_ILLEGAL = 4)
|
||||
|
||||
//Sometimes you just need a sudden influx of spiders.
|
||||
/obj/item/weapon/grenade/spawnergrenade/spider/briefcase
|
||||
name = "briefcase"
|
||||
desc = "It's made of AUTHENTIC faux-leather and has a price-tag still attached. Its owner must be a real professional."
|
||||
icon_state = "briefcase"
|
||||
item_state = "briefcase"
|
||||
flags = CONDUCT
|
||||
force = 8.0
|
||||
throw_speed = 1
|
||||
throw_range = 4
|
||||
w_class = ITEMSIZE_LARGE
|
||||
deliveryamt = 6
|
||||
@@ -181,3 +181,84 @@ var/last_chew = 0
|
||||
icon = 'icons/obj/bureaucracy.dmi'
|
||||
breakouttime = 200
|
||||
cuff_type = "duct tape"
|
||||
|
||||
//Legcuffs. Not /really/ handcuffs, but its close enough.
|
||||
/obj/item/weapon/handcuffs/legcuffs
|
||||
name = "legcuffs"
|
||||
desc = "Use this to keep prisoners in line."
|
||||
gender = PLURAL
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "handcuff"
|
||||
flags = CONDUCT
|
||||
throwforce = 0
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
origin_tech = list(TECH_MATERIAL = 1)
|
||||
breakouttime = 300 //Deciseconds = 30s = 0.5 minute
|
||||
cuff_type = "legcuffs"
|
||||
sprite_sheets = list("Teshari" = 'icons/mob/species/seromi/handcuffs.dmi')
|
||||
elastic = 0
|
||||
cuff_sound = 'sound/weapons/handcuffs.ogg' //This shold work for now.
|
||||
|
||||
/obj/item/weapon/handcuffs/legcuffs/attack(var/mob/living/carbon/C, var/mob/living/user)
|
||||
if(!user.IsAdvancedToolUser())
|
||||
return
|
||||
|
||||
if ((CLUMSY in user.mutations) && prob(50))
|
||||
user << "<span class='warning'>Uh ... how do those things work?!</span>"
|
||||
place_legcuffs(user, user)
|
||||
return
|
||||
|
||||
if(!C.handcuffed)
|
||||
if (C == user)
|
||||
place_legcuffs(user, user)
|
||||
return
|
||||
|
||||
//check for an aggressive grab (or robutts)
|
||||
if(can_place(C, user))
|
||||
place_legcuffs(C, user)
|
||||
else
|
||||
user << "<span class='danger'>You need to have a firm grip on [C] before you can put \the [src] on!</span>"
|
||||
|
||||
/obj/item/weapon/handcuffs/legcuffs/proc/place_legcuffs(var/mob/living/carbon/target, var/mob/user)
|
||||
playsound(src.loc, cuff_sound, 30, 1, -2)
|
||||
|
||||
var/mob/living/carbon/human/H = target
|
||||
if(!istype(H))
|
||||
return 0
|
||||
|
||||
if (!H.has_organ_for_slot(slot_legcuffed))
|
||||
user << "<span class='danger'>\The [H] needs at least two ankles before you can cuff them together!</span>"
|
||||
return 0
|
||||
|
||||
if(istype(H.shoes,/obj/item/clothing/shoes/magboots/rig) && !elastic) // Can't cuff someone who's in a deployed hardsuit.
|
||||
user << "<span class='danger'>\The [src] won't fit around \the [H.shoes]!</span>"
|
||||
return 0
|
||||
|
||||
user.visible_message("<span class='danger'>\The [user] is attempting to put [cuff_type] on \the [H]!</span>")
|
||||
|
||||
if(!do_after(user,30))
|
||||
return 0
|
||||
|
||||
if(!can_place(target, user)) //victim may have resisted out of the grab in the meantime
|
||||
return 0
|
||||
|
||||
H.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been legcuffed (attempt) by [user.name] ([user.ckey])</font>")
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Attempted to legcuff [H.name] ([H.ckey])</font>")
|
||||
msg_admin_attack("[key_name(user)] attempted to legcuff [key_name(H)]")
|
||||
feedback_add_details("legcuffs","H")
|
||||
|
||||
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
|
||||
user.do_attack_animation(H)
|
||||
|
||||
user.visible_message("<span class='danger'>\The [user] has put [cuff_type] on \the [H]!</span>")
|
||||
|
||||
// Apply cuffs.
|
||||
var/obj/item/weapon/handcuffs/legcuffs/lcuffs = src
|
||||
if(dispenser)
|
||||
lcuffs = new(get_turf(user))
|
||||
else
|
||||
user.drop_from_inventory(lcuffs)
|
||||
lcuffs.loc = target
|
||||
target.legcuffed = lcuffs
|
||||
target.update_inv_legcuffed()
|
||||
return 1
|
||||
|
||||
@@ -239,7 +239,7 @@
|
||||
new /obj/item/weapon/crowbar/alien(src)
|
||||
new /obj/item/weapon/wirecutters/alien(src)
|
||||
new /obj/item/device/multitool/alien(src)
|
||||
new /obj/item/stack/cable_coil(src,30,"white")
|
||||
new /obj/item/stack/cable_coil/alien(src)
|
||||
|
||||
/obj/item/weapon/storage/belt/medical/alien
|
||||
name = "alien belt"
|
||||
|
||||
@@ -850,7 +850,7 @@
|
||||
icon_state = "jaws_pry"
|
||||
item_state = "jawsoflife"
|
||||
matter = list(MAT_METAL=150, MAT_SILVER=50)
|
||||
origin_tech = list(TECH_MATERIALS = 2, TECH_ENGINEERING = 2)
|
||||
origin_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
|
||||
usesound = 'sound/items/jaws_pry.ogg'
|
||||
force = 15
|
||||
toolspeed = 0.25
|
||||
|
||||
Reference in New Issue
Block a user