mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-09 16:12:17 +00:00
Upstream-11421
This commit is contained in:
@@ -16,7 +16,8 @@ Pipelines + Other Objects -> Pipe network
|
||||
power_channel = ENVIRON
|
||||
var/nodealert = 0
|
||||
var/power_rating //the maximum amount of power the machine can use to do work, affects how powerful the machine is, in Watts
|
||||
|
||||
|
||||
unacidable = TRUE
|
||||
layer = ATMOS_LAYER
|
||||
plane = PLATING_PLANE
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
icon = 'icons/obj/power.dmi'
|
||||
icon_state = "circ-unassembled"
|
||||
anchored = FALSE
|
||||
unacidable = TRUE
|
||||
pipe_flags = PIPING_DEFAULT_LAYER_ONLY|PIPING_ONE_PER_TURF
|
||||
|
||||
var/kinetic_efficiency = 0.04 //combined kinetic and kinetic-to-electric efficiency
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
icon_state = "table2-idle"
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
unacidable = TRUE
|
||||
use_power = USE_POWER_IDLE
|
||||
idle_power_usage = 1
|
||||
active_power_usage = 5
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
var/obj/machinery/sleeper/sleeper
|
||||
anchored = TRUE //About time someone fixed this.
|
||||
density = TRUE //VOREStation Edit - Big console
|
||||
unacidable = TRUE
|
||||
dir = 8
|
||||
use_power = USE_POWER_IDLE
|
||||
idle_power_usage = 40
|
||||
@@ -89,6 +90,7 @@
|
||||
icon_state = "sleeper_0"
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
unacidable = TRUE
|
||||
circuit = /obj/item/weapon/circuitboard/sleeper
|
||||
var/mob/living/carbon/human/occupant = null
|
||||
var/list/available_chemicals = list()
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
icon_state = "body_scanner_0"
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
unacidable = TRUE
|
||||
circuit = /obj/item/weapon/circuitboard/body_scanner
|
||||
use_power = USE_POWER_IDLE
|
||||
idle_power_usage = 60
|
||||
@@ -547,6 +548,7 @@
|
||||
dir = 8
|
||||
density = FALSE
|
||||
anchored = TRUE
|
||||
unacidable = TRUE
|
||||
circuit = /obj/item/weapon/circuitboard/scanner_console
|
||||
var/printing = null
|
||||
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
layer = ABOVE_WINDOW_LAYER
|
||||
vis_flags = VIS_HIDE // They have an emissive that looks bad in openspace due to their wall-mounted nature
|
||||
anchored = TRUE
|
||||
unacidable = TRUE
|
||||
use_power = USE_POWER_IDLE
|
||||
idle_power_usage = 80
|
||||
active_power_usage = 1000 //For heating/cooling rooms. 1000 joules equates to about 1 degree every 2 seconds for a single tile of air.
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/obj/structure/AIcore
|
||||
density = TRUE
|
||||
anchored = FALSE
|
||||
unacidable = TRUE
|
||||
name = "\improper AI core"
|
||||
icon = 'icons/mob/AI.dmi'
|
||||
icon_state = "0"
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
icon_state = "computer"
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
unacidable = TRUE
|
||||
use_power = USE_POWER_IDLE
|
||||
idle_power_usage = 300
|
||||
active_power_usage = 300
|
||||
|
||||
@@ -194,6 +194,7 @@
|
||||
icon_state = "cryopod_0" //VOREStation Edit - New Icon
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
unacidable = TRUE
|
||||
dir = WEST
|
||||
|
||||
var/base_icon_state = "cryopod_0" //VOREStation Edit - New Icon
|
||||
|
||||
@@ -15,6 +15,7 @@ FIRE ALARM
|
||||
var/timing = 0.0
|
||||
var/lockdownbyai = 0
|
||||
anchored = TRUE
|
||||
unacidable = TRUE
|
||||
use_power = USE_POWER_IDLE
|
||||
idle_power_usage = 2
|
||||
active_power_usage = 6
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
icon_state = "pipe_d"
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
unacidable = TRUE
|
||||
var/unwrenched = 0
|
||||
var/wait = 0
|
||||
var/p_layer = PIPING_LAYER_REGULAR
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
icon_state = "borgcharger0"
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
unacidable = TRUE
|
||||
circuit = /obj/item/weapon/circuitboard/recharge_station
|
||||
use_power = USE_POWER_IDLE
|
||||
idle_power_usage = 50
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
name = "status display"
|
||||
anchored = TRUE
|
||||
density = FALSE
|
||||
unacidable = TRUE
|
||||
use_power = USE_POWER_IDLE
|
||||
idle_power_usage = 10
|
||||
circuit = /obj/item/weapon/circuitboard/status_display
|
||||
|
||||
@@ -17,6 +17,7 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list()
|
||||
|
||||
/obj/machinery/telecomms
|
||||
icon = 'icons/obj/stationobjs_vr.dmi' //VOREStation Add
|
||||
unacidable = TRUE
|
||||
var/list/links = list() // list of machines this machine is linked to
|
||||
var/traffic = 0 // value increases as traffic increases
|
||||
var/netspeed = 5 // how much traffic to lose per tick (50 gigabytes/second * netspeed)
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
icon_state = "control_standby"
|
||||
anchored = TRUE
|
||||
density = FALSE
|
||||
unacidable = TRUE
|
||||
var/enabled = FALSE
|
||||
var/lethal = FALSE
|
||||
var/lethal_is_configurable = TRUE
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
desc = "A machine used for construction of prosthetics."
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
unacidable = TRUE
|
||||
use_power = USE_POWER_IDLE
|
||||
idle_power_usage = 20
|
||||
active_power_usage = 5000
|
||||
|
||||
@@ -164,6 +164,7 @@
|
||||
icon_state = "weeds"
|
||||
anchored = TRUE
|
||||
density = FALSE
|
||||
unacidable = TRUE
|
||||
plane = TURF_PLANE
|
||||
layer = ABOVE_TURF_LAYER
|
||||
|
||||
@@ -402,10 +403,13 @@
|
||||
for(var/mob/O in hearers(src, null))
|
||||
O.show_message("<span class='alium'>[src.target] collapses under its own weight into a puddle of goop and undigested debris!</span>", 1)
|
||||
|
||||
if(istype(target, /turf/simulated/wall)) // I hate turf code.
|
||||
if(iswall(target)) //Gurgs : Spruced up corrosive acid
|
||||
var/turf/simulated/wall/W = target
|
||||
W.dismantle_wall(1)
|
||||
else
|
||||
if(isfloor(target))
|
||||
var/turf/simulated/floor/T = target
|
||||
T.ex_act(1)
|
||||
else if(isobj(target))
|
||||
qdel(target)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
throwforce = 6
|
||||
preserve_item = 1
|
||||
w_class = ITEMSIZE_LARGE
|
||||
unacidable = TRUE
|
||||
origin_tech = list(TECH_BIO = 4, TECH_POWER = 2)
|
||||
action_button_name = "Remove/Replace Paddles"
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
icon = 'icons/mob/alien.dmi'
|
||||
layer = ABOVE_JUNK_LAYER
|
||||
var/health = 50
|
||||
unacidable = TRUE
|
||||
|
||||
/obj/structure/alien/proc/healthcheck()
|
||||
if(health <=0)
|
||||
|
||||
@@ -33,6 +33,7 @@ two tiles on initialization, and which way a cliff is facing may change during m
|
||||
opacity = FALSE
|
||||
climbable = TRUE
|
||||
climb_delay = 10 SECONDS
|
||||
unacidable = TRUE
|
||||
block_turf_edges = TRUE // Don't want turf edges popping up from the cliff edge.
|
||||
plane = TURF_PLANE
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
var/used = FALSE
|
||||
var/busy = FALSE // Don't spam ghosts by spamclicking.
|
||||
var/needscharger //For drone pods that want their pod to turn into a charger.
|
||||
unacidable = TRUE
|
||||
|
||||
// Call this to get a ghost volunteer.
|
||||
/obj/structure/ghost_pod/proc/trigger(var/alert, var/adminalert)
|
||||
|
||||
@@ -21,6 +21,7 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh
|
||||
icon_state = "randompile"
|
||||
density = FALSE
|
||||
anchored = TRUE
|
||||
unacidable = TRUE
|
||||
|
||||
var/list/icon_states_to_use = list() // List of icon states the pile can choose from on initialization. If empty or null, it will stay the initial icon_state.
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
var/obj/structure/m_tray/connected = null
|
||||
var/list/occupants = list()
|
||||
anchored = TRUE
|
||||
unacidable = TRUE
|
||||
|
||||
/obj/structure/morgue/Destroy()
|
||||
if(connected)
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
icon = 'icons/obj/storage_vr.dmi' //VOREStation Edit
|
||||
icon_state = "critteropen"
|
||||
density = TRUE
|
||||
unacidable = TRUE
|
||||
|
||||
var/mob/living/simple_mob/contained
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
icon = 'icons/mob/alien.dmi'
|
||||
icon_state = "nest"
|
||||
var/health = 100
|
||||
unacidable = TRUE
|
||||
|
||||
/obj/structure/bed/nest/update_icon()
|
||||
return
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/obj/structure/shuttle
|
||||
name = "shuttle"
|
||||
icon = 'icons/turf/shuttle_parts.dmi'
|
||||
unacidable = TRUE
|
||||
|
||||
/obj/structure/shuttle/window
|
||||
name = "shuttle window"
|
||||
|
||||
@@ -213,7 +213,7 @@ var/list/flooring_types
|
||||
desc = "Gritty and unpleasant."
|
||||
icon = 'icons/turf/flooring/asteroid.dmi'
|
||||
icon_base = "asteroid"
|
||||
flags = TURF_REMOVE_SHOVEL
|
||||
flags = TURF_REMOVE_SHOVEL | TURF_ACID_IMMUNE
|
||||
build_type = null
|
||||
footstep_sounds = list("human" = list(
|
||||
'sound/effects/footstep/asteroid1.ogg',
|
||||
@@ -554,7 +554,7 @@ var/list/flooring_types
|
||||
icon = 'icons/turf/outdoors.dmi'
|
||||
icon_base = "lava"
|
||||
is_plating = TRUE
|
||||
flags = 0
|
||||
flags = TURF_ACID_IMMUNE
|
||||
footstep_sounds = list("human" = list(
|
||||
'sound/effects/footstep/lava1.ogg',
|
||||
'sound/effects/footstep/lava2.ogg',
|
||||
|
||||
@@ -76,6 +76,7 @@
|
||||
icon = 'icons/turf/shuttle_white.dmi'
|
||||
thermal_conductivity = 0.05
|
||||
heat_capacity = 0
|
||||
flags = TURF_ACID_IMMUNE
|
||||
|
||||
var/obj/landed_holder/landed_holder
|
||||
var/interior_corner = 0
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
can_build_into_floor = TRUE
|
||||
can_dirty = FALSE
|
||||
initial_flooring = /decl/flooring/lava // Defining this in case someone DOES step on lava and survive. Somehow.
|
||||
flags = TURF_ACID_IMMUNE
|
||||
|
||||
/turf/simulated/floor/lava/outdoors
|
||||
outdoors = OUTDOORS_YES
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
edge_blending_priority = -1
|
||||
movement_cost = 4
|
||||
outdoors = OUTDOORS_YES
|
||||
flags = TURF_ACID_IMMUNE
|
||||
|
||||
layer = WATER_FLOOR_LAYER
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
icon_state = "default"
|
||||
dynamic_lighting = 0
|
||||
plane = SPACE_PLANE
|
||||
|
||||
flags = TURF_ACID_IMMUNE
|
||||
temperature = T20C
|
||||
thermal_conductivity = OPEN_HEAT_TRANSFER_COEFFICIENT
|
||||
can_build_into_floor = TRUE
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
oxygen = MOLES_O2STANDARD
|
||||
nitrogen = MOLES_N2STANDARD
|
||||
var/skip_init = TRUE // Don't call down the chain, apparently for performance when loading maps at runtime.
|
||||
flags = TURF_ACID_IMMUNE
|
||||
|
||||
/turf/unsimulated/Initialize(mapload)
|
||||
if(skip_init)
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
icon_state = "off"
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
unacidable = TRUE
|
||||
var/active = 0
|
||||
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
icon_state = "generic"
|
||||
anchored = TRUE
|
||||
density = TRUE
|
||||
unacidable = TRUE
|
||||
clicksound = "button"
|
||||
|
||||
// Power
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
icon_state = "grinder"
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
unacidable = TRUE
|
||||
req_access = list(access_kitchen,access_morgue)
|
||||
|
||||
var/operating = 0 //Is it on?
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<<<<<<< HEAD
|
||||
/obj/machinery/microwave
|
||||
name = "Microwave"
|
||||
desc = "Studies are inconclusive on whether pressing your face against the glass is harmful."
|
||||
@@ -616,3 +617,624 @@
|
||||
var/obj/machinery/microwave/M = container
|
||||
M.muck_finish()
|
||||
. = ..()
|
||||
=======
|
||||
/obj/machinery/microwave
|
||||
name = "Microwave"
|
||||
desc = "Studies are inconclusive on whether pressing your face against the glass is harmful."
|
||||
icon = 'icons/obj/kitchen.dmi'
|
||||
icon_state = "mw"
|
||||
layer = 2.9
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
unacidable = TRUE
|
||||
use_power = USE_POWER_IDLE
|
||||
idle_power_usage = 5
|
||||
active_power_usage = 2000
|
||||
clicksound = "button"
|
||||
clickvol = "30"
|
||||
flags = OPENCONTAINER | NOREACT
|
||||
circuit = /obj/item/weapon/circuitboard/microwave
|
||||
var/operating = 0 // Is it on?
|
||||
var/dirty = 0 // = {0..100} Does it need cleaning?
|
||||
var/broken = 0 // ={0,1,2} How broken is it???
|
||||
var/circuit_item_capacity = 1 //how many items does the circuit add to max number of items
|
||||
var/item_level = 0 // items microwave can handle, 0 foodstuff, 1 materials
|
||||
var/global/list/acceptable_items // List of the items you can put in
|
||||
var/global/list/available_recipes // List of the recipes you can use
|
||||
var/global/list/acceptable_reagents // List of the reagents you can put in
|
||||
|
||||
var/global/max_n_of_items = 20
|
||||
var/appliancetype = MICROWAVE
|
||||
var/datum/looping_sound/microwave/soundloop
|
||||
|
||||
|
||||
//see code/modules/food/recipes_microwave.dm for recipes
|
||||
|
||||
/*******************
|
||||
* Initialising
|
||||
********************/
|
||||
|
||||
/obj/machinery/microwave/Initialize()
|
||||
. = ..()
|
||||
|
||||
reagents = new/datum/reagents(100)
|
||||
reagents.my_atom = src
|
||||
|
||||
default_apply_parts()
|
||||
|
||||
if(!available_recipes)
|
||||
available_recipes = new
|
||||
for(var/datum/recipe/typepath as anything in subtypesof(/datum/recipe))
|
||||
if((initial(typepath.appliance) & appliancetype))
|
||||
available_recipes += new typepath
|
||||
|
||||
acceptable_items = new
|
||||
acceptable_reagents = new
|
||||
for (var/datum/recipe/recipe in available_recipes)
|
||||
for (var/item in recipe.items)
|
||||
acceptable_items |= item
|
||||
for (var/reagent in recipe.reagents)
|
||||
acceptable_reagents |= reagent
|
||||
// This will do until I can think of a fun recipe to use dionaea in -
|
||||
// will also allow anything using the holder item to be microwaved into
|
||||
// impure carbon. ~Z
|
||||
acceptable_items |= /obj/item/weapon/holder
|
||||
acceptable_items |= /obj/item/weapon/reagent_containers/food/snacks/grown
|
||||
acceptable_items |= /obj/item/device/soulstone
|
||||
acceptable_items |= /obj/item/weapon/fuel_assembly/supermatter
|
||||
|
||||
soundloop = new(list(src), FALSE)
|
||||
|
||||
/obj/machinery/microwave/Destroy()
|
||||
QDEL_NULL(soundloop)
|
||||
return ..()
|
||||
|
||||
/*******************
|
||||
* Item Adding
|
||||
********************/
|
||||
|
||||
/obj/machinery/microwave/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
if(src.broken > 0)
|
||||
if(src.broken == 2 && O.is_screwdriver()) // If it's broken and they're using a screwdriver
|
||||
user.visible_message( \
|
||||
"<b>\The [user]</b> starts to fix part of the microwave.", \
|
||||
"<span class='notice'>You start to fix part of the microwave.</span>" \
|
||||
)
|
||||
playsound(src, O.usesound, 50, 1)
|
||||
if (do_after(user,20 * O.toolspeed))
|
||||
user.visible_message( \
|
||||
"<b>\The [user]</b> fixes part of the microwave.", \
|
||||
"<span class='notice'>You have fixed part of the microwave.</span>" \
|
||||
)
|
||||
src.broken = 1 // Fix it a bit
|
||||
else if(src.broken == 1 && O.is_wrench()) // If it's broken and they're doing the wrench
|
||||
user.visible_message( \
|
||||
"<b>\The [user]</b> starts to fix part of the microwave.", \
|
||||
"<span class='notice'>You start to fix part of the microwave.</span>" \
|
||||
)
|
||||
if (do_after(user,20 * O.toolspeed))
|
||||
user.visible_message( \
|
||||
"<b>\The [user]</b> fixes the microwave.", \
|
||||
"<span class='notice'>You have fixed the microwave.</span>" \
|
||||
)
|
||||
src.icon_state = "mw"
|
||||
src.broken = 0 // Fix it!
|
||||
src.dirty = 0 // just to be sure
|
||||
src.flags = OPENCONTAINER | NOREACT
|
||||
else
|
||||
to_chat(user, "<span class='warning'>It's broken!</span>")
|
||||
return 1
|
||||
|
||||
else if(src.dirty==100) // The microwave is all dirty so can't be used!
|
||||
if(istype(O, /obj/item/weapon/reagent_containers/spray/cleaner) || istype(O, /obj/item/weapon/soap)) // If they're trying to clean it then let them
|
||||
user.visible_message( \
|
||||
"<b>\The [user]</b> starts to clean the microwave.", \
|
||||
"<span class='notice'>You start to clean the microwave.</span>" \
|
||||
)
|
||||
if (do_after(user,20))
|
||||
user.visible_message( \
|
||||
"<span class='notice'>\The [user] has cleaned the microwave.</span>", \
|
||||
"<span class='notice'>You have cleaned the microwave.</span>" \
|
||||
)
|
||||
src.dirty = 0 // It's clean!
|
||||
src.broken = 0 // just to be sure
|
||||
src.icon_state = "mw"
|
||||
src.flags = OPENCONTAINER | NOREACT
|
||||
SStgui.update_uis(src)
|
||||
else //Otherwise bad luck!!
|
||||
to_chat(user, "<span class='warning'>It's dirty!</span>")
|
||||
return 1
|
||||
else if(is_type_in_list(O,acceptable_items))
|
||||
if(contents.len>=(max_n_of_items + component_parts.len + circuit_item_capacity)) //Adds component_parts to the maximum number of items. changed 1 to actually just be the circuit item capacity var.
|
||||
to_chat(user, "<span class='warning'>This [src] is full of ingredients, you cannot put more.</span>")
|
||||
return 1
|
||||
if(istype(O, /obj/item/stack) && O:get_amount() > 1) // This is bad, but I can't think of how to change it
|
||||
var/obj/item/stack/S = O
|
||||
new O.type (src)
|
||||
S.use(1)
|
||||
user.visible_message( \
|
||||
"<span class='notice'>\The [user] has added one of [O] to \the [src].</span>", \
|
||||
"<span class='notice'>You add one of [O] to \the [src].</span>")
|
||||
return
|
||||
else
|
||||
// user.remove_from_mob(O) //This just causes problems so far as I can tell. -Pete - Man whoever you are, it's been years. o7
|
||||
user.drop_from_inventory(O,src)
|
||||
user.visible_message( \
|
||||
"<span class='notice'>\The [user] has added \the [O] to \the [src].</span>", \
|
||||
"<span class='notice'>You add \the [O] to \the [src].</span>")
|
||||
SStgui.update_uis(src)
|
||||
return
|
||||
else if(istype(O,/obj/item/weapon/reagent_containers/glass) || \
|
||||
istype(O,/obj/item/weapon/reagent_containers/food/drinks) || \
|
||||
istype(O,/obj/item/weapon/reagent_containers/food/condiment) \
|
||||
)
|
||||
if (!O.reagents)
|
||||
return 1
|
||||
for (var/datum/reagent/R in O.reagents.reagent_list)
|
||||
if (!(R.id in acceptable_reagents))
|
||||
to_chat(user, "<span class='warning'>Your [O] contains components unsuitable for cookery.</span>")
|
||||
return 1
|
||||
return
|
||||
else if(istype(O,/obj/item/weapon/grab))
|
||||
var/obj/item/weapon/grab/G = O
|
||||
to_chat(user, "<span class='warning'>This is ridiculous. You can not fit \the [G.affecting] in this [src].</span>")
|
||||
return 1
|
||||
else if(O.is_screwdriver())
|
||||
default_deconstruction_screwdriver(user, O)
|
||||
return
|
||||
else if(O.is_crowbar())
|
||||
if(default_deconstruction_crowbar(user, O))
|
||||
return
|
||||
else
|
||||
user.visible_message( \
|
||||
"<span class='notice'>\The [user] begins [src.anchored ? "unsecuring" : "securing"] the microwave.</span>", \
|
||||
"<span class='notice'>You attempt to [src.anchored ? "unsecure" : "secure"] the microwave.</span>"
|
||||
)
|
||||
if (do_after(user,20/O.toolspeed))
|
||||
user.visible_message( \
|
||||
"<span class='notice'>\The [user] [src.anchored ? "unsecures" : "secures"] the microwave.</span>", \
|
||||
"<span class='notice'>You [src.anchored ? "unsecure" : "secure"] the microwave.</span>"
|
||||
)
|
||||
src.anchored = !src.anchored
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You decide not to do that.</span>")
|
||||
else if(default_part_replacement(user, O))
|
||||
return
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You have no idea what you can cook with this [O].</span>")
|
||||
..()
|
||||
SStgui.update_uis(src)
|
||||
|
||||
/obj/machinery/microwave/tgui_state(mob/user)
|
||||
return GLOB.tgui_physical_state
|
||||
|
||||
/obj/machinery/microwave/attack_ai(mob/user as mob)
|
||||
attack_hand(user)
|
||||
|
||||
/obj/machinery/microwave/attack_hand(mob/user as mob)
|
||||
user.set_machine(src)
|
||||
tgui_interact(user)
|
||||
|
||||
/*******************
|
||||
* Microwave Menu
|
||||
********************/
|
||||
/obj/machinery/microwave/tgui_interact(mob/user, datum/tgui/ui)
|
||||
ui = SStgui.try_update_ui(user, src, ui)
|
||||
if(!ui)
|
||||
ui = new(user, src, "Microwave", name)
|
||||
ui.open()
|
||||
|
||||
/obj/machinery/microwave/tgui_data(mob/user, datum/tgui/ui, datum/tgui_state/state)
|
||||
var/list/data = ..()
|
||||
|
||||
data["broken"] = broken
|
||||
data["operating"] = operating
|
||||
data["dirty"] = dirty == 100
|
||||
data["items"] = get_items_list()
|
||||
|
||||
return data
|
||||
|
||||
/obj/machinery/microwave/proc/get_items_list()
|
||||
var/list/data = list()
|
||||
|
||||
var/list/items_counts = list()
|
||||
var/list/items_measures = list()
|
||||
var/list/items_measures_p = list()
|
||||
for(var/obj/O in ((contents - component_parts) - circuit))
|
||||
var/display_name = O.name
|
||||
if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/egg))
|
||||
items_measures[display_name] = "egg"
|
||||
items_measures_p[display_name] = "eggs"
|
||||
if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/tofu))
|
||||
items_measures[display_name] = "tofu chunk"
|
||||
items_measures_p[display_name] = "tofu chunks"
|
||||
if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/meat)) //any meat
|
||||
items_measures[display_name] = "slab of meat"
|
||||
items_measures_p[display_name] = "slabs of meat"
|
||||
if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/donkpocket))
|
||||
display_name = "Turnovers"
|
||||
items_measures[display_name] = "turnover"
|
||||
items_measures_p[display_name] = "turnovers"
|
||||
if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/carpmeat))
|
||||
items_measures[display_name] = "fillet of meat"
|
||||
items_measures_p[display_name] = "fillets of meat"
|
||||
items_counts[display_name]++
|
||||
for(var/O in items_counts)
|
||||
var/N = items_counts[O]
|
||||
if(!(O in items_measures))
|
||||
data.Add(list(list(
|
||||
"name" = capitalize(O),
|
||||
"amt" = N,
|
||||
"extra" = "[lowertext(O)][N > 1 ? "s" : ""]",
|
||||
)))
|
||||
else
|
||||
data.Add(list(list(
|
||||
"name" = capitalize(O),
|
||||
"amt" = N,
|
||||
"extra" = N == 1 ? items_measures[O] : items_measures_p[O],
|
||||
)))
|
||||
|
||||
for(var/datum/reagent/R in reagents.reagent_list)
|
||||
var/display_name = R.name
|
||||
if(R.id == "capsaicin")
|
||||
display_name = "Hotsauce"
|
||||
if(R.id == "frostoil")
|
||||
display_name = "Coldsauce"
|
||||
data.Add(list(list(
|
||||
"name" = display_name,
|
||||
"amt" = R.volume,
|
||||
"extra" = "unit[R.volume > 1 ? "s" : ""]"
|
||||
)))
|
||||
|
||||
return data
|
||||
|
||||
/obj/machinery/microwave/tgui_act(action, list/params, datum/tgui/ui, datum/tgui_state/state)
|
||||
if(..())
|
||||
return TRUE
|
||||
|
||||
if(operating)
|
||||
return TRUE
|
||||
|
||||
switch(action)
|
||||
if("cook")
|
||||
cook()
|
||||
return TRUE
|
||||
|
||||
if("dispose")
|
||||
dispose()
|
||||
return TRUE
|
||||
/*
|
||||
/obj/machinery/microwave/interact(mob/user as mob) // The microwave Menu
|
||||
var/dat = ""
|
||||
if(src.broken > 0)
|
||||
dat = {"<TT>Bzzzzttttt</TT>"}
|
||||
else if(src.operating)
|
||||
dat = {"<TT>Microwaving in progress!<BR>Please wait...!</TT>"}
|
||||
else if(src.dirty==100)
|
||||
dat = {"<TT>This microwave is dirty!<BR>Please clean it before use!</TT>"}
|
||||
else
|
||||
var/list/items_counts = new
|
||||
var/list/items_measures = new
|
||||
var/list/items_measures_p = new
|
||||
for (var/obj/O in ((contents - component_parts) - circuit))
|
||||
var/display_name = O.name
|
||||
if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/egg))
|
||||
items_measures[display_name] = "egg"
|
||||
items_measures_p[display_name] = "eggs"
|
||||
if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/tofu))
|
||||
items_measures[display_name] = "tofu chunk"
|
||||
items_measures_p[display_name] = "tofu chunks"
|
||||
if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/meat)) //any meat
|
||||
items_measures[display_name] = "slab of meat"
|
||||
items_measures_p[display_name] = "slabs of meat"
|
||||
if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/donkpocket))
|
||||
display_name = "Turnovers"
|
||||
items_measures[display_name] = "turnover"
|
||||
items_measures_p[display_name] = "turnovers"
|
||||
if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/carpmeat))
|
||||
items_measures[display_name] = "fillet of meat"
|
||||
items_measures_p[display_name] = "fillets of meat"
|
||||
items_counts[display_name]++
|
||||
for (var/O in items_counts)
|
||||
var/N = items_counts[O]
|
||||
if (!(O in items_measures))
|
||||
dat += {"<B>[capitalize(O)]:</B> [N] [lowertext(O)]\s<BR>"}
|
||||
else
|
||||
if (N==1)
|
||||
dat += {"<B>[capitalize(O)]:</B> [N] [items_measures[O]]<BR>"}
|
||||
else
|
||||
dat += {"<B>[capitalize(O)]:</B> [N] [items_measures_p[O]]<BR>"}
|
||||
|
||||
for (var/datum/reagent/R in reagents.reagent_list)
|
||||
var/display_name = R.name
|
||||
if (R.id == "capsaicin")
|
||||
display_name = "Hotsauce"
|
||||
if (R.id == "frostoil")
|
||||
display_name = "Coldsauce"
|
||||
dat += {"<B>[display_name]:</B> [R.volume] unit\s<BR>"}
|
||||
|
||||
if (items_counts.len==0 && reagents.reagent_list.len==0)
|
||||
dat = {"<B>The microwave is empty</B><BR>"}
|
||||
else
|
||||
dat = {"<b>Ingredients:</b><br>[dat]"}
|
||||
dat += {"<HR><BR>\
|
||||
<A href='?src=\ref[src];action=cook'>Turn on!<BR>\
|
||||
<A href='?src=\ref[src];action=dispose'>Eject ingredients!<BR>\
|
||||
"}
|
||||
|
||||
user << browse("<HEAD><TITLE>Microwave Controls</TITLE></HEAD><TT>[dat]</TT>", "window=microwave")
|
||||
onclose(user, "microwave")
|
||||
return
|
||||
*/
|
||||
|
||||
/***********************************
|
||||
* Microwave Menu Handling/Cooking
|
||||
************************************/
|
||||
|
||||
/obj/machinery/microwave/proc/cook()
|
||||
if(stat & (NOPOWER|BROKEN))
|
||||
return
|
||||
start()
|
||||
if(reagents.total_volume==0 && !(locate(/obj) in ((contents - component_parts) - circuit))) //dry run
|
||||
if(!wzhzhzh(16)) //VOREStation Edit - Quicker Microwaves (Undone during Auroraport, left note in case of reversion, was 5)
|
||||
abort()
|
||||
return
|
||||
abort()
|
||||
return
|
||||
|
||||
var/datum/recipe/recipe = select_recipe(available_recipes,src)
|
||||
var/obj/cooked
|
||||
if(!recipe)
|
||||
dirty += 1
|
||||
if(prob(max(10,dirty*5)))
|
||||
if(!wzhzhzh(16)) //VOREStation Edit - Quicker Microwaves (Undone during Auroraport, left note in case of reversion, was 2)
|
||||
abort()
|
||||
return
|
||||
muck_start()
|
||||
wzhzhzh(2) //VOREStation Edit - Quicker Microwaves (Undone during Auroraport, left note in case of reversion, was 2)
|
||||
muck_finish()
|
||||
cooked = fail()
|
||||
cooked.forceMove(src.loc)
|
||||
else if(has_extra_item())
|
||||
if(!wzhzhzh(16)) //VOREStation Edit - Quicker Microwaves (Undone during Auroraport, left note in case of reversion, was 2)
|
||||
abort()
|
||||
return
|
||||
broke()
|
||||
cooked = fail()
|
||||
cooked.forceMove(src.loc)
|
||||
else
|
||||
if(!wzhzhzh(40)) //VOREStation Edit - Quicker Microwaves (Undone during Auroraport, left note in case of reversion, was 5)
|
||||
abort()
|
||||
return
|
||||
stop()
|
||||
cooked = fail()
|
||||
cooked.forceMove(src.loc)
|
||||
return
|
||||
|
||||
//Making multiple copies of a recipe
|
||||
var/halftime = round(recipe.time*4/10/2) // VOREStation Edit - Quicker Microwaves (Undone during Auroraport, left note in case of reversion, was round(recipe.time/20/2))
|
||||
if(!wzhzhzh(halftime))
|
||||
abort()
|
||||
return
|
||||
recipe.before_cook(src)
|
||||
if(!wzhzhzh(halftime))
|
||||
abort()
|
||||
cooked = fail()
|
||||
cooked.forceMove(loc)
|
||||
recipe.after_cook(src)
|
||||
return
|
||||
|
||||
var/result = recipe.result
|
||||
var/valid = 1
|
||||
var/list/cooked_items = list()
|
||||
var/obj/temp = new /obj(src) //To prevent infinite loops, all results will be moved into a temporary location so they're not considered as inputs for other recipes
|
||||
while(valid)
|
||||
var/list/things = list()
|
||||
things.Add(recipe.make_food(src))
|
||||
cooked_items += things
|
||||
//Move cooked things to the buffer so they're not considered as ingredients
|
||||
for(var/atom/movable/AM in things)
|
||||
AM.forceMove(temp)
|
||||
|
||||
valid = 0
|
||||
recipe.after_cook(src)
|
||||
recipe = select_recipe(available_recipes,src)
|
||||
if(recipe && recipe.result == result)
|
||||
valid = 1
|
||||
sleep(2)
|
||||
|
||||
for(var/atom/movable/R as anything in cooked_items)
|
||||
R.forceMove(src) //Move everything from the buffer back to the container
|
||||
|
||||
QDEL_NULL(temp)//Delete buffer object
|
||||
|
||||
//Any leftover reagents are divided amongst the foods
|
||||
var/total = reagents.total_volume
|
||||
for(var/obj/item/weapon/reagent_containers/food/snacks/S in cooked_items)
|
||||
reagents.trans_to_holder(S.reagents, total/cooked_items.len)
|
||||
|
||||
for(var/obj/item/weapon/reagent_containers/food/snacks/S in contents)
|
||||
S.cook()
|
||||
|
||||
dispose(0) //clear out anything left
|
||||
stop()
|
||||
|
||||
return
|
||||
|
||||
/obj/machinery/microwave/proc/wzhzhzh(var/seconds as num) // Whoever named this proc is fucking literally Satan. ~ Z
|
||||
for (var/i=1 to seconds)
|
||||
if (stat & (NOPOWER|BROKEN))
|
||||
return 0
|
||||
use_power(active_power_usage)
|
||||
sleep(5) //VOREStation Edit - Quicker Microwaves
|
||||
return 1
|
||||
|
||||
/obj/machinery/microwave/proc/has_extra_item() //- coded to have different microwaves be able to handle different items
|
||||
if(item_level == 0)
|
||||
for (var/obj/O in ((contents - component_parts) - circuit))
|
||||
if ( \
|
||||
!istype(O,/obj/item/weapon/reagent_containers/food) && \
|
||||
!istype(O, /obj/item/weapon/grown) \
|
||||
)
|
||||
return 1
|
||||
return 0
|
||||
if(item_level == 1)
|
||||
for (var/obj/O in ((contents - component_parts) - circuit))
|
||||
if ( \
|
||||
!istype(O, /obj/item/weapon/reagent_containers/food) && \
|
||||
!istype(O, /obj/item/weapon/grown) && \
|
||||
!istype(O, /obj/item/slime_extract) && \
|
||||
!istype(O, /obj/item/organ) && \
|
||||
!istype(O, /obj/item/stack/material) \
|
||||
)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/obj/machinery/microwave/proc/start()
|
||||
src.visible_message("<span class='notice'>The microwave turns on.</span>", "<span class='notice'>You hear a microwave.</span>")
|
||||
soundloop.start()
|
||||
src.operating = TRUE
|
||||
src.icon_state = "mw1"
|
||||
SStgui.update_uis(src)
|
||||
|
||||
/obj/machinery/microwave/proc/abort()
|
||||
operating = FALSE // Turn it off again aferwards
|
||||
if(icon_state == "mw1")
|
||||
icon_state = "mw"
|
||||
SStgui.update_uis(src)
|
||||
soundloop.stop()
|
||||
|
||||
/obj/machinery/microwave/proc/stop()
|
||||
playsound(src.loc, 'sound/machines/ding.ogg', 50, 1)
|
||||
operating = FALSE // Turn it off again aferwards
|
||||
if(icon_state == "mw1")
|
||||
icon_state = "mw"
|
||||
SStgui.update_uis(src)
|
||||
soundloop.stop()
|
||||
|
||||
/obj/machinery/microwave/proc/dispose(var/message = 1)
|
||||
for (var/atom/movable/A in ((contents-component_parts)-circuit))
|
||||
A.forceMove(loc)
|
||||
if (src.reagents.total_volume)
|
||||
src.dirty++
|
||||
src.reagents.clear_reagents()
|
||||
if(message)
|
||||
to_chat(usr, "<span class='notice'>You dispose of the microwave contents.</span>")
|
||||
SStgui.update_uis(src)
|
||||
|
||||
/obj/machinery/microwave/proc/muck_start()
|
||||
playsound(src, 'sound/effects/splat.ogg', 50, 1) // Play a splat sound
|
||||
src.icon_state = "mwbloody1" // Make it look dirty!!
|
||||
|
||||
/obj/machinery/microwave/proc/muck_finish()
|
||||
src.visible_message("<span class='warning'>The microwave gets covered in muck!</span>")
|
||||
src.dirty = 100 // Make it dirty so it can't be used util cleaned
|
||||
src.flags = null //So you can't add condiments
|
||||
src.icon_state = "mwbloody" // Make it look dirty too
|
||||
src.operating = 0 // Turn it off again aferwards
|
||||
SStgui.update_uis(src)
|
||||
soundloop.stop()
|
||||
|
||||
|
||||
/obj/machinery/microwave/proc/broke()
|
||||
var/datum/effect/effect/system/spark_spread/s = new
|
||||
s.set_up(2, 1, src)
|
||||
s.start()
|
||||
src.icon_state = "mwb" // Make it look all busted up and shit
|
||||
src.visible_message("<span class='warning'>The microwave breaks!</span>") //Let them know they're stupid
|
||||
src.broken = 2 // Make it broken so it can't be used util fixed
|
||||
src.flags = null //So you can't add condiments
|
||||
src.operating = 0 // Turn it off again aferwards
|
||||
SStgui.update_uis(src)
|
||||
soundloop.stop()
|
||||
|
||||
/obj/machinery/microwave/proc/fail()
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/badrecipe/ffuu = new(src)
|
||||
var/amount = 0
|
||||
for (var/obj/O in (((contents - ffuu) - component_parts) - circuit))
|
||||
amount++
|
||||
if(O.reagents)
|
||||
var/id = O.reagents.get_master_reagent_id()
|
||||
if(id)
|
||||
amount+=O.reagents.get_reagent_amount(id)
|
||||
if(istype(O, /obj/item/weapon/holder))
|
||||
var/obj/item/weapon/holder/H = O
|
||||
if(H.held_mob)
|
||||
qdel(H.held_mob)
|
||||
qdel(O)
|
||||
src.reagents.clear_reagents()
|
||||
ffuu.reagents.add_reagent("carbon", amount)
|
||||
ffuu.reagents.add_reagent("toxin", amount/10)
|
||||
return ffuu
|
||||
|
||||
/obj/machinery/microwave/verb/Eject()
|
||||
set src in oview(1)
|
||||
set category = "Object"
|
||||
set name = "Eject content"
|
||||
usr.visible_message(
|
||||
"<span class='notice'>[usr] tries to open [src] and remove its contents.</span>" ,
|
||||
"<span class='notice'>You try to open [src] and remove its contents.</span>"
|
||||
)
|
||||
|
||||
if(!do_after(usr, 1 SECONDS, target = src))
|
||||
return
|
||||
|
||||
if(operating)
|
||||
to_chat(usr, "<span class='warning'>You can't do that, [src] door is locked!</span>")
|
||||
return
|
||||
|
||||
usr.visible_message(
|
||||
"<span class='notice'>[usr] opened [src] and has taken out [english_list(((contents-component_parts)-circuit))].</span>" ,
|
||||
"<span class='notice'>You have opened [src] and taken out [english_list(((contents-component_parts)-circuit))].</span>"
|
||||
)
|
||||
dispose()
|
||||
|
||||
/obj/machinery/microwave/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
|
||||
if(!mover)
|
||||
return 1
|
||||
if(mover.checkpass(PASSTABLE))
|
||||
//Animals can run under them, lots of empty space
|
||||
return 1
|
||||
return ..()
|
||||
|
||||
/obj/machinery/microwave/advanced // specifically for complex recipes
|
||||
name = "deluxe microwave"
|
||||
icon = 'icons/obj/deluxemicrowave.dmi'
|
||||
icon_state = "mw"
|
||||
circuit = /obj/item/weapon/circuitboard/microwave/advanced
|
||||
circuit_item_capacity = 100
|
||||
item_level = 1
|
||||
|
||||
/obj/machinery/microwave/advanced/Initialize()
|
||||
. = ..()
|
||||
reagents.maximum_volume = 1000
|
||||
|
||||
/datum/recipe/splat // We use this to handle cooking micros (or mice, etc) in a microwave. Janky but it works better than snowflake code to handle the same thing.
|
||||
items = list(
|
||||
/obj/item/weapon/holder
|
||||
)
|
||||
result = /obj/effect/decal/cleanable/blood/gibs
|
||||
|
||||
/datum/recipe/splat/before_cook(obj/container)
|
||||
if(istype(container, /obj/machinery/microwave))
|
||||
var/obj/machinery/microwave/M = container
|
||||
M.muck_start()
|
||||
playsound(container.loc, 'sound/items/drop/flesh.ogg', 100, 1)
|
||||
. = ..()
|
||||
|
||||
/datum/recipe/splat/make_food(obj/container)
|
||||
for(var/obj/item/weapon/holder/H in container)
|
||||
if(H.held_mob)
|
||||
to_chat(H.held_mob, "<span class='danger'>You hear an earsplitting humming and your head aches!</span>")
|
||||
qdel(H.held_mob)
|
||||
H.held_mob = null
|
||||
qdel(H)
|
||||
|
||||
. = ..()
|
||||
|
||||
/datum/recipe/splat/after_cook(obj/container)
|
||||
if(istype(container, /obj/machinery/microwave))
|
||||
var/obj/machinery/microwave/M = container
|
||||
M.muck_finish()
|
||||
. = ..()
|
||||
>>>>>>> 2baf13f632 (Merge pull request #11421 from MisterGrimm/XenomorphOverhaul)
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
|
||||
/turf/simulated/floor/holofloor
|
||||
thermal_conductivity = 0
|
||||
flags = TURF_ACID_IMMUNE
|
||||
|
||||
/turf/simulated/floor/holofloor/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
return
|
||||
@@ -129,12 +130,14 @@
|
||||
icon = 'icons/obj/furniture_vr.dmi'
|
||||
icon_state = "stool_padded_preview"
|
||||
anchored = TRUE
|
||||
unacidable = TRUE
|
||||
pressure_resistance = 15
|
||||
|
||||
/obj/item/clothing/gloves/boxing/hologlove
|
||||
name = "boxing gloves"
|
||||
desc = "Because you really needed another excuse to punch your crewmates."
|
||||
icon_state = "boxing"
|
||||
unacidable = TRUE
|
||||
item_icons = list(
|
||||
slot_l_hand_str = 'icons/mob/items/lefthand_gloves.dmi',
|
||||
slot_r_hand_str = 'icons/mob/items/righthand_gloves.dmi',
|
||||
@@ -291,6 +294,7 @@
|
||||
throwforce = 0
|
||||
w_class = ITEMSIZE_SMALL
|
||||
flags = NOBLOODY
|
||||
unacidable = TRUE
|
||||
var/active = 0
|
||||
|
||||
/obj/item/weapon/holo/esword/green/New()
|
||||
@@ -359,6 +363,7 @@
|
||||
name = "basketball"
|
||||
desc = "Here's your chance, do your dance at the Space Jam."
|
||||
w_class = ITEMSIZE_LARGE //Stops people from hiding it in their bags/pockets
|
||||
unacidable = TRUE
|
||||
drop_sound = 'sound/items/drop/basketball.ogg'
|
||||
pickup_sound = 'sound/items/pickup/basketball.ogg'
|
||||
|
||||
@@ -369,6 +374,7 @@
|
||||
icon_state = "hoop"
|
||||
anchored = TRUE
|
||||
density = TRUE
|
||||
unacidable = TRUE
|
||||
throwpass = 1
|
||||
|
||||
/obj/structure/holohoop/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
@@ -411,6 +417,7 @@
|
||||
var/area/currentarea = null
|
||||
var/eventstarted = 0
|
||||
|
||||
unacidable = TRUE
|
||||
anchored = TRUE
|
||||
use_power = USE_POWER_IDLE
|
||||
idle_power_usage = 2
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
icon_state = "hydrotray3"
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
unacidable = TRUE
|
||||
flags = OPENCONTAINER
|
||||
volume = 100
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
initial_flooring = /decl/flooring/looking_glass
|
||||
appearance_flags = TILE_BOUND
|
||||
dynamic_lighting = FALSE
|
||||
flags = TURF_ACID_IMMUNE
|
||||
|
||||
var/center = FALSE
|
||||
var/optional = FALSE
|
||||
|
||||
@@ -141,3 +141,4 @@
|
||||
stack_origin_tech = list(TECH_MATERIAL = 2)
|
||||
composite_material = list(MAT_STEEL = SHEET_MATERIAL_AMOUNT / 2, "borosilicate glass" = SHEET_MATERIAL_AMOUNT)
|
||||
rod_product = null
|
||||
flags = MATERIAL_UNMELTABLE
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
icon_base = "hull"
|
||||
icon_reinf = "reinf_mesh"
|
||||
icon_colour = "#666677"
|
||||
flags = MATERIAL_UNMELTABLE
|
||||
|
||||
/datum/material/steel/hull/place_sheet(var/turf/target) //Deconstructed into normal steel sheets.
|
||||
new /obj/item/stack/material/steel(target)
|
||||
@@ -18,6 +19,7 @@
|
||||
icon_reinf = "reinf_mesh"
|
||||
icon_colour = "#777788"
|
||||
explosion_resistance = 40
|
||||
flags = MATERIAL_UNMELTABLE
|
||||
|
||||
/datum/material/plasteel/hull/place_sheet(var/turf/target) //Deconstructed into normal plasteel sheets.
|
||||
new /obj/item/stack/material/plasteel(target)
|
||||
@@ -30,6 +32,7 @@
|
||||
icon_colour = "#45829a"
|
||||
explosion_resistance = 90
|
||||
reflectivity = 0.9
|
||||
flags = MATERIAL_UNMELTABLE
|
||||
|
||||
/datum/material/durasteel/hull/place_sheet(var/turf/target) //Deconstructed into normal durasteel sheets.
|
||||
new /obj/item/stack/material/durasteel(target)
|
||||
@@ -39,6 +42,7 @@
|
||||
stack_type = /obj/item/stack/material/titanium/hull
|
||||
icon_base = "hull"
|
||||
icon_reinf = "reinf_mesh"
|
||||
flags = MATERIAL_UNMELTABLE
|
||||
|
||||
/datum/material/titanium/hull/place_sheet(var/turf/target) //Deconstructed into normal titanium sheets.
|
||||
new /obj/item/stack/material/titanium(target)
|
||||
@@ -48,6 +52,7 @@
|
||||
stack_type = /obj/item/stack/material/morphium/hull
|
||||
icon_base = "hull"
|
||||
icon_reinf = "reinf_mesh"
|
||||
flags = MATERIAL_UNMELTABLE
|
||||
|
||||
/datum/material/morphium/hull/place_sheet(var/turf/target)
|
||||
new /obj/item/stack/material/morphium(target)
|
||||
@@ -16,6 +16,7 @@
|
||||
sheet_plural_name = "crystals"
|
||||
is_fusion_fuel = 1
|
||||
stack_origin_tech = list(TECH_MATERIAL = 8, TECH_PHORON = 5, TECH_BLUESPACE = 4)
|
||||
flags = MATERIAL_UNMELTABLE
|
||||
|
||||
/datum/material/supermatter/generate_recipes()
|
||||
recipes = list(
|
||||
|
||||
@@ -158,21 +158,20 @@
|
||||
// OBJ CHECK
|
||||
var/cannot_melt
|
||||
if(isobj(O))
|
||||
var/obj/I = O
|
||||
var/obj/I = O //Gurgs : Melts pretty much any object that isn't considered unacidable = TRUE
|
||||
if(I.unacidable)
|
||||
cannot_melt = 1
|
||||
else
|
||||
if(istype(O, /turf/simulated/wall))
|
||||
var/turf/simulated/wall/W = O
|
||||
var/turf/simulated/wall/W = O //Gurgs : Walls are deconstructed into girders.
|
||||
if(W.material.flags & MATERIAL_UNMELTABLE)
|
||||
cannot_melt = 1
|
||||
else if(istype(O, /turf/simulated/floor))
|
||||
/* var/turf/simulated/floor/F = O //Turfs are qdel'd to space (Even asteroid tiles), will need to be touched by someone smarter than myself. -Mech
|
||||
var/turf/simulated/floor/F = O //Gurgs : Floors are destroyed with ex_act(1), turning them into whatever tile it would be if empty. Z-Level Friendly, does not destroy pipes.
|
||||
if(F.flooring && (F.flooring.flags & TURF_ACID_IMMUNE))
|
||||
*/
|
||||
cannot_melt = 1
|
||||
cannot_melt = 1
|
||||
else
|
||||
cannot_melt = 1
|
||||
cannot_melt = 1 //Gurgs : Everything that isn't a object, simulated wall, or simulated floor is assumed to be acid immune. Includes weird things like unsimulated floors and space.
|
||||
|
||||
if(cannot_melt)
|
||||
to_chat(src, "<span class='alium'>You cannot dissolve this object.</span>")
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
opacity = 0
|
||||
density = FALSE
|
||||
anchored = TRUE
|
||||
unacidable = TRUE
|
||||
layer = STAIRS_LAYER
|
||||
|
||||
/obj/structure/stairs/Initialize()
|
||||
|
||||
@@ -21,6 +21,7 @@ You can also set the stat of a NIF to NIF_TEMPFAIL without any issues to disable
|
||||
|
||||
icon = 'icons/obj/device_alt.dmi'
|
||||
icon_state = "nif_0"
|
||||
unacidable = TRUE
|
||||
|
||||
w_class = ITEMSIZE_TINY
|
||||
var/known_implant = TRUE
|
||||
|
||||
@@ -92,6 +92,7 @@ GLOBAL_LIST_EMPTY(apcs)
|
||||
icon_state = "apc0"
|
||||
layer = ABOVE_WINDOW_LAYER
|
||||
anchored = TRUE
|
||||
unacidable = TRUE
|
||||
use_power = USE_POWER_OFF
|
||||
clicksound = "switch"
|
||||
req_access = list(access_engine_equip)
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
var/icon_state_off = "bbox_off"
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
unacidable = TRUE
|
||||
circuit = /obj/item/weapon/circuitboard/breakerbox
|
||||
var/on = 0
|
||||
var/busy = 0
|
||||
|
||||
@@ -46,6 +46,7 @@ var/list/possible_cable_coil_colours = list(
|
||||
/obj/structure/cable
|
||||
level = 1
|
||||
anchored =TRUE
|
||||
unacidable = TRUE
|
||||
var/datum/powernet/powernet
|
||||
name = "power cable"
|
||||
desc = "A flexible superconducting cable for heavy-duty power transfer."
|
||||
|
||||
@@ -6,6 +6,7 @@ GLOBAL_LIST_EMPTY(all_turbines)
|
||||
icon_state = "teg-unassembled"
|
||||
density = TRUE
|
||||
anchored = FALSE
|
||||
unacidable = TRUE
|
||||
|
||||
use_power = USE_POWER_IDLE
|
||||
idle_power_usage = 100 //Watts, I hope. Just enough to do the computer and display things.
|
||||
|
||||
@@ -24,6 +24,7 @@ GLOBAL_LIST_EMPTY(gravity_generators)
|
||||
icon = 'icons/obj/machines/gravity_generator.dmi'
|
||||
anchored = TRUE
|
||||
density = TRUE
|
||||
unacidable = TRUE
|
||||
use_power = USE_POWER_OFF
|
||||
var/sprite_number = 0
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
icon_state = "emitter"
|
||||
anchored = FALSE
|
||||
density = TRUE
|
||||
unacidable = TRUE
|
||||
req_access = list(access_engine_equip)
|
||||
var/id = null
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ GLOBAL_LIST_EMPTY(smeses)
|
||||
icon_state = "smes"
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
unacidable = TRUE
|
||||
use_power = USE_POWER_OFF
|
||||
circuit = /obj/item/weapon/circuitboard/smes
|
||||
clicksound = "switch"
|
||||
|
||||
@@ -13,6 +13,7 @@ GLOBAL_LIST_EMPTY(solars_list)
|
||||
icon_state = "sp_base"
|
||||
anchored = TRUE
|
||||
density = TRUE
|
||||
unacidable = TRUE
|
||||
use_power = USE_POWER_OFF
|
||||
idle_power_usage = 0
|
||||
active_power_usage = 0
|
||||
|
||||
@@ -56,6 +56,7 @@
|
||||
layer = ABOVE_MOB_LAYER // So people can walk behind the top part
|
||||
density = TRUE
|
||||
anchored = FALSE
|
||||
unacidable = TRUE
|
||||
light_range = 4
|
||||
|
||||
var/gasefficency = 0.25
|
||||
|
||||
@@ -139,6 +139,7 @@
|
||||
force = 5
|
||||
slot_flags = SLOT_BELT
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
unacidable = TRUE
|
||||
projectile_type = /obj/item/projectile/beam
|
||||
origin_tech = null
|
||||
fire_delay = 10 //Old pistol
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
desc = "Used to seperate and package chemicals in to patches, pills, or bottles. Warranty void if used to create Space Drugs."
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
unacidable = TRUE
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "mixer0"
|
||||
circuit = /obj/item/weapon/circuitboard/chem_master
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
use_power = USE_POWER_IDLE
|
||||
idle_power_usage = 100
|
||||
anchored = TRUE
|
||||
unacidable = TRUE
|
||||
|
||||
/obj/machinery/chemical_dispenser/Initialize()
|
||||
. = ..()
|
||||
|
||||
@@ -752,6 +752,7 @@
|
||||
desc = "An underfloor disposal pipe."
|
||||
anchored = TRUE
|
||||
density = FALSE
|
||||
unacidable = TRUE
|
||||
|
||||
level = 1 // underfloor only
|
||||
var/dpdir = 0 // bitmask of pipe directions
|
||||
|
||||
@@ -54,6 +54,7 @@ var/global/list/obj/machinery/message_server/message_servers = list()
|
||||
desc = "Facilitates both PDA messages and request console functions."
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
unacidable = TRUE
|
||||
use_power = USE_POWER_IDLE
|
||||
idle_power_usage = 10
|
||||
active_power_usage = 100
|
||||
@@ -239,6 +240,7 @@ var/obj/machinery/blackbox_recorder/blackbox
|
||||
desc = "Records all radio communications, as well as various other information in case of the worst."
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
unacidable = TRUE
|
||||
use_power = USE_POWER_IDLE
|
||||
idle_power_usage = 10
|
||||
active_power_usage = 100
|
||||
|
||||
@@ -44,6 +44,7 @@
|
||||
//This controller goes on the escape pod itself
|
||||
/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod
|
||||
name = "escape pod controller"
|
||||
unacidable = TRUE
|
||||
program = /datum/embedded_program/docking/simple
|
||||
var/datum/shuttle/autodock/ferry/escape_pod/pod
|
||||
valid_actions = list("toggle_override", "force_door")
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
name = "Elevator Door"
|
||||
desc = "Ding."
|
||||
req_access = list(access_maint_tunnels)
|
||||
unacidable = TRUE
|
||||
opacity = 0
|
||||
autoclose = 0
|
||||
glass = 1
|
||||
|
||||
Reference in New Issue
Block a user