mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 10:21:11 +00:00
@@ -3078,6 +3078,7 @@ var/global/num_vending_terminals = 1
|
||||
/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/super = 4,
|
||||
/obj/structure/wetdryvac = 1,
|
||||
)
|
||||
prices = list(
|
||||
/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/storage/bag/gadgets/part_replacer/injector = 15,
|
||||
/obj/item/weapon/storage/bag/gadgets/part_replacer/injector/super = 50,
|
||||
/obj/structure/wetdryvac = 50,
|
||||
)
|
||||
|
||||
/obj/machinery/vending/trader/New()
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
anchored = 1
|
||||
amount = 1 //Basically moles.
|
||||
|
||||
reagent = FUEL
|
||||
|
||||
volatility = 0.02
|
||||
|
||||
basecolor = "#6D5757"
|
||||
|
||||
@@ -9,6 +9,7 @@ var/global/list/blood_list = list()
|
||||
gender = PLURAL
|
||||
density = 0
|
||||
anchored = 1
|
||||
reagent = BLOOD
|
||||
icon = 'icons/effects/blood.dmi'
|
||||
icon_state = "mfloor1"
|
||||
random_icon_states = list("mfloor1", "mfloor2", "mfloor3", "mfloor4", "mfloor5", "mfloor6", "mfloor7")
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
name = "ashes"
|
||||
desc = "Ashes to ashes, dust to dust, and into space."
|
||||
gender = PLURAL
|
||||
reagent = TOXIN //ash is bad for you!
|
||||
icon = 'icons/obj/objects.dmi'
|
||||
icon_state = "ash"
|
||||
anchored = 1
|
||||
@@ -34,6 +35,7 @@
|
||||
gender = PLURAL
|
||||
density = 0
|
||||
anchored = 1
|
||||
reagent = FLOUR
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
icon_state = "flour"
|
||||
|
||||
@@ -43,6 +45,7 @@
|
||||
gender = PLURAL
|
||||
density = 0
|
||||
anchored = TRUE
|
||||
reagent = RADIUM
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
icon_state = "greenglow"
|
||||
|
||||
@@ -56,6 +59,7 @@
|
||||
gender = PLURAL
|
||||
density = 0
|
||||
anchored = TRUE
|
||||
reagent = LUMINOL
|
||||
icon = 'icons/effects/blood.dmi'
|
||||
icon_state = "mfloor1"
|
||||
//icon = 'icons/effects/tomatodecal.dmi'
|
||||
@@ -74,6 +78,7 @@
|
||||
desc = "Somebody should remove that."
|
||||
density = 0
|
||||
anchored = 1
|
||||
reagent = SPIDERS //no way this can go wrong, right?
|
||||
plane = ABOVE_HUMAN_PLANE
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
icon_state = "cobweb1"
|
||||
@@ -83,6 +88,7 @@
|
||||
desc = "It looks like a melted... something."
|
||||
density = 0
|
||||
anchored = 1
|
||||
reagent = CHEMICAL_WASTE
|
||||
layer = OBJ_LAYER
|
||||
plane = OBJ_PLANE
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
@@ -94,6 +100,7 @@
|
||||
desc = "Somebody should remove that."
|
||||
density = 0
|
||||
anchored = 1
|
||||
reagent = SPIDERS
|
||||
plane = ABOVE_HUMAN_PLANE
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
icon_state = "cobweb2"
|
||||
@@ -105,6 +112,7 @@
|
||||
gender = PLURAL
|
||||
density = 0
|
||||
anchored = 1
|
||||
reagent = VOMIT
|
||||
icon = 'icons/effects/blood.dmi'
|
||||
icon_state = "vomit_1"
|
||||
|
||||
@@ -161,6 +169,7 @@
|
||||
desc = "It's red."
|
||||
density = 0
|
||||
anchored = 1
|
||||
reagent = TOMATOJUICE
|
||||
icon = 'icons/effects/tomatodecal.dmi'
|
||||
random_icon_states = list("tomato_floor1", "tomato_floor2", "tomato_floor3")
|
||||
|
||||
@@ -178,6 +187,7 @@
|
||||
desc = "Seems like this one won't hatch."
|
||||
density = 0
|
||||
anchored = 1
|
||||
//reagent = EGGYOLK (not in yet)
|
||||
icon = 'icons/effects/tomatodecal.dmi'
|
||||
random_icon_states = list("smashed_egg1", "smashed_egg2", "smashed_egg3")
|
||||
|
||||
@@ -204,6 +214,7 @@
|
||||
desc = "This burnt-out campfire reminds you of someone."
|
||||
anchored = 1
|
||||
density = 0
|
||||
reagent = TOXIN //ash is bad for you!
|
||||
icon = 'icons/obj/atmos.dmi'
|
||||
icon_state = "campfire_burnt"
|
||||
|
||||
@@ -241,6 +252,7 @@
|
||||
gender = PLURAL
|
||||
density = 0
|
||||
anchored = 1
|
||||
reagent = TOXIN //ash is bad for you!
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
icon_state = "lspaceclutter"
|
||||
|
||||
@@ -249,6 +261,7 @@
|
||||
desc = "A disgusting mess."
|
||||
icon = 'icons/mob/animal.dmi'
|
||||
icon_state = "cockroach_remains1"
|
||||
reagent = ROACHSHELL
|
||||
|
||||
/obj/effect/decal/cleanable/cockroach_remains/New()
|
||||
..()
|
||||
@@ -265,6 +278,7 @@
|
||||
desc = "Looks like some one has butter fingers."
|
||||
icon = 'icons/effects/tomatodecal.dmi'
|
||||
icon_state = "smashed_butter"
|
||||
reagent = LIQUIDBUTTER
|
||||
|
||||
/obj/effect/decal/cleanable/virusdish
|
||||
name = "broken virus containment dish"
|
||||
@@ -272,6 +286,7 @@
|
||||
icon_state = "brokendish-outline"
|
||||
density = 0
|
||||
anchored = 1
|
||||
reagent = VIRUSFOOD
|
||||
mouse_opacity = 1
|
||||
layer = OBJ_LAYER
|
||||
plane = OBJ_PLANE
|
||||
|
||||
@@ -7,6 +7,8 @@ var/list/infected_cleanables = list()
|
||||
w_type = NOT_RECYCLABLE
|
||||
anchored = 1
|
||||
|
||||
var/reagent = null //what reagent did we come from? for wet/dry vac
|
||||
|
||||
// For tracking shit across the floor.
|
||||
var/amount = 0 // 0 = don't track
|
||||
var/counts_as_blood = 0 // Cult
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "rune"
|
||||
desc = "A rune drawn in crayon."
|
||||
icon = 'icons/obj/rune.dmi'
|
||||
|
||||
reagent = COLORFUL_REAGENT
|
||||
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")
|
||||
|
||||
@@ -76,6 +76,10 @@
|
||||
lifespan = world.time + new_lifespan
|
||||
processing_objects.Add(src)
|
||||
|
||||
/obj/effect/overlay/puddle/Destroy()
|
||||
processing_objects.Remove(src)
|
||||
..()
|
||||
|
||||
/obj/effect/overlay/puddle/process()
|
||||
if(world.time >= lifespan)
|
||||
qdel(src)
|
||||
|
||||
@@ -753,6 +753,7 @@
|
||||
else
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/mech_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."
|
||||
@@ -785,4 +786,175 @@
|
||||
else
|
||||
to_chat(user,"<span class='notice'>You stop modifying the exosuit.</span>")
|
||||
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
|
||||
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