mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-07-13 16:13:49 +01:00
Merge branch 'master' into Arokha/matdefs
This commit is contained in:
@@ -86,7 +86,7 @@
|
||||
reattach_paddles(user)
|
||||
else if(istype(W, /obj/item/weapon/cell))
|
||||
if(bcell)
|
||||
to_chat(user, "<span class='notice'>\the [src] already has a cell.</span>")
|
||||
to_chat(user, "<span class='notice'>\The [src] already has a cell.</span>")
|
||||
else
|
||||
if(!user.unEquip(W))
|
||||
return
|
||||
@@ -392,7 +392,7 @@
|
||||
user.visible_message("<span class='warning'>\The [user] begins to place [src] on [H]'s chest.</span>", "<span class='warning'>You begin to place [src] on [H]'s chest...</span>")
|
||||
if(!do_after(user, 30, H))
|
||||
return
|
||||
user.visible_message("<span class='notice'>\The [user] places [src] on [H]'s chest.</span>", "<span class='warning'>You place [src] on [H]'s chest.</span>")
|
||||
user.visible_message("<b>\The [user]</b> places [src] on [H]'s chest.", "<span class='warning'>You place [src] on [H]'s chest.</span>")
|
||||
playsound(src, 'sound/machines/defib_charge.ogg', 50, 0)
|
||||
|
||||
var/error = can_defib(H)
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
if(repairing)
|
||||
to_chat(user, "<span class='notice'>\The [src] is already being repaired!</span>")
|
||||
return
|
||||
user.visible_message("<span class='notice'>\The [user] starts trying to repair \the [src]'s bulb.</span>")
|
||||
user.visible_message("<b>\The [user]</b> starts trying to repair \the [src]'s bulb.")
|
||||
repairing = TRUE
|
||||
if(do_after(user, (40 SECONDS + rand(0, 20 SECONDS)) * W.toolspeed) && can_repair)
|
||||
if(prob(30))
|
||||
@@ -50,7 +50,7 @@
|
||||
update_icon()
|
||||
playsound(src, W.usesound, 50, 1)
|
||||
else
|
||||
user.visible_message("<span class='notice'>\The [user] fails to repair \the [src].</span>")
|
||||
user.visible_message("<b>\The [user]</b> fails to repair \the [src].")
|
||||
repairing = FALSE
|
||||
else
|
||||
..()
|
||||
|
||||
@@ -115,7 +115,7 @@
|
||||
if(!vision)
|
||||
to_chat(user, "<span class='warning'>You can't find any [H.species.vision_organ ? H.species.vision_organ : "eyes"] on [H]!</span>")
|
||||
|
||||
user.visible_message("<span class='notice'>\The [user] directs [src] to [M]'s eyes.</span>", \
|
||||
user.visible_message("<b>\The [user]</b> directs [src] to [M]'s eyes.", \
|
||||
"<span class='notice'>You direct [src] to [M]'s eyes.</span>")
|
||||
if(H != user) //can't look into your own eyes buster
|
||||
if(M.stat == DEAD || M.blinded) //mob is dead or fully blind
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
|
||||
playsound(src, O.usesound, 100, 1)
|
||||
|
||||
user.visible_message("<span class='notice'>\The [user] opens \the [src] and modifies \the [O].</span>","<span class='notice'>You open \the [src] and modify \the [O].</span>")
|
||||
user.visible_message("<b>\The [user]</b> opens \the [src] and modifies \the [O].","<span class='notice'>You open \the [src] and modify \the [O].</span>")
|
||||
|
||||
I.refit_for_species(target_species)
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
tool_qualities = list(TOOL_MULTITOOL)
|
||||
|
||||
/obj/item/device/multitool/attack_self(mob/living/user)
|
||||
var/choice = tgui_alert(usr, "What do you want to do with \the [src]?","Multitool Menu", "Switch Mode", list("Clear Buffers", "Cancel"))
|
||||
var/choice = tgui_alert(usr, "What do you want to do with \the [src]?", "Multitool Menu", list("Switch Mode", "Clear Buffers", "Cancel"))
|
||||
switch(choice)
|
||||
if("Cancel")
|
||||
to_chat(user,"<span class='notice'>You lower \the [src].</span>")
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
light_color = "#00ff00"
|
||||
light_power = 0.25
|
||||
blocks_emissive = NONE
|
||||
vis_flags = VIS_HIDE // They have an emissive that looks bad in openspace due to their wall-mounted nature
|
||||
var/circuit = /obj/item/weapon/circuitboard/intercom
|
||||
var/number = 0
|
||||
var/wiresexposed = 0
|
||||
|
||||
@@ -270,7 +270,7 @@ var/global/mob/living/carbon/human/dummy/mannequin/sleevemate_mob
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = target
|
||||
if(H.resleeve_lock && stored_mind.loaded_from_ckey != H.resleeve_lock)
|
||||
to_chat(usr,"<span class='warning'>\[H] is protected from impersonation!</span>")
|
||||
to_chat(usr,"<span class='warning'>\The [H] is protected from impersonation!</span>")
|
||||
return
|
||||
|
||||
usr.visible_message("<span class='warning'>[usr] begins uploading someone's mind into [target]!</span>","<span class='notice'>You begin uploading a mind into [target]!</span>")
|
||||
|
||||
@@ -108,7 +108,7 @@
|
||||
return 1
|
||||
else
|
||||
var/available = get_amount()
|
||||
user.visible_message("<span class='notice'>\The [user] starts bandaging [M]'s [affecting.name].</span>", \
|
||||
user.visible_message("<b>\The [user]</b> starts bandaging [M]'s [affecting.name].", \
|
||||
"<span class='notice'>You start bandaging [M]'s [affecting.name].</span>" )
|
||||
var/used = 0
|
||||
for (var/datum/wound/W in affecting.wounds)
|
||||
@@ -131,10 +131,10 @@
|
||||
break
|
||||
|
||||
if (W.current_stage <= W.max_bleeding_stage)
|
||||
user.visible_message("<span class='notice'>\The [user] bandages \a [W.desc] on [M]'s [affecting.name].</span>", \
|
||||
user.visible_message("<b>\The [user]</b> bandages \a [W.desc] on [M]'s [affecting.name].", \
|
||||
"<span class='notice'>You bandage \a [W.desc] on [M]'s [affecting.name].</span>" )
|
||||
else
|
||||
user.visible_message("<span class='notice'>\The [user] places a bandage over \a [W.desc] on [M]'s [affecting.name].</span>", \
|
||||
user.visible_message("<b>\The [user]</b> places a bandage over \a [W.desc] on [M]'s [affecting.name].", \
|
||||
"<span class='notice'>You place a bandage over \a [W.desc] on [M]'s [affecting.name].</span>" )
|
||||
W.bandage()
|
||||
playsound(src, pick(apply_sounds), 25)
|
||||
@@ -177,7 +177,7 @@
|
||||
return 1
|
||||
else
|
||||
var/available = get_amount()
|
||||
user.visible_message("<span class='notice'>\The [user] starts treating [M]'s [affecting.name].</span>", \
|
||||
user.visible_message("<b>\The [user]</b> starts treating [M]'s [affecting.name].", \
|
||||
"<span class='notice'>You start treating [M]'s [affecting.name].</span>" )
|
||||
var/used = 0
|
||||
for (var/datum/wound/W in affecting.wounds)
|
||||
@@ -200,14 +200,14 @@
|
||||
break
|
||||
|
||||
if (W.current_stage <= W.max_bleeding_stage)
|
||||
user.visible_message("<span class='notice'>\The [user] bandages \a [W.desc] on [M]'s [affecting.name].</span>", \
|
||||
user.visible_message("<b>\The [user]</b> bandages \a [W.desc] on [M]'s [affecting.name].", \
|
||||
"<span class='notice'>You bandage \a [W.desc] on [M]'s [affecting.name].</span>" )
|
||||
//H.add_side_effect("Itch")
|
||||
else if (W.damage_type == BRUISE)
|
||||
user.visible_message("<span class='notice'>\The [user] places a bruise patch over \a [W.desc] on [M]'s [affecting.name].</span>", \
|
||||
user.visible_message("<b>\The [user]</b> places a bruise patch over \a [W.desc] on [M]'s [affecting.name].", \
|
||||
"<span class='notice'>You place a bruise patch over \a [W.desc] on [M]'s [affecting.name].</span>" )
|
||||
else
|
||||
user.visible_message("<span class='notice'>\The [user] places a bandaid over \a [W.desc] on [M]'s [affecting.name].</span>", \
|
||||
user.visible_message("<b>\The [user]</b> places a bandaid over \a [W.desc] on [M]'s [affecting.name].", \
|
||||
"<span class='notice'>You place a bandaid over \a [W.desc] on [M]'s [affecting.name].</span>" )
|
||||
W.bandage()
|
||||
// W.disinfect() // VOREStation - Tech1 should not disinfect
|
||||
@@ -250,7 +250,7 @@
|
||||
to_chat(user, "<span class='warning'>The wounds on [M]'s [affecting.name] have already been salved.</span>")
|
||||
return 1
|
||||
else
|
||||
user.visible_message("<span class='notice'>\The [user] starts salving wounds on [M]'s [affecting.name].</span>", \
|
||||
user.visible_message("<b>\The [user]</b> starts salving wounds on [M]'s [affecting.name].", \
|
||||
"<span class='notice'>You start salving the wounds on [M]'s [affecting.name].</span>" )
|
||||
if(!do_mob(user, M, 10, exclusive = TRUE))
|
||||
to_chat(user, "<span class='notice'>You must stand still to salve wounds.</span>")
|
||||
@@ -290,7 +290,7 @@
|
||||
return 1
|
||||
else
|
||||
var/available = get_amount()
|
||||
user.visible_message("<span class='notice'>\The [user] starts treating [M]'s [affecting.name].</span>", \
|
||||
user.visible_message("<b>\The [user]</b> starts treating [M]'s [affecting.name].", \
|
||||
"<span class='notice'>You start treating [M]'s [affecting.name].</span>" )
|
||||
var/used = 0
|
||||
for (var/datum/wound/W in affecting.wounds)
|
||||
@@ -312,13 +312,13 @@
|
||||
break
|
||||
|
||||
if (W.current_stage <= W.max_bleeding_stage)
|
||||
user.visible_message("<span class='notice'>\The [user] cleans \a [W.desc] on [M]'s [affecting.name] and seals the edges with bioglue.</span>", \
|
||||
user.visible_message("<b>\The [user]</b> cleans \a [W.desc] on [M]'s [affecting.name] and seals the edges with bioglue.", \
|
||||
"<span class='notice'>You clean and seal \a [W.desc] on [M]'s [affecting.name].</span>" )
|
||||
else if (W.damage_type == BRUISE)
|
||||
user.visible_message("<span class='notice'>\The [user] places a medical patch over \a [W.desc] on [M]'s [affecting.name].</span>", \
|
||||
user.visible_message("<b>\The [user]</b> places a medical patch over \a [W.desc] on [M]'s [affecting.name].", \
|
||||
"<span class='notice'>You place a medical patch over \a [W.desc] on [M]'s [affecting.name].</span>" )
|
||||
else
|
||||
user.visible_message("<span class='notice'>\The [user] smears some bioglue over \a [W.desc] on [M]'s [affecting.name].</span>", \
|
||||
user.visible_message("<b>\The [user]</b> smears some bioglue over \a [W.desc] on [M]'s [affecting.name].", \
|
||||
"<span class='notice'>You smear some bioglue over \a [W.desc] on [M]'s [affecting.name].</span>" )
|
||||
W.bandage()
|
||||
W.disinfect()
|
||||
@@ -358,7 +358,7 @@
|
||||
to_chat(user, "<span class='warning'>The wounds on [M]'s [affecting.name] have already been salved.</span>")
|
||||
return 1
|
||||
else
|
||||
user.visible_message("<span class='notice'>\The [user] starts salving wounds on [M]'s [affecting.name].</span>", \
|
||||
user.visible_message("<b>\The [user]</b> starts salving wounds on [M]'s [affecting.name].", \
|
||||
"<span class='notice'>You start salving the wounds on [M]'s [affecting.name].</span>" )
|
||||
if(!do_mob(user, M, 10, exclusive = TRUE))
|
||||
to_chat(user, "<span class='notice'>You must stand still to salve wounds.</span>")
|
||||
|
||||
@@ -177,7 +177,7 @@
|
||||
if(!S.open)
|
||||
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>")
|
||||
M.visible_message("<b>\The [user]</b> scans the wounds on [M]'s [S.name] with [src]")
|
||||
|
||||
src.add_data(S)
|
||||
|
||||
|
||||
@@ -97,7 +97,7 @@
|
||||
/obj/item/weapon/cane/white/collapsible/attack_self(mob/user as mob)
|
||||
on = !on
|
||||
if(on)
|
||||
user.visible_message("<span class='notice'>\The [user] extends the white cane.</span>",\
|
||||
user.visible_message("<b>\The [user]</b> extends the white cane.",\
|
||||
"<span class='warning'>You extend the white cane.</span>",\
|
||||
"You hear an ominous click.")
|
||||
icon_state = "whitecane1out"
|
||||
@@ -106,7 +106,7 @@
|
||||
force = 5
|
||||
attack_verb = list("smacked", "struck", "cracked", "beaten")
|
||||
else
|
||||
user.visible_message("<span class='notice'>\The [user] collapses the white cane.</span>",\
|
||||
user.visible_message("<b>\The [user]</b> collapses the white cane.",\
|
||||
"<span class='notice'>You collapse the white cane.</span>",\
|
||||
"You hear a click.")
|
||||
icon_state = "whitecane1in"
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
/obj/item/weapon/circuitboard/rdconsole/attackby(obj/item/I as obj, mob/user as mob)
|
||||
if(I.is_screwdriver())
|
||||
playsound(src, I.usesound, 50, 1)
|
||||
user.visible_message("<span class='notice'>\The [user] adjusts the jumper on \the [src]'s access protocol pins.</span>", "<span class='notice'>You adjust the jumper on the access protocol pins.</span>")
|
||||
user.visible_message("<b>\The [user]</b> adjusts the jumper on \the [src]'s access protocol pins.", "<span class='notice'>You adjust the jumper on the access protocol pins.</span>")
|
||||
if(build_path == /obj/machinery/computer/rdconsole/core)
|
||||
name = T_BOARD("RD Console - Robotics")
|
||||
build_path = /obj/machinery/computer/rdconsole/robotics
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
/obj/item/weapon/circuitboard/rdserver/attackby(obj/item/I as obj, mob/user as mob)
|
||||
if(I.is_screwdriver())
|
||||
playsound(src, I.usesound, 50, 1)
|
||||
user.visible_message("<span class='notice'>\The [user] adjusts the jumper on \the [src]'s access protocol pins.</span>", "<span class='notice'>You adjust the jumper on the access protocol pins.</span>")
|
||||
user.visible_message("<b>\The [user]</b> adjusts the jumper on \the [src]'s access protocol pins.", "<span class='notice'>You adjust the jumper on the access protocol pins.</span>")
|
||||
if(build_path == /obj/machinery/r_n_d/server/core)
|
||||
name = T_BOARD("RD Console - Robotics")
|
||||
build_path = /obj/machinery/r_n_d/server/robotics
|
||||
|
||||
@@ -11,6 +11,8 @@
|
||||
var/stage = 0
|
||||
var/state = 0
|
||||
var/path = 0
|
||||
/// If TRUE, grenade is permanently sealed when fully assembled, useful for things like off-the-shelf grenades.
|
||||
var/sealed = FALSE
|
||||
var/obj/item/device/assembly_holder/detonator = null
|
||||
var/list/beakers = new/list()
|
||||
var/list/allowed_containers = list(/obj/item/weapon/reagent_containers/glass/beaker, /obj/item/weapon/reagent_containers/glass/bottle)
|
||||
@@ -93,7 +95,8 @@
|
||||
if(active && prob(95))
|
||||
to_chat(user, "<span class='warning'>You trigger the assembly!</span>")
|
||||
detonate()
|
||||
return
|
||||
else if(sealed)
|
||||
to_chat(user, "<span class='warning'>This grenade lacks a way to disassemble it.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You unlock the assembly.</span>")
|
||||
playsound(src, W.usesound, 50, -3)
|
||||
@@ -200,8 +203,10 @@
|
||||
/obj/item/weapon/grenade/chem_grenade/metalfoam
|
||||
name = "metal-foam grenade"
|
||||
desc = "Used for emergency sealing of air breaches."
|
||||
icon_state = "foam"
|
||||
path = 1
|
||||
stage = 2
|
||||
sealed = TRUE
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/metalfoam/Initialize()
|
||||
. = ..()
|
||||
@@ -216,13 +221,14 @@
|
||||
|
||||
beakers += B1
|
||||
beakers += B2
|
||||
icon_state = initial(icon_state) +"_locked"
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/incendiary
|
||||
name = "incendiary grenade"
|
||||
desc = "Used for clearing rooms of living things."
|
||||
icon_state = "incendiary"
|
||||
path = 1
|
||||
stage = 2
|
||||
sealed = TRUE
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/incendiary/Initialize()
|
||||
. = ..()
|
||||
@@ -239,13 +245,13 @@
|
||||
|
||||
beakers += B1
|
||||
beakers += B2
|
||||
icon_state = initial(icon_state) +"_locked"
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/antiweed
|
||||
name = "weedkiller grenade"
|
||||
desc = "Used for purging large areas of invasive plant species. Contents under pressure. Do not directly inhale contents."
|
||||
path = 1
|
||||
stage = 2
|
||||
sealed = TRUE
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/antiweed/Initialize()
|
||||
. = ..()
|
||||
@@ -266,8 +272,10 @@
|
||||
/obj/item/weapon/grenade/chem_grenade/cleaner
|
||||
name = "cleaner grenade"
|
||||
desc = "BLAM!-brand foaming space cleaner. In a special applicator for rapid cleaning of wide areas."
|
||||
icon_state = "cleaner"
|
||||
stage = 2
|
||||
path = 1
|
||||
sealed = TRUE
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/cleaner/Initialize()
|
||||
. = ..()
|
||||
@@ -282,13 +290,14 @@
|
||||
|
||||
beakers += B1
|
||||
beakers += B2
|
||||
icon_state = initial(icon_state) +"_locked"
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/teargas
|
||||
name = "tear gas grenade"
|
||||
desc = "Concentrated Capsaicin. Contents under pressure. Use with caution."
|
||||
icon_state = "teargas"
|
||||
stage = 2
|
||||
path = 1
|
||||
sealed = TRUE
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/teargas/Initialize()
|
||||
. = ..()
|
||||
@@ -305,4 +314,4 @@
|
||||
|
||||
beakers += B1
|
||||
beakers += B2
|
||||
icon_state = initial(icon_state) +"_locked"
|
||||
|
||||
@@ -301,7 +301,7 @@ var/last_chew = 0
|
||||
return 1
|
||||
|
||||
/obj/item/weapon/handcuffs/legcuffs/bola/dropped()
|
||||
visible_message("<span class='notice'>\The [src] falls apart!</span>")
|
||||
visible_message("<b>\The [src]</b> falls apart!")
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/handcuffs/legcuffs/bola/place_legcuffs(var/mob/living/carbon/target, var/mob/user)
|
||||
@@ -313,7 +313,7 @@ var/last_chew = 0
|
||||
return 0
|
||||
|
||||
if(!H.has_organ_for_slot(slot_legcuffed))
|
||||
H.visible_message("<span class='notice'>\The [src] slams into [H], but slides off!</span>")
|
||||
H.visible_message("<b>\The [src]</b> slams into [H], but slides off!")
|
||||
src.dropped()
|
||||
return 0
|
||||
|
||||
|
||||
@@ -75,6 +75,26 @@
|
||||
/obj/item/weapon/material/kitchen/utensil/fork/plastic
|
||||
default_material = "plastic"
|
||||
|
||||
/obj/item/weapon/material/kitchen/utensil/foon
|
||||
name = "foon"
|
||||
desc = "It's a foon. The forgotten cousin of the spork."
|
||||
icon_state = "foon"
|
||||
sharp = TRUE
|
||||
edge = FALSE
|
||||
|
||||
/obj/item/weapon/material/kitchen/utensil/foon/plastic
|
||||
default_material = "plastic"
|
||||
|
||||
/obj/item/weapon/material/kitchen/utensil/spork
|
||||
name = "spork"
|
||||
desc = "It's a spork. The (un)holy merger of a spoon and fork."
|
||||
icon_state = "spork"
|
||||
sharp = TRUE
|
||||
edge = FALSE
|
||||
|
||||
/obj/item/weapon/material/kitchen/utensil/spork/plastic
|
||||
default_material = "plastic"
|
||||
|
||||
/obj/item/weapon/material/kitchen/utensil/spoon
|
||||
name = "spoon"
|
||||
desc = "It's a spoon. You can see your own upside-down face in it."
|
||||
|
||||
@@ -123,6 +123,16 @@
|
||||
icon_state = "render"
|
||||
applies_material_colour = 0
|
||||
|
||||
/obj/item/weapon/material/knife/table
|
||||
name = "table knife"
|
||||
icon = 'icons/obj/kitchen.dmi'
|
||||
icon_state = "knife_table"
|
||||
sharp = FALSE // blunted tip
|
||||
force_divisor = 0.1
|
||||
|
||||
/obj/item/weapon/material/knife/table/plastic
|
||||
default_material = "plastic"
|
||||
|
||||
/obj/item/weapon/material/knife/butch
|
||||
name = "butcher's cleaver"
|
||||
icon_state = "butch"
|
||||
|
||||
@@ -333,7 +333,7 @@ var/list/tape_roll_applications = list()
|
||||
|
||||
/obj/item/tape/attack_hand(mob/user as mob)
|
||||
if (user.a_intent == I_HELP && src.allowed(user))
|
||||
user.show_viewers("<span class='notice'>\The [user] lifts \the [src], allowing passage.</span>")
|
||||
user.show_viewers("<b>\The [user]</b> lifts \the [src], allowing passage.")
|
||||
for(var/obj/item/tape/T in gettapeline())
|
||||
T.lift(100) //~10 seconds
|
||||
else
|
||||
@@ -377,7 +377,7 @@ var/list/tape_roll_applications = list()
|
||||
if(user.a_intent == I_HELP)
|
||||
to_chat(user, "<span class='warning'>You refrain from breaking \the [src].</span>")
|
||||
return
|
||||
user.visible_message("<span class='notice'>\The [user] breaks \the [src]!</span>","<span class='notice'>You break \the [src].</span>")
|
||||
user.visible_message("<b>\The [user]</b> breaks \the [src]!","<span class='notice'>You break \the [src].</span>")
|
||||
|
||||
for (var/obj/item/tape/T in gettapeline())
|
||||
if(T == src)
|
||||
|
||||
@@ -75,57 +75,69 @@
|
||||
/obj/item/weapon/storage/backpack/cultpack
|
||||
name = "trophy rack"
|
||||
desc = "It's useful for both carrying extra gear and proudly declaring your insanity."
|
||||
icon_state = "cultpack"
|
||||
icon_state = "backpack_cult"
|
||||
|
||||
/obj/item/weapon/storage/backpack/clown
|
||||
name = "Giggles von Honkerton"
|
||||
desc = "It's a backpack made by Honk! Co."
|
||||
icon_state = "clownpack"
|
||||
icon_state = "backpack_clown"
|
||||
|
||||
/obj/item/weapon/storage/backpack/white
|
||||
name = "white backpack"
|
||||
icon_state = "backpack_white"
|
||||
|
||||
/obj/item/weapon/storage/backpack/fancy
|
||||
name = "fancy backpack"
|
||||
icon_state = "backpack_fancy"
|
||||
|
||||
/obj/item/weapon/storage/backpack/military
|
||||
name = "military backpack"
|
||||
icon_state = "backpack_military"
|
||||
|
||||
/obj/item/weapon/storage/backpack/medic
|
||||
name = "medical backpack"
|
||||
desc = "It's a backpack especially designed for use in a sterile environment."
|
||||
icon_state = "medicalpack"
|
||||
icon_state = "backpack_medical"
|
||||
|
||||
/obj/item/weapon/storage/backpack/security
|
||||
name = "security backpack"
|
||||
desc = "It's a very robust backpack."
|
||||
icon_state = "securitypack"
|
||||
icon_state = "backpack_security"
|
||||
|
||||
/obj/item/weapon/storage/backpack/captain
|
||||
name = "site manager's backpack"
|
||||
desc = "It's a special backpack made exclusively for officers."
|
||||
icon_state = "captainpack"
|
||||
icon_state = "backpack_captain"
|
||||
|
||||
/obj/item/weapon/storage/backpack/industrial
|
||||
name = "industrial backpack"
|
||||
desc = "It's a tough backpack for the daily grind of station life."
|
||||
icon_state = "engiepack"
|
||||
icon_state = "backpack_industrial"
|
||||
|
||||
/obj/item/weapon/storage/backpack/toxins
|
||||
name = "laboratory backpack"
|
||||
desc = "It's a light backpack modeled for use in laboratories and other scientific institutions."
|
||||
icon_state = "toxpack"
|
||||
icon_state = "backpack_purple"
|
||||
|
||||
/obj/item/weapon/storage/backpack/hydroponics
|
||||
name = "herbalist's backpack"
|
||||
desc = "It's a green backpack with many pockets to store plants and tools in."
|
||||
icon_state = "hydpack"
|
||||
icon_state = "backpack_hydro"
|
||||
|
||||
/obj/item/weapon/storage/backpack/genetics
|
||||
name = "geneticist backpack"
|
||||
desc = "It's a backpack fitted with slots for diskettes and other workplace tools."
|
||||
icon_state = "genpack"
|
||||
icon_state = "backpack_blue"
|
||||
|
||||
/obj/item/weapon/storage/backpack/virology
|
||||
name = "sterile backpack"
|
||||
desc = "It's a sterile backpack able to withstand different pathogens from entering its fabric."
|
||||
icon_state = "viropack"
|
||||
icon_state = "backpack_green"
|
||||
|
||||
/obj/item/weapon/storage/backpack/chemistry
|
||||
name = "chemistry backpack"
|
||||
desc = "It's an orange backpack which was designed to hold beakers, pill bottles and bottles."
|
||||
icon_state = "chempack"
|
||||
icon_state = "backpack_orange"
|
||||
|
||||
/*
|
||||
* Duffle Types
|
||||
@@ -162,7 +174,7 @@
|
||||
/obj/item/weapon/storage/backpack/dufflebag/med
|
||||
name = "medical dufflebag"
|
||||
desc = "A large dufflebag for holding extra medical supplies."
|
||||
icon_state = "duffle_med"
|
||||
icon_state = "duffle_medical"
|
||||
|
||||
/obj/item/weapon/storage/backpack/dufflebag/emt
|
||||
name = "EMT dufflebag"
|
||||
@@ -172,17 +184,27 @@
|
||||
/obj/item/weapon/storage/backpack/dufflebag/sec
|
||||
name = "security dufflebag"
|
||||
desc = "A large dufflebag for holding extra security supplies and ammunition."
|
||||
icon_state = "duffle_sec"
|
||||
icon_state = "duffle_security"
|
||||
|
||||
/obj/item/weapon/storage/backpack/dufflebag/eng
|
||||
name = "industrial dufflebag"
|
||||
desc = "A large dufflebag for holding extra tools and supplies."
|
||||
icon_state = "duffle_eng"
|
||||
icon_state = "duffle_industrial"
|
||||
|
||||
/obj/item/weapon/storage/backpack/dufflebag/sci
|
||||
name = "science dufflebag"
|
||||
desc = "A large dufflebag for holding circuits and beakers."
|
||||
icon_state = "duffle_sci"
|
||||
icon_state = "duffle_science"
|
||||
|
||||
/obj/item/weapon/storage/backpack/dufflebag/drone
|
||||
name = "drone dufflebag"
|
||||
desc = "A large dufflebag for holding small robots? Or maybe it's one used by robots!"
|
||||
icon_state = "duffle_drone"
|
||||
|
||||
/obj/item/weapon/storage/backpack/dufflebag/cursed
|
||||
name = "cursed dufflebag"
|
||||
desc = "That probably shouldn't be moving..."
|
||||
icon_state = "duffle_cursed"
|
||||
|
||||
/*
|
||||
* Satchel Types
|
||||
@@ -192,7 +214,6 @@
|
||||
name = "leather satchel"
|
||||
desc = "It's a very fancy satchel made with fine leather."
|
||||
icon_state = "satchel"
|
||||
item_state_slots = list(slot_r_hand_str = "briefcase", slot_l_hand_str = "briefcase")
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel/withwallet
|
||||
starts_with = list(/obj/item/weapon/storage/wallet/random)
|
||||
@@ -200,67 +221,70 @@
|
||||
/obj/item/weapon/storage/backpack/satchel/norm
|
||||
name = "satchel"
|
||||
desc = "A trendy looking satchel."
|
||||
icon_state = "satchel-norm"
|
||||
icon_state = "satchel_grey"
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel/white
|
||||
name = "white satchel"
|
||||
icon_state = "satchel_white"
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel/fancy
|
||||
name = "fancy satchel"
|
||||
icon_state = "satchel_fancy"
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel/military
|
||||
name = "military satchel"
|
||||
icon_state = "satchel_military"
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel/eng
|
||||
name = "industrial satchel"
|
||||
desc = "A tough satchel with extra pockets."
|
||||
icon_state = "satchel-eng"
|
||||
item_state_slots = list(slot_r_hand_str = "engiepack", slot_l_hand_str = "engiepack")
|
||||
icon_state = "satchel_industrial"
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel/med
|
||||
name = "medical satchel"
|
||||
desc = "A sterile satchel used in medical departments."
|
||||
icon_state = "satchel-med"
|
||||
item_state_slots = list(slot_r_hand_str = "medicalpack", slot_l_hand_str = "medicalpack")
|
||||
icon_state = "satchel_medical"
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel/vir
|
||||
name = "virologist satchel"
|
||||
desc = "A sterile satchel with virologist colours."
|
||||
icon_state = "satchel-vir"
|
||||
item_state_slots = list(slot_r_hand_str = "viropack", slot_l_hand_str = "viropack")
|
||||
icon_state = "satchel_green"
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel/chem
|
||||
name = "chemist satchel"
|
||||
desc = "A sterile satchel with chemist colours."
|
||||
icon_state = "satchel-chem"
|
||||
item_state_slots = list(slot_r_hand_str = "chempack", slot_l_hand_str = "chempack")
|
||||
icon_state = "satchel_orange"
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel/gen
|
||||
name = "geneticist satchel"
|
||||
desc = "A sterile satchel with geneticist colours."
|
||||
icon_state = "satchel-gen"
|
||||
item_state_slots = list(slot_r_hand_str = "genpack", slot_l_hand_str = "genpack")
|
||||
icon_state = "satchel_blue"
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel/tox
|
||||
name = "scientist satchel"
|
||||
desc = "Useful for holding research materials."
|
||||
icon_state = "satchel-tox"
|
||||
item_state_slots = list(slot_r_hand_str = "toxpack", slot_l_hand_str = "toxpack")
|
||||
icon_state = "satchel_purple"
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel/sec
|
||||
name = "security satchel"
|
||||
desc = "A robust satchel for security related needs."
|
||||
icon_state = "satchel-sec"
|
||||
item_state_slots = list(slot_r_hand_str = "securitypack", slot_l_hand_str = "securitypack")
|
||||
icon_state = "satchel_security"
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel/hyd
|
||||
name = "hydroponics satchel"
|
||||
desc = "A green satchel for plant related work."
|
||||
icon_state = "satchel_hyd"
|
||||
icon_state = "satchel_hydro"
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel/cap
|
||||
name = "site manager's satchel"
|
||||
desc = "An exclusive satchel for officers."
|
||||
icon_state = "satchel-cap"
|
||||
item_state_slots = list(slot_r_hand_str = "captainpack", slot_l_hand_str = "captainpack")
|
||||
icon_state = "satchel_captain"
|
||||
|
||||
//ERT backpacks.
|
||||
/obj/item/weapon/storage/backpack/ert
|
||||
name = "emergency response team backpack"
|
||||
desc = "A spacious backpack with lots of pockets, used by members of the Emergency Response Team."
|
||||
icon_state = "ert_commander"
|
||||
item_state_slots = list(slot_r_hand_str = "securitypack", slot_l_hand_str = "securitypack")
|
||||
|
||||
//Commander
|
||||
/obj/item/weapon/storage/backpack/ert/commander
|
||||
@@ -292,59 +316,106 @@
|
||||
/obj/item/weapon/storage/backpack/messenger
|
||||
name = "messenger bag"
|
||||
desc = "A sturdy backpack worn over one shoulder."
|
||||
icon_state = "courierbag"
|
||||
item_state_slots = list(slot_r_hand_str = "backpack", slot_l_hand_str = "backpack")
|
||||
icon_state = "courier"
|
||||
item_state_slots = list(slot_r_hand_str = "satchel_grey", slot_l_hand_str = "satchel_grey")
|
||||
|
||||
/obj/item/weapon/storage/backpack/messenger/chem
|
||||
name = "chemistry messenger bag"
|
||||
desc = "A serile backpack worn over one shoulder. This one is in Chemsitry colors."
|
||||
icon_state = "courierbagchem"
|
||||
item_state_slots = list(slot_r_hand_str = "chempack", slot_l_hand_str = "chempack")
|
||||
icon_state = "courier_chemistry"
|
||||
item_state_slots = list(slot_r_hand_str = "satchel_orange", slot_l_hand_str = "satchel_orange")
|
||||
|
||||
/obj/item/weapon/storage/backpack/messenger/med
|
||||
name = "medical messenger bag"
|
||||
desc = "A sterile backpack worn over one shoulder used in medical departments."
|
||||
icon_state = "courierbagmed"
|
||||
item_state_slots = list(slot_r_hand_str = "medicalpack", slot_l_hand_str = "medicalpack")
|
||||
icon_state = "courier_medical"
|
||||
item_state_slots = list(slot_r_hand_str = "satchel_medical", slot_l_hand_str = "satchel_medical")
|
||||
|
||||
/obj/item/weapon/storage/backpack/messenger/viro
|
||||
name = "virology messenger bag"
|
||||
desc = "A sterile backpack worn over one shoulder. This one is in Virology colors."
|
||||
icon_state = "courierbagviro"
|
||||
item_state_slots = list(slot_r_hand_str = "viropack", slot_l_hand_str = "viropack")
|
||||
icon_state = "courier_virology"
|
||||
item_state_slots = list(slot_r_hand_str = "satchel_green", slot_l_hand_str = "satchel_green")
|
||||
|
||||
/obj/item/weapon/storage/backpack/messenger/tox
|
||||
name = "research messenger bag"
|
||||
desc = "A backpack worn over one shoulder. Useful for holding science materials."
|
||||
icon_state = "courierbagtox"
|
||||
item_state_slots = list(slot_r_hand_str = "toxpack", slot_l_hand_str = "toxpack")
|
||||
icon_state = "courier_toxins"
|
||||
item_state_slots = list(slot_r_hand_str = "satchel_purple", slot_l_hand_str = "satchel_purple")
|
||||
|
||||
/obj/item/weapon/storage/backpack/messenger/com
|
||||
name = "command messenger bag"
|
||||
desc = "A special backpack worn over one shoulder. This one is made specifically for officers."
|
||||
icon_state = "courierbagcom"
|
||||
item_state_slots = list(slot_r_hand_str = "captainpack", slot_l_hand_str = "captainpack")
|
||||
icon_state = "courier_captain"
|
||||
item_state_slots = list(slot_r_hand_str = "satchel_captain", slot_l_hand_str = "satchel_captain")
|
||||
|
||||
/obj/item/weapon/storage/backpack/messenger/engi
|
||||
name = "engineering messenger bag"
|
||||
icon_state = "courierbagengi"
|
||||
item_state_slots = list(slot_r_hand_str = "engiepack", slot_l_hand_str = "engiepack")
|
||||
icon_state = "courier_industrial"
|
||||
item_state_slots = list(slot_r_hand_str = "satchel_industrial", slot_l_hand_str = "satchel_industrial")
|
||||
|
||||
/obj/item/weapon/storage/backpack/messenger/hyd
|
||||
name = "hydroponics messenger bag"
|
||||
desc = "A backpack worn over one shoulder. This one is designed for plant-related work."
|
||||
icon_state = "courierbaghyd"
|
||||
icon_state = "courier_hydro"
|
||||
item_state_slots = list(slot_r_hand_str = "satchel_hydro", slot_l_hand_str = "satchel_hydro")
|
||||
|
||||
/obj/item/weapon/storage/backpack/messenger/sec
|
||||
name = "security messenger bag"
|
||||
desc = "A tactical backpack worn over one shoulder. This one is in Security colors."
|
||||
icon_state = "courierbagsec"
|
||||
item_state_slots = list(slot_r_hand_str = "securitypack", slot_l_hand_str = "securitypack")
|
||||
icon_state = "courier_security"
|
||||
item_state_slots = list(slot_r_hand_str = "satchel_security", slot_l_hand_str = "satchel_security")
|
||||
|
||||
/obj/item/weapon/storage/backpack/messenger/black
|
||||
icon_state = "courierbagblk"
|
||||
icon_state = "courier_black"
|
||||
|
||||
|
||||
/*
|
||||
* Sport Bags
|
||||
*/
|
||||
|
||||
/obj/item/weapon/storage/backpack/sport
|
||||
name = "sports backpack"
|
||||
icon_state = "backsport"
|
||||
|
||||
/obj/item/weapon/storage/backpack/sport/white
|
||||
name = "white sports backpack"
|
||||
icon_state = "backsport_white"
|
||||
|
||||
/obj/item/weapon/storage/backpack/sport/fancy
|
||||
name = "fancy sports backpack"
|
||||
icon_state = "backsport_fancy"
|
||||
|
||||
/obj/item/weapon/storage/backpack/sport/vir
|
||||
name = "virologist sports backpack"
|
||||
desc = "A sterile sports backpack with virologist colours."
|
||||
icon_state = "backsport_green"
|
||||
|
||||
/obj/item/weapon/storage/backpack/sport/chem
|
||||
name = "chemist sports backpack"
|
||||
desc = "A sterile sports backpack with chemist colours."
|
||||
icon_state = "backsport_orange"
|
||||
|
||||
/obj/item/weapon/storage/backpack/sport/gen
|
||||
name = "geneticist sports backpack"
|
||||
desc = "A sterile sports backpack with geneticist colours."
|
||||
icon_state = "backsport_blue"
|
||||
|
||||
/obj/item/weapon/storage/backpack/sport/tox
|
||||
name = "scientist sports backpack"
|
||||
desc = "Useful for holding research materials."
|
||||
icon_state = "backsport_purple"
|
||||
|
||||
/obj/item/weapon/storage/backpack/sport/sec
|
||||
name = "security sports backpack"
|
||||
desc = "A robust sports backpack for security related needs."
|
||||
icon_state = "backsport_security"
|
||||
|
||||
/obj/item/weapon/storage/backpack/sport/hyd
|
||||
name = "hydroponics sports backpack"
|
||||
desc = "A green sports backpack for plant related work."
|
||||
icon_state = "backsport_hydro"
|
||||
|
||||
//Purses
|
||||
/obj/item/weapon/storage/backpack/purse
|
||||
name = "purse"
|
||||
@@ -394,29 +465,29 @@
|
||||
return
|
||||
|
||||
if(!parachute) //This packs the parachute
|
||||
H.visible_message("<span class='notice'>\The [H] starts to pack \the [src]!</span>", \
|
||||
H.visible_message("<b>\The [H]</b> starts to pack \the [src]!", \
|
||||
"<span class='notice'>You start to pack \the [src]!</span>", \
|
||||
"You hear the shuffling of cloth.")
|
||||
if(do_after(H, 50))
|
||||
H.visible_message("<span class='notice'>\The [H] finishes packing \the [src]!</span>", \
|
||||
H.visible_message("<b>\The [H]</b> finishes packing \the [src]!", \
|
||||
"<span class='notice'>You finish packing \the [src]!</span>", \
|
||||
"You hear the shuffling of cloth.")
|
||||
parachute = TRUE
|
||||
else
|
||||
H.visible_message("<span class='notice'>\The [src] gives up on packing \the [src]!</span>", \
|
||||
H.visible_message("<b>\The [src]</b> gives up on packing \the [src]!", \
|
||||
"<span class='notice'>You give up on packing \the [src]!</span>")
|
||||
return
|
||||
else //This unpacks the parachute
|
||||
H.visible_message("<span class='notice'>\The [src] starts to unpack \the [src]!</span>", \
|
||||
H.visible_message("<b>\The [src]</b> starts to unpack \the [src]!", \
|
||||
"<span class='notice'>You start to unpack \the [src]!</span>", \
|
||||
"You hear the shuffling of cloth.")
|
||||
if(do_after(H, 25))
|
||||
H.visible_message("<span class='notice'>\The [src] finishes unpacking \the [src]!</span>", \
|
||||
H.visible_message("<b>\The [src]</b> finishes unpacking \the [src]!", \
|
||||
"<span class='notice'>You finish unpacking \the [src]!</span>", \
|
||||
"You hear the shuffling of cloth.")
|
||||
parachute = FALSE
|
||||
else
|
||||
H.visible_message("<span class='notice'>\The [src] decides not to unpack \the [src]!</span>", \
|
||||
H.visible_message("<b>\The [src]</b> decides not to unpack \the [src]!", \
|
||||
"<span class='notice'>You decide not to unpack \the [src]!</span>")
|
||||
return
|
||||
|
||||
|
||||
@@ -53,6 +53,16 @@
|
||||
icon_state = "trashbag2"
|
||||
else icon_state = "trashbag3"
|
||||
|
||||
/obj/item/weapon/storage/bag/trash/holding
|
||||
name = "trash bag of holding"
|
||||
desc = "The latest and greatest in custodial convenience, a trashbag that is capable of holding vast quantities of garbage."
|
||||
icon_state = "bluetrashbag"
|
||||
origin_tech = list(TECH_BLUESPACE = 3)
|
||||
max_w_class = ITEMSIZE_NORMAL
|
||||
max_storage_space = ITEMSIZE_COST_NORMAL * 10 // Slightly less than BoH
|
||||
|
||||
/obj/item/weapon/storage/bag/trash/holding/update_icon()
|
||||
return
|
||||
|
||||
// -----------------------------
|
||||
// Plastic Bag
|
||||
|
||||
@@ -236,7 +236,7 @@
|
||||
if(istype(W, /obj/item/clothing/mask/smokable/cigarette))
|
||||
var/obj/item/clothing/mask/smokable/cigarette/C = W
|
||||
reagents.trans_to_obj(C, (reagents.total_volume/contents.len))
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
|
||||
if(!istype(M, /mob))
|
||||
@@ -343,7 +343,7 @@
|
||||
var/obj/item/clothing/mask/smokable/cigarette/cigar/C = W
|
||||
if(!istype(C)) return
|
||||
reagents.trans_to_obj(C, (reagents.total_volume/contents.len))
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/storage/rollingpapers
|
||||
name = "rolling paper pack"
|
||||
|
||||
@@ -0,0 +1,186 @@
|
||||
#define INVENTORY_POUCH_SPACE ITEMSIZE_COST_SMALL*4 // 25% the size of a backpack for normal size
|
||||
|
||||
// Pouches for small storage in pocket slots
|
||||
/obj/item/weapon/storage/pouch
|
||||
name = "storage pouch (medium)"
|
||||
desc = "This storage pouch can be used to provide some additional storage for quick access."
|
||||
icon = 'icons/obj/clothing/pouches.dmi'
|
||||
slot_flags = SLOT_POCKET
|
||||
drop_sound = 'sound/items/drop/backpack.ogg'
|
||||
pickup_sound = 'sound/items/pickup/backpack.ogg'
|
||||
|
||||
icon_state = "medium_generic"
|
||||
max_w_class = ITEMSIZE_NORMAL
|
||||
max_storage_space = INVENTORY_POUCH_SPACE
|
||||
can_hold = null
|
||||
pocketable = TRUE
|
||||
|
||||
var/insert_delay = 0
|
||||
var/remove_delay = 2 SECONDS
|
||||
|
||||
/obj/item/weapon/storage/pouch/stall_insertion(obj/item/W, mob/user)
|
||||
// No delay if you have the pouch in your hands
|
||||
if(user.get_active_hand() == src || user.get_inactive_hand() == src)
|
||||
return TRUE // Skip delay
|
||||
|
||||
if(insert_delay && !do_after(user, 2 SECONDS, src, needhand = TRUE, exclusive = TRUE))
|
||||
return FALSE // Moved or whatever
|
||||
|
||||
if(W in src)
|
||||
return TRUE // Item is still inside
|
||||
|
||||
return FALSE
|
||||
|
||||
/obj/item/weapon/storage/pouch/stall_removal(obj/item/W, mob/user)
|
||||
// No delay if you have the pouch in your hands
|
||||
if(user.get_active_hand() == src || user.get_inactive_hand() == src)
|
||||
return TRUE // Skip delay
|
||||
|
||||
if(remove_delay && !do_after(user, 2 SECONDS, src, needhand = TRUE, exclusive = TRUE))
|
||||
return FALSE // Moved or whatever
|
||||
|
||||
if(W in src)
|
||||
return TRUE // Item is still inside
|
||||
|
||||
return FALSE
|
||||
|
||||
/obj/item/weapon/storage/pouch/pocket_description(mob/haver, mob/examiner)
|
||||
return "[src]"
|
||||
|
||||
/obj/item/weapon/storage/pouch/large
|
||||
name = "storage pouch (large)"
|
||||
desc = "This storage pouch can be used to provide a good amount of additional storage for quick access."
|
||||
icon_state = "large_generic"
|
||||
max_storage_space = ITEMSIZE_COST_SMALL*6
|
||||
|
||||
/obj/item/weapon/storage/pouch/small
|
||||
name = "storage pouch (small)"
|
||||
desc = "This storage pouch can be used to provide a small amount of additional storage for quick access."
|
||||
icon_state = "small_generic"
|
||||
max_storage_space = ITEMSIZE_COST_SMALL*2
|
||||
|
||||
/obj/item/weapon/storage/pouch/ammo
|
||||
name = "storage pouch (ammo)"
|
||||
desc = "This storage pouch can be used to provide some additional storage for quick access. Can only hold ammunition and cells."
|
||||
icon_state = "ammo"
|
||||
max_storage_space = INVENTORY_POUCH_SPACE
|
||||
can_hold = list(/obj/item/ammo_magazine, /obj/item/ammo_casing, /obj/item/weapon/cell/device/weapon)
|
||||
|
||||
/obj/item/weapon/storage/pouch/eng_tool
|
||||
name = "storage pouch (tools)"
|
||||
desc = "This storage pouch can be used to provide some additional storage for quick access. Can only hold tools."
|
||||
icon_state = "engineering_tool"
|
||||
max_storage_space = INVENTORY_POUCH_SPACE
|
||||
can_hold = list(
|
||||
/obj/item/weapon/tool,
|
||||
/obj/item/weapon/weldingtool,
|
||||
/obj/item/device/multitool,
|
||||
/obj/item/device/flashlight,
|
||||
/obj/item/device/t_scanner,
|
||||
/obj/item/device/analyzer,
|
||||
/obj/item/clothing/glasses,
|
||||
/obj/item/clothing/gloves,
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/pouch/eng_supply
|
||||
name = "storage pouch (supplies)"
|
||||
desc = "This storage pouch can be used to provide some additional storage for quick access. Can only hold engineering supplies."
|
||||
icon_state = "engineering_supply"
|
||||
max_storage_space = INVENTORY_POUCH_SPACE
|
||||
can_hold = list(
|
||||
/obj/item/weapon/cell/device,
|
||||
/obj/item/stack/cable_coil,
|
||||
/obj/item/taperoll,
|
||||
/obj/item/weapon/extinguisher/mini,
|
||||
/obj/item/weapon/tape_roll
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/pouch/eng_parts
|
||||
name = "storage pouch (parts)"
|
||||
desc = "This storage pouch can be used to provide some additional storage for quick access. Can only hold machinery components."
|
||||
icon_state = "part_pouch"
|
||||
max_storage_space = INVENTORY_POUCH_SPACE
|
||||
can_hold = list(
|
||||
/obj/item/weapon/stock_parts,
|
||||
/obj/item/stack/cable_coil,
|
||||
/obj/item/weapon/circuitboard
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/pouch/medical
|
||||
name = "storage pouch (medical)"
|
||||
desc = "This storage pouch can be used to provide some additional storage for quick access. Can only hold medical supplies."
|
||||
icon_state = "medical_supply"
|
||||
max_storage_space = INVENTORY_POUCH_SPACE
|
||||
can_hold = list(
|
||||
/obj/item/device/healthanalyzer,
|
||||
/obj/item/weapon/dnainjector,
|
||||
/obj/item/weapon/reagent_containers/dropper,
|
||||
/obj/item/weapon/reagent_containers/glass/beaker,
|
||||
/obj/item/weapon/reagent_containers/glass/bottle,
|
||||
/obj/item/weapon/reagent_containers/pill,
|
||||
/obj/item/weapon/reagent_containers/syringe,
|
||||
/obj/item/weapon/storage/quickdraw/syringe_case,
|
||||
/obj/item/weapon/storage/pill_bottle,
|
||||
/obj/item/stack/medical,
|
||||
/obj/item/weapon/reagent_containers/hypospray,
|
||||
/obj/item/weapon/storage/quickdraw/syringe_case
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/pouch/flares
|
||||
name = "storage pouch (flares)"
|
||||
desc = "This storage pouch can be used to provide some additional storage for quick access. Can only hold flares and glowsticks."
|
||||
icon_state = "flare"
|
||||
storage_slots = 5
|
||||
can_hold = list(/obj/item/device/flashlight/flare, /obj/item/device/flashlight/glowstick)
|
||||
/obj/item/weapon/storage/pouch/flares/full_flare
|
||||
starts_with = list(/obj/item/device/flashlight/flare = 5)
|
||||
/obj/item/weapon/storage/pouch/flares/full_glow
|
||||
starts_with = list(/obj/item/device/flashlight/glowstick = 5)
|
||||
|
||||
/obj/item/weapon/storage/pouch/flares/update_icon()
|
||||
cut_overlays()
|
||||
if(contents.len)
|
||||
add_overlay("flare_[contents.len]")
|
||||
..()
|
||||
|
||||
/obj/item/weapon/storage/pouch/holster
|
||||
name = "storage pouch (holster)"
|
||||
desc = "This storage pouch can be used to provide some additional storage for quick access. Can hold one normal sized weapon."
|
||||
icon_state = "pistol_holster"
|
||||
storage_slots = 1
|
||||
can_hold = list(/obj/item/weapon/gun)
|
||||
remove_delay = 0
|
||||
/obj/item/weapon/storage/pouch/holster/full_stunrevolver
|
||||
starts_with = list(/obj/item/weapon/gun/energy/stunrevolver)
|
||||
/obj/item/weapon/storage/pouch/holster/full_taser
|
||||
starts_with = list(/obj/item/weapon/gun/energy/taser)
|
||||
|
||||
/obj/item/weapon/storage/pouch/holster/update_icon()
|
||||
cut_overlays()
|
||||
if(contents.len)
|
||||
add_overlay("pistol_layer")
|
||||
..()
|
||||
|
||||
/obj/item/weapon/storage/pouch/baton
|
||||
name = "storage pouch (baton)"
|
||||
desc = "This storage pouch can be used to provide some additional storage for quick access. Can hold one standard baton."
|
||||
icon_state = "baton_holster"
|
||||
storage_slots = 1
|
||||
can_hold = list(/obj/item/weapon/melee/baton)
|
||||
remove_delay = 0
|
||||
/obj/item/weapon/storage/pouch/baton/full
|
||||
starts_with = list(/obj/item/weapon/melee/baton)
|
||||
|
||||
/obj/item/weapon/storage/pouch/baton/update_icon()
|
||||
cut_overlays()
|
||||
if(contents.len)
|
||||
add_overlay("baton_layer")
|
||||
..()
|
||||
|
||||
/obj/item/weapon/storage/pouch/holding
|
||||
name = "storage pouch of holding"
|
||||
desc = "This storage pouch can be used to provide some additional storage for quick access. Seems to use extradimensional storage!"
|
||||
icon_state = "holdingpouch"
|
||||
max_storage_space = INVENTORY_STANDARD_SPACE // Size of a normal backpack, compared to a normal BoH, which is way bigger
|
||||
|
||||
#undef INVENTORY_POUCH_SPACE
|
||||
@@ -49,6 +49,8 @@
|
||||
var/use_sound = "rustle" //sound played when used. null for no sound.
|
||||
var/list/starts_with //Things to spawn on the box on spawn
|
||||
var/empty //Mapper override to spawn an empty version of a container that usually has stuff
|
||||
/// If you can use this storage while in a pocket
|
||||
var/pocketable = FALSE
|
||||
|
||||
/obj/item/weapon/storage/Initialize()
|
||||
. = ..()
|
||||
@@ -101,6 +103,7 @@
|
||||
count--
|
||||
new newtype(src)
|
||||
starts_with = null //Reduce list count.
|
||||
update_icon()
|
||||
|
||||
calibrate_size()
|
||||
|
||||
@@ -473,6 +476,9 @@
|
||||
/obj/item/weapon/storage/proc/handle_item_insertion(obj/item/W as obj, prevent_warning = 0)
|
||||
if(!istype(W)) return 0
|
||||
|
||||
if(!stall_insertion(W, usr)) // Can sleep here and delay removal for slow storage
|
||||
return 0
|
||||
|
||||
if(usr)
|
||||
usr.remove_from_mob(W,target = src) //If given a target, handles forceMove()
|
||||
W.on_enter_storage(src)
|
||||
@@ -506,6 +512,9 @@
|
||||
/obj/item/weapon/storage/proc/remove_from_storage(obj/item/W as obj, atom/new_location)
|
||||
if(!istype(W)) return 0
|
||||
|
||||
if(!stall_removal(W, usr)) // Can sleep here and delay removal for slow storage
|
||||
return 0
|
||||
|
||||
if(istype(src, /obj/item/weapon/storage/fancy))
|
||||
var/obj/item/weapon/storage/fancy/F = src
|
||||
F.update_icon(1)
|
||||
@@ -534,6 +543,14 @@
|
||||
update_icon()
|
||||
return 1
|
||||
|
||||
/// Called before insertion completes, allowing you to delay or cancel it
|
||||
/obj/item/weapon/storage/proc/stall_insertion(obj/item/W, mob/user)
|
||||
return TRUE
|
||||
|
||||
/// Called before removal completes, allowing you to delay or cancel it
|
||||
/obj/item/weapon/storage/proc/stall_removal(obj/item/W, mob/user)
|
||||
return TRUE
|
||||
|
||||
//This proc is called when you want to place an item into the storage item.
|
||||
/obj/item/weapon/storage/attackby(obj/item/W as obj, mob/user as mob)
|
||||
..()
|
||||
@@ -579,7 +596,7 @@
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/attack_hand(mob/user as mob)
|
||||
if(ishuman(user))
|
||||
if(ishuman(user) && !pocketable)
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(H.l_store == src && !H.get_active_hand()) //Prevents opening if it's in a pocket.
|
||||
H.put_in_hands(src)
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
force = 15//quite robust
|
||||
attack_verb = list("smacked", "struck", "slapped")
|
||||
else
|
||||
user.visible_message("<span class='notice'>\The [user] collapses their telescopic baton.</span>",\
|
||||
user.visible_message("<b>\The [user]</b> collapses their telescopic baton.",\
|
||||
"<span class='notice'>You collapse the baton.</span>",\
|
||||
"You hear a click.")
|
||||
icon_state = "telebaton0"
|
||||
|
||||
@@ -508,7 +508,7 @@
|
||||
|
||||
if(mounted_pack.loc != src.loc && src.loc != mounted_pack)
|
||||
mounted_pack.return_nozzle()
|
||||
visible_message("<span class='notice'>\The [src] retracts to its fueltank.</span>")
|
||||
visible_message("<b>\The [src]</b> retracts to its fueltank.")
|
||||
|
||||
if(get_fuel() <= get_max_fuel())
|
||||
mounted_pack.reagents.trans_to_obj(src, 1)
|
||||
|
||||
Reference in New Issue
Block a user