mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2026-08-21 12:16:44 +01:00
Merge branch 'master' of https://github.com/PolarisSS13/Polaris into make_ai_great_again
This commit is contained in:
@@ -31,6 +31,7 @@ GLOBAL_LIST_BOILERPLATE(all_portals, /obj/effect/portal)
|
||||
return
|
||||
|
||||
/obj/effect/portal/New()
|
||||
..() // Necessary for the list boilerplate to work
|
||||
spawn(300)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
@@ -52,8 +52,9 @@
|
||||
|
||||
/obj/structure/largecrate/animal/crashedshuttle
|
||||
name = "SCP"
|
||||
|
||||
/obj/structure/largecrate/animal/crashedshuttle/initialize()
|
||||
starts_with = pick(/mob/living/simple_animal/hostile/statue, /obj/item/cursed_marble)
|
||||
starts_with = pick(/mob/living/simple_animal/hostile/statue, /obj/item/cursed_marble, /obj/item/weapon/deadringer)
|
||||
name = pick("Spicy Crust Pizzeria", "Soap and Care Products", "Sally's Computer Parts", "Steve's Chocolate Pastries", "Smith & Christian's Plastics","Standard Containers & Packaging Co.", "Sanitary Chemical Purgation (LTD)")
|
||||
name += " delivery crate"
|
||||
return ..()
|
||||
|
||||
@@ -199,3 +199,9 @@
|
||||
throw_range = 20
|
||||
flags = 0
|
||||
no_variants = FALSE
|
||||
|
||||
/obj/item/stack/tile/roofing
|
||||
name = "roofing"
|
||||
singular_name = "roofing"
|
||||
desc = "A section of roofing material. You can use it to repair the ceiling, or expand it."
|
||||
icon_state = "techtile_grid"
|
||||
@@ -153,7 +153,7 @@
|
||||
return 0
|
||||
|
||||
if(build_turf)
|
||||
T.ChangeTurf(build_turf)
|
||||
T.ChangeTurf(build_turf, preserve_outdoors = TRUE)
|
||||
else if(build_other)
|
||||
new build_other(T)
|
||||
else
|
||||
|
||||
@@ -167,21 +167,24 @@
|
||||
if(!istype(M))
|
||||
return 0
|
||||
|
||||
if (user.a_intent == I_HELP)
|
||||
return ..()
|
||||
|
||||
if(target_name != M.name)
|
||||
target_name = M.name
|
||||
src.wdata = list()
|
||||
src.chemtraces = list()
|
||||
src.timeofdeath = null
|
||||
user << "<span class='notice'>A new patient has been registered. Purging data for previous patient.</span>"
|
||||
to_chat(user, "<span class='notice'>A new patient has been registered. Purging data for previous patient.</span>")
|
||||
|
||||
src.timeofdeath = M.timeofdeath
|
||||
|
||||
var/obj/item/organ/external/S = M.get_organ(user.zone_sel.selecting)
|
||||
if(!S)
|
||||
usr << "<span class='warning'>You can't scan this body part.</span>"
|
||||
to_chat(user, "<span class='warning'>You can't scan this body part.</span>")
|
||||
return
|
||||
if(!S.open)
|
||||
usr << "<span class='warning'>You have to cut [S] open first!</span>"
|
||||
to_chat(user, "<span class='warning'>You have to cut [S] open first!</span>")
|
||||
return
|
||||
M.visible_message("<span class='notice'>\The [user] scans the wounds on [M]'s [S.name] with [src]</span>")
|
||||
|
||||
|
||||
@@ -21,12 +21,26 @@
|
||||
/obj/item/weapon/implant/proc/activate()
|
||||
return
|
||||
|
||||
// What does the implant do upon injection?
|
||||
// return 0 if the implant fails (ex. Revhead and loyalty implant.)
|
||||
// return 1 if the implant succeeds (ex. Nonrevhead and loyalty implant.)
|
||||
/obj/item/weapon/implant/proc/implanted(var/mob/source)
|
||||
// Moves the implant where it needs to go, and tells it if there's more to be done in post_implant
|
||||
/obj/item/weapon/implant/proc/handle_implant(var/mob/source, var/target_zone = BP_TORSO)
|
||||
. = TRUE
|
||||
imp_in = source
|
||||
implanted = TRUE
|
||||
if(ishuman(source))
|
||||
var/mob/living/carbon/human/H = source
|
||||
var/obj/item/organ/external/affected = H.get_organ(target_zone)
|
||||
if(affected)
|
||||
affected.implants += src
|
||||
part = affected
|
||||
if(part)
|
||||
forceMove(part)
|
||||
else
|
||||
forceMove(source)
|
||||
|
||||
listening_objects |= src
|
||||
return 1
|
||||
|
||||
// Takes place after handle_implant, if that returns TRUE
|
||||
/obj/item/weapon/implant/proc/post_implant(var/mob/source)
|
||||
|
||||
/obj/item/weapon/implant/proc/get_data()
|
||||
return "No information available"
|
||||
@@ -49,6 +63,12 @@
|
||||
icon_state = "implant_melted"
|
||||
malfunction = MALFUNCTION_PERMANENT
|
||||
|
||||
/obj/item/weapon/implant/proc/implant_loadout(var/mob/living/carbon/human/H)
|
||||
if(H)
|
||||
var/obj/item/organ/external/affected = H.organs_by_name[BP_HEAD]
|
||||
if(handle_implant(H, affected))
|
||||
post_implant(H)
|
||||
|
||||
/obj/item/weapon/implant/Destroy()
|
||||
if(part)
|
||||
part.implants.Remove(src)
|
||||
@@ -69,6 +89,11 @@
|
||||
else
|
||||
..()
|
||||
|
||||
|
||||
|
||||
//////////////////////////////
|
||||
// Tracking Implant
|
||||
//////////////////////////////
|
||||
GLOBAL_LIST_BOILERPLATE(all_tracking_implants, /obj/item/weapon/implant/tracking)
|
||||
|
||||
/obj/item/weapon/implant/tracking
|
||||
@@ -84,9 +109,8 @@ GLOBAL_LIST_BOILERPLATE(all_tracking_implants, /obj/item/weapon/implant/tracking
|
||||
id = rand(1, 1000)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/implant/tracking/implanted(var/mob/source)
|
||||
/obj/item/weapon/implant/tracking/post_implant(var/mob/source)
|
||||
processing_objects.Add(src)
|
||||
return 1
|
||||
|
||||
/obj/item/weapon/implant/tracking/Destroy()
|
||||
processing_objects.Remove(src)
|
||||
@@ -142,7 +166,9 @@ Implant Specifics:<BR>"}
|
||||
spawn(delay)
|
||||
malfunction--
|
||||
|
||||
|
||||
//////////////////////////////
|
||||
// Death Explosive Implant
|
||||
//////////////////////////////
|
||||
/obj/item/weapon/implant/dexplosive
|
||||
name = "explosive"
|
||||
desc = "And boom goes the weasel."
|
||||
@@ -177,7 +203,9 @@ Implant Specifics:<BR>"}
|
||||
/obj/item/weapon/implant/dexplosive/islegal()
|
||||
return 0
|
||||
|
||||
//BS12 Explosive
|
||||
//////////////////////////////
|
||||
// Explosive Implant
|
||||
//////////////////////////////
|
||||
/obj/item/weapon/implant/explosive
|
||||
name = "explosive implant"
|
||||
desc = "A military grade micro bio-explosive. Highly dangerous."
|
||||
@@ -249,15 +277,13 @@ Implant Specifics:<BR>"}
|
||||
if(t)
|
||||
t.hotspot_expose(3500,125)
|
||||
|
||||
/obj/item/weapon/implant/explosive/implanted(mob/source as mob)
|
||||
/obj/item/weapon/implant/explosive/post_implant(mob/source as mob)
|
||||
elevel = alert("What sort of explosion would you prefer?", "Implant Intent", "Localized Limb", "Destroy Body", "Full Explosion")
|
||||
phrase = input("Choose activation phrase:") as text
|
||||
var/list/replacechars = list("'" = "","\"" = "",">" = "","<" = "","(" = "",")" = "")
|
||||
phrase = replace_characters(phrase, replacechars)
|
||||
usr.mind.store_memory("Explosive implant in [source] can be activated by saying something containing the phrase ''[src.phrase]'', <B>say [src.phrase]</B> to attempt to activate.", 0, 0)
|
||||
usr << "The implanted explosive implant in [source] can be activated by saying something containing the phrase ''[src.phrase]'', <B>say [src.phrase]</B> to attempt to activate."
|
||||
listening_objects |= src
|
||||
return 1
|
||||
|
||||
/obj/item/weapon/implant/explosive/emp_act(severity)
|
||||
if (malfunction)
|
||||
@@ -311,6 +337,9 @@ Implant Specifics:<BR>"}
|
||||
explosion(get_turf(imp_in), -1, -1, 1, 3)
|
||||
qdel(src)
|
||||
|
||||
//////////////////////////////
|
||||
// Chemical Implant
|
||||
//////////////////////////////
|
||||
GLOBAL_LIST_BOILERPLATE(all_chem_implants, /obj/item/weapon/implant/chem)
|
||||
|
||||
/obj/item/weapon/implant/chem
|
||||
@@ -336,20 +365,17 @@ Can only be loaded while still in its original case.<BR>
|
||||
the implant may become unstable and either pre-maturely inject the subject or simply break."}
|
||||
return dat
|
||||
|
||||
|
||||
/obj/item/weapon/implant/chem/New()
|
||||
..()
|
||||
var/datum/reagents/R = new/datum/reagents(50)
|
||||
reagents = R
|
||||
R.my_atom = src
|
||||
|
||||
|
||||
/obj/item/weapon/implant/chem/trigger(emote, source as mob)
|
||||
if(emote == "deathgasp")
|
||||
src.activate(src.reagents.total_volume)
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/implant/chem/activate(var/cause)
|
||||
if((!cause) || (!src.imp_in)) return 0
|
||||
var/mob/living/carbon/R = src.imp_in
|
||||
@@ -384,6 +410,9 @@ the implant may become unstable and either pre-maturely inject the subject or si
|
||||
spawn(20)
|
||||
malfunction--
|
||||
|
||||
//////////////////////////////
|
||||
// Loyalty Implant
|
||||
//////////////////////////////
|
||||
/obj/item/weapon/implant/loyalty
|
||||
name = "loyalty implant"
|
||||
desc = "Makes you loyal or such."
|
||||
@@ -401,20 +430,24 @@ the implant may become unstable and either pre-maturely inject the subject or si
|
||||
<b>Integrity:</b> Implant will last so long as the nanobots are inside the bloodstream."}
|
||||
return dat
|
||||
|
||||
|
||||
/obj/item/weapon/implant/loyalty/implanted(mob/M)
|
||||
if(!istype(M, /mob/living/carbon/human)) return 0
|
||||
/obj/item/weapon/implant/loyalty/handle_implant(mob/M, target_zone = BP_TORSO)
|
||||
. = ..(M, target_zone)
|
||||
if(!istype(M, /mob/living/carbon/human))
|
||||
. = FALSE
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/datum/antagonist/antag_data = get_antag_data(H.mind.special_role)
|
||||
if(antag_data && (antag_data.flags & ANTAG_IMPLANT_IMMUNE))
|
||||
H.visible_message("[H] seems to resist the implant!", "You feel the corporate tendrils of [using_map.company_name] try to invade your mind!")
|
||||
return 0
|
||||
else
|
||||
clear_antag_roles(H.mind, 1)
|
||||
H << "<span class='notice'>You feel a surge of loyalty towards [using_map.company_name].</span>"
|
||||
return 1
|
||||
. = FALSE
|
||||
|
||||
/obj/item/weapon/implant/loyalty/post_implant(mob/M)
|
||||
var/mob/living/carbon/human/H = M
|
||||
clear_antag_roles(H.mind, 1)
|
||||
to_chat(H, "<span class='notice'>You feel a surge of loyalty towards [using_map.company_name].</span>")
|
||||
|
||||
//////////////////////////////
|
||||
// Adrenaline Implant
|
||||
//////////////////////////////
|
||||
/obj/item/weapon/implant/adrenalin
|
||||
name = "adrenalin"
|
||||
desc = "Removes all stuns and knockdowns."
|
||||
@@ -445,14 +478,13 @@ the implant may become unstable and either pre-maturely inject the subject or si
|
||||
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/implant/adrenalin/implanted(mob/source)
|
||||
/obj/item/weapon/implant/adrenalin/post_implant(mob/source)
|
||||
source.mind.store_memory("A implant can be activated by using the pale emote, <B>say *pale</B> to attempt to activate.", 0, 0)
|
||||
source << "The implanted freedom implant can be activated by using the pale emote, <B>say *pale</B> to attempt to activate."
|
||||
listening_objects |= src
|
||||
return 1
|
||||
|
||||
|
||||
//////////////////////////////
|
||||
// Death Alarm Implant
|
||||
//////////////////////////////
|
||||
/obj/item/weapon/implant/death_alarm
|
||||
name = "death alarm implant"
|
||||
desc = "An alarm which monitors host vital signs and transmits a radio message upon death."
|
||||
@@ -529,11 +561,13 @@ the implant may become unstable and either pre-maturely inject the subject or si
|
||||
spawn(20)
|
||||
malfunction--
|
||||
|
||||
/obj/item/weapon/implant/death_alarm/implanted(mob/source as mob)
|
||||
/obj/item/weapon/implant/death_alarm/post_implant(mob/source as mob)
|
||||
mobname = source.real_name
|
||||
processing_objects.Add(src)
|
||||
return 1
|
||||
|
||||
//////////////////////////////
|
||||
// Compressed Matter Implant
|
||||
//////////////////////////////
|
||||
/obj/item/weapon/implant/compressed
|
||||
name = "compressed matter implant"
|
||||
desc = "Based on compressed matter technology, can store a single item."
|
||||
@@ -571,13 +605,12 @@ the implant may become unstable and either pre-maturely inject the subject or si
|
||||
scanned.loc = t
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/implant/compressed/implanted(mob/source as mob)
|
||||
/obj/item/weapon/implant/compressed/post_implant(mob/source)
|
||||
src.activation_emote = input("Choose activation emote:") in list("blink", "blink_r", "eyebrow", "chuckle", "twitch", "frown", "nod", "blush", "giggle", "grin", "groan", "shrug", "smile", "pale", "sniff", "whimper", "wink")
|
||||
if (source.mind)
|
||||
source.mind.store_memory("Compressed matter implant can be activated by using the [src.activation_emote] emote, <B>say *[src.activation_emote]</B> to attempt to activate.", 0, 0)
|
||||
source << "The implanted compressed matter implant can be activated by using the [src.activation_emote] emote, <B>say *[src.activation_emote]</B> to attempt to activate."
|
||||
listening_objects |= src
|
||||
return 1
|
||||
|
||||
|
||||
/obj/item/weapon/implant/compressed/islegal()
|
||||
return 0
|
||||
|
||||
@@ -135,10 +135,9 @@
|
||||
for (var/mob/O in viewers(M, null))
|
||||
O.show_message("<span class='warning'>\The [M] has been implanted by \the [src].</span>", 1)
|
||||
|
||||
if(imp.implanted(M))
|
||||
imp.loc = M
|
||||
imp.imp_in = M
|
||||
imp.implanted = 1
|
||||
if(imp.handle_implant(M, BP_TORSO))
|
||||
imp.post_implant(M)
|
||||
|
||||
implant_list -= imp
|
||||
break
|
||||
return
|
||||
|
||||
@@ -56,16 +56,11 @@
|
||||
|
||||
add_attack_logs(user,M,"Implanted with [imp.name] using [name]")
|
||||
|
||||
if(src.imp.implanted(M))
|
||||
src.imp.loc = M
|
||||
src.imp.imp_in = M
|
||||
src.imp.implanted = 1
|
||||
if (ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/organ/external/affected = H.get_organ(user.zone_sel.selecting)
|
||||
affected.implants += src.imp
|
||||
imp.part = affected
|
||||
if(imp.handle_implant(M))
|
||||
imp.post_implant(M)
|
||||
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
BITSET(H.hud_updateflag, IMPLOYAL_HUD)
|
||||
|
||||
src.imp = null
|
||||
|
||||
@@ -16,7 +16,9 @@
|
||||
|
||||
|
||||
/obj/item/weapon/implant/freedom/trigger(emote, mob/living/carbon/source as mob)
|
||||
if (src.uses < 1) return 0
|
||||
if (src.uses < 1)
|
||||
return 0
|
||||
|
||||
if (emote == src.activation_emote)
|
||||
src.uses--
|
||||
source << "You feel a faint click."
|
||||
@@ -46,13 +48,9 @@
|
||||
W.layer = initial(W.layer)
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/implant/freedom/implanted(mob/living/carbon/source)
|
||||
/obj/item/weapon/implant/freedom/post_implant(mob/source)
|
||||
source.mind.store_memory("Freedom implant can be activated by using the [src.activation_emote] emote, <B>say *[src.activation_emote]</B> to attempt to activate.", 0, 0)
|
||||
source << "The implanted freedom implant can be activated by using the [src.activation_emote] emote, <B>say *[src.activation_emote]</B> to attempt to activate."
|
||||
listening_objects |= src
|
||||
return 1
|
||||
|
||||
|
||||
/obj/item/weapon/implant/freedom/get_data()
|
||||
var/dat = {"
|
||||
|
||||
@@ -4,7 +4,26 @@
|
||||
|
||||
/obj/item/weapon/implant/language
|
||||
name = "GalCom language implant"
|
||||
desc = "An implant allowing someone to speak and hear the range of frequencies used in Galactic Common, as well as produce any phonemes that they usually cannot. Only helps with hearing and producing sounds, not understanding them."
|
||||
desc = "An implant allowing someone to speak the range of frequencies used in Galactic Common, as well as produce any phonemes that they usually cannot. Only helps with producing sounds, not understanding them."
|
||||
var/list/languages = list(LANGUAGE_GALCOM) // List of languages that this assists with
|
||||
|
||||
/obj/item/weapon/implant/language/post_implant(mob/M) // Amends the mob's voice organ, then deletes itself
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/organ/internal/voicebox/V = locate() in H.internal_organs
|
||||
if(V)
|
||||
var/list/need_amend = list() // If they've already got all the languages they need, then they don't need this implant to do anything
|
||||
for(var/L in languages)
|
||||
if(L in V.will_assist_languages)
|
||||
continue
|
||||
else
|
||||
need_amend |= L
|
||||
if(LAZYLEN(need_amend))
|
||||
if(V.robotic < ORGAN_ASSISTED)
|
||||
V.mechassist()
|
||||
for(var/L in need_amend)
|
||||
V.add_assistable_langs(L)
|
||||
qdel_null(src)
|
||||
|
||||
/obj/item/weapon/implant/language/get_data()
|
||||
var/dat = {"
|
||||
@@ -14,16 +33,19 @@
|
||||
<b>Important Notes:</b> Affects hearing and speech.<BR>
|
||||
<HR>
|
||||
<b>Implant Details:</b><BR>
|
||||
<b>Function:</b> Allows a being otherwise incapable to both hear the frequencies Galactic Common is generally spoken at, as well as to produce the phonemes of the language.<BR>
|
||||
<b>Function:</b> Allows a being otherwise incapable of speaking Galactic Common to produce the phonemes of the language.<BR>
|
||||
<b>Special Features:</b> None.<BR>
|
||||
<b>Integrity:</b> Implant will function for expected life, barring physical damage."}
|
||||
return dat
|
||||
|
||||
|
||||
// EAL Implant
|
||||
/obj/item/weapon/implant/language/eal
|
||||
name = "EAL language implant"
|
||||
desc = "An implant allowing an organic to both hear and speak Encoded Audio Language accurately. Only helps with hearing and producing sounds, not understanding them."
|
||||
desc = "An implant allowing an organic to speak Encoded Audio Language passably. Only helps with producing sounds, not understanding them."
|
||||
languages = list(LANGUAGE_EAL)
|
||||
|
||||
/obj/item/weapon/implant/language/get_data()
|
||||
/obj/item/weapon/implant/language/eal/get_data()
|
||||
var/dat = {"
|
||||
<b>Implant Specifications:</b><BR>
|
||||
<b>Name:</b> Vey-Med L-2 Encoded Audio Language Implant<BR>
|
||||
@@ -31,7 +53,25 @@
|
||||
<b>Important Notes:</b> Affects hearing and speech.<BR>
|
||||
<HR>
|
||||
<b>Implant Details:</b><BR>
|
||||
<b>Function:</b> Allows an organic to accurately process and speak Encoded Audio Language.<BR>
|
||||
<b>Function:</b> Allows an organic to accurately speak Encoded Audio Language.<BR>
|
||||
<b>Special Features:</b> None.<BR>
|
||||
<b>Integrity:</b> Implant will function for expected life, barring physical damage."}
|
||||
return dat
|
||||
|
||||
/obj/item/weapon/implant/language/skrellian
|
||||
name = "Skrellian language implant"
|
||||
desc = "An implant allowing someone to speak the range of frequencies used in Skrellian, as well as produce any phonemes that they usually cannot. Only helps with hearing and producing sounds, not understanding them."
|
||||
languages = list(LANGUAGE_SKRELLIAN)
|
||||
|
||||
/obj/item/weapon/implant/language/skrellian/get_data()
|
||||
var/dat = {"
|
||||
<b>Implant Specifications:</b><BR>
|
||||
<b>Name:</b> Vey-Med L-1 Galactic Common Implant<BR>
|
||||
<b>Life:</b> 5 years<BR>
|
||||
<b>Important Notes:</b> Affects hearing and speech.<BR>
|
||||
<HR>
|
||||
<b>Implant Details:</b><BR>
|
||||
<b>Function:</b> Allows a being otherwise incapable of speaking Skrellian to produce the phonemes of the language.<BR>
|
||||
<b>Special Features:</b> None.<BR>
|
||||
<b>Integrity:</b> Implant will function for expected life, barring physical damage."}
|
||||
return dat
|
||||
@@ -11,15 +11,13 @@
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/item/weapon/implant/uplink/implanted(mob/source)
|
||||
/obj/item/weapon/implant/uplink/post_implant(mob/source)
|
||||
listening_objects |= src
|
||||
activation_emote = input("Choose activation emote:") in list("blink", "blink_r", "eyebrow", "chuckle", "twitch", "frown", "nod", "blush", "giggle", "grin", "groan", "shrug", "smile", "pale", "sniff", "whimper", "wink")
|
||||
source.mind.store_memory("Uplink implant can be activated by using the [src.activation_emote] emote, <B>say *[src.activation_emote]</B> to attempt to activate.", 0, 0)
|
||||
source << "The implanted uplink implant can be activated by using the [src.activation_emote] emote, <B>say *[src.activation_emote]</B> to attempt to activate."
|
||||
listening_objects |= src
|
||||
return 1
|
||||
|
||||
|
||||
/obj/item/weapon/implant/uplink/trigger(emote, mob/source as mob)
|
||||
if(hidden_uplink && usr == source) // Let's not have another people activate our uplink
|
||||
hidden_uplink.check_trigger(source, emote, activation_emote)
|
||||
return
|
||||
return
|
||||
@@ -16,6 +16,7 @@ GLOBAL_LIST_BOILERPLATE(all_mops, /obj/item/weapon/mop)
|
||||
|
||||
/obj/item/weapon/mop/New()
|
||||
create_reagents(30)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/mop/afterattack(atom/A, mob/user, proximity)
|
||||
if(!proximity) return
|
||||
|
||||
@@ -4,6 +4,9 @@
|
||||
icon = 'icons/policetape.dmi'
|
||||
icon_state = "tape"
|
||||
w_class = ITEMSIZE_SMALL
|
||||
|
||||
toolspeed = 3 //You can use it in surgery. It's stupid, but you can.
|
||||
|
||||
var/turf/start
|
||||
var/turf/end
|
||||
var/tape_type = /obj/item/tape
|
||||
|
||||
@@ -86,7 +86,6 @@
|
||||
/obj/item/weapon/weldingtool,
|
||||
/obj/item/weapon/crowbar,
|
||||
/obj/item/weapon/wirecutters,
|
||||
/obj/item/device/t_scanner
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/belt/utility/chief
|
||||
|
||||
@@ -5,8 +5,12 @@
|
||||
icon_state = "taperoll"
|
||||
w_class = ITEMSIZE_TINY
|
||||
|
||||
toolspeed = 2 //It is now used in surgery as a not awful, but probably dangerous option, due to speed.
|
||||
|
||||
/obj/item/weapon/tape_roll/attack(var/mob/living/carbon/human/H, var/mob/user)
|
||||
if(istype(H))
|
||||
if(user.a_intent == I_HELP)
|
||||
return
|
||||
var/can_place = 0
|
||||
if(istype(user, /mob/living/silicon/robot))
|
||||
can_place = 1
|
||||
|
||||
@@ -20,6 +20,7 @@ GLOBAL_LIST_BOILERPLATE(all_janitorial_carts, /obj/structure/janitorialcart)
|
||||
|
||||
/obj/structure/janitorialcart/New()
|
||||
create_reagents(300)
|
||||
..()
|
||||
|
||||
|
||||
/obj/structure/janitorialcart/examine(mob/user)
|
||||
|
||||
Reference in New Issue
Block a user