mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-31 09:09:49 +01:00
Merge branch 'release' of https://github.com/VOREStation/VOREStation
# Conflicts: # code/_helpers/unsorted.dm # code/modules/events/event_container_vr.dm # icons/misc/title_vr.dmi # interface/skin.dmf # vorestation.dme
This commit is contained in:
@@ -114,6 +114,7 @@
|
||||
/obj/item/device/flash,
|
||||
/obj/item/weapon/melee/baton/loaded,
|
||||
/obj/item/weapon/gun/magnetic/railgun/heater/pistol/hos,
|
||||
/obj/item/weapon/rcd_ammo/large,
|
||||
/obj/item/weapon/cell/device/weapon,
|
||||
/obj/item/clothing/accessory/holster/waist,
|
||||
/obj/item/weapon/melee/telebaton,
|
||||
|
||||
@@ -222,6 +222,44 @@
|
||||
icon_state = "plant-01"
|
||||
|
||||
plane = OBJ_PLANE
|
||||
var/obj/item/stored_item
|
||||
|
||||
/obj/structure/flora/pottedplant/examine(mob/user)
|
||||
..()
|
||||
if(in_range(user, src) && stored_item)
|
||||
to_chat(user, "<i>You can see something in there...</i>")
|
||||
|
||||
/obj/structure/flora/pottedplant/attackby(obj/item/I, mob/user)
|
||||
if(stored_item)
|
||||
to_chat(user, "<span class='notice'>[I] won't fit in. There already appears to be something in here...</span>")
|
||||
return
|
||||
|
||||
if(I.w_class > ITEMSIZE_TINY)
|
||||
to_chat(user, "<span class='notice'>[I] is too big to fit inside [src].</span>")
|
||||
return
|
||||
|
||||
if(do_after(user, 10))
|
||||
user.drop_from_inventory(I, src)
|
||||
I.forceMove(src)
|
||||
stored_item = I
|
||||
src.visible_message("\icon[src] \icon[I] [user] places [I] into [src].")
|
||||
return
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You refrain from putting things into the plant pot.</span>")
|
||||
return
|
||||
|
||||
..()
|
||||
|
||||
/obj/structure/flora/pottedplant/attack_hand(mob/user)
|
||||
if(!stored_item)
|
||||
to_chat(user, "<b>You see nothing of interest in [src]...</b>")
|
||||
else
|
||||
if(do_after(user, 10))
|
||||
to_chat(user, "You find \icon[stored_item] [stored_item] in [src]!")
|
||||
stored_item.forceMove(get_turf(src))
|
||||
stored_item = null
|
||||
..()
|
||||
|
||||
|
||||
/obj/structure/flora/pottedplant/large
|
||||
name = "large potted plant"
|
||||
|
||||
@@ -25,7 +25,7 @@ GLOBAL_LIST_BOILERPLATE(all_janitorial_carts, /obj/structure/janitorialcart)
|
||||
|
||||
/obj/structure/janitorialcart/examine(mob/user)
|
||||
if(..(user, 1))
|
||||
to_chat(user, "[src] \icon[src] contains [reagents.total_volume] unit\s of liquid!")
|
||||
to_chat(user, "[src] [bicon(src)] contains [reagents.total_volume] unit\s of liquid!")
|
||||
//everything else is visible, so doesn't need to be mentioned
|
||||
|
||||
|
||||
@@ -189,7 +189,7 @@ GLOBAL_LIST_BOILERPLATE(all_janitorial_carts, /obj/structure/janitorialcart)
|
||||
if(!..(user, 1))
|
||||
return
|
||||
|
||||
to_chat(user, "\icon[src] This [callme] contains [reagents.total_volume] unit\s of water!")
|
||||
to_chat(user, "[bicon(src)] This [callme] contains [reagents.total_volume] unit\s of water!")
|
||||
if(mybag)
|
||||
to_chat(user, "\A [mybag] is hanging on the [callme].")
|
||||
|
||||
|
||||
@@ -0,0 +1,444 @@
|
||||
/obj/structure/medical_stand
|
||||
name = "medical stand"
|
||||
icon = 'icons/obj/medical_stand_vr.dmi'
|
||||
desc = "Medical stand used to hang reagents for transfusion and to hold anesthetic tank."
|
||||
icon_state = "medical_stand_empty"
|
||||
|
||||
//gas stuff
|
||||
var/obj/item/weapon/tank/tank
|
||||
var/mob/living/carbon/human/breather
|
||||
var/obj/item/clothing/mask/breath/contained
|
||||
|
||||
var/spawn_type = null
|
||||
var/mask_type = /obj/item/clothing/mask/breath/medical
|
||||
|
||||
var/is_loosen = TRUE
|
||||
var/valve_opened = FALSE
|
||||
//blood stuff
|
||||
var/mob/living/carbon/attached
|
||||
var/mode = 1 // 1 is injecting, 0 is taking blood.
|
||||
var/obj/item/weapon/reagent_containers/beaker
|
||||
var/list/transfer_amounts = list(REM, 1, 2)
|
||||
var/transfer_amount = 1
|
||||
|
||||
/obj/structure/medical_stand/New()
|
||||
..()
|
||||
if (spawn_type)
|
||||
tank = new spawn_type (src)
|
||||
contained = new mask_type (src)
|
||||
update_icon()
|
||||
|
||||
/obj/structure/medical_stand/update_icon()
|
||||
overlays.Cut()
|
||||
|
||||
if (tank)
|
||||
if (breather)
|
||||
overlays += "tube_active"
|
||||
else
|
||||
overlays += "tube"
|
||||
if(istype(tank,/obj/item/weapon/tank/anesthetic))
|
||||
overlays += "tank_anest"
|
||||
else if(istype(tank,/obj/item/weapon/tank/nitrogen))
|
||||
overlays += "tank_nitro"
|
||||
else if(istype(tank,/obj/item/weapon/tank/oxygen))
|
||||
overlays += "tank_oxyg"
|
||||
else if(istype(tank,/obj/item/weapon/tank/phoron))
|
||||
overlays += "tank_plasma"
|
||||
//else if(istype(tank,/obj/item/weapon/tank/hydrogen))
|
||||
// overlays += "tank_hydro"
|
||||
else
|
||||
overlays += "tank_other"
|
||||
|
||||
if(beaker)
|
||||
overlays += "beaker"
|
||||
if(attached)
|
||||
overlays += "line_active"
|
||||
else
|
||||
overlays += "line"
|
||||
var/datum/reagents/reagents = beaker.reagents
|
||||
var/percent = round((reagents.total_volume / beaker.volume) * 100)
|
||||
if(reagents.total_volume)
|
||||
var/image/filling = image('icons/obj/medical_stand_vr.dmi', src, "reagent")
|
||||
|
||||
switch(percent)
|
||||
if(10 to 24) filling.icon_state = "reagent10"
|
||||
if(25 to 49) filling.icon_state = "reagent25"
|
||||
if(50 to 74) filling.icon_state = "reagent50"
|
||||
if(75 to 79) filling.icon_state = "reagent75"
|
||||
if(80 to 90) filling.icon_state = "reagent80"
|
||||
if(91 to INFINITY) filling.icon_state = "reagent100"
|
||||
if (filling.icon)
|
||||
filling.icon += reagents.get_color()
|
||||
overlays += filling
|
||||
|
||||
/obj/structure/medical_stand/Destroy()
|
||||
STOP_PROCESSING(SSobj,src)
|
||||
if(breather)
|
||||
breather.internal = null
|
||||
breather.internals?.icon_state = "internal0"
|
||||
if(tank)
|
||||
qdel(tank)
|
||||
if(breather)
|
||||
breather.remove_from_mob(contained)
|
||||
src.visible_message("<span class='notice'>The mask rapidly retracts just before /the [src] is destroyed!</span>")
|
||||
qdel(contained)
|
||||
contained = null
|
||||
breather = null
|
||||
|
||||
attached = null
|
||||
qdel(beaker)
|
||||
beaker = null
|
||||
return ..()
|
||||
|
||||
/obj/structure/medical_stand/attack_robot(var/mob/user)
|
||||
if(Adjacent(user))
|
||||
attack_hand(user)
|
||||
|
||||
/obj/structure/medical_stand/MouseDrop(var/mob/living/carbon/human/target, src_location, over_location)
|
||||
..()
|
||||
if(istype(target))
|
||||
if(usr.stat == DEAD || !CanMouseDrop(target))
|
||||
return
|
||||
var/list/available_options = list()
|
||||
if (tank)
|
||||
available_options += "Gas mask"
|
||||
if (beaker)
|
||||
available_options += "Drip needle"
|
||||
|
||||
var/action_type
|
||||
if(available_options.len > 1)
|
||||
action_type = input(usr, "What do you want to attach/detach?") as null|anything in available_options
|
||||
else if(available_options.len)
|
||||
action_type = available_options[1]
|
||||
if(usr.stat == DEAD || !CanMouseDrop(target))
|
||||
return
|
||||
switch (action_type)
|
||||
if("Gas mask")
|
||||
if(!can_apply_to_target(target, usr)) // There is no point in attempting to apply a mask if it's impossible.
|
||||
return
|
||||
if (breather)
|
||||
src.add_fingerprint(usr)
|
||||
if(!do_mob(usr, target, 30) || !can_apply_to_target(target, usr))
|
||||
return
|
||||
if(tank)
|
||||
tank.forceMove(src)
|
||||
if (breather.wear_mask == contained)
|
||||
breather.remove_from_mob(contained)
|
||||
contained.forceMove(src)
|
||||
else
|
||||
qdel(contained)
|
||||
contained = new mask_type(src)
|
||||
breather = null
|
||||
src.visible_message("<span class='notice'>\The [contained] slips to \the [src]!</span>")
|
||||
update_icon()
|
||||
return
|
||||
usr.visible_message("<span class='notice'>\The [usr] begins carefully placing the mask onto [target].</span>",
|
||||
"<span class='notice'>You begin carefully placing the mask onto [target].</span>")
|
||||
if(!do_mob(usr, target, 100) || !can_apply_to_target(target, usr))
|
||||
return
|
||||
// place mask and add fingerprints
|
||||
usr.visible_message("<span class='notice'>\The [usr] has placed \the mask on [target]'s mouth.</span>",
|
||||
"<span class='notice'>You have placed \the mask on [target]'s mouth.</span>")
|
||||
if(attach_mask(target))
|
||||
src.add_fingerprint(usr)
|
||||
update_icon()
|
||||
START_PROCESSING(SSobj,src)
|
||||
return
|
||||
if("Drip needle")
|
||||
if(attached)
|
||||
if(!do_mob(usr, target, 20))
|
||||
return
|
||||
visible_message("\The [attached] is taken off \the [src]")
|
||||
attached = null
|
||||
else if(ishuman(target))
|
||||
usr.visible_message("<span class='notice'>\The [usr] begins inserting needle into [target]'s vein.</span>",
|
||||
"<span class='notice'>You begin inserting needle into [target]'s vein.</span>")
|
||||
if(!do_mob(usr, target, 50))
|
||||
usr.visible_message("<span class='notice'>\The [usr]'s hand slips and pricks \the [target].</span>",
|
||||
"<span class='notice'>Your hand slips and pricks \the [target].</span>")
|
||||
target.apply_damage(3, BRUTE, pick(BP_R_ARM, BP_L_ARM))
|
||||
return
|
||||
usr.visible_message("<span class='notice'>\The [usr] hooks \the [target] up to \the [src].</span>",
|
||||
"<span class='notice'>You hook \the [target] up to \the [src].</span>")
|
||||
attached = target
|
||||
START_PROCESSING(SSobj,src)
|
||||
update_icon()
|
||||
|
||||
|
||||
/obj/structure/medical_stand/attack_hand(mob/user as mob)
|
||||
var/list/available_options = list()
|
||||
if (tank)
|
||||
available_options += "Toggle valve"
|
||||
available_options += "Remove tank"
|
||||
if (beaker)
|
||||
available_options += "Remove vessel"
|
||||
|
||||
var/action_type
|
||||
if(available_options.len > 1)
|
||||
action_type = input(user, "What do you want to do?") as null|anything in available_options
|
||||
else if(available_options.len)
|
||||
action_type = available_options[1]
|
||||
switch (action_type)
|
||||
if ("Remove tank")
|
||||
if (!tank)
|
||||
to_chat(user, "<span class='warning'>There is no tank in \the [src]!</span>")
|
||||
return
|
||||
else if (tank && is_loosen)
|
||||
user.visible_message("<span class='notice'>\The [user] removes \the [tank] from \the [src].</span>", "<span class='warning'>You remove \the [tank] from \the [src].</span</span>>")
|
||||
user.put_in_hands(tank)
|
||||
tank = null
|
||||
update_icon()
|
||||
return
|
||||
else if (!is_loosen)
|
||||
user.visible_message("<span class='notice'>\The [user] tries to removes \the [tank] from \the [src] but it won't budge.</span>", "<span class='warning'>You try to removes \the [tank] from \the [src] but it won't budge.</span</span>>")
|
||||
return
|
||||
if ("Toggle valve")
|
||||
if (!tank)
|
||||
to_chat(user, "<span class='warning'>There is no tank in \the [src]!</span>")
|
||||
return
|
||||
else
|
||||
if (valve_opened)
|
||||
src.visible_message("<span class='notice'>\The [user] closes valve on \the [src]!</span>",
|
||||
"<span class='notice'>You close valve on \the [src].</span>")
|
||||
if(breather)
|
||||
breather.internals?.icon_state = "internal0"
|
||||
breather.internal = null
|
||||
valve_opened = FALSE
|
||||
update_icon()
|
||||
else
|
||||
src.visible_message("<span class='notice'>\The [user] opens valve on \the [src]!</span>",
|
||||
"<span class='notice'>You open valve on \the [src].</span>")
|
||||
if(breather)
|
||||
breather.internal = tank
|
||||
breather.internals?.icon_state = "internal1"
|
||||
valve_opened = TRUE
|
||||
//playsound(get_turf(src), 'sound/effects/internals.ogg', 100, 1)
|
||||
update_icon()
|
||||
START_PROCESSING(SSobj,src)
|
||||
if ("Remove vessel")
|
||||
if(beaker)
|
||||
beaker.forceMove(loc)
|
||||
beaker = null
|
||||
update_icon()
|
||||
|
||||
/obj/structure/medical_stand/verb/toggle_mode()
|
||||
set category = "Object"
|
||||
set name = "Toggle IV Mode"
|
||||
set src in view(1)
|
||||
|
||||
if(!istype(usr, /mob/living))
|
||||
to_chat(usr, "<span class='warning'>You can't do that.</span>")
|
||||
return
|
||||
|
||||
if(usr.incapacitated())
|
||||
return
|
||||
|
||||
mode = !mode
|
||||
to_chat(usr, "The IV drip is now [mode ? "injecting" : "taking blood"].")
|
||||
|
||||
/obj/structure/medical_stand/verb/set_APTFT()
|
||||
set name = "Set IV transfer amount"
|
||||
set category = "Object"
|
||||
set src in range(1)
|
||||
var/N = input("Amount per transfer from this:","[src]") as null|anything in transfer_amounts
|
||||
if(N)
|
||||
transfer_amount = N
|
||||
|
||||
/obj/structure/medical_stand/proc/attach_mask(var/mob/living/carbon/C)
|
||||
if(C && istype(C))
|
||||
if(C.equip_to_slot_if_possible(contained, slot_wear_mask))
|
||||
if(tank)
|
||||
tank.forceMove(C)
|
||||
breather = C
|
||||
return TRUE
|
||||
|
||||
/obj/structure/medical_stand/proc/can_apply_to_target(var/mob/living/carbon/human/target, var/mob/user)
|
||||
if(!user)
|
||||
user = target
|
||||
// Check target validity
|
||||
if(!istype(target))
|
||||
to_chat(user, "<span class='warning'>\The [target] not compatible with machine.</span>")
|
||||
return
|
||||
if(!target.organs_by_name[BP_HEAD])
|
||||
to_chat(user, "<span class='warning'>\The [target] doesn't have a head.</span>")
|
||||
return
|
||||
if(!target.check_has_mouth())
|
||||
to_chat(user, "<span class='warning'>\The [target] doesn't have a mouth.</span>")
|
||||
return
|
||||
if(target.wear_mask && target != breather)
|
||||
to_chat(user, "<span class='warning'>\The [target] is already wearing a mask.</span>")
|
||||
return
|
||||
if(target.head && (target.head.body_parts_covered & FACE))
|
||||
to_chat(user, "<span class='warning'>Remove their [target.head] first.</span>")
|
||||
return
|
||||
if(!tank)
|
||||
to_chat(user, "<span class='warning'>There is no tank in \the [src].</span>")
|
||||
return
|
||||
if(is_loosen)
|
||||
to_chat(user, "<span class='warning'>Tighten \the nut with a wrench first.</span>")
|
||||
return
|
||||
if(!Adjacent(target))
|
||||
return
|
||||
//when there is a breather:
|
||||
if(breather && target != breather)
|
||||
to_chat(user, "<span class='warning'>\The [src] is already in use.</span>")
|
||||
return
|
||||
//Checking if breather is still valid
|
||||
if(target == breather && target.wear_mask != contained)
|
||||
to_chat(user, "<span class='warning'>\The [target] is not using the supplied mask.</span>")
|
||||
return
|
||||
return 1
|
||||
|
||||
/obj/structure/medical_stand/attackby(var/obj/item/weapon/W, var/mob/user)
|
||||
if(istype (W, /obj/item/weapon/tool))
|
||||
if (valve_opened)
|
||||
to_chat(user, "<span class='warning'>Close the valve first.</span>")
|
||||
return
|
||||
if (tank)
|
||||
if(!W.is_wrench())
|
||||
return
|
||||
if (!is_loosen)
|
||||
is_loosen = TRUE
|
||||
else
|
||||
is_loosen = FALSE
|
||||
if (valve_opened)
|
||||
START_PROCESSING(SSobj,src)
|
||||
user.visible_message(
|
||||
"<span class='notice'>The [user] [is_loosen == TRUE ? "loosen" : "tighten"] the nut holding [tank] in place.</span>",
|
||||
"<span class='notice'>You [is_loosen == TRUE ? "loosen" : "tighten"] the nut holding [tank] in place.</span>")
|
||||
|
||||
else
|
||||
to_chat(user, "<span class='warning'>There is no tank in \the [src].</span>")
|
||||
|
||||
else if(istype(W, /obj/item/weapon/tank))
|
||||
if(tank)
|
||||
to_chat(user, "<span class='warning'>\The [src] already has a tank installed!</span>")
|
||||
else if(!is_loosen)
|
||||
to_chat(user, "<span class='warning'>Loosen the nut with a wrench first.</span>")
|
||||
else
|
||||
user.drop_item()
|
||||
W.forceMove(src)
|
||||
tank = W
|
||||
user.visible_message("<span class='notice'>\The [user] attaches \the [tank] to \the [src].</span>", "<span class='notice'>You attach \the [tank] to \the [src].</span>")
|
||||
src.add_fingerprint(user)
|
||||
update_icon()
|
||||
|
||||
else if (istype(W, /obj/item/weapon/reagent_containers))
|
||||
if(!isnull(src.beaker))
|
||||
to_chat(user, "There is already a reagent container loaded!")
|
||||
return
|
||||
user.drop_item()
|
||||
W.forceMove(src)
|
||||
beaker = W
|
||||
to_chat(user, "You attach \the [W] to \the [src].")
|
||||
update_icon()
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/structure/medical_stand/examine(var/mob/user)
|
||||
. = ..()
|
||||
|
||||
if (get_dist(src, user) > 2)
|
||||
return
|
||||
|
||||
if(beaker)
|
||||
to_chat(user, "The IV drip is [mode ? "injecting" : "taking blood"].")
|
||||
to_chat(user, "It is set to transfer [transfer_amount]u of chemicals per cycle.")
|
||||
if(beaker.reagents && beaker.reagents.total_volume)
|
||||
to_chat(user, "<span class='notice'>Attached is \a [beaker] with [beaker.reagents.total_volume] units of liquid.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>Attached is an empty [beaker].</span>")
|
||||
to_chat(user, "<span class='notice'>[attached ? attached : "No one"] is hooked up to it.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>There is no vessel.</span>")
|
||||
|
||||
if(tank)
|
||||
if (!is_loosen)
|
||||
to_chat(user, "\The [tank] connected.")
|
||||
to_chat(user, "The meter shows [round(tank.air_contents.return_pressure())]. The valve is [valve_opened == TRUE ? "open" : "closed"].")
|
||||
if (tank.distribute_pressure == 0)
|
||||
to_chat(user, "Use wrench to replace tank.")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>There is no tank.</span>")
|
||||
|
||||
/obj/structure/medical_stand/process()
|
||||
//Gas Stuff
|
||||
if(breather)
|
||||
if(!can_apply_to_target(breather))
|
||||
if(tank)
|
||||
tank.forceMove(src)
|
||||
if (breather.wear_mask == contained)
|
||||
breather.remove_from_mob(contained)
|
||||
contained.forceMove(src)
|
||||
else
|
||||
qdel(contained)
|
||||
contained = new mask_type (src)
|
||||
src.visible_message("<span class='notice'>\The [contained] slips to \the [src]!</span>")
|
||||
breather = null
|
||||
update_icon()
|
||||
return
|
||||
if(valve_opened)
|
||||
if (tank)
|
||||
breather.internal = tank
|
||||
breather.internals?.icon_state = "internal1"
|
||||
else
|
||||
breather.internals?.icon_state = "internal0"
|
||||
breather.internal = null
|
||||
else if (valve_opened)
|
||||
var/datum/gas_mixture/removed = tank.remove_air(0.01)
|
||||
var/datum/gas_mixture/environment = loc.return_air()
|
||||
environment.merge(removed)
|
||||
|
||||
//Reagent Stuff
|
||||
if(attached)
|
||||
if(!Adjacent(attached))
|
||||
visible_message("The needle is ripped out of [src.attached], doesn't that hurt?")
|
||||
attached.apply_damage(3, BRUTE, pick(BP_R_ARM, BP_L_ARM))
|
||||
attached = null
|
||||
update_icon()
|
||||
|
||||
if(beaker)
|
||||
if(mode) // Give blood
|
||||
if(beaker.volume > 0)
|
||||
beaker.reagents.trans_to_mob(attached, transfer_amount, CHEM_BLOOD)
|
||||
update_icon()
|
||||
else // Take blood
|
||||
var/amount = beaker.reagents.maximum_volume - beaker.reagents.total_volume
|
||||
amount = min(amount, 4)
|
||||
|
||||
if(amount == 0) // If the beaker is full, ping
|
||||
if(prob(5)) visible_message("\The [src] pings.")
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/H = attached
|
||||
if(!istype(H))
|
||||
return
|
||||
if(!H.dna)
|
||||
return
|
||||
if(NOCLONE in H.mutations)
|
||||
return
|
||||
if(H.species.flags & NO_BLOOD)
|
||||
return
|
||||
if(!H.should_have_organ(O_HEART))
|
||||
return
|
||||
|
||||
// If the human is losing too much blood, beep.
|
||||
if(((H.vessel.get_reagent_amount("blood")/H.species.blood_volume)*100) < BLOOD_VOLUME_SAFE)
|
||||
visible_message("\The [src] beeps loudly.")
|
||||
|
||||
var/datum/reagent/B = H.take_blood(beaker,amount)
|
||||
if (B)
|
||||
beaker.reagents.reagent_list |= B
|
||||
beaker.reagents.update_total()
|
||||
beaker.on_reagent_change()
|
||||
beaker.reagents.handle_reactions()
|
||||
update_icon()
|
||||
|
||||
if ((!valve_opened || tank.distribute_pressure == 0) && !breather && !attached)
|
||||
return PROCESS_KILL
|
||||
|
||||
/obj/structure/medical_stand/anesthetic
|
||||
spawn_type = /obj/item/weapon/tank/anesthetic
|
||||
mask_type = /obj/item/clothing/mask/breath/medical
|
||||
is_loosen = FALSE
|
||||
|
||||
@@ -18,7 +18,7 @@ GLOBAL_LIST_BOILERPLATE(all_mopbuckets, /obj/structure/mopbucket)
|
||||
|
||||
/obj/structure/mopbucket/examine(mob/user)
|
||||
if(..(user, 1))
|
||||
to_chat(user, "[src] \icon[src] contains [reagents.total_volume] unit\s of water!")
|
||||
to_chat(user, "[src] [bicon(src)] contains [reagents.total_volume] unit\s of water!")
|
||||
|
||||
/obj/structure/mopbucket/attackby(obj/item/I, mob/user)
|
||||
if(istype(I, /obj/item/weapon/mop) || istype(I, /obj/item/weapon/soap) || istype(I, /obj/item/weapon/reagent_containers/glass/rag)) //VOREStation Edit - "Allows soap and rags to be used on mopbuckets"
|
||||
|
||||
@@ -0,0 +1,366 @@
|
||||
/obj/structure/salvageable
|
||||
name = "broken macninery"
|
||||
desc = "Broken beyond repair, but looks like you can still salvage something from this if you had a prying implement."
|
||||
icon = 'icons/obj/salvageable.dmi'
|
||||
density = 1
|
||||
anchored = 1
|
||||
var/salvageable_parts = list()
|
||||
|
||||
/obj/structure/salvageable/proc/dismantle()
|
||||
new /obj/structure/frame (src.loc)
|
||||
for(var/path in salvageable_parts)
|
||||
if(prob(salvageable_parts[path]))
|
||||
new path (loc)
|
||||
return
|
||||
|
||||
/obj/structure/salvageable/attackby(obj/item/I, mob/user)
|
||||
if(I.is_crowbar())
|
||||
playsound(loc, I.usesound, 50, 1)
|
||||
var/actual_time = I.toolspeed * 170
|
||||
user.visible_message( \
|
||||
"<span class='notice'>\The [user] begins salvaging from \the [src].</span>", \
|
||||
"<span class='notice'>You start salvaging from \the [src].</span>")
|
||||
if(do_after(user, actual_time, target = src))
|
||||
user.visible_message( \
|
||||
"<span class='notice'>\The [user] has salvaged \the [src].</span>", \
|
||||
"<span class='notice'>You salvage \the [src].</span>")
|
||||
dismantle()
|
||||
qdel(src)
|
||||
return TRUE
|
||||
return ..()
|
||||
|
||||
//Types themself, use them, but not the parent object
|
||||
|
||||
/obj/structure/salvageable/machine
|
||||
name = "broken machine"
|
||||
icon_state = "machine1"
|
||||
salvageable_parts = list(
|
||||
/obj/item/weapon/stock_parts/console_screen = 80,
|
||||
/obj/item/stack/cable_coil{amount = 5} = 80,
|
||||
/obj/item/trash/material/circuit = 60,
|
||||
/obj/item/trash/material/metal = 60,
|
||||
/obj/item/weapon/stock_parts/capacitor = 40,
|
||||
/obj/item/weapon/stock_parts/capacitor = 40,
|
||||
/obj/item/weapon/stock_parts/scanning_module = 40,
|
||||
/obj/item/weapon/stock_parts/scanning_module = 40,
|
||||
/obj/item/weapon/stock_parts/manipulator = 40,
|
||||
/obj/item/weapon/stock_parts/manipulator = 40,
|
||||
/obj/item/weapon/stock_parts/micro_laser = 40,
|
||||
/obj/item/weapon/stock_parts/micro_laser = 40,
|
||||
/obj/item/weapon/stock_parts/matter_bin = 40,
|
||||
/obj/item/weapon/stock_parts/matter_bin = 40,
|
||||
/obj/item/weapon/stock_parts/capacitor/adv = 20,
|
||||
/obj/item/weapon/stock_parts/scanning_module/adv = 20,
|
||||
/obj/item/weapon/stock_parts/manipulator/nano = 20,
|
||||
/obj/item/weapon/stock_parts/micro_laser/high = 20,
|
||||
/obj/item/weapon/stock_parts/matter_bin/adv = 20
|
||||
)
|
||||
|
||||
/obj/structure/salvageable/machine/Initialize()
|
||||
. = ..()
|
||||
icon_state = "machine[rand(0,6)]"
|
||||
|
||||
/obj/structure/salvageable/computer
|
||||
name = "broken computer"
|
||||
icon_state = "computer0"
|
||||
salvageable_parts = list(
|
||||
/obj/item/weapon/stock_parts/console_screen = 80,
|
||||
/obj/item/stack/cable_coil{amount = 5} = 90,
|
||||
/obj/item/stack/material/glass{amount = 5} = 90,
|
||||
/obj/item/trash/material/circuit = 60,
|
||||
/obj/item/trash/material/metal = 60,
|
||||
/obj/item/weapon/stock_parts/capacitor = 60,
|
||||
/obj/item/weapon/stock_parts/capacitor = 60,
|
||||
/obj/item/weapon/computer_hardware/network_card = 40,
|
||||
/obj/item/weapon/computer_hardware/network_card = 40,
|
||||
/obj/item/weapon/computer_hardware/processor_unit = 40,
|
||||
/obj/item/weapon/computer_hardware/processor_unit = 40,
|
||||
/obj/item/weapon/computer_hardware/card_slot = 40,
|
||||
/obj/item/weapon/computer_hardware/card_slot = 40,
|
||||
/obj/item/weapon/stock_parts/capacitor/adv = 30,
|
||||
/obj/item/weapon/computer_hardware/network_card/advanced = 20
|
||||
)
|
||||
obj/structure/salvageable/computer/Initialize()
|
||||
. = ..()
|
||||
icon_state = "computer[rand(0,7)]"
|
||||
|
||||
/obj/structure/salvageable/autolathe
|
||||
name = "broken autolathe"
|
||||
icon_state = "autolathe"
|
||||
salvageable_parts = list(
|
||||
/obj/item/weapon/stock_parts/console_screen = 80,
|
||||
/obj/item/stack/cable_coil{amount = 5} = 80,
|
||||
/obj/item/trash/material/circuit = 60,
|
||||
/obj/item/trash/material/metal = 60,
|
||||
/obj/item/weapon/stock_parts/capacitor = 40,
|
||||
/obj/item/weapon/stock_parts/scanning_module = 40,
|
||||
/obj/item/weapon/stock_parts/manipulator = 40,
|
||||
/obj/item/weapon/stock_parts/micro_laser = 40,
|
||||
/obj/item/weapon/stock_parts/micro_laser = 40,
|
||||
/obj/item/weapon/stock_parts/micro_laser = 40,
|
||||
/obj/item/weapon/stock_parts/matter_bin = 40,
|
||||
/obj/item/weapon/stock_parts/matter_bin = 40,
|
||||
/obj/item/weapon/stock_parts/matter_bin = 40,
|
||||
/obj/item/weapon/stock_parts/matter_bin = 40,
|
||||
/obj/item/weapon/stock_parts/capacitor/adv = 20,
|
||||
/obj/item/weapon/stock_parts/micro_laser/high = 20,
|
||||
/obj/item/weapon/stock_parts/micro_laser/high = 20,
|
||||
/obj/item/weapon/stock_parts/matter_bin/adv = 20,
|
||||
/obj/item/weapon/stock_parts/matter_bin/adv = 20,
|
||||
/obj/item/stack/material/steel{amount = 20} = 40,
|
||||
/obj/item/stack/material/glass{amount = 20} = 40,
|
||||
/obj/item/stack/material/plastic{amount = 20} = 40,
|
||||
/obj/item/stack/material/plasteel{amount = 10} = 40,
|
||||
/obj/item/stack/material/silver{amount = 10} = 20,
|
||||
/obj/item/stack/material/gold{amount = 10} = 20,
|
||||
/obj/item/stack/material/phoron{amount = 10} = 20
|
||||
)
|
||||
|
||||
/obj/structure/salvageable/implant_container
|
||||
name = "old container"
|
||||
icon_state = "implant_container0"
|
||||
salvageable_parts = list(
|
||||
/obj/item/weapon/stock_parts/console_screen = 80,
|
||||
/obj/item/stack/cable_coil{amount = 5} = 80,
|
||||
/obj/item/trash/material/circuit = 60,
|
||||
/obj/item/trash/material/metal = 60,
|
||||
/obj/item/weapon/implant/death_alarm = 15,
|
||||
/obj/item/weapon/implant/explosive = 10,
|
||||
/obj/item/weapon/implant/freedom = 5,
|
||||
/obj/item/weapon/implant/tracking = 10,
|
||||
/obj/item/weapon/implant/chem = 10,
|
||||
/obj/item/weapon/implantcase = 30,
|
||||
/obj/item/weapon/implanter = 30,
|
||||
/obj/item/stack/material/steel{amount = 10} = 30,
|
||||
/obj/item/stack/material/glass{amount = 10} = 30,
|
||||
/obj/item/stack/material/silver{amount = 10} = 30
|
||||
)
|
||||
|
||||
obj/structure/salvageable/implant_container/Initialize()
|
||||
. = ..()
|
||||
icon_state = "implant_container[rand(0,1)]"
|
||||
|
||||
/obj/structure/salvageable/data
|
||||
name = "broken data storage"
|
||||
icon_state = "data0"
|
||||
salvageable_parts = list(
|
||||
/obj/item/weapon/stock_parts/console_screen = 80,
|
||||
/obj/item/stack/cable_coil{amount = 5} = 90,
|
||||
/obj/item/stack/material/glass{amount = 5} = 90,
|
||||
/obj/item/trash/material/circuit = 60,
|
||||
/obj/item/trash/material/metal = 60,
|
||||
/obj/item/weapon/computer_hardware/network_card = 40,
|
||||
/obj/item/weapon/computer_hardware/network_card = 40,
|
||||
/obj/item/weapon/computer_hardware/processor_unit = 40,
|
||||
/obj/item/weapon/computer_hardware/processor_unit = 40,
|
||||
/obj/item/weapon/computer_hardware/hard_drive = 50,
|
||||
/obj/item/weapon/computer_hardware/hard_drive = 50,
|
||||
/obj/item/weapon/computer_hardware/hard_drive = 50,
|
||||
/obj/item/weapon/computer_hardware/hard_drive = 50,
|
||||
/obj/item/weapon/computer_hardware/hard_drive = 50,
|
||||
/obj/item/weapon/computer_hardware/hard_drive = 50,
|
||||
/obj/item/weapon/computer_hardware/hard_drive/advanced = 30,
|
||||
/obj/item/weapon/computer_hardware/hard_drive/advanced = 30,
|
||||
/obj/item/weapon/computer_hardware/network_card/advanced = 20
|
||||
)
|
||||
|
||||
obj/structure/salvageable/data/Initialize()
|
||||
. = ..()
|
||||
icon_state = "data[rand(0,1)]"
|
||||
|
||||
/obj/structure/salvageable/server
|
||||
name = "broken server"
|
||||
icon_state = "server0"
|
||||
salvageable_parts = list(
|
||||
/obj/item/weapon/stock_parts/console_screen = 80,
|
||||
/obj/item/stack/cable_coil{amount = 5} = 90,
|
||||
/obj/item/stack/material/glass{amount = 5} = 90,
|
||||
/obj/item/trash/material/circuit = 60,
|
||||
/obj/item/trash/material/metal = 60,
|
||||
/obj/item/weapon/computer_hardware/network_card = 40,
|
||||
/obj/item/weapon/computer_hardware/network_card = 40,
|
||||
/obj/item/weapon/computer_hardware/processor_unit = 40,
|
||||
/obj/item/weapon/computer_hardware/processor_unit = 40,
|
||||
/obj/item/weapon/stock_parts/subspace/amplifier = 40,
|
||||
/obj/item/weapon/stock_parts/subspace/amplifier = 40,
|
||||
/obj/item/weapon/stock_parts/subspace/analyzer = 40,
|
||||
/obj/item/weapon/stock_parts/subspace/analyzer = 40,
|
||||
/obj/item/weapon/stock_parts/subspace/ansible = 40,
|
||||
/obj/item/weapon/stock_parts/subspace/ansible = 40,
|
||||
/obj/item/weapon/stock_parts/subspace/transmitter = 40,
|
||||
/obj/item/weapon/stock_parts/subspace/transmitter = 40,
|
||||
/obj/item/weapon/stock_parts/subspace/crystal = 30,
|
||||
/obj/item/weapon/stock_parts/subspace/crystal = 30,
|
||||
/obj/item/weapon/computer_hardware/network_card/advanced = 20
|
||||
)
|
||||
|
||||
obj/structure/salvageable/server/Initialize()
|
||||
. = ..()
|
||||
icon_state = "server[rand(0,1)]"
|
||||
|
||||
/obj/structure/salvageable/personal
|
||||
name = "personal terminal"
|
||||
icon_state = "personal0"
|
||||
salvageable_parts = list(
|
||||
/obj/item/weapon/stock_parts/console_screen = 90,
|
||||
/obj/item/stack/cable_coil{amount = 5} = 90,
|
||||
/obj/item/stack/material/glass{amount = 5} = 70,
|
||||
/obj/item/trash/material/circuit = 60,
|
||||
/obj/item/trash/material/metal = 60,
|
||||
/obj/item/weapon/computer_hardware/network_card = 60,
|
||||
/obj/item/weapon/computer_hardware/network_card/advanced = 40,
|
||||
/obj/item/weapon/computer_hardware/network_card/wired = 40,
|
||||
/obj/item/weapon/computer_hardware/card_slot = 40,
|
||||
/obj/item/weapon/computer_hardware/processor_unit = 60,
|
||||
/obj/item/weapon/computer_hardware/processor_unit/small = 50,
|
||||
/obj/item/weapon/computer_hardware/processor_unit/photonic = 40,
|
||||
/obj/item/weapon/computer_hardware/processor_unit/photonic/small = 30,
|
||||
/obj/item/weapon/computer_hardware/hard_drive = 60,
|
||||
/obj/item/weapon/computer_hardware/hard_drive/advanced = 40
|
||||
)
|
||||
|
||||
obj/structure/salvageable/personal/Initialize()
|
||||
. = ..()
|
||||
icon_state = "personal[rand(0,12)]"
|
||||
new /obj/structure/table/reinforced (loc)
|
||||
|
||||
/obj/structure/salvageable/bliss
|
||||
name = "strange terminal"
|
||||
icon_state = "bliss0"
|
||||
salvageable_parts = list(
|
||||
/obj/item/weapon/stock_parts/console_screen = 90,
|
||||
/obj/item/stack/cable_coil{amount = 5} = 90,
|
||||
/obj/item/weapon/computer_hardware/processor_unit/photonic = 60,
|
||||
/obj/item/weapon/computer_hardware/hard_drive/cluster = 50
|
||||
)
|
||||
|
||||
obj/structure/salvageable/bliss/Initialize()
|
||||
. = ..()
|
||||
icon_state = "bliss[rand(0,1)]"
|
||||
|
||||
/obj/structure/salvageable/bliss/attackby(obj/item/I, mob/user)
|
||||
if((. = ..()))
|
||||
playsound(user, 'sound/machines/shutdown.ogg', 60, 1)
|
||||
|
||||
//////////////////
|
||||
//// ONE STAR ////
|
||||
//////////////////
|
||||
|
||||
/obj/structure/salvageable/machine_os
|
||||
name = "broken machine"
|
||||
icon_state = "os-machine"
|
||||
salvageable_parts = list(
|
||||
/obj/item/weapon/stock_parts/console_screen = 80,
|
||||
/obj/item/stack/cable_coil{amount = 5} = 80,
|
||||
/obj/item/weapon/stock_parts/capacitor = 40,
|
||||
/obj/item/weapon/stock_parts/capacitor = 40,
|
||||
/obj/item/weapon/stock_parts/scanning_module = 40,
|
||||
/obj/item/weapon/stock_parts/scanning_module = 40,
|
||||
/obj/item/weapon/stock_parts/manipulator = 40,
|
||||
/obj/item/weapon/stock_parts/manipulator = 40,
|
||||
/obj/item/weapon/stock_parts/micro_laser = 40,
|
||||
/obj/item/weapon/stock_parts/micro_laser = 40,
|
||||
/obj/item/weapon/stock_parts/matter_bin = 40,
|
||||
/obj/item/weapon/stock_parts/matter_bin = 40
|
||||
)
|
||||
|
||||
/obj/structure/salvageable/computer_os
|
||||
name = "broken computer"
|
||||
icon_state = "os-computer"
|
||||
salvageable_parts = list(
|
||||
/obj/item/weapon/stock_parts/console_screen = 80,
|
||||
/obj/item/stack/cable_coil{amount = 5} = 90,
|
||||
/obj/item/stack/material/glass{amount = 5} = 90,
|
||||
/obj/item/weapon/stock_parts/capacitor = 60,
|
||||
/obj/item/weapon/stock_parts/capacitor = 60,
|
||||
/obj/item/weapon/computer_hardware/processor_unit/photonic = 40,
|
||||
/obj/item/weapon/computer_hardware/processor_unit/photonic = 40,
|
||||
/obj/item/weapon/computer_hardware/card_slot = 40,
|
||||
/obj/item/weapon/computer_hardware/card_slot = 40,
|
||||
/obj/item/weapon/computer_hardware/network_card/advanced = 40
|
||||
)
|
||||
|
||||
/obj/structure/salvageable/implant_container_os
|
||||
name = "old container"
|
||||
icon_state = "os-container"
|
||||
salvageable_parts = list(
|
||||
/obj/item/weapon/stock_parts/console_screen = 80,
|
||||
/obj/item/stack/cable_coil{amount = 5} = 80,
|
||||
/obj/item/weapon/implant/death_alarm = 30,
|
||||
/obj/item/weapon/implant/explosive = 20,
|
||||
/obj/item/weapon/implant/freedom = 20,
|
||||
/obj/item/weapon/implant/tracking = 30,
|
||||
/obj/item/weapon/implant/chem = 30,
|
||||
/obj/item/weapon/implantcase = 30,
|
||||
/obj/item/weapon/implanter = 30
|
||||
)
|
||||
|
||||
/obj/structure/salvageable/data_os
|
||||
name = "broken data storage"
|
||||
icon_state = "os-data"
|
||||
salvageable_parts = list(
|
||||
/obj/item/weapon/stock_parts/console_screen = 90,
|
||||
/obj/item/stack/cable_coil{amount = 5} = 90,
|
||||
/obj/item/stack/material/glass{amount = 5} = 90,
|
||||
/obj/item/weapon/computer_hardware/processor_unit/small = 60,
|
||||
/obj/item/weapon/computer_hardware/processor_unit/photonic = 50,
|
||||
/obj/item/weapon/computer_hardware/hard_drive/super = 50,
|
||||
/obj/item/weapon/computer_hardware/hard_drive/super = 50,
|
||||
/obj/item/weapon/computer_hardware/hard_drive/cluster = 50,
|
||||
/obj/item/weapon/computer_hardware/network_card/wired = 40
|
||||
)
|
||||
|
||||
/obj/structure/salvageable/server_os
|
||||
name = "broken server"
|
||||
icon_state = "os-server"
|
||||
salvageable_parts = list(
|
||||
/obj/item/weapon/stock_parts/console_screen = 80,
|
||||
/obj/item/stack/cable_coil{amount = 5} = 90,
|
||||
/obj/item/stack/material/glass{amount = 5} = 90,
|
||||
/obj/item/weapon/computer_hardware/network_card/wired = 40,
|
||||
/obj/item/weapon/computer_hardware/network_card/wired = 40,
|
||||
/obj/item/weapon/computer_hardware/processor_unit = 40,
|
||||
/obj/item/weapon/computer_hardware/processor_unit/photonic = 40,
|
||||
/obj/item/weapon/stock_parts/subspace/amplifier = 40,
|
||||
/obj/item/weapon/stock_parts/subspace/amplifier = 40,
|
||||
/obj/item/weapon/stock_parts/subspace/analyzer = 40,
|
||||
/obj/item/weapon/stock_parts/subspace/analyzer = 40,
|
||||
/obj/item/weapon/stock_parts/subspace/ansible = 40,
|
||||
/obj/item/weapon/stock_parts/subspace/ansible = 40,
|
||||
/obj/item/weapon/stock_parts/subspace/transmitter = 40,
|
||||
/obj/item/weapon/stock_parts/subspace/transmitter = 40,
|
||||
/obj/item/weapon/stock_parts/subspace/crystal = 30,
|
||||
/obj/item/weapon/stock_parts/subspace/crystal = 30,
|
||||
/obj/item/weapon/computer_hardware/network_card/wired = 20
|
||||
)
|
||||
|
||||
/obj/structure/salvageable/console_os
|
||||
name = "pristine console"
|
||||
desc = "Despite being in pristine condition this console doesn't respond to anything, but looks like you can still salvage something from this."
|
||||
icon_state = "os_console"
|
||||
salvageable_parts = list(
|
||||
/obj/item/stack/cable_coil{amount = 5} = 90,
|
||||
/obj/item/weapon/stock_parts/console_screen = 80,
|
||||
/obj/item/weapon/stock_parts/capacitor = 60,
|
||||
/obj/item/weapon/stock_parts/capacitor = 60,
|
||||
/obj/item/weapon/computer_hardware/processor_unit/small = 40,
|
||||
/obj/item/weapon/computer_hardware/processor_unit/photonic = 40,
|
||||
/obj/item/weapon/computer_hardware/card_slot = 40,
|
||||
/obj/item/weapon/computer_hardware/card_slot = 40,
|
||||
/obj/item/weapon/computer_hardware/network_card/advanced = 40
|
||||
)
|
||||
|
||||
/obj/structure/salvageable/console_broken_os
|
||||
name = "broken console"
|
||||
icon_state = "os_console_broken"
|
||||
salvageable_parts = list(
|
||||
/obj/item/stack/cable_coil{amount = 5} = 90,
|
||||
/obj/item/weapon/stock_parts/console_screen = 80,
|
||||
/obj/item/weapon/stock_parts/capacitor = 60,
|
||||
/obj/item/weapon/stock_parts/capacitor = 60,
|
||||
/obj/item/weapon/computer_hardware/processor_unit = 40,
|
||||
/obj/item/weapon/computer_hardware/processor_unit/photonic = 40,
|
||||
/obj/item/weapon/computer_hardware/card_slot = 40,
|
||||
/obj/item/weapon/computer_hardware/card_slot = 40,
|
||||
/obj/item/weapon/computer_hardware/network_card/advanced = 40
|
||||
)
|
||||
@@ -195,7 +195,7 @@
|
||||
/obj/structure/bed/roller
|
||||
name = "roller bed"
|
||||
desc = "A portable bed-on-wheels made for transporting medical patients."
|
||||
icon = 'icons/obj/rollerbed.dmi'
|
||||
icon = 'icons/obj/rollerbed_vr.dmi' //VOREStation Edit
|
||||
icon_state = "rollerbed"
|
||||
anchored = 0
|
||||
surgery_odds = 75
|
||||
@@ -229,8 +229,9 @@
|
||||
/obj/item/roller
|
||||
name = "roller bed"
|
||||
desc = "A collapsed roller bed that can be carried around."
|
||||
icon = 'icons/obj/rollerbed.dmi'
|
||||
icon = 'icons/obj/rollerbed_vr.dmi' //VOREStation Edit
|
||||
icon_state = "folded_rollerbed"
|
||||
center_of_mass = list("x" = 17,"y" = 7)
|
||||
slot_flags = SLOT_BACK
|
||||
w_class = ITEMSIZE_LARGE
|
||||
var/rollertype = /obj/item/roller
|
||||
|
||||
@@ -125,6 +125,12 @@
|
||||
/obj/structure/bed/chair/comfy/lime/New(var/newloc,var/newmaterial)
|
||||
..(newloc,"steel","lime")
|
||||
|
||||
/obj/structure/bed/chair/comfy/yellow/New(var/newloc,var/newmaterial)
|
||||
..(newloc,"steel","yellow")
|
||||
|
||||
/obj/structure/bed/chair/comfy/orange/New(var/newloc,var/newmaterial)
|
||||
..(newloc,"steel","orange")
|
||||
|
||||
/obj/structure/bed/chair/office
|
||||
anchored = 0
|
||||
buckle_movable = 1
|
||||
@@ -272,6 +278,9 @@
|
||||
/obj/structure/bed/chair/sofa/yellow
|
||||
sofa_material = "yellow"
|
||||
|
||||
/obj/structure/bed/chair/sofa/orange
|
||||
sofa_material = "orange"
|
||||
|
||||
//sofa directions
|
||||
|
||||
/obj/structure/bed/chair/sofa/left
|
||||
@@ -363,3 +372,12 @@
|
||||
|
||||
/obj/structure/bed/chair/sofa/yellow/corner
|
||||
icon_state = "sofacorner"
|
||||
|
||||
/obj/structure/bed/chair/sofa/orange/left
|
||||
icon_state = "sofaend_left"
|
||||
|
||||
/obj/structure/bed/chair/sofa/orange/right
|
||||
icon_state = "sofaend_right"
|
||||
|
||||
/obj/structure/bed/chair/sofa/orange/corner
|
||||
icon_state = "sofacorner"
|
||||
|
||||
@@ -17,4 +17,250 @@
|
||||
plane = MOB_PLANE
|
||||
layer = MOB_LAYER + 0.1
|
||||
else
|
||||
reset_plane_and_layer()
|
||||
reset_plane_and_layer()
|
||||
|
||||
/obj/structure/bed/chair/modern_chair
|
||||
name = "modern chair"
|
||||
desc = "It's like sitting in an egg."
|
||||
icon_state = "modern_chair"
|
||||
color = null
|
||||
base_icon = "modern_chair"
|
||||
applies_material_colour = 0
|
||||
|
||||
/obj/structure/bed/chair/modern_chair/Initialize()
|
||||
. = ..()
|
||||
var/image/I = image(icon, "[base_icon]_over")
|
||||
I.layer = ABOVE_MOB_LAYER
|
||||
I.plane = MOB_PLANE
|
||||
overlays |= I
|
||||
|
||||
/obj/structure/bed/chair/bar_stool
|
||||
name = "bar stool"
|
||||
desc = "How vibrant!"
|
||||
icon_state = "modern_stool"
|
||||
color = null
|
||||
base_icon = "modern_stool"
|
||||
applies_material_colour = 0
|
||||
|
||||
/obj/structure/bed/chair/backed_grey
|
||||
name = "grey chair"
|
||||
desc = "Also available in red."
|
||||
icon_state = "onestar_chair_grey"
|
||||
color = null
|
||||
base_icon = "onestar_chair_grey"
|
||||
applies_material_colour = 0
|
||||
|
||||
/obj/structure/bed/chair/backed_red
|
||||
name = "red chair"
|
||||
desc = "Also available in grey."
|
||||
icon_state = "onestar_chair_red"
|
||||
color = null
|
||||
base_icon = "onestar_chair_red"
|
||||
applies_material_colour = 0
|
||||
|
||||
// Baystation12 chairs with their larger update_icons proc
|
||||
/obj/structure/bed/chair/bay/update_icon()
|
||||
// Strings.
|
||||
desc = initial(desc)
|
||||
if(padding_material)
|
||||
name = "[padding_material.display_name] [initial(name)]" //this is not perfect but it will do for now.
|
||||
desc += " It's made of [material.use_name] and covered with [padding_material.use_name]."
|
||||
else
|
||||
name = "[material.display_name] [initial(name)]"
|
||||
desc += " It's made of [material.use_name]."
|
||||
|
||||
// Prep icon.
|
||||
icon_state = ""
|
||||
cut_overlays()
|
||||
|
||||
// Base icon (base material color)
|
||||
var/cache_key = "[base_icon]-[material.name]"
|
||||
if(isnull(stool_cache[cache_key]))
|
||||
var/image/I = image(icon, base_icon)
|
||||
if(applies_material_colour)
|
||||
I.color = material.icon_colour
|
||||
stool_cache[cache_key] = I
|
||||
add_overlay(stool_cache[cache_key])
|
||||
|
||||
// Padding ('_padding') (padding material color)
|
||||
if(padding_material)
|
||||
var/padding_cache_key = "[base_icon]-padding-[padding_material.name]"
|
||||
if(isnull(stool_cache[padding_cache_key]))
|
||||
var/image/I = image(icon, "[base_icon]_padding")
|
||||
I.color = padding_material.icon_colour
|
||||
stool_cache[padding_cache_key] = I
|
||||
add_overlay(stool_cache[padding_cache_key])
|
||||
|
||||
// Over ('_over') (base material color)
|
||||
cache_key = "[base_icon]-[material.name]-over"
|
||||
if(isnull(stool_cache[cache_key]))
|
||||
var/image/I = image(icon, "[base_icon]_over")
|
||||
I.plane = MOB_PLANE
|
||||
I.layer = ABOVE_MOB_LAYER
|
||||
if(applies_material_colour)
|
||||
I.color = material.icon_colour
|
||||
stool_cache[cache_key] = I
|
||||
add_overlay(stool_cache[cache_key])
|
||||
|
||||
// Padding Over ('_padding_over') (padding material color)
|
||||
if(padding_material)
|
||||
var/padding_cache_key = "[base_icon]-padding-[padding_material.name]-over"
|
||||
if(isnull(stool_cache[padding_cache_key]))
|
||||
var/image/I = image(icon, "[base_icon]_padding_over")
|
||||
I.color = padding_material.icon_colour
|
||||
I.plane = MOB_PLANE
|
||||
I.layer = ABOVE_MOB_LAYER
|
||||
stool_cache[padding_cache_key] = I
|
||||
add_overlay(stool_cache[padding_cache_key])
|
||||
|
||||
if(has_buckled_mobs())
|
||||
if(padding_material)
|
||||
cache_key = "[base_icon]-armrest-[padding_material.name]"
|
||||
// Armrest ('_armrest') (base material color)
|
||||
if(isnull(stool_cache[cache_key]))
|
||||
var/image/I = image(icon, "[base_icon]_armrest")
|
||||
I.plane = MOB_PLANE
|
||||
I.layer = ABOVE_MOB_LAYER
|
||||
if(applies_material_colour)
|
||||
I.color = material.icon_colour
|
||||
stool_cache[cache_key] = I
|
||||
add_overlay(stool_cache[cache_key])
|
||||
if(padding_material)
|
||||
cache_key = "[base_icon]-padding-armrest-[padding_material.name]"
|
||||
// Padding Armrest ('_padding_armrest') (padding material color)
|
||||
if(isnull(stool_cache[cache_key]))
|
||||
var/image/I = image(icon, "[base_icon]_padding_armrest")
|
||||
I.plane = MOB_PLANE
|
||||
I.layer = ABOVE_MOB_LAYER
|
||||
I.color = padding_material.icon_colour
|
||||
stool_cache[cache_key] = I
|
||||
add_overlay(stool_cache[cache_key])
|
||||
|
||||
/obj/structure/bed/chair/bay/chair
|
||||
name = "mounted chair"
|
||||
desc = "Like a normal chair, but more stationary."
|
||||
icon_state = "bay_chair_preview"
|
||||
base_icon = "bay_chair"
|
||||
|
||||
/obj/structure/bed/chair/bay/chair/padded/red/New(var/newloc, var/new_material, var/new_padding_material)
|
||||
..(newloc, new_material, "carpet")
|
||||
|
||||
/obj/structure/bed/chair/bay/chair/padded/brown/New(var/newloc, var/new_material, var/new_padding_material)
|
||||
..(newloc, new_material, "leather")
|
||||
|
||||
/obj/structure/bed/chair/bay/chair/padded/teal/New(var/newloc, var/new_material, var/new_padding_material)
|
||||
..(newloc, new_material, "teal")
|
||||
|
||||
/obj/structure/bed/chair/bay/chair/padded/black/New(var/newloc, var/new_material, var/new_padding_material)
|
||||
..(newloc, new_material, "black")
|
||||
|
||||
/obj/structure/bed/chair/bay/chair/padded/green/New(var/newloc, var/new_material, var/new_padding_material)
|
||||
..(newloc, new_material, "green")
|
||||
|
||||
/obj/structure/bed/chair/bay/chair/padded/purple/New(var/newloc, var/new_material, var/new_padding_material)
|
||||
..(newloc, new_material, "purple")
|
||||
|
||||
/obj/structure/bed/chair/bay/chair/padded/blue/New(var/newloc, var/new_material, var/new_padding_material)
|
||||
..(newloc, new_material, "blue")
|
||||
|
||||
/obj/structure/bed/chair/bay/chair/padded/beige/New(var/newloc, var/new_material, var/new_padding_material)
|
||||
..(newloc, new_material, "beige")
|
||||
|
||||
/obj/structure/bed/chair/bay/chair/padded/lime/New(var/newloc, var/new_material, var/new_padding_material)
|
||||
..(newloc, new_material, "lime")
|
||||
|
||||
/obj/structure/bed/chair/bay/chair/padded/yellow/New(var/newloc, var/new_material, var/new_padding_material)
|
||||
..(newloc, new_material, "yellow")
|
||||
|
||||
/obj/structure/bed/chair/bay/comfy
|
||||
name = "comfy mounted chair"
|
||||
desc = "Like a normal chair, but more stationary, and with more padding."
|
||||
icon_state = "bay_comfychair_preview"
|
||||
base_icon = "bay_comfychair"
|
||||
|
||||
/obj/structure/bed/chair/bay/comfy/red/New(var/newloc, var/new_material, var/new_padding_material)
|
||||
..(newloc, new_material, "carpet")
|
||||
|
||||
/obj/structure/bed/chair/bay/comfy/brown/New(var/newloc, var/new_material, var/new_padding_material)
|
||||
..(newloc, new_material, "leather")
|
||||
|
||||
/obj/structure/bed/chair/bay/comfy/teal/New(var/newloc, var/new_material, var/new_padding_material)
|
||||
..(newloc, new_material, "teal")
|
||||
|
||||
/obj/structure/bed/chair/bay/comfy/black/New(var/newloc, var/new_material, var/new_padding_material)
|
||||
..(newloc, new_material, "black")
|
||||
|
||||
/obj/structure/bed/chair/bay/comfy/green/New(var/newloc, var/new_material, var/new_padding_material)
|
||||
..(newloc, new_material, "green")
|
||||
|
||||
/obj/structure/bed/chair/bay/comfy/purple/New(var/newloc, var/new_material, var/new_padding_material)
|
||||
..(newloc, new_material, "purple")
|
||||
|
||||
/obj/structure/bed/chair/bay/comfy/blue/New(var/newloc, var/new_material, var/new_padding_material)
|
||||
..(newloc, new_material, "blue")
|
||||
|
||||
/obj/structure/bed/chair/bay/comfy/beige/New(var/newloc, var/new_material, var/new_padding_material)
|
||||
..(newloc, new_material, "beige")
|
||||
|
||||
/obj/structure/bed/chair/bay/comfy/lime/New(var/newloc, var/new_material, var/new_padding_material)
|
||||
..(newloc, new_material, "lime")
|
||||
|
||||
/obj/structure/bed/chair/bay/comfy/yellow/New(var/newloc, var/new_material, var/new_padding_material)
|
||||
..(newloc, new_material, "yellow")
|
||||
|
||||
/obj/structure/bed/chair/bay/comfy/captain
|
||||
name = "captain chair"
|
||||
desc = "It's a chair. Only for the highest ranked asses."
|
||||
icon_state = "capchair_preview"
|
||||
base_icon = "capchair"
|
||||
buckle_movable = 1
|
||||
|
||||
/obj/structure/bed/chair/bay/comfy/captain/update_icon()
|
||||
..()
|
||||
var/image/I = image(icon, "[base_icon]_special")
|
||||
I.plane = MOB_PLANE
|
||||
I.layer = ABOVE_MOB_LAYER
|
||||
add_overlay(I)
|
||||
|
||||
/obj/structure/bed/chair/bay/comfy/captain/New(var/newloc, var/new_material, var/new_padding_material)
|
||||
..(newloc, DEFAULT_WALL_MATERIAL, "blue")
|
||||
|
||||
/obj/structure/bed/chair/bay/shuttle
|
||||
name = "shuttle seat"
|
||||
desc = "A comfortable, secure seat. It has a sturdy-looking buckling system for smoother flights."
|
||||
base_icon = "shuttle_chair"
|
||||
icon_state = "shuttle_chair_preview"
|
||||
var/buckling_sound = 'sound/effects/metal_close.ogg'
|
||||
var/padding = "blue"
|
||||
|
||||
/obj/structure/bed/chair/bay/shuttle/New(var/newloc, var/new_material, var/new_padding_material)
|
||||
..(newloc, DEFAULT_WALL_MATERIAL, padding)
|
||||
|
||||
/obj/structure/bed/chair/bay/shuttle/post_buckle_mob()
|
||||
playsound(loc,buckling_sound,75,1)
|
||||
if(has_buckled_mobs())
|
||||
base_icon = "shuttle_chair-b"
|
||||
else
|
||||
base_icon = "shuttle_chair"
|
||||
..()
|
||||
|
||||
/obj/structure/bed/chair/bay/shuttle/update_icon()
|
||||
..()
|
||||
if(!has_buckled_mobs())
|
||||
var/image/I = image(icon, "[base_icon]_special")
|
||||
I.plane = MOB_PLANE
|
||||
I.layer = ABOVE_MOB_LAYER
|
||||
if(applies_material_colour)
|
||||
I.color = material.icon_colour
|
||||
add_overlay(I)
|
||||
|
||||
/obj/structure/bed/chair/bay/chair/padded/red/smallnest
|
||||
name = "teshari nest"
|
||||
desc = "Smells like cleaning products."
|
||||
icon_state = "nest_chair"
|
||||
base_icon = "nest_chair"
|
||||
|
||||
/obj/structure/bed/chair/bay/chair/padded/red/bignest
|
||||
name = "large teshari nest"
|
||||
icon_state = "nest_chair_large"
|
||||
base_icon = "nest_chair_large"
|
||||
|
||||
@@ -6,6 +6,8 @@ var/global/list/stool_cache = list() //haha stool
|
||||
desc = "Apply butt."
|
||||
icon = 'icons/obj/furniture_vr.dmi' //VOREStation Edit - new Icons
|
||||
icon_state = "stool_preview" //set for the map
|
||||
randpixel = 0
|
||||
center_of_mass = null
|
||||
force = 10
|
||||
throwforce = 10
|
||||
w_class = ITEMSIZE_HUGE
|
||||
@@ -47,7 +49,7 @@ var/global/list/stool_cache = list() //haha stool
|
||||
if(padding_material)
|
||||
var/padding_cache_key = "stool-padding-[padding_material.name]"
|
||||
if(isnull(stool_cache[padding_cache_key]))
|
||||
var/image/I = image(icon, "stool_padding")
|
||||
var/image/I = image(icon, "[base_icon]_padding") //VOREStation Edit
|
||||
I.color = padding_material.icon_colour
|
||||
stool_cache[padding_cache_key] = I
|
||||
overlays |= stool_cache[padding_cache_key]
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
/obj/item/weapon/stool/baystool
|
||||
name = "bar stool"
|
||||
desc = "Apply butt."
|
||||
icon = 'icons/obj/furniture_vr.dmi' //VOREStation Edit - new Icons
|
||||
icon_state = "bar_stool_preview" //set for the map
|
||||
randpixel = 0
|
||||
center_of_mass = null
|
||||
force = 10
|
||||
throwforce = 10
|
||||
w_class = ITEMSIZE_HUGE
|
||||
base_icon = "bar_stool_base"
|
||||
anchored = 1
|
||||
|
||||
/obj/item/weapon/stool/baystool/padded/New(var/newloc, var/new_material)
|
||||
..(newloc, "steel", "carpet")
|
||||
@@ -192,7 +192,7 @@ obj/structure/windoor_assembly/Destroy()
|
||||
if(src.electronics && istype(src.electronics, /obj/item/weapon/circuitboard/broken))
|
||||
to_chat(usr,"<span class='warning'>The assembly has broken airlock electronics.</span>")
|
||||
return
|
||||
to_chat(usr,browse(null, "window=windoor_access")) //Not sure what this actually does... -Ner
|
||||
usr << browse(null, "window=windoor_access") //Not sure what this actually does... -Ner
|
||||
playsound(src, W.usesound, 100, 1)
|
||||
user.visible_message("[user] pries the windoor into the frame.", "You start prying the windoor into the frame.")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user