mirror of
https://github.com/Yawn-Wider/YWPolarisVore.git
synced 2026-08-21 12:07:26 +01:00
Merge branch 'release' of https://github.com/VOREStation/VOREStation into izac
This commit is contained in:
@@ -0,0 +1,120 @@
|
||||
#define CENTER 1
|
||||
#define SIDE 2
|
||||
|
||||
/obj/item/weapon/picnic_blankets_carried
|
||||
name = "picnic blanket"
|
||||
desc = "A neatly folded picnic blanket!"
|
||||
var/unfolded_desc = "Separates your meal from the dirty floor. Or table."
|
||||
icon = 'icons/obj/picnic_vr.dmi'
|
||||
icon_state = "picnic_carried"
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
attack_verb = list("flicked", "whipped", "swooshed")
|
||||
force = 0.5
|
||||
hitsound = 'sound/weapons/towelwhip.ogg'
|
||||
drop_sound = 'sound/items/drop/cloth.ogg'
|
||||
pickup_sound = 'sound/items/pickup/cloth.ogg'
|
||||
|
||||
/obj/item/weapon/picnic_blankets_carried/verb/fold_out()
|
||||
set name = "Fold out"
|
||||
set desc = "Fold out the picnic blanket for use"
|
||||
set category = "Object"
|
||||
var/obj/structure/picnic_blanket_deployed/P = new /obj/structure/picnic_blanket_deployed(usr.loc)
|
||||
P.name = name
|
||||
P.desc = unfolded_desc
|
||||
P.unfold()
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/picnic_blanket_deployed
|
||||
name = "picnic blanket"
|
||||
desc = "Separates your meal from the dirty floor. Or table."
|
||||
var/folded_desc = "A neatly folded picnic blanket!"
|
||||
icon = 'icons/obj/picnic_vr.dmi'
|
||||
icon_state = "picnic_central"
|
||||
var/blanket_type = CENTER
|
||||
layer = HIDING_LAYER - 0.01 //Stuff shouldn't be able to hide under the blanket on the ground
|
||||
var/list/attached_blankets = list()
|
||||
|
||||
/obj/structure/picnic_blanket_deployed/verb/fold_up()
|
||||
set name = "Fold up"
|
||||
set desc = "Folds the blanket up for carrying"
|
||||
set category = "Object"
|
||||
set src in oview(1)
|
||||
|
||||
for(var/obj/structure/picnic_blanket_deployed/side in attached_blankets)
|
||||
qdel(side)
|
||||
var/obj/item/weapon/picnic_blankets_carried/P = new /obj/item/weapon/picnic_blankets_carried(usr.loc)
|
||||
P.name = name
|
||||
P.desc = folded_desc
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/picnic_blanket_deployed/proc/unfold()
|
||||
var/dirs = alldirs
|
||||
var/isTableTop //Controls whether to spawn things across tables, or on ground
|
||||
var/doWeHaveTable //Helper var set to true if ANY obj is a table
|
||||
var/anti_spam = FALSE //Helper var to avoid spamming people if they are mired in trash.
|
||||
for(var/obj/O in get_turf(src)) //Center element determines behaviour
|
||||
if(istype(O, /obj/structure/table))
|
||||
isTableTop = TRUE
|
||||
layer = TABLE_LAYER + 0.01 //We should be just a bit over tables!
|
||||
|
||||
populate_blankets:
|
||||
for(var/dir in dirs)
|
||||
var/turf/T = get_step(get_turf(src), dir)
|
||||
doWeHaveTable = FALSE //Resetting to False each loop
|
||||
if(T.density)
|
||||
continue
|
||||
if(LAZYLEN(T.contents) > 20) //Avoiding potential perf issues by not iterating over large piles of objs
|
||||
if(!anti_spam)
|
||||
to_chat(usr, SPAN_NOTICE("Too many items! Couldn't fully unfold the blanket!"))
|
||||
anti_spam = TRUE
|
||||
continue
|
||||
for(var/obj/O in T)
|
||||
if(O.density) //Cables & Atmos machinery dont bother us.
|
||||
if(isTableTop && istype(O, /obj/structure/table)) //We expand to the table if the center is a table
|
||||
doWeHaveTable = TRUE
|
||||
break
|
||||
else
|
||||
continue populate_blankets
|
||||
if(isTableTop && !doWeHaveTable) //However, if center is a table, we don't expand if we havn't found any.
|
||||
continue //If center is on table, we only allow the rest to appear on tables as well.
|
||||
|
||||
//Actually spawning
|
||||
var/obj/structure/picnic_blanket_deployed/side = new /obj/structure/picnic_blanket_deployed(T)
|
||||
side.verbs -= /obj/structure/picnic_blanket_deployed/verb/fold_up
|
||||
attached_blankets += side
|
||||
side.blanket_type = SIDE
|
||||
side.name = name //Making sure side blankets inherit our vars if they got edited at runtime
|
||||
side.desc = desc
|
||||
side.set_dir(dir)
|
||||
if(isTableTop)
|
||||
side.layer = TABLE_LAYER + 0.01 //We should be just above tables.
|
||||
side.update_icon()
|
||||
|
||||
/obj/structure/picnic_blanket_deployed/update_icon()
|
||||
if(blanket_type == SIDE)
|
||||
icon_state = "picnic_sides" //8 directional icon
|
||||
if(blanket_type == CENTER)
|
||||
icon_state = "picnic_central" //Adding in case anything might call update_icon on center one. Just to be safe
|
||||
. = ..()
|
||||
|
||||
/obj/structure/picnic_blanket_deployed/examine(mob/user)
|
||||
. = ..()
|
||||
if(blanket_type == CENTER)
|
||||
. += SPAN_NOTICE("This is the center of a folded out picnic blanket. You can use this to start packing it up!")
|
||||
if(blanket_type == SIDE)
|
||||
. += SPAN_NOTICE("This is one of the edges. Look for the center to start packing!")
|
||||
|
||||
//For Mapping use only.
|
||||
//If player folds it back up, it reverts to normal type so the Initialize() won't cause issues
|
||||
//Should be added last to any maps made, to ensure it initializes after all other relevant objs.
|
||||
//Set unfoldable to TRUE if want to prevent players from picking it up
|
||||
/obj/structure/picnic_blanket_deployed/for_mapping_use
|
||||
name = "RENAME ME"
|
||||
var/unfoldable = FALSE
|
||||
|
||||
|
||||
/obj/structure/picnic_blanket_deployed/for_mapping_use/Initialize()
|
||||
. = ..()
|
||||
unfold()
|
||||
if(unfoldable)
|
||||
verbs -= /obj/structure/picnic_blanket_deployed/verb/fold_up
|
||||
@@ -6,7 +6,7 @@
|
||||
item_state = "saddlebag"
|
||||
icon_state = "saddlebag"
|
||||
max_storage_space = INVENTORY_DUFFLEBAG_SPACE //Saddlebags can hold more, like dufflebags
|
||||
slowdown = 1 //And are slower, too...
|
||||
slowdown = 0.5 //And are slower, too...
|
||||
var/taurtype = /datum/sprite_accessory/tail/taur/horse //Acceptable taur type to be wearing this
|
||||
var/no_message = "You aren't the appropriate taur type to wear this!"
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
icon_state = "saddlebag"
|
||||
var/icon_base = "saddlebag"
|
||||
max_storage_space = INVENTORY_DUFFLEBAG_SPACE //Saddlebags can hold more, like dufflebags
|
||||
slowdown = 1 //And are slower, too...
|
||||
slowdown = 0.5 //And are slower, too...
|
||||
var/no_message = "You aren't the appropriate taur type to wear this!"
|
||||
|
||||
/obj/item/weapon/storage/backpack/saddlebag_common/mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
|
||||
|
||||
@@ -5,18 +5,26 @@
|
||||
* re-implemented in other classes.
|
||||
*
|
||||
* Contains:
|
||||
* Generic non-item
|
||||
* Trash Bag
|
||||
* Plastic Bag
|
||||
* Mining Satchel
|
||||
* Plant Bag
|
||||
* Sheet Snatcher
|
||||
* Sheet Snatcher (Cyborg)
|
||||
* Cash Bag
|
||||
* Chemistry Bag
|
||||
Food Bag
|
||||
|
||||
* Food Bag
|
||||
* Food Bag (Service Hound)
|
||||
* Evidence Bag
|
||||
*
|
||||
* -Sayu
|
||||
*/
|
||||
|
||||
// Generic non-item
|
||||
|
||||
// -----------------------------
|
||||
// Generic non-item
|
||||
// -----------------------------
|
||||
/obj/item/weapon/storage/bag
|
||||
allow_quick_gather = 1
|
||||
allow_quick_empty = 1
|
||||
@@ -67,7 +75,6 @@
|
||||
// -----------------------------
|
||||
// Plastic Bag
|
||||
// -----------------------------
|
||||
|
||||
/obj/item/weapon/storage/bag/plasticbag
|
||||
name = "plastic bag"
|
||||
desc = "It's a very flimsy, very noisy alternative to a bag."
|
||||
@@ -85,9 +92,9 @@
|
||||
// Mining Satchel
|
||||
// -----------------------------
|
||||
/*
|
||||
* Mechoid - Orebags are the most common quick-gathering thing, and also have tons of lag associated with it. Their checks are going to be hyper-simplified due to this, and their INCREDIBLY singular target contents.
|
||||
* Mechoid - Orebags are the most common quick-gathering thing, and also have tons of lag associated with it.
|
||||
* Their checks are going to be hyper-simplified due to this, and their INCREDIBLY singular target contents.
|
||||
*/
|
||||
|
||||
/obj/item/weapon/storage/bag/ore
|
||||
name = "mining satchel"
|
||||
desc = "This little bugger can be used to store and transport ores."
|
||||
@@ -239,25 +246,14 @@
|
||||
/obj/item/weapon/storage/bag/ore/open(mob/user as mob) //No opening it for the weird UI of having shit-tons of ore inside it.
|
||||
user.examinate(src)
|
||||
|
||||
/*
|
||||
/obj/item/weapon/storage/bag/ore/proc/update_ore_count() //Stolen from ore boxes. OLD way of storing ore.
|
||||
|
||||
stored_ore = list()
|
||||
|
||||
for(var/obj/item/weapon/ore/O in contents)
|
||||
if(stored_ore[O.name])
|
||||
stored_ore[O.name]++
|
||||
else
|
||||
stored_ore[O.name] = 1
|
||||
*/
|
||||
// -----------------------------
|
||||
// Plant bag
|
||||
// -----------------------------
|
||||
|
||||
/obj/item/weapon/storage/bag/plants
|
||||
name = "plant bag"
|
||||
icon = 'icons/obj/hydroponics_machines.dmi'
|
||||
icon = 'icons/obj/hydroponics_machines_vr.dmi'
|
||||
icon_state = "plantbag"
|
||||
desc = "A sturdy bag used to transport fresh produce with ease."
|
||||
max_storage_space = ITEMSIZE_COST_NORMAL * 25
|
||||
max_w_class = ITEMSIZE_NORMAL
|
||||
w_class = ITEMSIZE_SMALL
|
||||
@@ -265,8 +261,9 @@
|
||||
|
||||
/obj/item/weapon/storage/bag/plants/large
|
||||
name = "large plant bag"
|
||||
w_class = ITEMSIZE_SMALL
|
||||
max_storage_space = ITEMSIZE_COST_NORMAL * 45
|
||||
icon_state = "large_plantbag"
|
||||
desc = "A large and sturdy bag used to transport fresh produce with ease."
|
||||
max_storage_space = ITEMSIZE_COST_NORMAL * 50
|
||||
|
||||
// -----------------------------
|
||||
// Sheet Snatcher
|
||||
@@ -400,24 +397,9 @@
|
||||
|
||||
/obj/item/weapon/storage/bag/sheetsnatcher/borg
|
||||
name = "sheet snatcher 9000"
|
||||
desc = ""
|
||||
desc = null
|
||||
capacity = 500//Borgs get more because >specialization
|
||||
|
||||
// -----------------------------
|
||||
// Food Bag (Service Hound)
|
||||
// -----------------------------
|
||||
/obj/item/weapon/storage/bag/dogborg
|
||||
name = "dog bag"
|
||||
icon = 'icons/obj/storage.dmi'
|
||||
icon_state = "foodbag"
|
||||
desc = "A bag for storing things of all kinds."
|
||||
max_storage_space = ITEMSIZE_COST_NORMAL * 25
|
||||
max_w_class = ITEMSIZE_NORMAL
|
||||
w_class = ITEMSIZE_SMALL
|
||||
can_hold = list(/obj/item/weapon/reagent_containers/food/snacks,/obj/item/weapon/reagent_containers/food/condiment,
|
||||
/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/glass/bottle,/obj/item/weapon/coin,/obj/item/weapon/spacecash,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown,/obj/item/seeds,/obj/item/weapon/grown,/obj/item/weapon/reagent_containers/pill)
|
||||
|
||||
// -----------------------------
|
||||
// Cash Bag
|
||||
// -----------------------------
|
||||
@@ -432,12 +414,12 @@
|
||||
w_class = ITEMSIZE_SMALL
|
||||
can_hold = list(/obj/item/weapon/coin,/obj/item/weapon/spacecash,/obj/item/weapon/spacecasinocash)
|
||||
|
||||
// -----------------------------
|
||||
// Chemistry Bag
|
||||
// -----------------------------
|
||||
// -----------------------------
|
||||
// Chemistry Bag
|
||||
// -----------------------------
|
||||
/obj/item/weapon/storage/bag/chemistry
|
||||
name = "chemistry bag"
|
||||
icon = 'icons/obj/storage.dmi'
|
||||
icon = 'icons/obj/storage_vr.dmi'
|
||||
icon_state = "chembag"
|
||||
desc = "A bag for storing pills, patches, and bottles."
|
||||
max_storage_space = 200
|
||||
@@ -445,12 +427,38 @@
|
||||
slowdown = 3
|
||||
can_hold = list(/obj/item/weapon/reagent_containers/pill,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/glass/bottle)
|
||||
|
||||
// -----------------------------
|
||||
// Food Bag
|
||||
// -----------------------------
|
||||
// -----------------------------
|
||||
// Xeno Bag
|
||||
// -----------------------------
|
||||
/obj/item/weapon/storage/bag/xeno
|
||||
name = "xenobiology bag"
|
||||
icon = 'icons/obj/storage_vr.dmi'
|
||||
icon_state = "xenobag"
|
||||
desc = "A bag for storing various slime products."
|
||||
max_storage_space = ITEMSIZE_COST_SMALL * 12
|
||||
max_w_class = ITEMSIZE_NORMAL
|
||||
w_class = ITEMSIZE_SMALL
|
||||
can_hold = list(/obj/item/slime_extract,/obj/item/slimepotion, /obj/item/weapon/reagent_containers/food/snacks/monkeycube)
|
||||
|
||||
// -----------------------------
|
||||
// Virology Bag
|
||||
// -----------------------------
|
||||
/obj/item/weapon/storage/bag/virology
|
||||
name = "virology bag"
|
||||
icon = 'icons/obj/storage_vr.dmi'
|
||||
icon_state = "biobag"
|
||||
desc = "A bag for storing various biological products."
|
||||
max_storage_space = ITEMSIZE_COST_SMALL * 12
|
||||
max_w_class = ITEMSIZE_NORMAL
|
||||
w_class = ITEMSIZE_SMALL
|
||||
can_hold = list(/obj/item/weapon/reagent_containers/glass/beaker/vial/,/obj/item/weapon/virusdish/)
|
||||
|
||||
// -----------------------------
|
||||
// Food Bag
|
||||
// -----------------------------
|
||||
/obj/item/weapon/storage/bag/food
|
||||
name = "food bag"
|
||||
icon = 'icons/obj/storage.dmi'
|
||||
icon = 'icons/obj/storage_vr.dmi'
|
||||
icon_state = "foodbag"
|
||||
desc = "A bag for storing foods of all kinds."
|
||||
max_storage_space = ITEMSIZE_COST_NORMAL * 25
|
||||
@@ -458,16 +466,30 @@
|
||||
w_class = ITEMSIZE_SMALL
|
||||
can_hold = list(/obj/item/weapon/reagent_containers/food/snacks,/obj/item/weapon/reagent_containers/food/condiment)
|
||||
|
||||
// -----------------------------
|
||||
// Evidence Bag
|
||||
// -----------------------------
|
||||
// -----------------------------
|
||||
// Food Bag (Service Hound)
|
||||
// -----------------------------
|
||||
/obj/item/weapon/storage/bag/dogborg
|
||||
name = "dog bag"
|
||||
icon = 'icons/obj/storage_vr.dmi'
|
||||
icon_state = "foodbag"
|
||||
desc = "An intergrated bag for storing things of all kinds."
|
||||
max_storage_space = ITEMSIZE_COST_NORMAL * 25
|
||||
max_w_class = ITEMSIZE_NORMAL
|
||||
w_class = ITEMSIZE_SMALL
|
||||
can_hold = list(/obj/item/weapon/reagent_containers/food/snacks,/obj/item/weapon/reagent_containers/food/condiment,
|
||||
/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/glass/bottle,/obj/item/weapon/coin,/obj/item/weapon/spacecash,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown,/obj/item/seeds,/obj/item/weapon/grown,/obj/item/weapon/reagent_containers/pill)
|
||||
|
||||
// -----------------------------
|
||||
// Evidence Bag
|
||||
// -----------------------------
|
||||
/obj/item/weapon/storage/bag/detective
|
||||
name = "secure satchel"
|
||||
icon = 'icons/obj/storage.dmi'
|
||||
icon = 'icons/obj/storage_vr.dmi'
|
||||
icon_state = "detbag"
|
||||
desc = "A bag for storing investigation things. You know, securely."
|
||||
max_storage_space = ITEMSIZE_COST_NORMAL * 15
|
||||
max_w_class = ITEMSIZE_NORMAL
|
||||
w_class = ITEMSIZE_SMALL
|
||||
can_hold = list(/obj/item/weapon/forensics/swab,/obj/item/weapon/sample/print,/obj/item/weapon/sample/fibers,/obj/item/weapon/evidencebag)
|
||||
|
||||
can_hold = list(/obj/item/weapon/forensics/swab,/obj/item/weapon/sample/print,/obj/item/weapon/sample/fibers,/obj/item/weapon/evidencebag)
|
||||
@@ -1,15 +1,2 @@
|
||||
/obj/item/weapon/storage/bag/chemistry
|
||||
slot_flags = null
|
||||
|
||||
/obj/item/weapon/storage/bag/xeno
|
||||
name = "xenobiology bag"
|
||||
icon = 'icons/obj/storage.dmi'
|
||||
icon_state = "chembag"
|
||||
max_storage_space = ITEMSIZE_COST_SMALL * 12
|
||||
max_w_class = ITEMSIZE_NORMAL
|
||||
w_class = ITEMSIZE_SMALL
|
||||
can_hold = list(
|
||||
/obj/item/slime_extract,
|
||||
/obj/item/slimepotion,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/monkeycube
|
||||
)
|
||||
@@ -151,4 +151,27 @@
|
||||
/obj/item/weapon/storage/excavation,
|
||||
/obj/item/weapon/anobattery,
|
||||
/obj/item/weapon/pickaxe
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/belt/hydro
|
||||
name = "hydroponics belt"
|
||||
desc = "A belt used to hold most hydroponics supplies. Suprisingly, not green."
|
||||
icon = 'icons/inventory/belt/item_vr.dmi'
|
||||
icon_state = "plantbelt"
|
||||
item_state = "plantbelt"
|
||||
storage_slots = 5
|
||||
max_w_class = ITEMSIZE_LARGE
|
||||
max_storage_space = ITEMSIZE_COST_NORMAL * 5
|
||||
can_hold = list(
|
||||
/obj/item/device/analyzer/plant_analyzer,
|
||||
/obj/item/weapon/reagent_containers/glass/beaker,
|
||||
/obj/item/weapon/reagent_containers/glass/bottle,
|
||||
/obj/item/weapon/shovel/spade,
|
||||
/obj/item/weapon/tool/wirecutters,
|
||||
/obj/item/weapon/material/minihoe,
|
||||
/obj/item/weapon/material/knife/machete/hatchet,
|
||||
/obj/item/weapon/reagent_containers/spray/plantbgone,
|
||||
/obj/item/weapon/plantspray,
|
||||
/obj/item/weapon/gun/energy/floragun,
|
||||
/obj/item/seeds
|
||||
)
|
||||
@@ -79,6 +79,8 @@
|
||||
/obj/item/weapon/storage/fancy/egg_box/open(mob/user as mob)
|
||||
if(open)
|
||||
return
|
||||
if (isobserver(usr))
|
||||
return
|
||||
open = TRUE
|
||||
update_icon()
|
||||
..()
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
var/hitcost = 240
|
||||
var/use_external_power = FALSE //only used to determine if it's a cyborg baton
|
||||
var/grip_safety = TRUE
|
||||
var/taped_safety = FALSE
|
||||
|
||||
/obj/item/weapon/melee/baton/New()
|
||||
..()
|
||||
@@ -100,7 +101,7 @@
|
||||
|
||||
/obj/item/weapon/melee/baton/dropped()
|
||||
..()
|
||||
if(status && grip_safety)
|
||||
if(status && grip_safety && !taped_safety)
|
||||
status = 0
|
||||
visible_message("<span class='warning'>\The [src]'s grip safety engages!</span>")
|
||||
update_icon()
|
||||
@@ -109,6 +110,8 @@
|
||||
. = ..()
|
||||
|
||||
if(Adjacent(user))
|
||||
if(taped_safety)
|
||||
. += "<span class='warning'>Someone has wrapped tape around the grip!</span>"
|
||||
if(bcell)
|
||||
. += "<span class='notice'>The baton is [round(bcell.percent())]% charged.</span>"
|
||||
if(!bcell)
|
||||
@@ -129,6 +132,17 @@
|
||||
to_chat(user, "<span class='notice'>[src] already has a cell.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>This cell is not fitted for [src].</span>")
|
||||
if(istype(W, /obj/item/weapon/tape_roll) || istype(W, /obj/item/taperoll))
|
||||
if(grip_safety && !taped_safety) //no point letting people wrap tape around the grips of batons without a safety
|
||||
to_chat(user, "<span class='notice'>You firmly wrap tape around the baton's grip, disabling the safety system.</span>")
|
||||
playsound(src, 'sound/effects/tape.ogg',25)
|
||||
taped_safety = TRUE
|
||||
else if(grip_safety && taped_safety)
|
||||
to_chat(user, "<span class='notice'>The grip safety has already been taped down.</span>")
|
||||
if(istype(W, /obj/item/weapon/tool/screwdriver))
|
||||
if(taped_safety)
|
||||
to_chat(user, "<span class='notice'>You painstakingly scrape away the tape over the grip safety.</span>")
|
||||
taped_safety = FALSE
|
||||
|
||||
/obj/item/weapon/melee/baton/attack_hand(mob/user as mob)
|
||||
if(user.get_inactive_hand() == src)
|
||||
|
||||
@@ -1,18 +1,22 @@
|
||||
/* Surgery Tools
|
||||
* Contains:
|
||||
* Bio-Regenerator
|
||||
* Retractor
|
||||
* Hemostat
|
||||
* Cautery
|
||||
* Surgical Drill
|
||||
* Scalpel
|
||||
* Circular Saw
|
||||
* Bio-Regenerator
|
||||
* Researchable Scalpels
|
||||
* Circular Saws
|
||||
* Misc Tools
|
||||
* Cyborg Tools
|
||||
* Alien Tools
|
||||
*/
|
||||
|
||||
/obj/item/weapon/surgical
|
||||
name = "Surgical tool"
|
||||
desc = "This shouldn't be here, ahelp it."
|
||||
icon = 'icons/obj/surgery.dmi'
|
||||
icon = 'icons/obj/surgery_vr.dmi'
|
||||
w_class = ITEMSIZE_SMALL
|
||||
drop_sound = 'sound/items/drop/weldingtool.ogg'
|
||||
pickup_sound = 'sound/items/pickup/weldingtool.ogg'
|
||||
@@ -29,7 +33,6 @@
|
||||
/obj/item/weapon/surgical/bioregen
|
||||
name="bioregenerator"
|
||||
desc="A special tool used in surgeries which can pull toxins from and restore oxygen to organic tissue as well as recreate missing biological structures to allow otherwise irreperable flesh to be mended."
|
||||
icon='icons/obj/surgery_vr.dmi'
|
||||
icon_state="bioregen"
|
||||
drop_sound = 'sound/items/drop/scrap.ogg'
|
||||
|
||||
@@ -110,27 +113,27 @@
|
||||
/obj/item/weapon/surgical/scalpel/laser1
|
||||
name = "laser scalpel"
|
||||
desc = "A scalpel augmented with a directed laser, for more precise cutting without blood entering the field. This one looks basic and could be improved."
|
||||
icon_state = "scalpel_laser1_on"
|
||||
icon_state = "scalpel_laser1"
|
||||
damtype = "fire"
|
||||
|
||||
/obj/item/weapon/surgical/scalpel/laser2
|
||||
name = "laser scalpel"
|
||||
desc = "A scalpel augmented with a directed laser, for more precise cutting without blood entering the field. This one looks somewhat advanced."
|
||||
icon_state = "scalpel_laser2_on"
|
||||
icon_state = "scalpel_laser2"
|
||||
damtype = "fire"
|
||||
force = 12.0
|
||||
|
||||
/obj/item/weapon/surgical/scalpel/laser3
|
||||
name = "laser scalpel"
|
||||
desc = "A scalpel augmented with a directed laser, for more precise cutting without blood entering the field. This one looks to be the pinnacle of precision energy cutlery!"
|
||||
icon_state = "scalpel_laser3_on"
|
||||
icon_state = "scalpel_laser3"
|
||||
damtype = "fire"
|
||||
force = 15.0
|
||||
|
||||
/obj/item/weapon/surgical/scalpel/manager
|
||||
name = "incision management system"
|
||||
desc = "A true extension of the surgeon's body, this marvel instantly and completely prepares an incision allowing for the immediate commencement of therapeutic steps."
|
||||
icon_state = "scalpel_manager_on"
|
||||
icon_state = "scalpel_manager"
|
||||
force = 7.5
|
||||
|
||||
/obj/item/weapon/surgical/scalpel/ripper
|
||||
@@ -143,12 +146,12 @@
|
||||
origin_tech = list(TECH_MATERIAL = 5, TECH_BIO = 3, TECH_ILLEGAL = 2)
|
||||
|
||||
/*
|
||||
* Circular Saw
|
||||
* Circular Saws
|
||||
*/
|
||||
/obj/item/weapon/surgical/circular_saw
|
||||
name = "circular saw"
|
||||
desc = "For heavy duty cutting."
|
||||
icon_state = "saw3"
|
||||
icon_state = "saw"
|
||||
hitsound = 'sound/weapons/circsawhit.ogg'
|
||||
drop_sound = 'sound/items/drop/accessory.ogg'
|
||||
force = 15.0
|
||||
@@ -169,13 +172,15 @@
|
||||
item_state = "saw3"
|
||||
hitsound = 'sound/weapons/emitter2.ogg'
|
||||
damtype = SEARING
|
||||
w_class = ITEMSIZE_LARGE
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
origin_tech = list(TECH_BIO = 4, TECH_MATERIAL = 6, TECH_MAGNET = 6)
|
||||
matter = list(MAT_STEEL = 12500)
|
||||
matter = list(MAT_STEEL = 25000,MAT_GLASS = 20000)
|
||||
attack_verb = list("attacked", "slashed", "seared", "cut")
|
||||
toolspeed = 0.75
|
||||
|
||||
//misc, formerly from code/defines/weapons.dm
|
||||
/*
|
||||
* Misc Tools
|
||||
*/
|
||||
/obj/item/weapon/surgical/bonegel
|
||||
name = "bone gel"
|
||||
desc = "For fixing bones."
|
||||
@@ -192,7 +197,7 @@
|
||||
throwforce = 1.0
|
||||
origin_tech = list(TECH_MATERIAL = 1, TECH_BIO = 3)
|
||||
var/usage_amount = 10
|
||||
drop_sound = 'sound/items/drop/accessory.ogg'
|
||||
drop_sound = 'sound/items/drop/bottle.ogg'
|
||||
|
||||
/obj/item/weapon/surgical/bonesetter
|
||||
name = "bone setter"
|
||||
@@ -215,24 +220,31 @@
|
||||
throw_range = 5
|
||||
attack_verb = list("attacked", "hit", "bludgeoned")
|
||||
|
||||
// Cyborg Tools
|
||||
|
||||
/*
|
||||
* Cyborg Tools
|
||||
*/
|
||||
/obj/item/weapon/surgical/retractor/cyborg
|
||||
icon_state = "cyborg_retractor"
|
||||
toolspeed = 0.5
|
||||
|
||||
/obj/item/weapon/surgical/hemostat/cyborg
|
||||
icon_state = "cyborg_hemostat"
|
||||
toolspeed = 0.5
|
||||
|
||||
/obj/item/weapon/surgical/cautery/cyborg
|
||||
icon_state = "cyborg_cautery"
|
||||
toolspeed = 0.5
|
||||
|
||||
/obj/item/weapon/surgical/surgicaldrill/cyborg
|
||||
icon_state = "cyborg_drill"
|
||||
toolspeed = 0.5
|
||||
|
||||
/obj/item/weapon/surgical/scalpel/cyborg
|
||||
icon_state = "cyborg_scalpel"
|
||||
toolspeed = 0.5
|
||||
|
||||
/obj/item/weapon/surgical/circular_saw/cyborg
|
||||
icon_state = "cyborg_saw"
|
||||
toolspeed = 0.5
|
||||
|
||||
/obj/item/weapon/surgical/bonegel/cyborg
|
||||
@@ -242,13 +254,16 @@
|
||||
toolspeed = 0.5
|
||||
|
||||
/obj/item/weapon/surgical/bonesetter/cyborg
|
||||
icon_state = "cyborg_setter"
|
||||
toolspeed = 0.5
|
||||
|
||||
/obj/item/weapon/surgical/bioregen/cyborg //VoreStation edit: let the borgs S U C C
|
||||
icon_state = "cyborg_bioregen"
|
||||
toolspeed = 0.5
|
||||
|
||||
|
||||
// Alien Tools
|
||||
/*
|
||||
* Alien Tools
|
||||
*/
|
||||
/obj/item/weapon/surgical/retractor/alien
|
||||
icon = 'icons/obj/abductor.dmi'
|
||||
toolspeed = 0.25
|
||||
|
||||
@@ -104,6 +104,16 @@
|
||||
. = ..()
|
||||
air_contents.adjust_gas("oxygen", (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C))
|
||||
|
||||
/obj/item/weapon/tank/jetpack/breaker
|
||||
name = "CSC industrial jetpack"
|
||||
desc = "A JetFast EVA thruster pack. A warning label clearly states \'WARNING: CONTAINS VOLATILE REACTION MASS TOXIC TO MOST LIFEFORMS. NOT TO BE USED WITH CLOSED CYCLE BREATHING SYSTEMS.\'"
|
||||
icon_state = "jetpack-breaker"
|
||||
item_state_slots = list(slot_r_hand_str = "jetpack", slot_l_hand_str = "jetpack")
|
||||
|
||||
/obj/item/weapon/tank/jetpack/breaker/Initialize()
|
||||
. = ..()
|
||||
air_contents.adjust_gas("volatile_fuel", (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C))
|
||||
|
||||
/obj/item/weapon/tank/jetpack/carbondioxide
|
||||
name = "jetpack (carbon dioxide)"
|
||||
desc = "A tank of compressed carbon dioxide for use as propulsion in zero-gravity areas. Painted black to indicate that it should not be used as a source for internals."
|
||||
|
||||
Reference in New Issue
Block a user