From bfd97b4100e356104912e9af111e95e2aa9db9b2 Mon Sep 17 00:00:00 2001 From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com> Date: Mon, 28 Mar 2022 14:30:39 -0400 Subject: [PATCH 01/14] Initial Commit Setting the stage for xenobio guns --- code/modules/xenobio/items/weapons_vr.dm | 44 ++++++++++++++++++++++++ vorestation.dme | 3 +- 2 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 code/modules/xenobio/items/weapons_vr.dm diff --git a/code/modules/xenobio/items/weapons_vr.dm b/code/modules/xenobio/items/weapons_vr.dm new file mode 100644 index 0000000000..1271d641c8 --- /dev/null +++ b/code/modules/xenobio/items/weapons_vr.dm @@ -0,0 +1,44 @@ +/obj/item/weapon/gun/energy/xenobio + name = "xenobio gun" + desc = "You shouldn't see this!" + icon_state = "taserblue" + fire_sound = 'sound/weapons/taser2.ogg' + charge_cost = 120 // Twice as many shots. + projectile_type = /obj/item/projectile/beam/stun/xeno // Place holder for now + accuracy = 30 // Just use the same hit rate as xenotasers + var/loadable_item = null + var/loaded_item = null + +/obj/item/weapon/gun/energy/xenobio/examine(var/mob/user) + . = ..() + if(loaded_item) + .+= "A [loaded_item] is slotted into the side." + else + .+= "There appears to be an empty slot for attaching a [loadable_item]." + +/obj/item/weapon/gun/energy/xenobio/attackby(obj/item/I as obj, mob/user as mob) + if(istype(I, loadable_item)) + if(loaded_item) + to_chat(user, "[I] doesn't seem to fit into [src].") + return + //var/obj/item/weapon/reagent_containers/glass/beaker/B = I + user.drop_item() + I.loc = src + loaded_item = I + to_chat(user, "You slot [B] into [src].") + return 1 + ..() +/obj/item/weapon/gun/energy/xenobio/monkey_gun + name = "Bluespace Cube Rehydrater" + desc = "This advanced weapon will rehydrate and deploy a loaded cube at your target position." + loadable_item = /obj/item/weapon/reagent_containers/food/snacks/monkeycube + +/obj/item/weapon/gun/energy/xenobio/potion_gun + name = "Ranged Potion Delivery Device" + desc = "This device is designed to deliver a potion to your target at range, it has a slot to attach a xenobio potion. + loadable_item = /obj/item/slimepotion + +/obj/item/weapon/gun/energy/xenobio/extract_gun + name = "Ranged Extract Interaction Device" + desc = "This is the latest in extract interaction technology! No longer shall you stand in harms way when activating a gold slime." + loadable_item = /obj/item/slime_extract \ No newline at end of file diff --git a/vorestation.dme b/vorestation.dme index ca6633e66b..08c9871c56 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -4056,6 +4056,7 @@ #include "code\modules\xenobio\items\slimepotions.dm" #include "code\modules\xenobio\items\slimepotions_vr.dm" #include "code\modules\xenobio\items\weapons.dm" +#include "code\modules\xenobio\items\weapons_vr.dm" #include "code\modules\xenobio\machinery\processor.dm" #include "code\modules\xgm\xgm_gas_data.dm" #include "code\modules\xgm\xgm_gas_mixture.dm" @@ -4103,7 +4104,6 @@ #include "maps\southern_cross\loadout\loadout_suit.dm" #include "maps\southern_cross\loadout\loadout_uniform.dm" #include "maps\southern_cross\loadout\loadout_vr.dm" -#include "maps\stellardelight\stellar_delight.dm" #include "maps\submaps\_helpers.dm" #include "maps\submaps\_readme.dm" #include "maps\submaps\engine_submaps\engine.dm" @@ -4113,5 +4113,6 @@ #include "maps\submaps\space_submaps\debrisfield\debrisfield.dm" #include "maps\submaps\surface_submaps\wilderness\wilderness.dm" #include "maps\submaps\surface_submaps\wilderness\wilderness_areas.dm" +#include "maps\virgo_minitest\virgo_minitest.dm" #include "maps\~map_system\maps.dm" // END_INCLUDE From 7291d4d721fc5ffc4b43ab40f1c4cd45ddcfd8b1 Mon Sep 17 00:00:00 2001 From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com> Date: Wed, 30 Mar 2022 12:34:57 -0400 Subject: [PATCH 02/14] Update weapons_vr.dm --- code/modules/xenobio/items/weapons_vr.dm | 167 ++++++++++++++++++++++- 1 file changed, 160 insertions(+), 7 deletions(-) diff --git a/code/modules/xenobio/items/weapons_vr.dm b/code/modules/xenobio/items/weapons_vr.dm index 1271d641c8..e9125ec844 100644 --- a/code/modules/xenobio/items/weapons_vr.dm +++ b/code/modules/xenobio/items/weapons_vr.dm @@ -1,20 +1,21 @@ /obj/item/weapon/gun/energy/xenobio name = "xenobio gun" desc = "You shouldn't see this!" - icon_state = "taserblue" + icon = 'icons/obj/gun_vr.dmi' + icon_state = "harpoon-2" fire_sound = 'sound/weapons/taser2.ogg' charge_cost = 120 // Twice as many shots. projectile_type = /obj/item/projectile/beam/stun/xeno // Place holder for now accuracy = 30 // Just use the same hit rate as xenotasers var/loadable_item = null var/loaded_item = null - + var/loadable_name = null /obj/item/weapon/gun/energy/xenobio/examine(var/mob/user) . = ..() if(loaded_item) .+= "A [loaded_item] is slotted into the side." else - .+= "There appears to be an empty slot for attaching a [loadable_item]." + .+= "There appears to be an empty slot for attaching a [loadable_name]." /obj/item/weapon/gun/energy/xenobio/attackby(obj/item/I as obj, mob/user as mob) if(istype(I, loadable_item)) @@ -25,20 +26,172 @@ user.drop_item() I.loc = src loaded_item = I - to_chat(user, "You slot [B] into [src].") + to_chat(user, "You slot [I] into [src].") return 1 ..() + +/obj/item/weapon/gun/energy/xenobio/attack_self(mob/living/user as mob) + if(loaded_item) + user.put_in_hands(loaded_item) + user.visible_message("[user] removes [loaded_item] from [src].", "You remove [loaded_item] from [src].") + loaded_item = null + playsound(src, 'sound/weapons/empty.ogg', 50, 1) + +/obj/item/weapon/gun/energy/xenobio/afterattack(atom/A, mob/user as mob) + if(!loaded_item) + to_chat(user,"\The [src] shot fizzles, it appears you need to load something!") + playsound(src, 'sound/weapons/wave.ogg', 60, 1) + return + + playsound(src, 'sound/weapons/wave.ogg', 60, 1) + + user.visible_message("[user] fires \the [src]!","You fire \the [src]!") + + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(4, 1, A) + s.start() + s = new /datum/effect/effect/system/spark_spread + s.set_up(4, 1, user) + s.start() + /obj/item/weapon/gun/energy/xenobio/monkey_gun name = "Bluespace Cube Rehydrater" desc = "This advanced weapon will rehydrate and deploy a loaded cube at your target position." loadable_item = /obj/item/weapon/reagent_containers/food/snacks/monkeycube - + loadable_name = "Monkey Cube" /obj/item/weapon/gun/energy/xenobio/potion_gun name = "Ranged Potion Delivery Device" - desc = "This device is designed to deliver a potion to your target at range, it has a slot to attach a xenobio potion. + desc = "This device is designed to deliver a potion to your target at range, it has a slot to attach a xenobio potion." loadable_item = /obj/item/slimepotion + loadable_name = "Slime Potion" +///obj/item/weapon/gun/energy/xenobio/potion_gun/afterattack(atom/A, mob/user as mob) +// if(isslime(A)) + //loaded_item.attack(A, user) + + +/*/obj/item/weapon/xenobio + name = "bluespace harpoon" + desc = "For climbing on bluespace mountains!" + + icon = 'icons/obj/gun_vr.dmi' + icon_state = "harpoon-2" + + w_class = ITEMSIZE_NORMAL +*/ +/obj/item/weapon/xenobio/slime_grinder + name = "portable slime processor" + desc = "An industrial grinder used to automate the process of slime core extraction. It can also recycle biomatter. This one appears miniturized" + icon = 'icons/obj/kitchen.dmi' + icon_state = "processor1" + var/processing = FALSE // So I heard you like processing. + var/list/to_be_processed = list() + var/monkeys_recycled = 0 + description_info = "Clickdrag dead slimes or monkeys to it to insert them. It will make a new monkey cube for every four monkeys it processes." + +/obj/machinery/processor/attack_hand(mob/living/user) + if(processing) + to_chat(user, "The processor is in the process of processing!") + return + if(to_be_processed.len) + spawn(1) + begin_processing() + else + to_chat(user, "The processor is empty.") + playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 1) + return + +// Verb to remove everything. +/obj/item/weapon/xenobio/slime_grinder/verb/eject() + set category = "Object" + set name = "Eject Processor" + set src in oview(1) + + if(usr.stat || !usr.canmove || usr.restrained()) + return + empty() + add_fingerprint(usr) + return + +// Ejects all the things out of the machine. +/obj/item/weapon/xenobio/slime_grinder/proc/empty() + for(var/atom/movable/AM in to_be_processed) + to_be_processed.Remove(AM) + AM.forceMove(get_turf(src)) + +// Ejects all the things out of the machine. +/obj/item/weapon/xenobio/slime_grinder/proc/insert(var/atom/movable/AM, var/mob/living/user) + if(!Adjacent(AM)) + return + if(!can_insert(AM)) + to_chat(user, "\The [src] cannot process \the [AM] at this time.") + playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 1) + return + to_be_processed.Add(AM) + AM.forceMove(src) + visible_message("\The [user] places [AM] inside \the [src].") + +/obj/item/weapon/xenobio/slime_grinder/proc/begin_processing() + if(processing) + return // Already doing it. + processing = TRUE + playsound(src, 'sound/machines/juicer.ogg', 50, 1) + for(var/atom/movable/AM in to_be_processed) + extract(AM) + sleep(1 SECONDS) + + while(monkeys_recycled >= 4) + new /obj/item/weapon/reagent_containers/food/snacks/monkeycube(get_turf(src)) + playsound(src, 'sound/effects/splat.ogg', 50, 1) + monkeys_recycled -= 4 + sleep(1 SECOND) + + processing = FALSE + playsound(src, 'sound/machines/ding.ogg', 50, 1) + +/obj/item/weapon/xenobio/slime_grinder/proc/extract(var/atom/movable/AM) + if(istype(AM, /mob/living/simple_mob/slime)) + var/mob/living/simple_mob/slime/S = AM + while(S.cores) + new S.coretype(get_turf(src)) + playsound(src, 'sound/effects/splat.ogg', 50, 1) + S.cores-- + sleep(1 SECOND) + to_be_processed.Remove(S) + qdel(S) + + if(istype(AM, /mob/living/carbon/human)) + var/mob/living/carbon/human/M = AM + playsound(src, 'sound/effects/splat.ogg', 50, 1) + to_be_processed.Remove(M) + qdel(M) + monkeys_recycled++ + sleep(1 SECOND) + +/obj/item/weapon/xenobio/slime_grinder/proc/can_insert(var/atom/movable/AM) + if(istype(AM, /mob/living/simple_mob/slime)) + var/mob/living/simple_mob/slime/S = AM + if(S.stat != DEAD) + return FALSE + return TRUE + if(istype(AM, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = AM + if(!istype(H.species, /datum/species/monkey)) + return FALSE + if(H.stat != DEAD) + return FALSE + return TRUE + return FALSE + +/obj/item/weapon/xenobio/slime_grinder/attack(mob/M as mob, mob/living/user as mob) + if(user.stat || user.incapacitated(INCAPACITATION_DISABLED) || !istype(user)) + return + insert(M, user) + return ..() + +/* Cut for balance :) /obj/item/weapon/gun/energy/xenobio/extract_gun name = "Ranged Extract Interaction Device" desc = "This is the latest in extract interaction technology! No longer shall you stand in harms way when activating a gold slime." - loadable_item = /obj/item/slime_extract \ No newline at end of file + loadable_item = /obj/item/slime_extract +*/ \ No newline at end of file From 2d243de4e170d188276b442c99dc15f7b44d43e5 Mon Sep 17 00:00:00 2001 From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com> Date: Thu, 31 Mar 2022 15:08:07 -0400 Subject: [PATCH 03/14] Update dartgun_vr.dm --- code/modules/projectiles/guns/projectile/dartgun_vr.dm | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/code/modules/projectiles/guns/projectile/dartgun_vr.dm b/code/modules/projectiles/guns/projectile/dartgun_vr.dm index dda197ccc6..a802c17327 100644 --- a/code/modules/projectiles/guns/projectile/dartgun_vr.dm +++ b/code/modules/projectiles/guns/projectile/dartgun_vr.dm @@ -27,3 +27,10 @@ else icon_state = "tranqgun" return 1 + +// This is to allow xenobio to activate slime cores via remote. +/obj/item/projectile/bullet/chemdart/on_hit(var/atom/target, var/blocked = 0, var/def_zone = null) + ..() + if(blocked < 2) + if(istype(target, /obj/item/weapon/reagent_containers/food) || istype(target, /obj/item/slime_extract)) + reagents.trans_to_obj(target, reagent_amount) \ No newline at end of file From a43746367f4dec0577f2b5047018fde17d2aa86c Mon Sep 17 00:00:00 2001 From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com> Date: Thu, 31 Mar 2022 16:38:52 -0400 Subject: [PATCH 04/14] Cleanup, make the monkey gun work --- code/modules/xenobio/items/weapons_vr.dm | 78 +++++++++++++++--------- 1 file changed, 48 insertions(+), 30 deletions(-) diff --git a/code/modules/xenobio/items/weapons_vr.dm b/code/modules/xenobio/items/weapons_vr.dm index e9125ec844..714fcbebf0 100644 --- a/code/modules/xenobio/items/weapons_vr.dm +++ b/code/modules/xenobio/items/weapons_vr.dm @@ -1,23 +1,32 @@ -/obj/item/weapon/gun/energy/xenobio +/obj/item/weapon/xenobio name = "xenobio gun" desc = "You shouldn't see this!" icon = 'icons/obj/gun_vr.dmi' icon_state = "harpoon-2" - fire_sound = 'sound/weapons/taser2.ogg' - charge_cost = 120 // Twice as many shots. - projectile_type = /obj/item/projectile/beam/stun/xeno // Place holder for now - accuracy = 30 // Just use the same hit rate as xenotasers + //fire_sound = 'sound/weapons/taser2.ogg' + //charge_cost = 120 // Twice as many shots. + //projectile_type = /obj/item/projectile/beam/xenobio // Place holder for now + //accuracy = 30 // Just use the same hit rate as xenotasers var/loadable_item = null var/loaded_item = null var/loadable_name = null -/obj/item/weapon/gun/energy/xenobio/examine(var/mob/user) +/obj/item/weapon/xenobio/examine(var/mob/user) . = ..() if(loaded_item) .+= "A [loaded_item] is slotted into the side." else .+= "There appears to be an empty slot for attaching a [loadable_name]." -/obj/item/weapon/gun/energy/xenobio/attackby(obj/item/I as obj, mob/user as mob) +/obj/item/weapon/xenobio/attack_hand(mob/user as mob) + if(user.get_inactive_hand() == src && loaded_item) + user.put_in_hands(loaded_item) + user.visible_message("[user] removes [loaded_item] from [src].", "You remove [loaded_item] from [src].") + loaded_item = null + playsound(src, 'sound/weapons/empty.ogg', 50, 1) + else + return ..() + +/obj/item/weapon/xenobio/attackby(obj/item/I as obj, mob/user as mob) if(istype(I, loadable_item)) if(loaded_item) to_chat(user, "[I] doesn't seem to fit into [src].") @@ -26,21 +35,23 @@ user.drop_item() I.loc = src loaded_item = I - to_chat(user, "You slot [I] into [src].") + //to_chat(user, "You slot [I] into [src].") + user.visible_message("[user] inserts [I] into [src].", "You slot [I] into [src].") return 1 ..() -/obj/item/weapon/gun/energy/xenobio/attack_self(mob/living/user as mob) +/obj/item/weapon/xenobio/attack_self(mob/living/user as mob) if(loaded_item) user.put_in_hands(loaded_item) user.visible_message("[user] removes [loaded_item] from [src].", "You remove [loaded_item] from [src].") loaded_item = null playsound(src, 'sound/weapons/empty.ogg', 50, 1) -/obj/item/weapon/gun/energy/xenobio/afterattack(atom/A, mob/user as mob) +/obj/item/weapon/xenobio/afterattack(atom/A, mob/user as mob) if(!loaded_item) to_chat(user,"\The [src] shot fizzles, it appears you need to load something!") - playsound(src, 'sound/weapons/wave.ogg', 60, 1) + //playsound(src, 'sound/weapons/wave.ogg', 60, 1) + playsound(src, 'sound/weapons/empty.ogg', 50, 1) return playsound(src, 'sound/weapons/wave.ogg', 60, 1) @@ -54,31 +65,38 @@ s.set_up(4, 1, user) s.start() -/obj/item/weapon/gun/energy/xenobio/monkey_gun - name = "Bluespace Cube Rehydrater" - desc = "This advanced weapon will rehydrate and deploy a loaded cube at your target position." +/obj/item/weapon/xenobio/monkey_gun + name = "Bluespace Cube Rehydrator" + desc = "Based on the technology of the 'Bluespace Harpoon' this device can teleport a loaded cube to a given target and rehydrate it." loadable_item = /obj/item/weapon/reagent_containers/food/snacks/monkeycube loadable_name = "Monkey Cube" -/obj/item/weapon/gun/energy/xenobio/potion_gun + origin_tech = list(TECH_BLUESPACE = 5, TECH_BIO = 6) + //projectile_type = /obj/item/projectile/beam/xenobio/monkey + +/obj/item/weapon/xenobio/monkey_gun/afterattack(atom/A, mob/user as mob) + ..() + var/turf/T = get_turf(A) + if(!T || (T.check_density(ignore_mobs = TRUE))) + to_chat(user,"Your rehydrator flashes an error as it attempts to process your target.") + playsound(src, 'sound/weapons/empty.ogg', 50, 1) + return + if(istype(A, /mob/living)) + to_chat(user,"The rehydrator's saftey systems prevent firing into living creatures!") + playsound(src, 'sound/weapons/empty.ogg', 50, 1) + return + if(loaded_item) + var/obj/item/weapon/reagent_containers/food/snacks/monkeycube/cube = loaded_item + cube.loc = A + cube.Expand() + loaded_item = null + +/obj/item/weapon/xenobio/potion_gun name = "Ranged Potion Delivery Device" desc = "This device is designed to deliver a potion to your target at range, it has a slot to attach a xenobio potion." loadable_item = /obj/item/slimepotion loadable_name = "Slime Potion" -///obj/item/weapon/gun/energy/xenobio/potion_gun/afterattack(atom/A, mob/user as mob) -// if(isslime(A)) - //loaded_item.attack(A, user) - - -/*/obj/item/weapon/xenobio - name = "bluespace harpoon" - desc = "For climbing on bluespace mountains!" - - icon = 'icons/obj/gun_vr.dmi' - icon_state = "harpoon-2" - - w_class = ITEMSIZE_NORMAL -*/ +/* Doesn't work and am too lazy to make it work, lets make something better instead. /obj/item/weapon/xenobio/slime_grinder name = "portable slime processor" desc = "An industrial grinder used to automate the process of slime core extraction. It can also recycle biomatter. This one appears miniturized" @@ -188,7 +206,7 @@ return insert(M, user) return ..() - +*/ /* Cut for balance :) /obj/item/weapon/gun/energy/xenobio/extract_gun name = "Ranged Extract Interaction Device" From e725a55a8843d49736a762cfb2ca604a2a542b7a Mon Sep 17 00:00:00 2001 From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com> Date: Thu, 31 Mar 2022 17:31:50 -0400 Subject: [PATCH 05/14] Update weapons_vr.dm --- code/modules/xenobio/items/weapons_vr.dm | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/code/modules/xenobio/items/weapons_vr.dm b/code/modules/xenobio/items/weapons_vr.dm index 714fcbebf0..eb338c9e02 100644 --- a/code/modules/xenobio/items/weapons_vr.dm +++ b/code/modules/xenobio/items/weapons_vr.dm @@ -10,6 +10,7 @@ var/loadable_item = null var/loaded_item = null var/loadable_name = null + var/firable = TRUE /obj/item/weapon/xenobio/examine(var/mob/user) . = ..() if(loaded_item) @@ -75,6 +76,10 @@ /obj/item/weapon/xenobio/monkey_gun/afterattack(atom/A, mob/user as mob) ..() + + if(!firable) + return + var/turf/T = get_turf(A) if(!T || (T.check_density(ignore_mobs = TRUE))) to_chat(user,"Your rehydrator flashes an error as it attempts to process your target.") @@ -89,7 +94,8 @@ cube.loc = A cube.Expand() loaded_item = null - + firable = FALSE + VARSET_IN(src, firable, TRUE, 5 SECONDS) /obj/item/weapon/xenobio/potion_gun name = "Ranged Potion Delivery Device" desc = "This device is designed to deliver a potion to your target at range, it has a slot to attach a xenobio potion." From 4c193229aeda92cab9d98d979934a9814ba15b83 Mon Sep 17 00:00:00 2001 From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com> Date: Thu, 31 Mar 2022 20:46:10 -0400 Subject: [PATCH 06/14] Update weapons_vr.dm --- code/modules/xenobio/items/weapons_vr.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/xenobio/items/weapons_vr.dm b/code/modules/xenobio/items/weapons_vr.dm index eb338c9e02..58459fd1f6 100644 --- a/code/modules/xenobio/items/weapons_vr.dm +++ b/code/modules/xenobio/items/weapons_vr.dm @@ -54,6 +54,8 @@ //playsound(src, 'sound/weapons/wave.ogg', 60, 1) playsound(src, 'sound/weapons/empty.ogg', 50, 1) return + if(!firable) + return playsound(src, 'sound/weapons/wave.ogg', 60, 1) From f7d3111f2ab3a9d40536baec74bf0e7d7ba3fc29 Mon Sep 17 00:00:00 2001 From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com> Date: Sat, 9 Apr 2022 18:01:11 -0400 Subject: [PATCH 07/14] Portable Grinder and Bag --- .../objects/items/weapons/storage/bags_vr.dm | 13 ++ code/modules/xenobio/items/weapons_vr.dm | 123 +++++++----------- vorestation.dme | 1 - 3 files changed, 63 insertions(+), 74 deletions(-) diff --git a/code/game/objects/items/weapons/storage/bags_vr.dm b/code/game/objects/items/weapons/storage/bags_vr.dm index 6f9d0a0b15..8f359a5f06 100644 --- a/code/game/objects/items/weapons/storage/bags_vr.dm +++ b/code/game/objects/items/weapons/storage/bags_vr.dm @@ -1,2 +1,15 @@ /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_NORMAL * 25 + 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 + ) \ No newline at end of file diff --git a/code/modules/xenobio/items/weapons_vr.dm b/code/modules/xenobio/items/weapons_vr.dm index 58459fd1f6..c46a580874 100644 --- a/code/modules/xenobio/items/weapons_vr.dm +++ b/code/modules/xenobio/items/weapons_vr.dm @@ -98,23 +98,30 @@ loaded_item = null firable = FALSE VARSET_IN(src, firable, TRUE, 5 SECONDS) + +/* Eh, cutting this. Not much reason for it. /obj/item/weapon/xenobio/potion_gun name = "Ranged Potion Delivery Device" desc = "This device is designed to deliver a potion to your target at range, it has a slot to attach a xenobio potion." loadable_item = /obj/item/slimepotion loadable_name = "Slime Potion" - -/* Doesn't work and am too lazy to make it work, lets make something better instead. -/obj/item/weapon/xenobio/slime_grinder +*/ +// Instead of bringing the slime to the grinder, lets bring the grinder to the slime! This will process slimes and monkies one at a time. +/obj/item/weapon/slime_grinder name = "portable slime processor" desc = "An industrial grinder used to automate the process of slime core extraction. It can also recycle biomatter. This one appears miniturized" - icon = 'icons/obj/kitchen.dmi' - icon_state = "processor1" + //icon = 'icons/obj/weapons_vr.dmi' + icon_state = "chainsaw0" + //icon_state = "slimegrinder" + //item_icons = list( + // slot_l_hand_str = 'icons/mob/items/lefthand_melee_vr.dmi', + // slot_r_hand_str = 'icons/mob/items/righthand_melee_vr.dmi', + // ) var/processing = FALSE // So I heard you like processing. var/list/to_be_processed = list() var/monkeys_recycled = 0 - description_info = "Clickdrag dead slimes or monkeys to it to insert them. It will make a new monkey cube for every four monkeys it processes." - + description_info = "Click a monkey or slime to begin processing." +/* /obj/machinery/processor/attack_hand(mob/living/user) if(processing) to_chat(user, "The processor is in the process of processing!") @@ -126,75 +133,38 @@ to_chat(user, "The processor is empty.") playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 1) return - -// Verb to remove everything. -/obj/item/weapon/xenobio/slime_grinder/verb/eject() - set category = "Object" - set name = "Eject Processor" - set src in oview(1) - - if(usr.stat || !usr.canmove || usr.restrained()) - return - empty() - add_fingerprint(usr) - return - -// Ejects all the things out of the machine. -/obj/item/weapon/xenobio/slime_grinder/proc/empty() - for(var/atom/movable/AM in to_be_processed) - to_be_processed.Remove(AM) - AM.forceMove(get_turf(src)) - -// Ejects all the things out of the machine. -/obj/item/weapon/xenobio/slime_grinder/proc/insert(var/atom/movable/AM, var/mob/living/user) - if(!Adjacent(AM)) - return - if(!can_insert(AM)) - to_chat(user, "\The [src] cannot process \the [AM] at this time.") - playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 1) - return - to_be_processed.Add(AM) - AM.forceMove(src) - visible_message("\The [user] places [AM] inside \the [src].") - -/obj/item/weapon/xenobio/slime_grinder/proc/begin_processing() - if(processing) - return // Already doing it. +*/ +/obj/item/weapon/slime_grinder/proc/extract(var/atom/movable/AM, var/mob/living/user) processing = TRUE - playsound(src, 'sound/machines/juicer.ogg', 50, 1) - for(var/atom/movable/AM in to_be_processed) - extract(AM) - sleep(1 SECONDS) - - while(monkeys_recycled >= 4) - new /obj/item/weapon/reagent_containers/food/snacks/monkeycube(get_turf(src)) - playsound(src, 'sound/effects/splat.ogg', 50, 1) - monkeys_recycled -= 4 - sleep(1 SECOND) - - processing = FALSE - playsound(src, 'sound/machines/ding.ogg', 50, 1) - -/obj/item/weapon/xenobio/slime_grinder/proc/extract(var/atom/movable/AM) if(istype(AM, /mob/living/simple_mob/slime)) var/mob/living/simple_mob/slime/S = AM while(S.cores) - new S.coretype(get_turf(src)) - playsound(src, 'sound/effects/splat.ogg', 50, 1) - S.cores-- - sleep(1 SECOND) - to_be_processed.Remove(S) + playsound(src, 'sound/machines/juicer.ogg', 25, 1) + if(do_after(user, 15)) + new S.coretype(get_turf(AM)) + playsound(src, 'sound/effects/splat.ogg', 50, 1) + S.cores-- + //sleep(1 SECOND) + //to_be_processed.Remove(S) qdel(S) - if(istype(AM, /mob/living/carbon/human)) - var/mob/living/carbon/human/M = AM - playsound(src, 'sound/effects/splat.ogg', 50, 1) - to_be_processed.Remove(M) - qdel(M) - monkeys_recycled++ - sleep(1 SECOND) + if(istype(AM, /mob/living/carbon/human/monkey)) + playsound(src, 'sound/machines/juicer.ogg', 25, 1) + if(do_after(user, 15)) + var/mob/living/carbon/human/M = AM + playsound(src, 'sound/effects/splat.ogg', 50, 1) + //to_be_processed.Remove(M) + qdel(M) + monkeys_recycled++ + sleep(1 SECOND) + while(monkeys_recycled >= 4) + new /obj/item/weapon/reagent_containers/food/snacks/monkeycube(get_turf(src)) + playsound(src, 'sound/effects/splat.ogg', 50, 1) + monkeys_recycled -= 4 + sleep(1 SECOND) + processing = FALSE -/obj/item/weapon/xenobio/slime_grinder/proc/can_insert(var/atom/movable/AM) +/obj/item/weapon/slime_grinder/proc/can_insert(var/atom/movable/AM) if(istype(AM, /mob/living/simple_mob/slime)) var/mob/living/simple_mob/slime/S = AM if(S.stat != DEAD) @@ -209,12 +179,19 @@ return TRUE return FALSE -/obj/item/weapon/xenobio/slime_grinder/attack(mob/M as mob, mob/living/user as mob) - if(user.stat || user.incapacitated(INCAPACITATION_DISABLED) || !istype(user)) +/obj/item/weapon/slime_grinder/attack(mob/M as mob, mob/living/user as mob) + //if(user.stat || user.incapacitated(INCAPACITATION_DISABLED) || !istype(user)) + // return + //insert(M, user) + if(processing) return - insert(M, user) + if(!can_insert(M)) + to_chat(user, "\The [src] cannot process \the [M] at this time.") + playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 1) + return + + extract(M, user) return ..() -*/ /* Cut for balance :) /obj/item/weapon/gun/energy/xenobio/extract_gun name = "Ranged Extract Interaction Device" diff --git a/vorestation.dme b/vorestation.dme index cef37c8dba..93f1745df0 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -4103,7 +4103,6 @@ #include "maps\expedition_vr\beach\submaps\mountains.dm" #include "maps\expedition_vr\beach\submaps\mountains_areas.dm" #include "maps\gateway_archive_vr\blackmarketpackers.dm" -#include "maps\groundbase\groundbase.dm" #include "maps\offmap_vr\om_ships\abductor.dm" #include "maps\southern_cross\items\clothing\sc_accessory.dm" #include "maps\southern_cross\items\clothing\sc_suit.dm" From f2a45d16955e673bac7287ae3bc297decd62ffe2 Mon Sep 17 00:00:00 2001 From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com> Date: Sat, 9 Apr 2022 21:55:46 -0400 Subject: [PATCH 08/14] Adding recipes to the lathe. --- code/modules/research/designs/xenobio_toys_vr.dm | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 code/modules/research/designs/xenobio_toys_vr.dm diff --git a/code/modules/research/designs/xenobio_toys_vr.dm b/code/modules/research/designs/xenobio_toys_vr.dm new file mode 100644 index 0000000000..ea46432791 --- /dev/null +++ b/code/modules/research/designs/xenobio_toys_vr.dm @@ -0,0 +1,15 @@ +/datum/design/item/weapon/xenobio/monkey_gun + id = "bluespace monkey deployment system" + req_tech = list(TECH_MATERIAL = 3, TECH_BIO = 3, TECH_POWER = 4, TECH_COMBAT = 4, TECH_BLUESPACE = 6) + materials = list(MAT_PLASTEEL = 5000, MAT_GLASS = 5000, MAT_DIAMOND = 500, MAT_MORPHIUM = 350) + build_path = /obj/item/weapon/xenobio/monkey_gun + sort_string = "HBBA" + +/datum/design/item/weapon/xenobio/grinder + name = "portable slime processor" + desc = "This high tech device combines the slime processor with the latest in woodcutting technology." + id = "slime_scanner" + req_tech = list(TECH_MAGNET = 4, TECH_BIO = 7) + materials = list(MAT_STEEL = 500, MAT_GLASS = 500, MAT_DIAMOND = 500, MAT_MORPHIUM = 100) + build_path = /obj/item/weapon/slime_grinder + sort_string = "HBBB" \ No newline at end of file From d220b9b73d0d646f06119e003592872f619b1c65 Mon Sep 17 00:00:00 2001 From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com> Date: Sat, 9 Apr 2022 22:26:03 -0400 Subject: [PATCH 09/14] Near final --- code/game/objects/items/weapons/storage/bags_vr.dm | 2 +- .../game/objects/structures/crates_lockers/closets/l3closet.dm | 3 ++- code/modules/xenobio/items/weapons_vr.dm | 2 +- vorestation.dme | 3 ++- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/code/game/objects/items/weapons/storage/bags_vr.dm b/code/game/objects/items/weapons/storage/bags_vr.dm index 8f359a5f06..ccafe5fa63 100644 --- a/code/game/objects/items/weapons/storage/bags_vr.dm +++ b/code/game/objects/items/weapons/storage/bags_vr.dm @@ -5,7 +5,7 @@ name = "xenobiology bag" icon = 'icons/obj/storage.dmi' icon_state = "chembag" - max_storage_space = ITEMSIZE_COST_NORMAL * 25 + max_storage_space = ITEMSIZE_COST_SMALL * 12 max_w_class = ITEMSIZE_NORMAL w_class = ITEMSIZE_SMALL can_hold = list( diff --git a/code/game/objects/structures/crates_lockers/closets/l3closet.dm b/code/game/objects/structures/crates_lockers/closets/l3closet.dm index d9692abdc3..c592c3e69f 100644 --- a/code/game/objects/structures/crates_lockers/closets/l3closet.dm +++ b/code/game/objects/structures/crates_lockers/closets/l3closet.dm @@ -49,7 +49,8 @@ /obj/structure/closet/l3closet/scientist/double starts_with = list( /obj/item/clothing/suit/bio_suit/scientist = 2, - /obj/item/clothing/head/bio_hood/scientist = 2) + /obj/item/clothing/head/bio_hood/scientist = 2, + /obj/item/weapon/storage/bag/xeno = 2) // VOREEdit, adding the xenobag to xenobio. /obj/structure/closet/l3closet/medical diff --git a/code/modules/xenobio/items/weapons_vr.dm b/code/modules/xenobio/items/weapons_vr.dm index c46a580874..e3c93800eb 100644 --- a/code/modules/xenobio/items/weapons_vr.dm +++ b/code/modules/xenobio/items/weapons_vr.dm @@ -97,7 +97,7 @@ cube.Expand() loaded_item = null firable = FALSE - VARSET_IN(src, firable, TRUE, 5 SECONDS) + VARSET_IN(src, firable, TRUE, 2 SECONDS) /* Eh, cutting this. Not much reason for it. /obj/item/weapon/xenobio/potion_gun diff --git a/vorestation.dme b/vorestation.dme index 93f1745df0..28f0fd452a 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -3722,6 +3722,7 @@ #include "code\modules\research\designs\weapons_vr.dm" #include "code\modules\research\designs\xenoarch_toys.dm" #include "code\modules\research\designs\xenobio_toys.dm" +#include "code\modules\research\designs\xenobio_toys_vr.dm" #include "code\modules\research\designs\circuits\ai_modules.dm" #include "code\modules\research\designs\circuits\ai_modules_vr.dm" #include "code\modules\research\designs\circuits\circuits.dm" @@ -4103,6 +4104,7 @@ #include "maps\expedition_vr\beach\submaps\mountains.dm" #include "maps\expedition_vr\beach\submaps\mountains_areas.dm" #include "maps\gateway_archive_vr\blackmarketpackers.dm" +#include "maps\groundbase\groundbase.dm" #include "maps\offmap_vr\om_ships\abductor.dm" #include "maps\southern_cross\items\clothing\sc_accessory.dm" #include "maps\southern_cross\items\clothing\sc_suit.dm" @@ -4119,6 +4121,5 @@ #include "maps\submaps\space_submaps\debrisfield\debrisfield.dm" #include "maps\submaps\surface_submaps\wilderness\wilderness.dm" #include "maps\submaps\surface_submaps\wilderness\wilderness_areas.dm" -#include "maps\virgo_minitest\virgo_minitest.dm" #include "maps\~map_system\maps.dm" // END_INCLUDE From cd9c7fab9ef738f46b033277e6a78ecc31e1ed8b Mon Sep 17 00:00:00 2001 From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com> Date: Sat, 9 Apr 2022 22:27:33 -0400 Subject: [PATCH 10/14] Cleanup Removing cut content --- code/modules/xenobio/items/weapons_vr.dm | 44 ++---------------------- 1 file changed, 2 insertions(+), 42 deletions(-) diff --git a/code/modules/xenobio/items/weapons_vr.dm b/code/modules/xenobio/items/weapons_vr.dm index e3c93800eb..9eb1412a97 100644 --- a/code/modules/xenobio/items/weapons_vr.dm +++ b/code/modules/xenobio/items/weapons_vr.dm @@ -3,10 +3,6 @@ desc = "You shouldn't see this!" icon = 'icons/obj/gun_vr.dmi' icon_state = "harpoon-2" - //fire_sound = 'sound/weapons/taser2.ogg' - //charge_cost = 120 // Twice as many shots. - //projectile_type = /obj/item/projectile/beam/xenobio // Place holder for now - //accuracy = 30 // Just use the same hit rate as xenotasers var/loadable_item = null var/loaded_item = null var/loadable_name = null @@ -99,41 +95,17 @@ firable = FALSE VARSET_IN(src, firable, TRUE, 2 SECONDS) -/* Eh, cutting this. Not much reason for it. -/obj/item/weapon/xenobio/potion_gun - name = "Ranged Potion Delivery Device" - desc = "This device is designed to deliver a potion to your target at range, it has a slot to attach a xenobio potion." - loadable_item = /obj/item/slimepotion - loadable_name = "Slime Potion" -*/ // Instead of bringing the slime to the grinder, lets bring the grinder to the slime! This will process slimes and monkies one at a time. /obj/item/weapon/slime_grinder name = "portable slime processor" desc = "An industrial grinder used to automate the process of slime core extraction. It can also recycle biomatter. This one appears miniturized" //icon = 'icons/obj/weapons_vr.dmi' icon_state = "chainsaw0" - //icon_state = "slimegrinder" - //item_icons = list( - // slot_l_hand_str = 'icons/mob/items/lefthand_melee_vr.dmi', - // slot_r_hand_str = 'icons/mob/items/righthand_melee_vr.dmi', - // ) var/processing = FALSE // So I heard you like processing. var/list/to_be_processed = list() var/monkeys_recycled = 0 description_info = "Click a monkey or slime to begin processing." -/* -/obj/machinery/processor/attack_hand(mob/living/user) - if(processing) - to_chat(user, "The processor is in the process of processing!") - return - if(to_be_processed.len) - spawn(1) - begin_processing() - else - to_chat(user, "The processor is empty.") - playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 1) - return -*/ + /obj/item/weapon/slime_grinder/proc/extract(var/atom/movable/AM, var/mob/living/user) processing = TRUE if(istype(AM, /mob/living/simple_mob/slime)) @@ -144,8 +116,6 @@ new S.coretype(get_turf(AM)) playsound(src, 'sound/effects/splat.ogg', 50, 1) S.cores-- - //sleep(1 SECOND) - //to_be_processed.Remove(S) qdel(S) if(istype(AM, /mob/living/carbon/human/monkey)) @@ -153,7 +123,6 @@ if(do_after(user, 15)) var/mob/living/carbon/human/M = AM playsound(src, 'sound/effects/splat.ogg', 50, 1) - //to_be_processed.Remove(M) qdel(M) monkeys_recycled++ sleep(1 SECOND) @@ -180,9 +149,6 @@ return FALSE /obj/item/weapon/slime_grinder/attack(mob/M as mob, mob/living/user as mob) - //if(user.stat || user.incapacitated(INCAPACITATION_DISABLED) || !istype(user)) - // return - //insert(M, user) if(processing) return if(!can_insert(M)) @@ -191,10 +157,4 @@ return extract(M, user) - return ..() -/* Cut for balance :) -/obj/item/weapon/gun/energy/xenobio/extract_gun - name = "Ranged Extract Interaction Device" - desc = "This is the latest in extract interaction technology! No longer shall you stand in harms way when activating a gold slime." - loadable_item = /obj/item/slime_extract -*/ \ No newline at end of file + return ..() \ No newline at end of file From 12af0b93bbd445ea2321f8472d07cb0a1b9ae0de Mon Sep 17 00:00:00 2001 From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com> Date: Sat, 9 Apr 2022 22:45:07 -0400 Subject: [PATCH 11/14] Update weapons_vr.dm Heck, how'd I miss this --- code/modules/xenobio/items/weapons_vr.dm | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/code/modules/xenobio/items/weapons_vr.dm b/code/modules/xenobio/items/weapons_vr.dm index 9eb1412a97..2c4204e9ad 100644 --- a/code/modules/xenobio/items/weapons_vr.dm +++ b/code/modules/xenobio/items/weapons_vr.dm @@ -17,7 +17,7 @@ /obj/item/weapon/xenobio/attack_hand(mob/user as mob) if(user.get_inactive_hand() == src && loaded_item) user.put_in_hands(loaded_item) - user.visible_message("[user] removes [loaded_item] from [src].", "You remove [loaded_item] from [src].") + user.visible_message("[user] removes [loaded_item] from [src].", "You remove [loaded_item] from [src].") loaded_item = null playsound(src, 'sound/weapons/empty.ogg', 50, 1) else @@ -32,15 +32,14 @@ user.drop_item() I.loc = src loaded_item = I - //to_chat(user, "You slot [I] into [src].") - user.visible_message("[user] inserts [I] into [src].", "You slot [I] into [src].") + user.visible_message("[user] inserts [I] into [src].", "You slot [I] into [src].") return 1 ..() /obj/item/weapon/xenobio/attack_self(mob/living/user as mob) if(loaded_item) user.put_in_hands(loaded_item) - user.visible_message("[user] removes [loaded_item] from [src].", "You remove [loaded_item] from [src].") + user.visible_message("[user] removes [loaded_item] from [src].", "You remove [loaded_item] from [src].") loaded_item = null playsound(src, 'sound/weapons/empty.ogg', 50, 1) From 05c5d5f44a025c5d378e4e8e5295f49ad870011a Mon Sep 17 00:00:00 2001 From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com> Date: Sat, 9 Apr 2022 22:59:32 -0400 Subject: [PATCH 12/14] Update weapons_vr.dm Fixing a derp --- code/modules/xenobio/items/weapons_vr.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/xenobio/items/weapons_vr.dm b/code/modules/xenobio/items/weapons_vr.dm index 2c4204e9ad..4f7ef3d1c2 100644 --- a/code/modules/xenobio/items/weapons_vr.dm +++ b/code/modules/xenobio/items/weapons_vr.dm @@ -32,7 +32,7 @@ user.drop_item() I.loc = src loaded_item = I - user.visible_message("[user] inserts [I] into [src].", "You slot [I] into [src].") + user.visible_message("[user] inserts [I] into [src].", "You slot [I] into [src].") return 1 ..() From d0032979d4d382cadb6346e6e3039be8a419be64 Mon Sep 17 00:00:00 2001 From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com> Date: Sat, 9 Apr 2022 23:05:04 -0400 Subject: [PATCH 13/14] Update weapons_vr.dm Whoops --- code/modules/xenobio/items/weapons_vr.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/modules/xenobio/items/weapons_vr.dm b/code/modules/xenobio/items/weapons_vr.dm index 4f7ef3d1c2..24a91715a4 100644 --- a/code/modules/xenobio/items/weapons_vr.dm +++ b/code/modules/xenobio/items/weapons_vr.dm @@ -17,7 +17,7 @@ /obj/item/weapon/xenobio/attack_hand(mob/user as mob) if(user.get_inactive_hand() == src && loaded_item) user.put_in_hands(loaded_item) - user.visible_message("[user] removes [loaded_item] from [src].", "You remove [loaded_item] from [src].") + user.visible_message("[user] removes [loaded_item] from [src].", "You remove [loaded_item] from [src].") loaded_item = null playsound(src, 'sound/weapons/empty.ogg', 50, 1) else @@ -26,20 +26,20 @@ /obj/item/weapon/xenobio/attackby(obj/item/I as obj, mob/user as mob) if(istype(I, loadable_item)) if(loaded_item) - to_chat(user, "[I] doesn't seem to fit into [src].") + to_chat(user, "[I] doesn't seem to fit into [src].") return //var/obj/item/weapon/reagent_containers/glass/beaker/B = I user.drop_item() I.loc = src loaded_item = I - user.visible_message("[user] inserts [I] into [src].", "You slot [I] into [src].") + user.visible_message("[user] inserts [I] into [src].", "You slot [I] into [src].") return 1 ..() /obj/item/weapon/xenobio/attack_self(mob/living/user as mob) if(loaded_item) user.put_in_hands(loaded_item) - user.visible_message("[user] removes [loaded_item] from [src].", "You remove [loaded_item] from [src].") + user.visible_message("[user] removes [loaded_item] from [src].", "You remove [loaded_item] from [src].") loaded_item = null playsound(src, 'sound/weapons/empty.ogg', 50, 1) From bb015daad39e45f985851a6fe762d17d7647c23e Mon Sep 17 00:00:00 2001 From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com> Date: Sat, 9 Apr 2022 23:12:42 -0400 Subject: [PATCH 14/14] Update xenobio_toys_vr.dm this is why I shouldn't code late at night --- code/modules/research/designs/xenobio_toys_vr.dm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/code/modules/research/designs/xenobio_toys_vr.dm b/code/modules/research/designs/xenobio_toys_vr.dm index ea46432791..39491c1b0c 100644 --- a/code/modules/research/designs/xenobio_toys_vr.dm +++ b/code/modules/research/designs/xenobio_toys_vr.dm @@ -1,5 +1,7 @@ /datum/design/item/weapon/xenobio/monkey_gun - id = "bluespace monkey deployment system" + name = "bluespace monkey deployment system" + desc = "An Advanced monkey teleportation and rehydration system. For serious monkey business." + id = "monkey_gun" req_tech = list(TECH_MATERIAL = 3, TECH_BIO = 3, TECH_POWER = 4, TECH_COMBAT = 4, TECH_BLUESPACE = 6) materials = list(MAT_PLASTEEL = 5000, MAT_GLASS = 5000, MAT_DIAMOND = 500, MAT_MORPHIUM = 350) build_path = /obj/item/weapon/xenobio/monkey_gun @@ -8,7 +10,7 @@ /datum/design/item/weapon/xenobio/grinder name = "portable slime processor" desc = "This high tech device combines the slime processor with the latest in woodcutting technology." - id = "slime_scanner" + id = "slime_grinder" req_tech = list(TECH_MAGNET = 4, TECH_BIO = 7) materials = list(MAT_STEEL = 500, MAT_GLASS = 500, MAT_DIAMOND = 500, MAT_MORPHIUM = 100) build_path = /obj/item/weapon/slime_grinder