mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 18:32:03 +00:00
@@ -3078,6 +3078,7 @@ var/global/num_vending_terminals = 1
|
|||||||
/obj/item/weapon/mech_expansion_kit = 3,
|
/obj/item/weapon/mech_expansion_kit = 3,
|
||||||
/obj/item/weapon/storage/bag/gadgets/part_replacer/injector = 10,
|
/obj/item/weapon/storage/bag/gadgets/part_replacer/injector = 10,
|
||||||
/obj/item/weapon/storage/bag/gadgets/part_replacer/injector/super = 4,
|
/obj/item/weapon/storage/bag/gadgets/part_replacer/injector/super = 4,
|
||||||
|
/obj/structure/wetdryvac = 1,
|
||||||
)
|
)
|
||||||
prices = list(
|
prices = list(
|
||||||
/obj/item/clothing/suit/storage/trader = 100,
|
/obj/item/clothing/suit/storage/trader = 100,
|
||||||
@@ -3112,6 +3113,7 @@ var/global/num_vending_terminals = 1
|
|||||||
/obj/item/weapon/mech_expansion_kit = 50,
|
/obj/item/weapon/mech_expansion_kit = 50,
|
||||||
/obj/item/weapon/storage/bag/gadgets/part_replacer/injector = 15,
|
/obj/item/weapon/storage/bag/gadgets/part_replacer/injector = 15,
|
||||||
/obj/item/weapon/storage/bag/gadgets/part_replacer/injector/super = 50,
|
/obj/item/weapon/storage/bag/gadgets/part_replacer/injector/super = 50,
|
||||||
|
/obj/structure/wetdryvac = 50,
|
||||||
)
|
)
|
||||||
|
|
||||||
/obj/machinery/vending/trader/New()
|
/obj/machinery/vending/trader/New()
|
||||||
|
|||||||
@@ -5,6 +5,8 @@
|
|||||||
anchored = 1
|
anchored = 1
|
||||||
amount = 1 //Basically moles.
|
amount = 1 //Basically moles.
|
||||||
|
|
||||||
|
reagent = FUEL
|
||||||
|
|
||||||
volatility = 0.02
|
volatility = 0.02
|
||||||
|
|
||||||
basecolor = "#6D5757"
|
basecolor = "#6D5757"
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ var/global/list/blood_list = list()
|
|||||||
gender = PLURAL
|
gender = PLURAL
|
||||||
density = 0
|
density = 0
|
||||||
anchored = 1
|
anchored = 1
|
||||||
|
reagent = BLOOD
|
||||||
icon = 'icons/effects/blood.dmi'
|
icon = 'icons/effects/blood.dmi'
|
||||||
icon_state = "mfloor1"
|
icon_state = "mfloor1"
|
||||||
random_icon_states = list("mfloor1", "mfloor2", "mfloor3", "mfloor4", "mfloor5", "mfloor6", "mfloor7")
|
random_icon_states = list("mfloor1", "mfloor2", "mfloor3", "mfloor4", "mfloor5", "mfloor6", "mfloor7")
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
name = "ashes"
|
name = "ashes"
|
||||||
desc = "Ashes to ashes, dust to dust, and into space."
|
desc = "Ashes to ashes, dust to dust, and into space."
|
||||||
gender = PLURAL
|
gender = PLURAL
|
||||||
|
reagent = TOXIN //ash is bad for you!
|
||||||
icon = 'icons/obj/objects.dmi'
|
icon = 'icons/obj/objects.dmi'
|
||||||
icon_state = "ash"
|
icon_state = "ash"
|
||||||
anchored = 1
|
anchored = 1
|
||||||
@@ -34,6 +35,7 @@
|
|||||||
gender = PLURAL
|
gender = PLURAL
|
||||||
density = 0
|
density = 0
|
||||||
anchored = 1
|
anchored = 1
|
||||||
|
reagent = FLOUR
|
||||||
icon = 'icons/effects/effects.dmi'
|
icon = 'icons/effects/effects.dmi'
|
||||||
icon_state = "flour"
|
icon_state = "flour"
|
||||||
|
|
||||||
@@ -43,6 +45,7 @@
|
|||||||
gender = PLURAL
|
gender = PLURAL
|
||||||
density = 0
|
density = 0
|
||||||
anchored = TRUE
|
anchored = TRUE
|
||||||
|
reagent = RADIUM
|
||||||
icon = 'icons/effects/effects.dmi'
|
icon = 'icons/effects/effects.dmi'
|
||||||
icon_state = "greenglow"
|
icon_state = "greenglow"
|
||||||
|
|
||||||
@@ -56,6 +59,7 @@
|
|||||||
gender = PLURAL
|
gender = PLURAL
|
||||||
density = 0
|
density = 0
|
||||||
anchored = TRUE
|
anchored = TRUE
|
||||||
|
reagent = LUMINOL
|
||||||
icon = 'icons/effects/blood.dmi'
|
icon = 'icons/effects/blood.dmi'
|
||||||
icon_state = "mfloor1"
|
icon_state = "mfloor1"
|
||||||
//icon = 'icons/effects/tomatodecal.dmi'
|
//icon = 'icons/effects/tomatodecal.dmi'
|
||||||
@@ -74,6 +78,7 @@
|
|||||||
desc = "Somebody should remove that."
|
desc = "Somebody should remove that."
|
||||||
density = 0
|
density = 0
|
||||||
anchored = 1
|
anchored = 1
|
||||||
|
reagent = SPIDERS //no way this can go wrong, right?
|
||||||
plane = ABOVE_HUMAN_PLANE
|
plane = ABOVE_HUMAN_PLANE
|
||||||
icon = 'icons/effects/effects.dmi'
|
icon = 'icons/effects/effects.dmi'
|
||||||
icon_state = "cobweb1"
|
icon_state = "cobweb1"
|
||||||
@@ -83,6 +88,7 @@
|
|||||||
desc = "It looks like a melted... something."
|
desc = "It looks like a melted... something."
|
||||||
density = 0
|
density = 0
|
||||||
anchored = 1
|
anchored = 1
|
||||||
|
reagent = CHEMICAL_WASTE
|
||||||
layer = OBJ_LAYER
|
layer = OBJ_LAYER
|
||||||
plane = OBJ_PLANE
|
plane = OBJ_PLANE
|
||||||
icon = 'icons/obj/chemical.dmi'
|
icon = 'icons/obj/chemical.dmi'
|
||||||
@@ -94,6 +100,7 @@
|
|||||||
desc = "Somebody should remove that."
|
desc = "Somebody should remove that."
|
||||||
density = 0
|
density = 0
|
||||||
anchored = 1
|
anchored = 1
|
||||||
|
reagent = SPIDERS
|
||||||
plane = ABOVE_HUMAN_PLANE
|
plane = ABOVE_HUMAN_PLANE
|
||||||
icon = 'icons/effects/effects.dmi'
|
icon = 'icons/effects/effects.dmi'
|
||||||
icon_state = "cobweb2"
|
icon_state = "cobweb2"
|
||||||
@@ -105,6 +112,7 @@
|
|||||||
gender = PLURAL
|
gender = PLURAL
|
||||||
density = 0
|
density = 0
|
||||||
anchored = 1
|
anchored = 1
|
||||||
|
reagent = VOMIT
|
||||||
icon = 'icons/effects/blood.dmi'
|
icon = 'icons/effects/blood.dmi'
|
||||||
icon_state = "vomit_1"
|
icon_state = "vomit_1"
|
||||||
|
|
||||||
@@ -161,6 +169,7 @@
|
|||||||
desc = "It's red."
|
desc = "It's red."
|
||||||
density = 0
|
density = 0
|
||||||
anchored = 1
|
anchored = 1
|
||||||
|
reagent = TOMATOJUICE
|
||||||
icon = 'icons/effects/tomatodecal.dmi'
|
icon = 'icons/effects/tomatodecal.dmi'
|
||||||
random_icon_states = list("tomato_floor1", "tomato_floor2", "tomato_floor3")
|
random_icon_states = list("tomato_floor1", "tomato_floor2", "tomato_floor3")
|
||||||
|
|
||||||
@@ -178,6 +187,7 @@
|
|||||||
desc = "Seems like this one won't hatch."
|
desc = "Seems like this one won't hatch."
|
||||||
density = 0
|
density = 0
|
||||||
anchored = 1
|
anchored = 1
|
||||||
|
//reagent = EGGYOLK (not in yet)
|
||||||
icon = 'icons/effects/tomatodecal.dmi'
|
icon = 'icons/effects/tomatodecal.dmi'
|
||||||
random_icon_states = list("smashed_egg1", "smashed_egg2", "smashed_egg3")
|
random_icon_states = list("smashed_egg1", "smashed_egg2", "smashed_egg3")
|
||||||
|
|
||||||
@@ -204,6 +214,7 @@
|
|||||||
desc = "This burnt-out campfire reminds you of someone."
|
desc = "This burnt-out campfire reminds you of someone."
|
||||||
anchored = 1
|
anchored = 1
|
||||||
density = 0
|
density = 0
|
||||||
|
reagent = TOXIN //ash is bad for you!
|
||||||
icon = 'icons/obj/atmos.dmi'
|
icon = 'icons/obj/atmos.dmi'
|
||||||
icon_state = "campfire_burnt"
|
icon_state = "campfire_burnt"
|
||||||
|
|
||||||
@@ -241,6 +252,7 @@
|
|||||||
gender = PLURAL
|
gender = PLURAL
|
||||||
density = 0
|
density = 0
|
||||||
anchored = 1
|
anchored = 1
|
||||||
|
reagent = TOXIN //ash is bad for you!
|
||||||
icon = 'icons/effects/effects.dmi'
|
icon = 'icons/effects/effects.dmi'
|
||||||
icon_state = "lspaceclutter"
|
icon_state = "lspaceclutter"
|
||||||
|
|
||||||
@@ -249,6 +261,7 @@
|
|||||||
desc = "A disgusting mess."
|
desc = "A disgusting mess."
|
||||||
icon = 'icons/mob/animal.dmi'
|
icon = 'icons/mob/animal.dmi'
|
||||||
icon_state = "cockroach_remains1"
|
icon_state = "cockroach_remains1"
|
||||||
|
reagent = ROACHSHELL
|
||||||
|
|
||||||
/obj/effect/decal/cleanable/cockroach_remains/New()
|
/obj/effect/decal/cleanable/cockroach_remains/New()
|
||||||
..()
|
..()
|
||||||
@@ -265,6 +278,7 @@
|
|||||||
desc = "Looks like some one has butter fingers."
|
desc = "Looks like some one has butter fingers."
|
||||||
icon = 'icons/effects/tomatodecal.dmi'
|
icon = 'icons/effects/tomatodecal.dmi'
|
||||||
icon_state = "smashed_butter"
|
icon_state = "smashed_butter"
|
||||||
|
reagent = LIQUIDBUTTER
|
||||||
|
|
||||||
/obj/effect/decal/cleanable/virusdish
|
/obj/effect/decal/cleanable/virusdish
|
||||||
name = "broken virus containment dish"
|
name = "broken virus containment dish"
|
||||||
@@ -272,6 +286,7 @@
|
|||||||
icon_state = "brokendish-outline"
|
icon_state = "brokendish-outline"
|
||||||
density = 0
|
density = 0
|
||||||
anchored = 1
|
anchored = 1
|
||||||
|
reagent = VIRUSFOOD
|
||||||
mouse_opacity = 1
|
mouse_opacity = 1
|
||||||
layer = OBJ_LAYER
|
layer = OBJ_LAYER
|
||||||
plane = OBJ_PLANE
|
plane = OBJ_PLANE
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ var/list/infected_cleanables = list()
|
|||||||
w_type = NOT_RECYCLABLE
|
w_type = NOT_RECYCLABLE
|
||||||
anchored = 1
|
anchored = 1
|
||||||
|
|
||||||
|
var/reagent = null //what reagent did we come from? for wet/dry vac
|
||||||
|
|
||||||
// For tracking shit across the floor.
|
// For tracking shit across the floor.
|
||||||
var/amount = 0 // 0 = don't track
|
var/amount = 0 // 0 = don't track
|
||||||
var/counts_as_blood = 0 // Cult
|
var/counts_as_blood = 0 // Cult
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
name = "rune"
|
name = "rune"
|
||||||
desc = "A rune drawn in crayon."
|
desc = "A rune drawn in crayon."
|
||||||
icon = 'icons/obj/rune.dmi'
|
icon = 'icons/obj/rune.dmi'
|
||||||
|
reagent = COLORFUL_REAGENT
|
||||||
persistence_type = null //todo
|
persistence_type = null //todo
|
||||||
|
|
||||||
/obj/effect/decal/cleanable/crayon/New(loc,age,icon_state,color,dir,pixel_x,pixel_y,main = "#FFFFFF",shade = "#000000",var/type = "rune")
|
/obj/effect/decal/cleanable/crayon/New(loc,age,icon_state,color,dir,pixel_x,pixel_y,main = "#FFFFFF",shade = "#000000",var/type = "rune")
|
||||||
|
|||||||
@@ -76,6 +76,10 @@
|
|||||||
lifespan = world.time + new_lifespan
|
lifespan = world.time + new_lifespan
|
||||||
processing_objects.Add(src)
|
processing_objects.Add(src)
|
||||||
|
|
||||||
|
/obj/effect/overlay/puddle/Destroy()
|
||||||
|
processing_objects.Remove(src)
|
||||||
|
..()
|
||||||
|
|
||||||
/obj/effect/overlay/puddle/process()
|
/obj/effect/overlay/puddle/process()
|
||||||
if(world.time >= lifespan)
|
if(world.time >= lifespan)
|
||||||
qdel(src)
|
qdel(src)
|
||||||
|
|||||||
@@ -753,6 +753,7 @@
|
|||||||
else
|
else
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
/obj/item/weapon/mech_expansion_kit
|
/obj/item/weapon/mech_expansion_kit
|
||||||
name = "exosuit expansion kit"
|
name = "exosuit expansion kit"
|
||||||
desc = "All the equipment you need to replace that useless legroom with a useful bonus equipment slot on your mech."
|
desc = "All the equipment you need to replace that useless legroom with a useful bonus equipment slot on your mech."
|
||||||
@@ -785,4 +786,175 @@
|
|||||||
else
|
else
|
||||||
to_chat(user,"<span class='notice'>You stop modifying the exosuit.</span>")
|
to_chat(user,"<span class='notice'>You stop modifying the exosuit.</span>")
|
||||||
working = FALSE
|
working = FALSE
|
||||||
|
return 1
|
||||||
|
|
||||||
|
/obj/structure/wetdryvac
|
||||||
|
name = "wet/dry vacuum"
|
||||||
|
desc = "A powerful vacuum cleaner that can collect both trash and fluids."
|
||||||
|
density = TRUE
|
||||||
|
icon = 'icons/obj/objects.dmi'
|
||||||
|
icon_state = "wetdryvac1"
|
||||||
|
var/max_trash = 50
|
||||||
|
var/list/trash = list()
|
||||||
|
var/obj/item/vachandle/myhandle
|
||||||
|
|
||||||
|
/obj/structure/wetdryvac/New()
|
||||||
|
..()
|
||||||
|
create_reagents(50)
|
||||||
|
myhandle = new /obj/item/vachandle(src)
|
||||||
|
|
||||||
|
/obj/structure/wetdryvac/Destroy()
|
||||||
|
if(myhandle.loc == src)
|
||||||
|
qdel(myhandle)
|
||||||
|
else
|
||||||
|
myhandle.myvac = null
|
||||||
|
myhandle = null
|
||||||
|
for(var/obj/item/I in trash)
|
||||||
|
qdel(I)
|
||||||
|
trash.Cut()
|
||||||
|
..()
|
||||||
|
|
||||||
|
/obj/structure/wetdryvac/examine(mob/user)
|
||||||
|
..()
|
||||||
|
to_chat(user,"<span class='info'>The wet tank gauge reads: [reagents.total_volume]/[reagents.maximum_volume]</span>")
|
||||||
|
to_chat(user,"<span class='info'>The dry storage gauge reads: [trash.len]/[max_trash]</span>")
|
||||||
|
|
||||||
|
/obj/structure/wetdryvac/attackby(obj/item/W, mob/user)
|
||||||
|
if(istype(W,/obj/item/vachandle))
|
||||||
|
if(!myhandle)
|
||||||
|
myhandle = W
|
||||||
|
if(myhandle == W)
|
||||||
|
to_chat(user,"<span class='notice'>You insert \the [W] into \the [src].")
|
||||||
|
user.drop_item(W,src)
|
||||||
|
update_icon()
|
||||||
|
else
|
||||||
|
..()
|
||||||
|
|
||||||
|
/obj/structure/wetdryvac/attack_hand(mob/user)
|
||||||
|
if(myhandle.loc == src)
|
||||||
|
user.put_in_hands(myhandle)
|
||||||
|
update_icon()
|
||||||
|
else
|
||||||
|
..()
|
||||||
|
|
||||||
|
/obj/structure/wetdryvac/update_icon()
|
||||||
|
icon_state = "wetdryvac[myhandle.loc == src]"
|
||||||
|
|
||||||
|
/obj/structure/wetdryvac/MouseDropFrom(var/obj/O, src_location, var/turf/over_location, src_control, over_control, params)
|
||||||
|
if(!can_use(usr,O))
|
||||||
|
return
|
||||||
|
if(istype(O,/obj/structure/sink))
|
||||||
|
if(!reagents.total_volume)
|
||||||
|
to_chat(usr,"<span class='warning'>\The [src] wet tank is already empty!</span>")
|
||||||
|
return
|
||||||
|
playsound(src, 'sound/effects/slosh.ogg', 25, 1)
|
||||||
|
reagents.clear_reagents()
|
||||||
|
to_chat(usr, "<span class='notice'>You flush \the [src] wet contents down \the [O].</span>")
|
||||||
|
else if(istype(O,/obj/item/weapon/reagent_containers) && O.is_open_container())
|
||||||
|
if(!reagents.total_volume)
|
||||||
|
to_chat(usr,"<span class='warning'>\The [src] wet tank is already empty!</span>")
|
||||||
|
return
|
||||||
|
playsound(src, 'sound/effects/slosh.ogg', 25, 1)
|
||||||
|
to_chat(usr, "<span class='notice'>You pour \the [src] wet contents into \the [O].</span>")
|
||||||
|
reagents.trans_to(O.reagents,reagents.total_volume)
|
||||||
|
else if(istype(O,/obj/machinery/disposal))
|
||||||
|
if(!contents.len)
|
||||||
|
to_chat(usr,"<span class='warning'>\The [src] dry storage is already empty!</span>")
|
||||||
|
return
|
||||||
|
playsound(src, 'sound/effects/freeze.ogg', 25, 1) //this sounds like trash moving to me
|
||||||
|
for(var/obj/item/I in trash)
|
||||||
|
I.forceMove(O)
|
||||||
|
trash -= I
|
||||||
|
to_chat(usr, "<span class='notice'>You dump \the [src] dry contents into \the [O].</span>")
|
||||||
|
|
||||||
|
/obj/structure/wetdryvac/MouseDropTo(atom/O, mob/user)
|
||||||
|
if(!can_use(user,O))
|
||||||
|
return
|
||||||
|
whrr(get_turf(O))
|
||||||
|
|
||||||
|
/obj/structure/wetdryvac/proc/whrr(var/turf/T)
|
||||||
|
if(!T)
|
||||||
|
return
|
||||||
|
playsound(src, 'sound/effects/vacuum.ogg', 25, 1)
|
||||||
|
for(var/obj/effect/decal/cleanable/C in T)
|
||||||
|
if(C.reagent)
|
||||||
|
reagents.add_reagent(C.reagent,1)
|
||||||
|
qdel(C)
|
||||||
|
for(var/obj/effect/overlay/puddle/P in T)
|
||||||
|
if(reagents.is_full())
|
||||||
|
visible_message("<span class='warning'>\The [src] sputters, wet tank full!</span>")
|
||||||
|
return
|
||||||
|
if(P.wet == TURF_WET_LUBE)
|
||||||
|
reagents.add_reagent(LUBE,1)
|
||||||
|
else if(P.wet == TURF_WET_WATER)
|
||||||
|
reagents.add_reagent(WATER,1)
|
||||||
|
qdel(P)
|
||||||
|
T.clean_blood()
|
||||||
|
for(var/obj/item/trash/R in T)
|
||||||
|
if(trash.len >= max_trash)
|
||||||
|
visible_message("<span class='warning'>\The [src] sputters, dry storage full!</span>")
|
||||||
|
return
|
||||||
|
R.forceMove(src)
|
||||||
|
trash += R
|
||||||
|
|
||||||
|
/obj/structure/wetdryvac/proc/can_use(mob/user, atom/target)
|
||||||
|
if(!ishigherbeing(user) && !isrobot(user) || user.incapacitated() || user.lying)
|
||||||
|
return FALSE
|
||||||
|
if(!Adjacent(user) || !user.Adjacent(target))
|
||||||
|
return FALSE
|
||||||
|
return TRUE
|
||||||
|
|
||||||
|
/obj/item/vachandle
|
||||||
|
name = "vacuum handle"
|
||||||
|
desc = "Handy. It doesn't suck per se, it merely conveys suckage."
|
||||||
|
w_class = W_CLASS_MEDIUM
|
||||||
|
icon = 'icons/obj/objects.dmi'
|
||||||
|
icon_state = "vachandle"
|
||||||
|
inhand_states = list("left_hand" = 'icons/mob/in-hand/left/misc_tools.dmi', "right_hand" = 'icons/mob/in-hand/right/misc_tools.dmi')
|
||||||
|
item_state = "vachandle"
|
||||||
|
var/obj/structure/wetdryvac/myvac
|
||||||
|
var/event_key = null
|
||||||
|
|
||||||
|
/obj/item/vachandle/New()
|
||||||
|
..()
|
||||||
|
myvac = loc
|
||||||
|
|
||||||
|
/obj/item/vachandle/Destroy()
|
||||||
|
myvac.myhandle = null
|
||||||
|
myvac = null
|
||||||
|
..()
|
||||||
|
|
||||||
|
/obj/item/vachandle/pickup(mob/user)
|
||||||
|
..()
|
||||||
|
event_key = user.on_moved.Add(src, "mob_moved")
|
||||||
|
|
||||||
|
/obj/item/vachandle/dropped(mob/user)
|
||||||
|
user.on_moved.Remove(event_key)
|
||||||
|
event_key = null
|
||||||
|
retract()
|
||||||
|
|
||||||
|
/obj/item/vachandle/proc/mob_moved(var/list/event_args, var/mob/holder)
|
||||||
|
if(myvac && get_dist(src,myvac) > 2) //Needs a little leeway because dragging isn't instant
|
||||||
|
retract()
|
||||||
|
myvac.update_icon()
|
||||||
|
|
||||||
|
/obj/item/vachandle/proc/retract()
|
||||||
|
if(loc == myvac)
|
||||||
|
return
|
||||||
|
visible_message("<span class='warning'>\The [src] snaps back into \the [myvac]!</span>")
|
||||||
|
if(ismob(loc))
|
||||||
|
var/mob/M = loc
|
||||||
|
M.drop_item(src,myvac)
|
||||||
|
else
|
||||||
|
forceMove(myvac)
|
||||||
|
|
||||||
|
/obj/item/vachandle/preattack(atom/target, mob/user , proximity)
|
||||||
|
if(!myvac)
|
||||||
|
to_chat(user, "<span class='warning'>\The [src] isn't attached to a vacuum!</span>")
|
||||||
|
return
|
||||||
|
if(!proximity || !myvac.can_use(user,target))
|
||||||
|
return
|
||||||
|
if(target == myvac)
|
||||||
|
return ..()
|
||||||
|
myvac.whrr(get_turf(target))
|
||||||
return 1
|
return 1
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 106 KiB After Width: | Height: | Size: 107 KiB |
BIN
sound/effects/vacuum.ogg
Normal file
BIN
sound/effects/vacuum.ogg
Normal file
Binary file not shown.
Reference in New Issue
Block a user