mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-25 05:51:56 +01:00
Object Examine Text Overhaul (#20923)
Extends and reworks how various extended information text (desc_info, desc_build, desc_upgrades) are handled to make object interactions and mechanics A.) much more clearly documented in-game and B.) much easier to support from the back-end. Almost certainly a candidate for test merge. Assembly/Disassembly instructions are noticeably sporadic, largely due to our current lack of a unified framework. That's a future thing I'd like to attack so that it can be handled programmatically, but for now I only targeted the biggest culprits as I came across them. --------- Signed-off-by: Batrachophreno <Batrochophreno@gmail.com>
This commit is contained in:
@@ -15,6 +15,14 @@
|
||||
var/obj/item/device/assembly/a_right = null
|
||||
var/obj/special_assembly = null
|
||||
|
||||
/obj/item/device/assembly_holder/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
if(distance <= 1 || src.loc == user)
|
||||
if (src.secured)
|
||||
. += SPAN_NOTICE("\The [src] is ready!")
|
||||
else
|
||||
. += SPAN_NOTICE("\The [src] can be attached!")
|
||||
|
||||
/obj/item/device/assembly_holder/Initialize(mapload, ...)
|
||||
. = ..()
|
||||
become_hearing_sensitive()
|
||||
@@ -82,14 +90,6 @@
|
||||
if(master)
|
||||
master.update_icon()
|
||||
|
||||
/obj/item/device/assembly_holder/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
if(distance <= 1 || src.loc == user)
|
||||
if (src.secured)
|
||||
. += SPAN_NOTICE("\The [src] is ready!")
|
||||
else
|
||||
. += SPAN_NOTICE("\The [src] can be attached!")
|
||||
|
||||
/obj/item/device/assembly_holder/HasProximity(atom/movable/AM as mob|obj)
|
||||
if(a_left)
|
||||
a_left.HasProximity(AM)
|
||||
|
||||
@@ -15,6 +15,11 @@
|
||||
var/obj/effect/beam/i_beam/first = null
|
||||
var/turf/beam_origin //If we're not on this turf anymore, we've moved. Catches holder.master movements when we're attached to bombs and stuff.
|
||||
|
||||
/obj/item/device/assembly/infra/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
var/direction_text = dir2text(dir)
|
||||
. += SPAN_NOTICE("It is facing [direction_text].")
|
||||
|
||||
/obj/item/device/assembly/infra/activate()
|
||||
if(!..())
|
||||
return FALSE //Cooldown check
|
||||
@@ -58,11 +63,6 @@
|
||||
to_chat(user, SPAN_NOTICE("You rotate \the [src] to face [direction_text]."))
|
||||
QDEL_NULL(first)
|
||||
|
||||
/obj/item/device/assembly/infra/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
var/direction_text = dir2text(dir)
|
||||
. += SPAN_NOTICE("It is facing [direction_text].")
|
||||
|
||||
/obj/item/device/assembly/infra/process()
|
||||
|
||||
if(!on || !secured)
|
||||
|
||||
@@ -20,6 +20,15 @@
|
||||
var/datum/radio_frequency/radio_connection
|
||||
var/deadman = FALSE
|
||||
|
||||
/obj/item/device/assembly/signaler/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Signalers can be attached to a variety of machinery to remotely activate them."
|
||||
. += "Signalers can be to individual wires within machinery; when a signal is received, it will pulse the wire much like a multitool."
|
||||
|
||||
/obj/item/device/assembly/signaler/antagonist_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Signalers can be attached to a variety of machinery to do unspeakable harm or serve as fantastic diversions."
|
||||
|
||||
/obj/item/device/assembly/signaler/Initialize()
|
||||
. = ..()
|
||||
set_frequency(frequency)
|
||||
|
||||
@@ -4,8 +4,6 @@
|
||||
/obj/machinery/atmospherics/binary/circulator
|
||||
name = "circulator"
|
||||
desc = "A gas circulator turbine and heat exchanger."
|
||||
desc_info = "This generates electricity, depending on the difference in temperature between each side of the machine. The meter in \
|
||||
the center of the machine gives an indicator of how much elecrtricity is being generated."
|
||||
icon = 'icons/obj/power.dmi'
|
||||
icon_state = "circ-unassembled"
|
||||
anchored = FALSE
|
||||
@@ -26,6 +24,11 @@
|
||||
|
||||
density = TRUE
|
||||
|
||||
/obj/machinery/atmospherics/binary/circulator/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "This generates electricity, depending on the difference in temperature between each side of the machine."
|
||||
. += "The meter in the center of the machine gives an indicator of how much elecrtricity is being generated."
|
||||
|
||||
/obj/machinery/atmospherics/binary/circulator/Initialize()
|
||||
. = ..()
|
||||
desc = initial(desc) + " Its outlet port is to the [dir2text(dir)]."
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
/obj/machinery/atmospherics/binary/passive_gate
|
||||
name = "pressure regulator"
|
||||
desc = "A one-way air valve that can be used to regulate input or output pressure, and flow rate. Does not require power."
|
||||
desc_info = "This is a one-way regulator, allowing gas to flow only at a specific pressure and flow rate. If the light is green, it is flowing."
|
||||
icon = 'icons/atmos/passive_gate.dmi'
|
||||
icon_state = "map"
|
||||
level = 1
|
||||
@@ -26,8 +25,14 @@
|
||||
|
||||
var/broadcast_status_next_process = FALSE
|
||||
|
||||
/obj/machinery/atmospherics/binary/passive_gate/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "This is a one-way regulator, allowing gas to flow only at a specific pressure and flow rate."
|
||||
. += "If the light is green, it is flowing."
|
||||
|
||||
/obj/machinery/atmospherics/binary/passive_gate/on
|
||||
unlocked = 1
|
||||
|
||||
/obj/machinery/atmospherics/binary/passive_gate/on/input
|
||||
regulate_mode = REGULATE_INPUT
|
||||
|
||||
|
||||
@@ -15,7 +15,6 @@ Thus, the two variables affect pump operation are set in New():
|
||||
/obj/machinery/atmospherics/binary/pump
|
||||
name = "gas pump"
|
||||
desc = "A pump."
|
||||
desc_info = "This moves gas from one pipe to another. A higher target pressure demands more energy. The side with the colored end is the output."
|
||||
icon = 'icons/atmos/pump.dmi'
|
||||
icon_state = "map_off"
|
||||
level = 1
|
||||
@@ -37,6 +36,11 @@ Thus, the two variables affect pump operation are set in New():
|
||||
|
||||
var/broadcast_status_next_process = FALSE
|
||||
|
||||
/obj/machinery/atmospherics/binary/pump/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "This moves gas from one pipe to another. A higher target pressure demands more energy."
|
||||
. += "The side with the colored end is the output."
|
||||
|
||||
/obj/machinery/atmospherics/binary/pump/Initialize()
|
||||
. = ..()
|
||||
air1.volume = ATMOS_DEFAULT_VOLUME_PUMP
|
||||
|
||||
@@ -5,8 +5,6 @@
|
||||
name = "omni gas filter"
|
||||
icon_state = "map_filter"
|
||||
base_icon = "filter"
|
||||
desc_info = "Filters gas from a custom input direction, with up to two filtered outputs and a 'everything else' \
|
||||
output. The filtered output's arrows glow orange."
|
||||
|
||||
var/list/active_filters = new()
|
||||
var/datum/omni_port/input
|
||||
@@ -20,6 +18,11 @@
|
||||
|
||||
var/list/filtering_outputs = list() //maps gasids to gas_mixtures
|
||||
|
||||
/obj/machinery/atmospherics/omni/filter/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Filters gas from a custom input direction, with up to two filtered outputs and an 'everything else' output."
|
||||
. += "The filtered output's arrows glow orange."
|
||||
|
||||
/obj/machinery/atmospherics/omni/filter/Initialize()
|
||||
. = ..()
|
||||
rebuild_filtering_list()
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
name = "omni gas mixer"
|
||||
icon_state = "map_mixer"
|
||||
base_icon = "mixer"
|
||||
desc_info = "Combines gas from custom input and output directions. The percentage of combined gas can be defined."
|
||||
|
||||
use_power = POWER_USE_IDLE
|
||||
idle_power_usage = 150 //internal circuitry, friction losses and stuff
|
||||
@@ -25,6 +24,10 @@
|
||||
|
||||
var/list/mixing_inputs = list()
|
||||
|
||||
/obj/machinery/atmospherics/omni/mixer/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Combines gas from custom input and output directions. The percentage of combined gas can be defined."
|
||||
|
||||
/obj/machinery/atmospherics/omni/mixer/Initialize()
|
||||
. = ..()
|
||||
if(mapper_set())
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
/obj/machinery/atmospherics/tvalve
|
||||
name = "manual switching valve"
|
||||
desc = "A pipe valve."
|
||||
desc_info = "Click this to toggle the mode. The direction with the green light is where the gas will flow."
|
||||
icon = 'icons/atmos/tvalve.dmi'
|
||||
icon_state = "map_tvalve0"
|
||||
|
||||
@@ -18,6 +17,10 @@
|
||||
var/datum/pipe_network/network_node2
|
||||
var/datum/pipe_network/network_node3
|
||||
|
||||
/obj/machinery/atmospherics/tvalve/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Click this to toggle the mode. The direction with the green light is where the gas will flow."
|
||||
|
||||
/obj/machinery/atmospherics/tvalve/bypass
|
||||
icon_state = "map_tvalve1"
|
||||
state = 1
|
||||
|
||||
@@ -4,9 +4,6 @@
|
||||
/obj/machinery/atmospherics/unary/freezer
|
||||
name = "gas cooling system"
|
||||
desc = "Cools gas when connected to pipe network."
|
||||
desc_info = "Cools down the gas of the pipe it is connected to. It uses massive amounts of electricity while on. \
|
||||
It can be upgraded by replacing the capacitors, manipulators, and matter bins. It can be deconstructed by screwing the maintenance panel open with a \
|
||||
screwdriver, and then using a crowbar."
|
||||
icon = 'icons/obj/machinery/sleeper.dmi'
|
||||
icon_state = "freezer_0"
|
||||
density = 1
|
||||
@@ -31,12 +28,18 @@
|
||||
/obj/item/stack/cable_coil{amount = 2}
|
||||
)
|
||||
|
||||
component_hint_bin = "Upgraded <b>matter bins</b> will improve cooling efficiency and increase the volume of air it can cool at once."
|
||||
component_hint_cap = "Upgraded <b>capacitors</b> will increase maximum power setting."
|
||||
component_hint_servo = "Upgraded <b>manipulators</b> will improve cooling efficiency."
|
||||
|
||||
parts_power_mgmt = FALSE
|
||||
|
||||
/obj/machinery/atmospherics/unary/freezer/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Cools down the gas of the pipe it is connected to. It uses massive amounts of electricity while on."
|
||||
|
||||
/obj/machinery/atmospherics/unary/freezer/upgrade_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Upgraded <b>matter bins</b> will improve cooling efficiency and increase the volume of air it can cool at once."
|
||||
. += "Upgraded <b>capacitors</b> will increase maximum power setting."
|
||||
. += "Upgraded <b>manipulators</b> will improve cooling efficiency."
|
||||
|
||||
/obj/machinery/atmospherics/unary/freezer/Initialize()
|
||||
initialize_directions = dir
|
||||
. = ..()
|
||||
@@ -186,8 +189,3 @@
|
||||
return TRUE
|
||||
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/unary/freezer/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
if(panel_open)
|
||||
. += "The maintenance hatch is open."
|
||||
|
||||
@@ -4,9 +4,6 @@
|
||||
/obj/machinery/atmospherics/unary/heater
|
||||
name = "gas heating system"
|
||||
desc = "Heats gas when connected to a pipe network."
|
||||
desc_info = "Heats up the gas of the pipe it is connected to. It uses massive amounts of electricity while on. \
|
||||
It can be upgraded by replacing the capacitors, manipulators, and matter bins. It can be deconstructed by screwing the maintenance panel open with a \
|
||||
screwdriver, and then using a crowbar."
|
||||
icon = 'icons/obj/machinery/sleeper.dmi'
|
||||
icon_state = "heater_0"
|
||||
density = 1
|
||||
@@ -30,8 +27,14 @@
|
||||
/obj/item/stack/cable_coil{amount = 5}
|
||||
)
|
||||
|
||||
component_hint_bin = "Upgraded <b>matter bins</b> will increase maximum temperature setting and the volume of air it can heat at once."
|
||||
component_hint_cap = "Upgraded <b>capacitors</b> will increase maximum power setting and maximum temperature setting."
|
||||
/obj/machinery/atmospherics/unary/heater/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "heats up the gas of the pipe it is connected to. It uses massive amounts of electricity while on."
|
||||
|
||||
/obj/machinery/atmospherics/unary/heater/upgrade_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Upgraded <b>matter bins</b> will increase maximum temperature setting and the volume of air it can heat at once."
|
||||
. += "Upgraded <b>capacitors</b> will increase maximum power setting and maximum temperature setting."
|
||||
|
||||
/obj/machinery/atmospherics/unary/heater/Initialize()
|
||||
initialize_directions = dir
|
||||
@@ -171,8 +174,3 @@
|
||||
return TRUE
|
||||
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/unary/heater/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
if(panel_open)
|
||||
. += "The maintenance hatch is open."
|
||||
|
||||
@@ -5,8 +5,6 @@
|
||||
/obj/machinery/atmospherics/unary/outlet_injector
|
||||
name = "air injector"
|
||||
desc = "Passively injects air into its surroundings. Has a valve attached to it that can control flow rate."
|
||||
desc_info = "Outputs the pipe's gas into the atmosphere, similar to an airvent. It can be controlled by a nearby atmospherics computer. \
|
||||
A green light on it means it is on."
|
||||
icon = 'icons/atmos/injector.dmi'
|
||||
icon_state = "map_injector"
|
||||
|
||||
@@ -26,6 +24,12 @@
|
||||
|
||||
level = 1
|
||||
|
||||
/obj/machinery/atmospherics/unary/outlet_injector/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Outputs the pipe's gas into the atmosphere, similar to an airvent."
|
||||
. += "It can be controlled by a nearby atmospherics computer."
|
||||
. += "A green light on it means it is on."
|
||||
|
||||
/obj/machinery/atmospherics/unary/outlet_injector/Initialize()
|
||||
. = ..()
|
||||
air_contents.volume = ATMOS_DEFAULT_VOLUME_PUMP + 500 //Give it a small reservoir for injecting. Also allows it to have a higher flow rate limit than vent pumps, to differentiate injectors a bit more.
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
/obj/machinery/atmospherics/unary/vent_pump
|
||||
name = "air vent"
|
||||
desc = "Has a valve and pump attached to it."
|
||||
desc_info = "This pumps the contents of the attached pipe out into the atmosphere, if needed. It can be controlled from an Air Alarm."
|
||||
icon = 'icons/atmos/vent_pump.dmi'
|
||||
icon_state = "map_vent"
|
||||
|
||||
@@ -51,6 +50,20 @@
|
||||
|
||||
var/broadcast_status_next_process = FALSE
|
||||
|
||||
/obj/machinery/atmospherics/unary/vent_pump/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "This pumps the contents of the attached pipe out into the atmosphere, if needed."
|
||||
. += "It can be controlled from an Air Alarm."
|
||||
|
||||
/obj/machinery/atmospherics/unary/vent_pump/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
if(distance <= 1)
|
||||
. += "A small gauge in the corner reads [round(last_flow_rate, 0.1)] L/s at [round(last_power_draw)] W."
|
||||
else
|
||||
. += "You are too far away to read the gauge."
|
||||
if(welded)
|
||||
. += "It seems welded shut."
|
||||
|
||||
/obj/machinery/atmospherics/unary/vent_pump/on
|
||||
use_power = POWER_USE_IDLE
|
||||
icon_state = "map_vent_out"
|
||||
@@ -455,15 +468,6 @@
|
||||
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/unary/vent_pump/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
if(distance <= 1)
|
||||
. += "A small gauge in the corner reads [round(last_flow_rate, 0.1)] L/s at [round(last_power_draw)] W."
|
||||
else
|
||||
. += "You are too far away to read the gauge."
|
||||
if(welded)
|
||||
. += "It seems welded shut."
|
||||
|
||||
/obj/machinery/atmospherics/unary/vent_pump/power_change()
|
||||
var/old_stat = stat
|
||||
..()
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
/obj/machinery/atmospherics/unary/vent_scrubber
|
||||
name = "air scrubber"
|
||||
desc = "Has a valve and pump attached to it."
|
||||
desc_info = "This filters the atmosphere of harmful gas. Filtered gas goes to the pipes connected to it, typically a scrubber pipe. \
|
||||
It can be controlled from an Air Alarm. It can be configured to drain all air rapidly with a 'panic syphon' from an air alarm."
|
||||
icon = 'icons/atmos/vent_scrubber.dmi'
|
||||
icon_state = "map_scrubber_off"
|
||||
|
||||
@@ -33,6 +31,21 @@
|
||||
|
||||
var/broadcast_status_next_process = FALSE
|
||||
|
||||
/obj/machinery/atmospherics/unary/vent_scrubber/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "This filters the atmosphere of harmful gas. Filtered gas goes to the pipes connected to it, typically a scrubber pipe."
|
||||
. += "It can be controlled from an Air Alarm."
|
||||
. += "It can be configured to drain all air rapidly with a 'panic siphon' from an air alarm."
|
||||
|
||||
/obj/machinery/atmospherics/unary/vent_scrubber/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
if(distance <= 1)
|
||||
. += "A small gauge in the corner reads [round(last_flow_rate, 0.1)] L/s at [round(last_power_draw)] W."
|
||||
else
|
||||
. += "You are too far away to read the gauge."
|
||||
if(welded)
|
||||
. += "It seems welded shut."
|
||||
|
||||
/obj/machinery/atmospherics/unary/vent_scrubber/on
|
||||
use_power = POWER_USE_IDLE
|
||||
icon_state = "map_scrubber_on"
|
||||
@@ -416,12 +429,3 @@
|
||||
return TRUE
|
||||
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/unary/vent_scrubber/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
if(distance <= 1)
|
||||
. += "A small gauge in the corner reads [round(last_flow_rate, 0.1)] L/s at [round(last_power_draw)] W."
|
||||
else
|
||||
. += "You are too far away to read the gauge."
|
||||
if(welded)
|
||||
. += "It seems welded shut."
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
/obj/machinery/atmospherics/valve
|
||||
name = "manual valve"
|
||||
desc = "A pipe valve."
|
||||
desc_info = "Click this to turn the valve. If red, the pipes on each end are seperated. Otherwise, they are connected."
|
||||
icon = 'icons/atmos/valve.dmi'
|
||||
icon_state = "map_valve0"
|
||||
|
||||
@@ -15,6 +14,15 @@
|
||||
var/datum/pipe_network/network_node1
|
||||
var/datum/pipe_network/network_node2
|
||||
|
||||
/obj/machinery/atmospherics/valve/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "It is [open ? "open" : "closed"]."
|
||||
|
||||
/obj/machinery/atmospherics/valve/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Click this to turn the valve."
|
||||
. += "If red, the pipes on each end are seperated. Otherwise, they are connected."
|
||||
|
||||
/obj/machinery/atmospherics/valve/open
|
||||
open = 1
|
||||
icon_state = "map_valve1"
|
||||
@@ -323,7 +331,3 @@
|
||||
new /obj/item/pipe(loc, make_from=src)
|
||||
qdel(src)
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/atmospherics/valve/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
. += "It is [open ? "open" : "closed"]."
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/heat_exchanging
|
||||
desc_info = "This radiates heat from the pipe's gas to space, cooling it down."
|
||||
icon = 'icons/atmos/heat.dmi'
|
||||
icon_state = "intact"
|
||||
pipe_icon = "hepipe"
|
||||
@@ -19,6 +18,11 @@
|
||||
volume = ATMOS_DEFAULT_VOLUME_HE_PIPE
|
||||
|
||||
// BubbleWrap
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/heat_exchanging/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "This radiates heat from the pipe's gas to space, cooling it down."
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/heat_exchanging/Initialize()
|
||||
. = ..()
|
||||
initialize_directions_he = initialize_directions // The auto-detection from /pipe is good enough for a simple HE pipe
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
/obj/machinery/atmospherics/pipe
|
||||
desc_info = "This pipe, and all other pipes, can be connected or disconnected by a wrench. The internal pressure of the pipe must \
|
||||
be below 300 kPa to do this. More pipes can be obtained from the pipe dispenser."
|
||||
obj_flags = OBJ_FLAG_MOVES_UNSUPPORTED
|
||||
var/datum/gas_mixture/air_temporary // used when reconstructing a pipeline that broke
|
||||
var/datum/pipeline/parent
|
||||
@@ -16,18 +14,17 @@
|
||||
buckle_require_restraints = 1
|
||||
buckle_lying = -1
|
||||
|
||||
/obj/machinery/atmospherics/pipe/drain_power()
|
||||
return -1
|
||||
/obj/machinery/atmospherics/pipe/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "This pipe, and all other pipes, can be safely connected or disconnected by a pipe wrench. The internal pressure of the pipe must \
|
||||
be below 300 kPa to do this."
|
||||
. += "Using a regular wrench on a pressurized pipe is not a good idea."
|
||||
. += "Special pipe types, like Supply, Scrubber, Fuel, and Aux, will not connect to normal pipes or to each other. If you want to connect them, use \
|
||||
a Universal Adapter pipe."
|
||||
. += "Use an Analyzer on a pipe to get details on its contents."
|
||||
|
||||
/obj/machinery/atmospherics/pipe/Initialize()
|
||||
if(istype(get_turf(src), /turf/simulated/wall) || istype(get_turf(src), /turf/unsimulated/wall))
|
||||
level = 1
|
||||
. = ..()
|
||||
desc_info += "<br>Most pipes and atmospheric devices can be connected or disconnected with a wrench. The pipe's pressure must not be too high, \
|
||||
or if it is a device, it must be turned off first."
|
||||
|
||||
/obj/machinery/atmospherics/pipe/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
/obj/machinery/atmospherics/pipe/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
var/pipe_color_check = pipe_color || PIPE_COLOR_GREY
|
||||
var/found_color_name = "Unknown"
|
||||
for(var/color_name in GLOB.pipe_colors)
|
||||
@@ -37,6 +34,14 @@
|
||||
break
|
||||
. += "This pipe is: <span style='color:[pipe_color_check == PIPE_COLOR_GREY ? COLOR_GRAY : pipe_color_check]'>[capitalize(found_color_name)]</span>"
|
||||
|
||||
/obj/machinery/atmospherics/pipe/drain_power()
|
||||
return -1
|
||||
|
||||
/obj/machinery/atmospherics/pipe/Initialize()
|
||||
if(istype(get_turf(src), /turf/simulated/wall) || istype(get_turf(src), /turf/unsimulated/wall))
|
||||
level = 1
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/atmospherics/pipe/hides_under_flooring()
|
||||
return level != 2
|
||||
|
||||
@@ -351,16 +356,12 @@
|
||||
return null
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/visible
|
||||
desc_info = "This is a special 'scrubber' pipe, which does not connect to 'normal' pipes. If you want to connect it, use \
|
||||
a Universal Adapter pipe."
|
||||
icon_state = "intact"
|
||||
level = 2
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/visible/scrubbers
|
||||
name = "Scrubbers pipe"
|
||||
desc = "A one meter section of scrubbers pipe."
|
||||
desc_info = "This is a special 'scrubbers' pipe, which does not connect to 'normal' pipes. If you want to connect it, use \
|
||||
a Universal Adapter pipe."
|
||||
icon_state = "intact-scrubbers"
|
||||
connect_types = CONNECT_TYPE_SCRUBBER
|
||||
icon_connect_type = "-scrubbers"
|
||||
@@ -369,8 +370,6 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/visible/supply
|
||||
name = "Air supply pipe"
|
||||
desc = "A one meter section of supply pipe"
|
||||
desc_info = "This is a special 'supply' pipe, which does not connect to 'normal' pipes. If you want to connect it, use \
|
||||
a Universal Adapter pipe."
|
||||
icon_state = "intact-supply"
|
||||
connect_types = CONNECT_TYPE_SUPPLY
|
||||
icon_connect_type = "-supply"
|
||||
@@ -379,8 +378,6 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/visible/fuel
|
||||
name = "Fuel pipe"
|
||||
desc = "A one meter section of fuel pipe."
|
||||
desc_info = "This is a special 'fuel' pipe, which does not connect to 'normal' pipes. If you want to connect it, use \
|
||||
a Universal Adapter pipe."
|
||||
icon_state = "intact-fuel"
|
||||
connect_types = CONNECT_TYPE_FUEL
|
||||
icon_connect_type = "-fuel"
|
||||
@@ -389,8 +386,6 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/visible/aux
|
||||
name = "Auxiliary pipe"
|
||||
desc = "A one meter section of auxiliary pipe."
|
||||
desc_info = "This is a special 'aux' pipe, which does not connect to 'normal' pipes. If you want to connect it, use \
|
||||
a Universal Adapter pipe."
|
||||
icon_state = "intact-aux"
|
||||
connect_types = CONNECT_TYPE_AUX
|
||||
icon_connect_type = "-aux"
|
||||
@@ -425,8 +420,6 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers
|
||||
name = "Scrubbers pipe"
|
||||
desc = "A one meter section of scrubbers pipe."
|
||||
desc_info = "This is a special 'scrubber' pipe, which does not connect to 'normal' pipes. If you want to connect it, use \
|
||||
a Universal Adapter pipe."
|
||||
icon_state = "intact-scrubbers"
|
||||
connect_types = CONNECT_TYPE_SCRUBBER
|
||||
icon_connect_type = "-scrubbers"
|
||||
@@ -435,8 +428,6 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply
|
||||
name = "Air supply pipe"
|
||||
desc = "A one meter section of supply pipe."
|
||||
desc_info = "This is a special 'supply' pipe, which does not connect to 'normal' pipes. If you want to connect it, use \
|
||||
a Universal Adapter pipe."
|
||||
icon_state = "intact-supply"
|
||||
connect_types = CONNECT_TYPE_SUPPLY
|
||||
icon_connect_type = "-supply"
|
||||
@@ -445,8 +436,6 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/fuel
|
||||
name = "Fuel pipe"
|
||||
desc = "A one meter section of fuel pipe."
|
||||
desc_info = "This is a special 'fuel' pipe, which does not connect to 'normal' pipes. If you want to connect it, use \
|
||||
a Universal Adapter pipe."
|
||||
icon_state = "intact-fuel"
|
||||
connect_types = CONNECT_TYPE_FUEL
|
||||
icon_connect_type = "-fuel"
|
||||
@@ -455,8 +444,6 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/aux
|
||||
name = "Auxiliary pipe"
|
||||
desc = "A one meter section of auxiliary pipe."
|
||||
desc_info = "This is a special 'aux' pipe, which does not connect to 'normal' pipes. If you want to connect it, use \
|
||||
a Universal Adapter pipe."
|
||||
icon_state = "intact-aux"
|
||||
connect_types = CONNECT_TYPE_AUX
|
||||
icon_connect_type = "-aux"
|
||||
@@ -486,7 +473,6 @@
|
||||
/obj/machinery/atmospherics/pipe/manifold
|
||||
name = "pipe manifold"
|
||||
desc = "A manifold composed of regular pipes."
|
||||
desc_info = "A normal pipe with three ends to connect to."
|
||||
icon = 'icons/atmos/manifold.dmi'
|
||||
icon_state = ""
|
||||
|
||||
@@ -680,8 +666,6 @@
|
||||
/obj/machinery/atmospherics/pipe/manifold/visible/scrubbers
|
||||
name = "scrubbers pipe manifold"
|
||||
desc = "A manifold composed of scrubbers pipes"
|
||||
desc_info = "This is a special 'scrubber' pipe, which does not connect to 'normal' pipes. If you want to connect it, use \
|
||||
a Universal Adapter pipe."
|
||||
icon_state = "map-scrubbers"
|
||||
connect_types = CONNECT_TYPE_SCRUBBER
|
||||
icon_connect_type = "-scrubbers"
|
||||
@@ -690,8 +674,6 @@
|
||||
/obj/machinery/atmospherics/pipe/manifold/visible/supply
|
||||
name = "air supply pipe manifold"
|
||||
desc = "A manifold composed of supply pipes."
|
||||
desc_info = "This is a special 'supply' pipe, which does not connect to 'normal' pipes. If you want to connect it, use \
|
||||
a Universal Adapter pipe."
|
||||
icon_state = "map-supply"
|
||||
connect_types = CONNECT_TYPE_SUPPLY
|
||||
icon_connect_type = "-supply"
|
||||
@@ -700,8 +682,6 @@
|
||||
/obj/machinery/atmospherics/pipe/manifold/visible/fuel
|
||||
name = "fuel pipe manifold"
|
||||
desc = "A manifold composed of fuel piping."
|
||||
desc_info = "This is a special 'fuel' pipe, which does not connect to 'normal' pipes. If you want to connect it, use \
|
||||
a Universal Adapter pipe."
|
||||
icon_state = "map-fuel"
|
||||
connect_types = CONNECT_TYPE_FUEL
|
||||
icon_connect_type = "-fuel"
|
||||
@@ -710,8 +690,6 @@
|
||||
/obj/machinery/atmospherics/pipe/manifold/visible/aux
|
||||
name = "auxiliary pipe manifold"
|
||||
desc = "A manifold composed of auxiliary piping."
|
||||
desc_info = "This is a special 'aux' pipe, which does not connect to 'normal' pipes. If you want to connect it, use \
|
||||
a Universal Adapter pipe."
|
||||
icon_state = "map-aux"
|
||||
connect_types = CONNECT_TYPE_AUX
|
||||
icon_connect_type = "-aux"
|
||||
@@ -746,8 +724,6 @@
|
||||
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers
|
||||
name = "scrubbers pipe manifold"
|
||||
desc = "A manifold composed of scrubbers pipes."
|
||||
desc_info = "This is a special 'scrubber' pipe, which does not connect to 'normal' pipes. If you want to connect it, use \
|
||||
a Universal Adapter pipe."
|
||||
icon_state = "map-scrubbers"
|
||||
connect_types = CONNECT_TYPE_SCRUBBER
|
||||
icon_connect_type = "-scrubbers"
|
||||
@@ -756,8 +732,6 @@
|
||||
/obj/machinery/atmospherics/pipe/manifold/hidden/supply
|
||||
name = "air supply pipe manifold"
|
||||
desc = "A manifold composed of supply pipes."
|
||||
desc_info = "This is a special 'supply' pipe, which does not connect to 'normal' pipes. If you want to connect it, use \
|
||||
a Universal Adapter pipe."
|
||||
icon_state = "map-supply"
|
||||
connect_types = CONNECT_TYPE_SUPPLY
|
||||
icon_connect_type = "-supply"
|
||||
@@ -766,8 +740,6 @@
|
||||
/obj/machinery/atmospherics/pipe/manifold/hidden/fuel
|
||||
name = "Fuel pipe manifold"
|
||||
desc = "A manifold composed of fuel pipes."
|
||||
desc_info = "This is a special 'fuel' pipe, which does not connect to 'normal' pipes. If you want to connect it, use \
|
||||
a Universal Adapter pipe."
|
||||
icon_state = "map-fuel"
|
||||
connect_types = CONNECT_TYPE_FUEL
|
||||
icon_connect_type = "-fuel"
|
||||
@@ -776,8 +748,6 @@
|
||||
/obj/machinery/atmospherics/pipe/manifold/hidden/aux
|
||||
name = "Auxiliary pipe"
|
||||
desc = "A manifold composed of auxiliary pipes."
|
||||
desc_info = "This is a special 'aux' pipe, which does not connect to 'normal' pipes. If you want to connect it, use \
|
||||
a Universal Adapter pipe."
|
||||
icon_state = "map-aux"
|
||||
connect_types = CONNECT_TYPE_AUX
|
||||
icon_connect_type = "-aux"
|
||||
@@ -807,7 +777,6 @@
|
||||
/obj/machinery/atmospherics/pipe/manifold4w
|
||||
name = "4-way pipe manifold"
|
||||
desc = "A manifold composed of regular pipes."
|
||||
desc_info = "This is a four-way pipe."
|
||||
icon = 'icons/atmos/manifold.dmi'
|
||||
icon_state = ""
|
||||
|
||||
@@ -1003,8 +972,6 @@
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/visible/scrubbers
|
||||
name = "4-way scrubbers pipe manifold"
|
||||
desc = "A manifold composed of scrubbers pipes."
|
||||
desc_info = "This is a special 'scrubber' pipe, which does not connect to 'normal' pipes. If you want to connect it, use \
|
||||
a Universal Adapter pipe."
|
||||
icon_state = "map_4way-scrubbers"
|
||||
connect_types = CONNECT_TYPE_SCRUBBER
|
||||
icon_connect_type = "-scrubbers"
|
||||
@@ -1013,8 +980,6 @@
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/visible/supply
|
||||
name = "4-way air supply pipe manifold"
|
||||
desc = "A manifold composed of supply pipes"
|
||||
desc_info = "This is a special 'supply' pipe, which does not connect to 'normal' pipes. If you want to connect it, use \
|
||||
a Universal Adapter pipe."
|
||||
icon_state = "map_4way-supply"
|
||||
connect_types = CONNECT_TYPE_SUPPLY
|
||||
icon_connect_type = "-supply"
|
||||
@@ -1023,8 +988,6 @@
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/visible/fuel
|
||||
name = "4-way fuel pipe manifold"
|
||||
desc = "A manifold composed of fuel pipes."
|
||||
desc_info = "This is a special 'fuel' pipe, which does not connect to 'normal' pipes. If you want to connect it, use \
|
||||
a Universal Adapter pipe."
|
||||
icon_state = "map_4way-fuel"
|
||||
connect_types = CONNECT_TYPE_FUEL
|
||||
icon_connect_type = "-fuel"
|
||||
@@ -1033,8 +996,6 @@
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/visible/aux
|
||||
name = "4-way auxiliary pipe manifold"
|
||||
desc = "A manifold composed of auxiliary pipes"
|
||||
desc_info = "This is a special 'aux' pipe, which does not connect to 'normal' pipes. If you want to connect it, use \
|
||||
a Universal Adapter pipe."
|
||||
icon_state = "map_4way-aux"
|
||||
connect_types = CONNECT_TYPE_AUX
|
||||
icon_connect_type = "-aux"
|
||||
@@ -1069,8 +1030,6 @@
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers
|
||||
name = "4-way scrubbers pipe manifold"
|
||||
desc = "A manifold composed of scrubbers pipes."
|
||||
desc_info = "This is a special 'scrubber' pipe, which does not connect to 'normal' pipes. If you want to connect it, use \
|
||||
a Universal Adapter pipe."
|
||||
icon_state = "map_4way-scrubbers"
|
||||
connect_types = CONNECT_TYPE_SCRUBBER
|
||||
icon_connect_type = "-scrubbers"
|
||||
@@ -1079,8 +1038,6 @@
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply
|
||||
name = "4-way air supply pipe manifold"
|
||||
desc = "A manifold composed of supply pipes."
|
||||
desc_info = "This is a special 'supply' pipe, which does not connect to 'normal' pipes. If you want to connect it, use \
|
||||
a Universal Adapter pipe."
|
||||
icon_state = "map_4way-supply"
|
||||
connect_types = CONNECT_TYPE_SUPPLY
|
||||
icon_connect_type = "-supply"
|
||||
@@ -1089,8 +1046,6 @@
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/hidden/fuel
|
||||
name = "4-way fuel pipe manifold"
|
||||
desc = "A manifold composed of fuel pipes."
|
||||
desc_info = "This is a special 'fuel' pipe, which does not connect to 'normal' pipes. If you want to connect it, use \
|
||||
a Universal Adapter pipe."
|
||||
icon_state = "map_4way-fuel"
|
||||
connect_types = CONNECT_TYPE_FUEL
|
||||
icon_connect_type = "-fuel"
|
||||
@@ -1099,8 +1054,6 @@
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/hidden/aux
|
||||
name = "4-way auxiliary pipe manifold"
|
||||
desc = "A manifold composed of auxiliary pipes."
|
||||
desc_info = "This is a special 'aux' pipe, which does not connect to 'normal' pipes. If you want to connect it, use \
|
||||
a Universal Adapter pipe."
|
||||
icon_state = "map_4way-aux"
|
||||
connect_types = CONNECT_TYPE_AUX
|
||||
icon_connect_type = "-aux"
|
||||
@@ -1130,7 +1083,6 @@
|
||||
/obj/machinery/atmospherics/pipe/cap
|
||||
name = "pipe endcap"
|
||||
desc = "An endcap for pipes"
|
||||
desc_info = "This is a cosmetic attachment, as pipes do not spill their contents into the air."
|
||||
icon = 'icons/atmos/pipes.dmi'
|
||||
icon_state = ""
|
||||
level = 2
|
||||
@@ -1142,6 +1094,10 @@
|
||||
|
||||
var/obj/machinery/atmospherics/node
|
||||
|
||||
/obj/machinery/atmospherics/pipe/cap/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "This is a cosmetic attachment, as pipes do not spill their contents into the air."
|
||||
|
||||
/obj/machinery/atmospherics/pipe/cap/Initialize()
|
||||
initialize_directions = dir
|
||||
. = ..()
|
||||
@@ -1465,11 +1421,15 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/visible/universal
|
||||
name = "universal pipe adapter"
|
||||
desc = "An adapter for regular, supply, scrubbers, fuel, and auxiliary pipes."
|
||||
desc_info = "This allows you to connect 'normal' pipes, blue 'supply' pipes, red 'scrubber' pipes, yellow 'fuel' pipes, and cyan 'aux' pipes together."
|
||||
connect_types = CONNECT_TYPE_REGULAR|CONNECT_TYPE_SUPPLY|CONNECT_TYPE_SCRUBBER|CONNECT_TYPE_FUEL|CONNECT_TYPE_AUX
|
||||
icon_state = "map_universal"
|
||||
gfi_layer_rotation = GFI_ROTATION_OVERDIR
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/visible/universal/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. = list()
|
||||
. += "This allows you to connect 'normal' pipes, blue 'supply' pipes, red 'scrubber' pipes, yellow 'fuel' pipes, and cyan 'aux' pipes together."
|
||||
. += ..()
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/visible/universal/update_icon(var/safety = 0)
|
||||
if(!check_icon_cache())
|
||||
return
|
||||
@@ -1497,16 +1457,18 @@
|
||||
..()
|
||||
queue_icon_update()
|
||||
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/universal
|
||||
name = "universal pipe adapter"
|
||||
desc = "An adapter for regular, supply, scrubbers, fuel, and auxiliary pipes."
|
||||
desc_info = "This allows you to connect 'normal' pipes, blue 'supply' pipes, red 'scrubber' pipes, yellow 'fuel' pipes, and cyan 'aux' pipes together."
|
||||
connect_types = CONNECT_TYPE_REGULAR|CONNECT_TYPE_SUPPLY|CONNECT_TYPE_SCRUBBER|CONNECT_TYPE_FUEL|CONNECT_TYPE_AUX
|
||||
icon_state = "map_universal"
|
||||
gfi_layer_rotation = GFI_ROTATION_OVERDIR
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/universal/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. = list()
|
||||
. += "This allows you to connect 'normal' pipes, blue 'supply' pipes, red 'scrubber' pipes, yellow 'fuel' pipes, and cyan 'aux' pipes together."
|
||||
. += ..()
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/universal/update_icon(var/safety = 0)
|
||||
if(!check_icon_cache())
|
||||
return
|
||||
|
||||
@@ -15,6 +15,20 @@
|
||||
|
||||
//Card information here
|
||||
|
||||
/obj/item/battle_monsters/card/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
|
||||
if(facedown && src.loc != user)
|
||||
. += SPAN_NOTICE("You can't examine \the [src] while it's face down!")
|
||||
return
|
||||
|
||||
if(trap_datum)
|
||||
SSbattle_monsters.ExamineTrapCard(user,trap_datum)
|
||||
else if(spell_datum)
|
||||
SSbattle_monsters.ExamineSpellCard(user,spell_datum)
|
||||
else
|
||||
SSbattle_monsters.ExamineMonsterCard(user,prefix_datum,root_datum,suffix_datum)
|
||||
|
||||
/obj/item/battle_monsters/card/Initialize(var/mapload,var/prefix,var/root,var/title,var/trap,var/spell)
|
||||
. = ..()
|
||||
Generate_Card(prefix, root, title, trap, spell)
|
||||
@@ -164,20 +178,6 @@
|
||||
|
||||
transform = M
|
||||
|
||||
/obj/item/battle_monsters/card/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
|
||||
if(facedown && src.loc != user)
|
||||
. += SPAN_NOTICE("You can't examine \the [src] while it's face down!")
|
||||
return
|
||||
|
||||
if(trap_datum)
|
||||
SSbattle_monsters.ExamineTrapCard(user,trap_datum)
|
||||
else if(spell_datum)
|
||||
SSbattle_monsters.ExamineSpellCard(user,spell_datum)
|
||||
else
|
||||
SSbattle_monsters.ExamineMonsterCard(user,prefix_datum,root_datum,suffix_datum)
|
||||
|
||||
/obj/item/battle_monsters/card/MouseEntered(location, control, params)
|
||||
. = ..()
|
||||
if(!facedown || Adjacent(usr))
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
/obj/item/cargo_backpack
|
||||
name = "cargo pack"
|
||||
desc = "A robust set of rigs and buckles that allows the wearer to carry two additional Orion Express delivery packages on their back."
|
||||
desc_info = "To load packages onto your back, equip this item on the back slot, then click on it with a package in-hand. To unload a package, click on this item with an empty hand."
|
||||
icon = 'icons/obj/orion_delivery.dmi'
|
||||
icon_state = "package_pack"
|
||||
item_state = "package_pack"
|
||||
@@ -13,15 +12,20 @@
|
||||
|
||||
var/list/contained_packages
|
||||
|
||||
/obj/item/cargo_backpack/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "To load packages onto your back, equip this item on the back slot, then click on it with a package in-hand."
|
||||
. += "To unload a package, click on this item with an empty hand."
|
||||
|
||||
/obj/item/cargo_backpack/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
if(length(contained_packages))
|
||||
. += SPAN_NOTICE("\[?\] There are some packages loaded. <a href='byond://?src=[REF(src)];show_package_data=1>\[Show Package Data\]</a>")
|
||||
|
||||
/obj/item/cargo_backpack/Destroy()
|
||||
QDEL_LIST(contained_packages)
|
||||
return ..()
|
||||
|
||||
/obj/item/cargo_backpack/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
if(length(contained_packages))
|
||||
. += FONT_SMALL(SPAN_NOTICE("\[?\] There are some packages loaded. <a href='byond://?src=[REF(src)];show_package_data=1>\[Show Package Data\]</a>"))
|
||||
|
||||
/obj/item/cargo_backpack/Topic(href, href_list)
|
||||
if(href_list["show_package_data"])
|
||||
ui_interact(usr)
|
||||
|
||||
@@ -7,12 +7,7 @@
|
||||
desc_extended = "\
|
||||
This package makes use of the small-scale shipping network of Orion Express. \
|
||||
It is a common sight all over the Spur, where Orion Express services depend on ordinary people and ships picking up and delivering packages for each other, \
|
||||
with Orion Express only delivering to automated stations and other distribution points.\
|
||||
"
|
||||
desc_info = "\
|
||||
You can deliver this package to a cargo delivery point. \
|
||||
An additional 2% is added to your account on delivery, or paid to you directly. Can be loaded into a cargo pack.\
|
||||
"
|
||||
with Orion Express only delivering to automated stations and other distribution points."
|
||||
icon = 'icons/obj/orion_delivery.dmi'
|
||||
icon_state = "express_package"
|
||||
item_state = "express_package"
|
||||
@@ -37,6 +32,23 @@
|
||||
/// If true, pay_amount goes into Operations Account
|
||||
var/pays_horizon_account = TRUE
|
||||
|
||||
/obj/item/cargo_package/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "You can deliver this package to a cargo delivery point."
|
||||
. += "An additional 2% is added to your account on delivery, or paid to you directly. Can be loaded into a cargo pack."
|
||||
|
||||
/obj/item/cargo_package/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
if(delivery_point_id)
|
||||
// if name not already set by cargo receptacle, acquire the sector name instead
|
||||
if(delivery_site == "Unknown")
|
||||
if(delivery_point_sector)
|
||||
var/obj/effect/overmap/visitable/delivery_sector = delivery_point_sector.resolve()
|
||||
if(delivery_sector)
|
||||
delivery_site = delivery_sector.name
|
||||
. += SPAN_NOTICE("The label on the package reads: SITE: <b>[delivery_site]</b> | COORD: <b>[delivery_point_coordinates]</b> | ID: <b>[delivery_point_id]</b>")
|
||||
. += SPAN_NOTICE("The price tag on the package reads: <b>[pay_amount]电</b>.")
|
||||
|
||||
/obj/item/cargo_package/Initialize(mapload, obj/structure/cargo_receptacle/delivery_point)
|
||||
. = ..()
|
||||
pay_amount = rand(4, 7) * 1000
|
||||
@@ -55,18 +67,6 @@
|
||||
delivery_point_coordinates = "[delivery_point.x]-[delivery_point.y]"
|
||||
pay_amount = pay_amount * delivery_point.payment_modifier
|
||||
|
||||
/obj/item/cargo_package/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
if(delivery_point_id)
|
||||
// if name not already set by cargo receptacle, acquire the sector name instead
|
||||
if(delivery_site == "Unknown")
|
||||
if(delivery_point_sector)
|
||||
var/obj/effect/overmap/visitable/delivery_sector = delivery_point_sector.resolve()
|
||||
if(delivery_sector)
|
||||
delivery_site = delivery_sector.name
|
||||
. += SPAN_NOTICE("The label on the package reads: SITE: <b>[delivery_site]</b> | COORD: <b>[delivery_point_coordinates]</b> | ID: <b>[delivery_point_id]</b>")
|
||||
. += SPAN_NOTICE("The price tag on the package reads: <b>[pay_amount]电</b>.")
|
||||
|
||||
/obj/item/cargo_package/do_additional_pickup_checks(var/mob/living/carbon/human/user)
|
||||
if(!ishuman(user))
|
||||
return FALSE
|
||||
@@ -126,6 +126,11 @@
|
||||
/// Whether this package is guaranteed to deliver to the horizon or not
|
||||
var/horizon_delivery = FALSE
|
||||
|
||||
/obj/item/cargo_package/offship/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
if(!delivery_point_id)
|
||||
. += SPAN_NOTICE("Delivery site still being calculated, please check back later!")
|
||||
|
||||
/obj/item/cargo_package/offship/Initialize(mapload, obj/structure/cargo_receptacle/delivery_point)
|
||||
. = ..()
|
||||
|
||||
@@ -140,10 +145,5 @@
|
||||
return
|
||||
setup_delivery_point(selected_delivery_point)
|
||||
|
||||
/obj/item/cargo_package/offship/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
if(!delivery_point_id)
|
||||
. += SPAN_NOTICE("Delivery site still being calculated, please check back later!")
|
||||
|
||||
/obj/item/cargo_package/offship/to_horizon
|
||||
horizon_delivery = TRUE
|
||||
|
||||
@@ -9,12 +9,7 @@ GLOBAL_LIST_INIT_TYPED(all_cargo_receptacles, /obj/structure/cargo_receptacle, l
|
||||
desc_extended = "\
|
||||
These are set up by Orion to expand its small-scale shipping network, especially in more remote areas, like outer edges of the Frontier or Coalition. \
|
||||
It is a common sight all over the Spur, however, where Orion Express services depend on ordinary people and ships picking up and delivering packages for each other, \
|
||||
with Orion Express only delivering to automated stations and other distribution points.\
|
||||
"
|
||||
desc_info = "\
|
||||
This is a delivery point for Orion Express cargo packages. \
|
||||
To finish the delivery, have a cargo package in your hand and click on the delivery point.\
|
||||
"
|
||||
with Orion Express only delivering to automated stations and other distribution points."
|
||||
icon = 'icons/obj/orion_delivery.dmi'
|
||||
icon_state = "delivery_point"
|
||||
|
||||
@@ -31,6 +26,11 @@ GLOBAL_LIST_INIT_TYPED(all_cargo_receptacles, /obj/structure/cargo_receptacle, l
|
||||
/// Maximum amount of packages that can spawn for this receptacle. INTEGER
|
||||
var/max_spawn = 4
|
||||
|
||||
/obj/structure/cargo_receptacle/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "This is a delivery point for Orion Express cargo packages."
|
||||
. += "To finish the delivery, have a cargo package in your hand and click on the delivery point."
|
||||
|
||||
/obj/structure/cargo_receptacle/Initialize(mapload)
|
||||
..()
|
||||
return INITIALIZE_HINT_LATELOAD
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
name = "Human Resources Recorder"
|
||||
desc = "A modified recorder used for interviews by human resources personnel around the galaxy."
|
||||
desc_extended = "This recorder is a modified version of a standard universal recorder. It features additional audit-proof records keeping, access controls and is tied to a central management system."
|
||||
desc_info = "This recorder records the fingerprints of the interviewee, to do so, interact with this recorder when asked."
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
timestamp = list() //This actually turns timestamp into a string later on
|
||||
|
||||
@@ -31,6 +30,10 @@
|
||||
var/interviewee_name = null
|
||||
var/date_string = null
|
||||
|
||||
/obj/item/device/taperecorder/cciaa/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "This recorder records the fingerprints of the interviewee, to do so, interact with this recorder when asked."
|
||||
|
||||
/obj/item/device/taperecorder/cciaa/hear_talk(mob/living/M as mob, msg, var/verb="says")
|
||||
if(recording && !paused)
|
||||
timestamp = "[get_time()]"
|
||||
|
||||
@@ -382,10 +382,6 @@
|
||||
/obj/item/gun/energy/chameleon
|
||||
name = "desert eagle"
|
||||
desc = null
|
||||
desc_info = null //The chameleon gun adopts the desc_info of the weapon it is impersonating as, to make meta-ing harder.
|
||||
desc_antag = "This gun is actually a hologram projector that can alter its appearance to mimick other weapons. To change the appearance, use \
|
||||
the appropriate verb in the chameleon items tab. Any beams or projectiles fired from this gun are actually holograms and useless for actual combat. \
|
||||
Projecting these holograms over distance uses a little bit of charge."
|
||||
icon = 'icons/obj/guns/deagle.dmi'
|
||||
icon_state = "deagle"
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
@@ -401,6 +397,17 @@
|
||||
var/obj/projectile/copy_projectile
|
||||
var/global/list/gun_choices
|
||||
|
||||
/obj/item/gun/energy/chameleon/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Exactly as it appears, officer."
|
||||
|
||||
/obj/item/gun/energy/chameleon/antagonist_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "This gun is actually a hologram projector that can alter its appearance to mimick other weapons. "
|
||||
. += "To change the appearance, use the appropriate verb in the chameleon items tab."
|
||||
. += "Any beams or projectiles fired from this gun are actually holograms and useless for actual combat."
|
||||
. += "Projecting these holograms over distance uses a little bit of charge."
|
||||
|
||||
/obj/item/gun/energy/chameleon/Initialize()
|
||||
. = ..()
|
||||
|
||||
@@ -447,7 +454,6 @@
|
||||
if(istype(E))
|
||||
copy_projectile = E.projectile_type
|
||||
desc = E.desc
|
||||
desc_info = E.desc_info
|
||||
else
|
||||
copy_projectile = null
|
||||
|
||||
|
||||
@@ -1148,6 +1148,19 @@
|
||||
valid_accessory_slots = list(ACCESSORY_SLOT_UTILITY, ACCESSORY_SLOT_UTILITY_MINOR, ACCESSORY_SLOT_ARMBAND, ACCESSORY_SLOT_GENERIC, ACCESSORY_SLOT_CAPE)
|
||||
restricted_accessory_slots = list(ACCESSORY_SLOT_UTILITY)
|
||||
|
||||
/obj/item/clothing/under/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
if(has_sensor)
|
||||
switch(src.sensor_mode)
|
||||
if(SUIT_SENSOR_OFF)
|
||||
. += "Its sensors appear to be disabled."
|
||||
if(SUIT_SENSOR_BINARY)
|
||||
. += "Its binary life sensors appear to be enabled."
|
||||
if(SUIT_SENSOR_VITAL)
|
||||
. += "Its vitals tracker appears to be enabled."
|
||||
if(SUIT_SENSOR_TRACKING)
|
||||
. += "Its vitals tracker and tracking beacon appear to be enabled."
|
||||
|
||||
/obj/item/clothing/under/attack_hand(var/mob/user)
|
||||
if(LAZYLEN(accessories))
|
||||
..()
|
||||
@@ -1271,19 +1284,6 @@
|
||||
M.update_inv_w_uniform()
|
||||
playsound(M, /singleton/sound_category/rustle_sound, 15, TRUE, SILENCED_SOUND_EXTRARANGE, ignore_walls = FALSE)
|
||||
|
||||
/obj/item/clothing/under/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
if(has_sensor)
|
||||
switch(src.sensor_mode)
|
||||
if(SUIT_SENSOR_OFF)
|
||||
. += "Its sensors appear to be disabled."
|
||||
if(SUIT_SENSOR_BINARY)
|
||||
. += "Its binary life sensors appear to be enabled."
|
||||
if(SUIT_SENSOR_VITAL)
|
||||
. += "Its vitals tracker appears to be enabled."
|
||||
if(SUIT_SENSOR_TRACKING)
|
||||
. += "Its vitals tracker and tracking beacon appear to be enabled."
|
||||
|
||||
/obj/item/clothing/under/proc/set_sensors(mob/user as mob)
|
||||
var/mob/M = user
|
||||
if (isobserver(M) || user.incapacitated())
|
||||
|
||||
@@ -1109,7 +1109,6 @@ BLIND // can't see anything
|
||||
/obj/item/clothing/glasses/thermal/aviator
|
||||
name = "aviators"
|
||||
desc = "A pair of designer sunglasses. They should put HUDs in these."
|
||||
desc_antag = "Modified aviator glasses with a toggled thermal-vision mode."
|
||||
icon_state = "aviator_thr"
|
||||
off_state = "aviator_off"
|
||||
item_state_slots = list(slot_r_hand_str = "sunglasses", slot_l_hand_str = "sunglasses")
|
||||
@@ -1117,6 +1116,10 @@ BLIND // can't see anything
|
||||
activation_sound = 'sound/effects/pop.ogg'
|
||||
prescription = 7
|
||||
|
||||
/obj/item/clothing/glasses/thermal/aviator/antagonist_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Modified aviator glasses with a toggled thermal-vision mode."
|
||||
|
||||
/obj/item/clothing/glasses/thermal/aviator/verb/toggle()
|
||||
set category = "Object"
|
||||
set name = "Toggle Aviators"
|
||||
|
||||
@@ -56,7 +56,6 @@
|
||||
/obj/item/clothing/gloves/latex
|
||||
name = "latex gloves"
|
||||
desc = "Sterile latex gloves."
|
||||
desc_info = "You can make balloons with these using some cable coil."
|
||||
icon_state = "latex"
|
||||
item_state = "latex"
|
||||
siemens_coefficient = 1.0 //thin latex gloves, much more conductive than fabric gloves (basically a capacitor for AC)
|
||||
@@ -67,6 +66,10 @@
|
||||
pickup_sound = 'sound/items/pickup/rubber.ogg'
|
||||
var/balloon = /obj/item/toy/balloon/latex
|
||||
|
||||
/obj/item/clothing/gloves/latex/assembly_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "You can make balloons with these using some cable coil."
|
||||
|
||||
/obj/item/clothing/gloves/latex/attackby(obj/item/attacking_item, mob/user)
|
||||
if(istype(attacking_item, /obj/item/stack/cable_coil))
|
||||
var/obj/item/stack/cable_coil/C = attacking_item
|
||||
|
||||
@@ -234,7 +234,6 @@
|
||||
/obj/item/clothing/head/cone
|
||||
name = "warning cone"
|
||||
desc = "This cone is trying to warn you of something!"
|
||||
desc_info = "It looks like you can wear it in your head slot."
|
||||
icon_state = "cone"
|
||||
item_state = "cone"
|
||||
drop_sound = 'sound/items/drop/shoes.ogg'
|
||||
@@ -247,3 +246,8 @@
|
||||
body_parts_covered = HEAD
|
||||
attack_verb = list("warned", "cautioned", "smashed")
|
||||
armor = list(melee = 5, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
|
||||
/obj/item/clothing/head/cone/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "It looks like you can wear it in your head slot."
|
||||
|
||||
|
||||
@@ -8,7 +8,10 @@
|
||||
/obj/item/clothing/mask/gas/voice
|
||||
var/obj/item/voice_changer/changer
|
||||
origin_tech = list(TECH_ILLEGAL = 4)
|
||||
desc_antag = "This mask can be used to change the owner's voice."
|
||||
|
||||
/obj/item/clothing/mask/gas/voice/antagonist_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "This mask can be used to change the owner's voice."
|
||||
|
||||
/obj/item/clothing/mask/gas/voice/verb/Toggle_Voice_Changer()
|
||||
set category = "Object"
|
||||
@@ -42,7 +45,10 @@
|
||||
/obj/item/clothing/mask/gas/vaurca/filter/voice
|
||||
var/obj/item/voice_changer/changer
|
||||
origin_tech = list(TECH_ILLEGAL = 4)
|
||||
desc_antag = "A Lii'draic filter port that allows to change voices."
|
||||
|
||||
/obj/item/clothing/mask/gas/vaurca/filter/voice/antagonist_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "A Lii'draic filter port that allows to change voices."
|
||||
|
||||
/obj/item/clothing/mask/gas/vaurca/filter/voice/verb/Toggle_Voice_Changer()
|
||||
set category = "Object"
|
||||
|
||||
@@ -38,11 +38,14 @@
|
||||
/obj/item/clothing/ring/reagent/sleepy
|
||||
name = "silver ring"
|
||||
desc = "A ring made from what appears to be silver."
|
||||
desc_antag = "This ring has a hidden injector that will activate when worn, administering a strong sedative. It is safe to hold in your hands."
|
||||
icon_state = "material"
|
||||
origin_tech = list(TECH_MATERIAL = 2, TECH_ILLEGAL = 5)
|
||||
reagents_to_add = list(/singleton/reagent/polysomnine = 10)
|
||||
|
||||
/obj/item/clothing/ring/reagent/sleepy/antagonist_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "This ring has a hidden injector that will activate when worn, administering a strong sedative. It is safe to hold in your hands."
|
||||
|
||||
//Seals and Signet Rings
|
||||
|
||||
/obj/item/clothing/ring/seal/mason
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
/obj/item/clothing/suit/armor/riot/laser_tag
|
||||
name = "laser tag armor"
|
||||
desc = "A set of laser tag armor. Very swanky."
|
||||
desc_info = "You can alt-click this while holding or wearing it to set how many laser tag shots you want to be able to take before going down."
|
||||
icon = 'icons/obj/item/clothing/suit/armor/laser_tag.dmi'
|
||||
icon_state = "vest"
|
||||
item_state = "vest"
|
||||
@@ -23,6 +22,10 @@
|
||||
var/set_health = 3
|
||||
var/current_health
|
||||
|
||||
/obj/item/clothing/suit/armor/riot/laser_tag/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "You can alt-click this while holding or wearing it to set how many laser tag shots you want to be able to take before going down."
|
||||
|
||||
/obj/item/clothing/suit/armor/riot/laser_tag/Initialize(mapload, material_key)
|
||||
. = ..()
|
||||
get_tag_color(laser_tag_color)
|
||||
|
||||
@@ -19,6 +19,13 @@
|
||||
drop_sound = 'sound/items/drop/toolbox.ogg'
|
||||
pickup_sound = 'sound/items/pickup/toolbox.ogg'
|
||||
|
||||
/obj/item/clothing/shoes/magboots/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
var/state = "disabled"
|
||||
if(item_flags & ITEM_FLAG_NO_SLIP)
|
||||
state = "enabled"
|
||||
. += "Its mag-pulse traction system appears to be [state]."
|
||||
|
||||
/obj/item/clothing/shoes/magboots/Destroy()
|
||||
. = ..()
|
||||
src.shoes = null
|
||||
@@ -106,13 +113,6 @@
|
||||
if (.)
|
||||
INVOKE_ASYNC(src, PROC_REF(update_wearer))
|
||||
|
||||
/obj/item/clothing/shoes/magboots/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
var/state = "disabled"
|
||||
if(item_flags & ITEM_FLAG_NO_SLIP)
|
||||
state = "enabled"
|
||||
. += "Its mag-pulse traction system appears to be [state]."
|
||||
|
||||
/obj/item/clothing/shoes/magboots/hegemony
|
||||
name = "hegemony magboots"
|
||||
desc = "Magnetic boots, often used during extravehicular activity to ensure the user remains safely attached to the vehicle. They're large enough to be worn over other footwear. This variant is frequently seen in the Hegemony Navy."
|
||||
|
||||
@@ -42,30 +42,36 @@
|
||||
/obj/item/clothing/head/helmet/space/syndicate/covert
|
||||
name = "softsuit helmet"
|
||||
desc = "A special helmet designed for work in a hazardous, low-pressure environment."
|
||||
desc_antag = "This helmet is specially armored for additional protection, compared to a standard softsuit helmet."
|
||||
icon = 'icons/obj/item/clothing/softsuits/softsuit.dmi'
|
||||
icon_state = "softsuit_helmet"
|
||||
item_state = "softsuit_helmet"
|
||||
contained_sprite = TRUE
|
||||
|
||||
/obj/item/clothing/head/helmet/space/syndicate/covert/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
/obj/item/clothing/head/helmet/space/syndicate/covert/antagonist_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "This helmet has extra armor compared to a standard softsuit helmet."
|
||||
|
||||
/obj/item/clothing/head/helmet/space/syndicate/covert/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
if(distance <= 1)
|
||||
. += SPAN_NOTICE("This helmet has extra armor compared to a normal softsuit helmet.")
|
||||
. += SPAN_ALERT("This helmet has extra armor compared to a normal softsuit helmet.")
|
||||
|
||||
/obj/item/clothing/suit/space/syndicate/covert
|
||||
name = "softsuit"
|
||||
desc = "A suit that protects against low pressure environments."
|
||||
desc_antag = "This suit is specially armored for additional protection, compared to a standard softsuit."
|
||||
icon = 'icons/obj/item/clothing/softsuits/softsuit.dmi'
|
||||
icon_state = "softsuit"
|
||||
item_state = "softsuit"
|
||||
contained_sprite = TRUE
|
||||
|
||||
/obj/item/clothing/suit/space/syndicate/covert/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
/obj/item/clothing/suit/space/syndicate/covert/antagonist_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "This suit is specially armored for additional protection, compared to a standard softsuit."
|
||||
|
||||
/obj/item/clothing/suit/space/syndicate/covert/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
if(distance <= 1)
|
||||
. += SPAN_NOTICE("This suit has extra armor compared to a normal softsuit.")
|
||||
. += SPAN_ALERT("This suit has extra armor compared to a normal softsuit.")
|
||||
|
||||
//Green syndicate space suit
|
||||
/obj/item/clothing/head/helmet/space/syndicate/green
|
||||
|
||||
@@ -687,7 +687,6 @@
|
||||
name = "wet floor sign"
|
||||
desc = "Caution! Wet Floor!"
|
||||
desc_extended = "Used by the janitor to passive-aggressively point at when you eventually slip on one of their mopped floors."
|
||||
desc_info = "Alt-click, or click in-hand to toggle the caution lights. It looks like you can wear it in your suit slot."
|
||||
icon = 'icons/obj/janitor.dmi'
|
||||
item_icons = list(
|
||||
slot_l_hand_str = 'icons/mob/items/lefthand_janitor.dmi',
|
||||
@@ -705,6 +704,11 @@
|
||||
attack_verb = list("warned", "cautioned", "smashed")
|
||||
armor = list(melee = 5, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
|
||||
/obj/item/clothing/suit/caution/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "ALT-click, or click in-hand to toggle the caution lights."
|
||||
. += "It looks like you could wear it in your suit slot if you really wanted to."
|
||||
|
||||
/obj/item/clothing/suit/caution/attack_self()
|
||||
toggle()
|
||||
|
||||
|
||||
@@ -134,7 +134,6 @@
|
||||
/obj/item/clothing/accessory/armor_plate
|
||||
name = "corporate armor plate"
|
||||
desc = "A particularly light-weight armor plate in stylish corporate black. Unfortunately, not very good if you hold it with your hands."
|
||||
desc_info = "These items must be hooked onto plate carriers for them to work!"
|
||||
icon = 'icons/obj/item/clothing/suit/armor/modular_armor/modular_armor.dmi'
|
||||
icon_state = "plate_sec"
|
||||
item_state = "plate_sec"
|
||||
@@ -151,6 +150,10 @@
|
||||
BOMB = ARMOR_BOMB_PADDED
|
||||
)
|
||||
|
||||
/obj/item/clothing/accessory/armor_plate/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "These must be attached to plate carriers for them to work."
|
||||
|
||||
/obj/item/clothing/accessory/armor_plate/before_attached(var/obj/item/clothing/clothing, var/mob/user)
|
||||
if(!clothing.valid_accessory_slots || !(slot in clothing.valid_accessory_slots))
|
||||
return
|
||||
|
||||
@@ -272,8 +272,6 @@
|
||||
/obj/item/clothing/accessory/stethoscope
|
||||
name = "stethoscope"
|
||||
desc = "An outdated medical apparatus for listening to the sounds of the human body. It also makes you look like you know what you're doing."
|
||||
desc_info = "Click on the UI action button toggle between the examination modes. Automatic will use the stethoscope on the person you're \
|
||||
examining when adjacent to them, automatically using it on the selected body part. Manual will make it so you don't automatically use it via examine."
|
||||
icon = 'icons/obj/item/clothing/accessory/stethoscope.dmi'
|
||||
icon_state = "stethoscope"
|
||||
item_state = "stethoscope"
|
||||
@@ -281,6 +279,12 @@
|
||||
flippable = 1
|
||||
var/auto_examine = FALSE
|
||||
|
||||
/obj/item/clothing/accessory/stethoscope/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Click on the UI action button toggle between the examination modes."
|
||||
. += "Automatic will use the stethoscope on the person you're examining when adjacent to them, automatically using it on the selected body part."
|
||||
. += "Manual will make it so you don't automatically use it via examine."
|
||||
|
||||
/obj/item/clothing/accessory/stethoscope/attack(mob/living/target_mob, mob/living/user, target_zone)
|
||||
var/mob/living/carbon/human/M = target_mob
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
/obj/item/clothing/accessory/leg_guard
|
||||
name = "corporate leg guards"
|
||||
desc = "These will protect your legs."
|
||||
desc_info = "These items must be hooked onto plate carriers for them to work!"
|
||||
icon = 'icons/obj/item/clothing/suit/armor/modular_armor/modular_armor.dmi'
|
||||
icon_state = "legguards_sec"
|
||||
item_state = "legguards_sec"
|
||||
@@ -21,6 +20,10 @@
|
||||
drop_sound = 'sound/items/drop/boots.ogg'
|
||||
pickup_sound = 'sound/items/pickup/boots.ogg'
|
||||
|
||||
/obj/item/clothing/accessory/leg_guard/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "These must be attached to plate carriers for them to work."
|
||||
|
||||
/obj/item/clothing/accessory/leg_guard/before_attached(var/obj/item/clothing/clothing, var/mob/user)
|
||||
if(!clothing.valid_accessory_slots || !(slot in clothing.valid_accessory_slots))
|
||||
return
|
||||
|
||||
@@ -1,14 +1,16 @@
|
||||
/obj/item/clothing/under/color
|
||||
name = "grey jumpsuit"
|
||||
desc = "A basic jumpsuit."
|
||||
desc_info = "Jumpsuits can have their sleeves rolled up/down via the Roll Up/Down Sleeves verb, and also have their upper body part be up/down via the \
|
||||
the Rolled Up/Down verb."
|
||||
icon = 'icons/obj/item/clothing/under/jumpsuits.dmi'
|
||||
icon_state = "grey"
|
||||
item_state = "grey"
|
||||
item_icons = null
|
||||
contained_sprite = TRUE
|
||||
|
||||
/obj/item/clothing/under/color/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Jumpsuits can have their sleeves rolled up/down via the Roll Up/Down Sleeves verb, and also have their upper body part be up/down via the Rolled Up/Down verb."
|
||||
|
||||
/obj/item/clothing/under/color/colorable
|
||||
name = "colorable jumpsuit"
|
||||
desc = "A colorable non-descript jumpsuit."
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
/obj/machinery/appliance
|
||||
name = "cooker"
|
||||
desc = DESC_PARENT
|
||||
desc_info = "Control-click this to change its temperature."
|
||||
icon = 'icons/obj/machinery/cooking_machines.dmi'
|
||||
var/appliancetype = 0
|
||||
density = 1
|
||||
@@ -55,8 +54,19 @@
|
||||
var/place_verb = "into"
|
||||
var/combine_first = FALSE//If 1, this appliance will do combination cooking before checking recipes
|
||||
|
||||
component_hint_cap = "Upgraded <b>capacitors</b> will increase heating power."
|
||||
component_hint_scan = "Upgraded <b>scanning modules</b> will increase heating power and improve power efficiency."
|
||||
/obj/machinery/appliance/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Control-click this to change its temperature."
|
||||
|
||||
/obj/machinery/appliance/upgrade_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Upgraded <b>capacitors</b> will increase heating power."
|
||||
. += "Upgraded <b>scanning modules</b> will increase heating power and improve power efficiency."
|
||||
|
||||
/obj/machinery/appliance/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
if(is_adjacent)
|
||||
. += list_contents(user)
|
||||
|
||||
/obj/machinery/appliance/Initialize()
|
||||
. = ..()
|
||||
@@ -76,11 +86,6 @@
|
||||
qdel(CI)
|
||||
return ..()
|
||||
|
||||
/obj/machinery/appliance/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
if(is_adjacent)
|
||||
. += list_contents(user)
|
||||
|
||||
/obj/machinery/appliance/proc/list_contents(var/mob/user)
|
||||
. = list()
|
||||
if (isemptylist(cooking_objs))
|
||||
|
||||
@@ -18,8 +18,8 @@
|
||||
var/temperature = T20C
|
||||
var/starts_with = list()
|
||||
|
||||
/obj/machinery/appliance/cooker/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
/obj/machinery/appliance/cooker/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
if (is_adjacent)
|
||||
if (!stat)
|
||||
if (temperature < min_temp)
|
||||
|
||||
@@ -22,6 +22,15 @@
|
||||
var/appliancetype // Bitfield, uses the same as appliances
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
|
||||
/obj/item/reagent_containers/cooking_container/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
if(length(contents))
|
||||
var/string = "It contains:</br><ul><li>"
|
||||
string += jointext(contents, "</li><li>") + "</li></ul>"
|
||||
. += string
|
||||
if(reagents.total_volume)
|
||||
. += "It contains <b>[reagents.total_volume] units</b> of reagents total."
|
||||
|
||||
/obj/item/reagent_containers/cooking_container/on_reagent_change()
|
||||
. = ..()
|
||||
update_icon()
|
||||
@@ -38,39 +47,6 @@
|
||||
. = ..()
|
||||
update_icon()
|
||||
|
||||
/obj/item/reagent_containers/cooking_container/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
if(length(contents))
|
||||
. += SPAN_NOTICE(get_content_info())
|
||||
if(reagents.total_volume)
|
||||
. += SPAN_NOTICE(get_reagent_info())
|
||||
|
||||
/obj/item/reagent_containers/cooking_container/proc/get_content_info()
|
||||
var/string = "It contains:</br><ul><li>"
|
||||
string += jointext(contents, "</li><li>") + "</li></ul>"
|
||||
return string
|
||||
|
||||
/obj/item/reagent_containers/cooking_container/proc/get_reagent_info()
|
||||
return "It contains [reagents.total_volume] units of reagents."
|
||||
|
||||
/obj/item/reagent_containers/cooking_container/MouseEntered(location, control, params)
|
||||
. = ..()
|
||||
var/list/modifiers = params2list(params)
|
||||
if(modifiers["shift"] && get_dist(usr, src) <= 2)
|
||||
params = replacetext(params, "shift=1;", "") // tooltip doesn't appear unless this is stripped
|
||||
var/description
|
||||
if(length(contents))
|
||||
description = get_content_info()
|
||||
if(reagents.total_volume)
|
||||
if(!description)
|
||||
description = ""
|
||||
description += get_reagent_info()
|
||||
openToolTip(usr, src, params, name, description)
|
||||
|
||||
/obj/item/reagent_containers/cooking_container/MouseExited(location, control, params)
|
||||
. = ..()
|
||||
closeToolTip(usr)
|
||||
|
||||
/obj/item/reagent_containers/cooking_container/attackby(obj/item/attacking_item, mob/user)
|
||||
if(is_type_in_list(attacking_item, insertable))
|
||||
if (!can_fit(attacking_item))
|
||||
@@ -153,7 +129,6 @@
|
||||
if((max_space - total) >= I.w_class)
|
||||
return TRUE
|
||||
|
||||
|
||||
//Takes a reagent holder as input and distributes its contents among the items in the container
|
||||
//Distribution is weighted based on the volume already present in each item
|
||||
/obj/item/reagent_containers/cooking_container/proc/soak_reagent(var/datum/reagents/holder)
|
||||
@@ -296,10 +271,9 @@
|
||||
volume = 15 // for things like jelly sandwiches etc
|
||||
max_space = 25
|
||||
|
||||
/obj/item/reagent_containers/cooking_container/board/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
if(length(contents) || reagents?.total_volume)
|
||||
. += SPAN_NOTICE("To attempt cooking: click and hold, then drag this onto your character.")
|
||||
/obj/item/reagent_containers/cooking_container/board/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "After adding food ingredients, click-drag this onto your character to attempt to cook/prepare them."
|
||||
|
||||
/obj/item/reagent_containers/cooking_container/board/mouse_drop_dragged(atom/over, mob/user, src_location, over_location, params)
|
||||
if(over != user || use_check(user))
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
/obj/machinery/appliance/cooker/oven
|
||||
name = "oven"
|
||||
desc = "Cookies are ready, dear."
|
||||
desc_info = "Control-click this to change its temperature. Alt-click to open or close the oven door."
|
||||
icon_state = "ovenopen"
|
||||
cook_type = "baked"
|
||||
appliancetype = OVEN
|
||||
@@ -48,6 +47,10 @@
|
||||
"Macaron" = /obj/item/reagent_containers/food/snacks/variable/macaron,
|
||||
)
|
||||
|
||||
/obj/machinery/appliance/cooker/oven/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Alt-click to open or close the oven door."
|
||||
|
||||
/obj/machinery/appliance/cooker/oven/Initialize()
|
||||
. = ..()
|
||||
oven_loop = new(src)
|
||||
|
||||
@@ -21,6 +21,17 @@
|
||||
var/list/packed_things
|
||||
/// Contains cart_griddle, cart_smartfridge, cart_table, cart_cent
|
||||
|
||||
/obj/machinery/food_cart/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
if(stat & BROKEN)
|
||||
return
|
||||
if(cart_griddle.stat & BROKEN)
|
||||
. += SPAN_WARNING("The stand's [SPAN_BOLD("grill")] is completely broken!")
|
||||
else
|
||||
. += SPAN_NOTICE("The stand's [SPAN_BOLD("grill")] is intact.")
|
||||
. += SPAN_NOTICE("The stand's [SPAN_BOLD("fridge")] seems fine.") //weirdly enough, these fridges don't break
|
||||
. += SPAN_NOTICE("The stand's [SPAN_BOLD("table")] seems fine.")
|
||||
|
||||
/obj/machinery/food_cart/Initialize(mapload)
|
||||
. = ..()
|
||||
cart_griddle = new(src)
|
||||
@@ -41,17 +52,6 @@
|
||||
packed_things.Cut()
|
||||
return ..()
|
||||
|
||||
/obj/machinery/food_cart/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
if(stat & BROKEN)
|
||||
return
|
||||
if(cart_griddle.stat & BROKEN)
|
||||
. += SPAN_WARNING("The stand's [SPAN_BOLD("grill")] is completely broken!")
|
||||
else
|
||||
. += SPAN_NOTICE("The stand's [SPAN_BOLD("grill")] is intact.")
|
||||
. += SPAN_NOTICE("The stand's [SPAN_BOLD("fridge")] seems fine.") //weirdly enough, these fridges don't break
|
||||
. += SPAN_NOTICE("The stand's [SPAN_BOLD("table")] seems fine.")
|
||||
|
||||
/**
|
||||
* Retract the structures into the food cart
|
||||
*/
|
||||
|
||||
@@ -8,9 +8,6 @@ Plates that can hold your cooking stuff
|
||||
/obj/item/reagent_containers/bowl
|
||||
name = "bowl"
|
||||
desc = "A small bowl for serving liquid meals in."
|
||||
desc_info = "Click with food to put food on.<br>\
|
||||
- Click with cutlery to eat some.<br>\
|
||||
- Click it with the active hand to remove food."
|
||||
icon = 'icons/obj/kitchen.dmi'
|
||||
icon_state = "bowl"
|
||||
fragile = 3
|
||||
@@ -19,8 +16,14 @@ Plates that can hold your cooking stuff
|
||||
atom_flags = ATOM_FLAG_OPEN_CONTAINER
|
||||
var/grease = FALSE
|
||||
|
||||
/obj/item/reagent_containers/bowl/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
/obj/item/reagent_containers/bowl/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Click with food to put food into it."
|
||||
. += "If it has food on it, click with cutlery to scoop some food up."
|
||||
. += "If it has food on it, click it with the active hand to remove the food."
|
||||
|
||||
/obj/item/reagent_containers/bowl/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
if(grease)
|
||||
. += SPAN_WARNING("\The [name] looks a little unclean.")
|
||||
|
||||
@@ -108,18 +111,18 @@ Plates that can hold your cooking stuff
|
||||
icon_state = "plate"
|
||||
var/obj/item/holding
|
||||
|
||||
/obj/item/reagent_containers/bowl/plate/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
if(holding)
|
||||
. += "It looks like there is \a [SPAN_INFO(holding.name)] on \the [src]."
|
||||
. += SPAN_INFO(" - [holding.desc]")
|
||||
|
||||
/obj/item/reagent_containers/bowl/plate/Destroy()
|
||||
if(holding)
|
||||
holding = null
|
||||
qdel(holding)
|
||||
return ..()
|
||||
|
||||
/obj/item/reagent_containers/bowl/plate/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
if(holding)
|
||||
. += "It looks like there is \a [SPAN_INFO(holding.name)] on \the [src]."
|
||||
. += SPAN_INFO(" - [holding.desc]")
|
||||
|
||||
/obj/item/reagent_containers/bowl/plate/attackby(obj/item/attacking_item, mob/user)
|
||||
if((istype(attacking_item, /obj/item/reagent_containers/food/snacks) || istype(attacking_item, /obj/item/trash)) && !holding)
|
||||
user.unEquip(attacking_item)
|
||||
|
||||
@@ -2,8 +2,6 @@
|
||||
/obj/machinery/microscope
|
||||
name = "high powered electron microscope"
|
||||
desc = "A highly advanced microscope capable of zooming up to 3000x."
|
||||
desc_info = "Use a microscope slide or a fingerprint card on this machine to insert it.\
|
||||
\nAlt click to remove any object within it."
|
||||
icon = 'icons/obj/forensics.dmi'
|
||||
icon_state = "microscope"
|
||||
anchored = 1
|
||||
@@ -34,6 +32,11 @@
|
||||
*/
|
||||
var/allowed_analysis = MICROSCOPE_ALL
|
||||
|
||||
/obj/machinery/microscope/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Use a microscope slide or a fingerprint card on this machine to insert it."
|
||||
. += "Alt-click to remove any object within it."
|
||||
|
||||
/obj/machinery/microscope/attackby(obj/item/attacking_item, mob/user)
|
||||
|
||||
if(sample)
|
||||
|
||||
@@ -1,11 +1,15 @@
|
||||
/obj/item/forensics/slide
|
||||
name = "microscope slide"
|
||||
desc = "A pair of thin glass panes used in the examination of samples beneath a microscope."
|
||||
desc_info = "Used with fibers and GSR swab tests to examine the samples in the microscope. To empty them, use in hand."
|
||||
icon_state = "slide"
|
||||
var/obj/item/forensics/swab/has_swab
|
||||
var/obj/item/sample/fibers/has_sample
|
||||
|
||||
/obj/item/forensics/slide/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Used with fibers and GSR swab tests to examine the samples in the microscope."
|
||||
. += "To empty them, use in hand."
|
||||
|
||||
/obj/item/forensics/slide/Initialize(mapload, ...)
|
||||
. = ..()
|
||||
create_reagents(5)
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
/obj/item/evidencebag
|
||||
name = "evidence bag"
|
||||
desc = "An empty evidence bag."
|
||||
desc_info = "Click drag this onto an object to put it inside. Click it in-hand to remove an object from it."
|
||||
icon = 'icons/obj/forensics.dmi'
|
||||
icon_state = "evidenceobj"
|
||||
item_state = ""
|
||||
@@ -11,6 +10,11 @@
|
||||
var/obj/item/stored_item = null
|
||||
var/label_text = ""
|
||||
|
||||
/obj/item/evidencebag/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Click drag this onto an object to put it inside."
|
||||
. += "Click it in-hand to remove an object from it."
|
||||
|
||||
/obj/item/evidencebag/Initialize()
|
||||
. = ..()
|
||||
AddComponent(/datum/component/base_name, name)
|
||||
|
||||
@@ -80,19 +80,26 @@
|
||||
/obj/item/sample/fibers
|
||||
name = "fiber bag"
|
||||
desc = "Used to hold fiber evidence for the detective."
|
||||
desc_info = "Holds various fibre evidence. Place it in a slide and the slide into a microscope to check them."
|
||||
icon_state = "fiberbag"
|
||||
|
||||
/obj/item/sample/fibers/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Holds various fibre evidence. Place it in a slide and the slide into a microscope to check them."
|
||||
|
||||
/obj/item/sample/print
|
||||
name = "fingerprint card"
|
||||
desc = "Records a set of fingerprints."
|
||||
desc_info = "A sample card for fingerprints. Risks putting your own prints on it if touched without gloves.\
|
||||
\nPlace the card in a microscope to examine the contents. \
|
||||
\nUse in hand to put your prints on it.\nTarget hands and click another creature to take their prints."
|
||||
icon = 'icons/obj/card.dmi'
|
||||
icon_state = "fingerprint0"
|
||||
item_state = "paper"
|
||||
|
||||
/obj/item/sample/print/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "A sample card for fingerprints. Risks putting your own prints on it if touched without gloves."
|
||||
. += "Place the card in a microscope to examine the contents."
|
||||
. += "Use in hand to put your prints on it."
|
||||
. += "Target hands and click another creature to take their prints."
|
||||
|
||||
/obj/item/sample/print/attack_self(var/mob/user)
|
||||
if(LAZYLEN(evidence))
|
||||
return
|
||||
@@ -159,13 +166,16 @@
|
||||
/obj/item/forensics/sample_kit
|
||||
name = "fiber collection kit"
|
||||
desc = "A magnifying glass and tweezers. Used to lift suit fibers."
|
||||
desc_info = "Click drag it on to an object to collect evidence. Alternatively click on non-help intent."
|
||||
icon_state = "m_glass"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
item_flags = ITEM_FLAG_NO_BLUDGEON
|
||||
var/evidence_type = "fiber"
|
||||
var/evidence_path = /obj/item/sample/fibers
|
||||
|
||||
/obj/item/forensics/sample_kit/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Click drag it onto an object to collect fiber evidence. Alternatively, click on an object with non-Help intent."
|
||||
|
||||
/obj/item/forensics/sample_kit/proc/can_take_sample(var/mob/user, var/atom/supplied)
|
||||
return (supplied.suit_fibers && supplied.suit_fibers.len)
|
||||
|
||||
|
||||
@@ -1,13 +1,6 @@
|
||||
/obj/item/forensics/swab
|
||||
name = "swab kit"
|
||||
desc = "A sterilized cotton swab and vial used to take forensic samples."
|
||||
desc_info = "Swab kits can be used to gather blood with DNA attached to it by clicking the blood. \
|
||||
If it fails to collect a sample, it means that particular bit of blood has no associated DNA. \
|
||||
\nThey can also collect DNA samples directly from people by targetting their mouth to take a saliva sample. \
|
||||
\nGunshot Residue (GSR) can be collected from someones hands by targetting them. If they are wearing gloves, \
|
||||
the residue will be taken from the gloves instead. \
|
||||
\n\nGSR samples are put in a slide and examined in a microscope. \
|
||||
\nBlood and DNA samples are checked in the DNA analyzer"
|
||||
icon_state = "swab"
|
||||
var/list/gsr
|
||||
var/list/dna
|
||||
@@ -15,6 +8,16 @@
|
||||
drop_sound = 'sound/items/drop/glass.ogg'
|
||||
pickup_sound = 'sound/items/pickup/glass.ogg'
|
||||
|
||||
/obj/item/forensics/swab/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Swab kits can be used to gather blood with DNA attached to it by clicking the blood."
|
||||
. += "If it fails to collect a sample, it means that particular bit of blood has no associated DNA."
|
||||
. += "They can also collect DNA samples directly from people by targetting their mouth to take a saliva sample."
|
||||
. += "Gunshot Residue (GSR) can be collected from someones hands by targetting them. If they are wearing gloves, \
|
||||
the residue will be taken from the gloves instead."
|
||||
. += "GSR samples are put in a slide and examined in a microscope."
|
||||
. += "Blood and DNA samples are checked in the DNA analyzer."
|
||||
|
||||
/obj/item/forensics/swab/proc/is_used()
|
||||
return used
|
||||
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
/obj/machinery/orderterminal
|
||||
name = "Idris Ordering Terminal"
|
||||
desc = "An ordering terminal designed by Idris for quicker expedition."
|
||||
desc_info = "To edit the menu, select 'Toggle Lock' while wearing an ID with kitchen access. \nAll credits from the machine will automatically go to the civilian account."
|
||||
icon = 'icons/obj/machinery/wall/terminals.dmi'
|
||||
icon_state = "kitchenterminal"
|
||||
anchored = 1
|
||||
@@ -24,6 +23,11 @@
|
||||
var/ticket_number = 1
|
||||
req_one_access = list(ACCESS_BAR, ACCESS_KITCHEN) // Access to change the menu
|
||||
|
||||
/obj/machinery/orderterminal/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "To edit the menu, select 'Toggle Lock' while wearing an ID with kitchen access."
|
||||
. += "All credits from the machine will automatically go to the civilian account."
|
||||
|
||||
/obj/machinery/orderterminal/Initialize()
|
||||
. = ..()
|
||||
machine_id = "Idris Ordering Terminal #[SSeconomy.num_financial_terminals++]"
|
||||
|
||||
@@ -31,11 +31,16 @@
|
||||
/obj/item/deck/cards
|
||||
name = "deck of cards"
|
||||
desc = "A simple deck of playing cards."
|
||||
desc_info = "Ctrl-click to draw/deal. Alt-click to shuffle."
|
||||
icon_state = "deck"
|
||||
drop_sound = 'sound/items/drop/paper.ogg'
|
||||
pickup_sound = 'sound/items/pickup/paper.ogg'
|
||||
hand_type = /obj/item/hand/cards
|
||||
|
||||
/obj/item/deck/cards/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "CTRL-click to draw/deal."
|
||||
. += "ALT-click to shuffle."
|
||||
|
||||
/obj/item/deck/Initialize()
|
||||
. = ..()
|
||||
generate_deck()
|
||||
@@ -283,6 +288,14 @@
|
||||
var/concealed = TRUE
|
||||
var/list/cards = list()
|
||||
|
||||
/obj/item/hand/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
if((!concealed || src.loc == user) && length(cards))
|
||||
if(length(cards) > 1)
|
||||
. += "It contains: "
|
||||
for(var/datum/playingcard/P in cards)
|
||||
. += "The [P.name]. [P.desc ? "<i>[P.desc]</i>" : ""]"
|
||||
|
||||
/obj/item/hand/cards
|
||||
deck_type = /obj/item/deck/cards
|
||||
|
||||
@@ -356,14 +369,6 @@
|
||||
playsound(src, 'sound/items/cards/cardflip.ogg', 50, TRUE)
|
||||
balloon_alert_to_viewers("[concealed ? "conceals" : "reveals"] their hand.")
|
||||
|
||||
/obj/item/hand/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
if((!concealed || src.loc == user) && length(cards))
|
||||
if(length(cards) > 1)
|
||||
. += "It contains: "
|
||||
for(var/datum/playingcard/P in cards)
|
||||
. += "The [P.name]. [P.desc ? "<i>[P.desc]</i>" : ""]"
|
||||
|
||||
/obj/item/hand/update_icon(var/direction = 0)
|
||||
if(randpixel)
|
||||
randpixel = 0
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
being able to be purchased from an online marketplace hosted by InUs. Thousands of popular and obscure titles are available on the \
|
||||
console. Besides being the perfect present, it's also capable of video streaming and sharing files over authorized \
|
||||
connections. A quick and easy way to upload your latest montage to the extranet."
|
||||
desc_info = "You can ALT-click the game-helm to open it up and turn it on. Click on the open device to play."
|
||||
icon = 'icons/obj/gamehelm.dmi'
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
update_icon_on_init = TRUE
|
||||
@@ -47,6 +46,10 @@
|
||||
|
||||
var/muted = FALSE
|
||||
|
||||
/obj/item/gamehelm/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "You can ALT-click the game-helm to open it up and turn it on. Click on the open device to play."
|
||||
|
||||
/obj/item/gamehelm/update_icon()
|
||||
ClearOverlays()
|
||||
if(open)
|
||||
|
||||
@@ -16,6 +16,13 @@
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 15000, MATERIAL_PLASTIC = 1000, MATERIAL_OSMIUM = 500)
|
||||
dir = SOUTH
|
||||
|
||||
/obj/item/mech_component/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
if(ready_to_install())
|
||||
. += SPAN_NOTICE("It is ready for installation.")
|
||||
else
|
||||
. += get_missing_parts_text(user)
|
||||
|
||||
/obj/item/mech_component/pickup(mob/user)
|
||||
pixel_x = initial(pixel_x)
|
||||
pixel_y = initial(pixel_y)
|
||||
@@ -33,13 +40,6 @@
|
||||
for(var/obj/item/thing in contents)
|
||||
thing.emp_act(severity)
|
||||
|
||||
/obj/item/mech_component/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
if(ready_to_install())
|
||||
. += SPAN_NOTICE("It is ready for installation.")
|
||||
else
|
||||
. += get_missing_parts_text(user)
|
||||
|
||||
/obj/item/mech_component/set_dir()
|
||||
..(SOUTH)
|
||||
|
||||
|
||||
@@ -370,6 +370,21 @@
|
||||
desc = "A replaceable drill head usually used in exosuit drills."
|
||||
icon_state = "drill_head"
|
||||
|
||||
/obj/item/material/drill_head/condition_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
var/percentage = get_durability_percentage()
|
||||
var/descriptor = SPAN_DANGER("It looks close to breaking")
|
||||
if(percentage > 10)
|
||||
descriptor = SPAN_ALERT("It is very worn")
|
||||
if(percentage > 50)
|
||||
descriptor = SPAN_ALERT("It is fairly worn")
|
||||
if(percentage > 75)
|
||||
descriptor = SPAN_ALERT("It shows some signs of wear")
|
||||
if(percentage > 95)
|
||||
descriptor = SPAN_NOTICE("It shows no wear")
|
||||
|
||||
. += descriptor
|
||||
|
||||
/obj/item/material/drill_head/Initialize(newloc, material_key)
|
||||
. = ..()
|
||||
durability = 2 * material.integrity
|
||||
@@ -377,21 +392,6 @@
|
||||
/obj/item/material/drill_head/proc/get_durability_percentage()
|
||||
return (durability * 100) / (2 * material.integrity)
|
||||
|
||||
/obj/item/material/drill_head/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
var/percentage = get_durability_percentage()
|
||||
var/descriptor = "looks close to breaking"
|
||||
if(percentage > 10)
|
||||
descriptor = "is very worn"
|
||||
if(percentage > 50)
|
||||
descriptor = "is fairly worn"
|
||||
if(percentage > 75)
|
||||
descriptor = "shows some signs of wear"
|
||||
if(percentage > 95)
|
||||
descriptor = "shows no wear"
|
||||
|
||||
. += SPAN_NOTICE("It [descriptor].")
|
||||
|
||||
/obj/item/mecha_equipment/drill
|
||||
name = "drill"
|
||||
desc = "This is the drill that'll pierce the heavens!"
|
||||
@@ -726,7 +726,6 @@
|
||||
/obj/item/mecha_equipment/phazon
|
||||
name = "phazon bluespace transmission system"
|
||||
desc = "A large back-mounted device that grants the exosuit it's mounted to the ability to semi-shift into bluespace, allowing it to pass through dense objects."
|
||||
desc_info = "It needs an anomaly core to function. You can install some simply by using a core on it."
|
||||
icon_state = "mecha_phazon"
|
||||
restricted_hardpoints = list(HARDPOINT_BACK)
|
||||
w_class = WEIGHT_CLASS_HUGE
|
||||
@@ -736,6 +735,16 @@
|
||||
var/obj/item/anomaly_core/AC
|
||||
var/image/anomaly_overlay
|
||||
|
||||
/obj/item/mecha_equipment/phazon/assembly_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
if(!AC)
|
||||
. += "It needs an anomaly core to function. You can install one by using a core on it."
|
||||
|
||||
/obj/item/mecha_equipment/phazon/disassembly_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
if(AC)
|
||||
. += "The anomaly core could be extracted if the securing <b>bolts</b> are undone."
|
||||
|
||||
/obj/item/mecha_equipment/phazon/attackby(obj/item/attacking_item, mob/user)
|
||||
if(istype(attacking_item, /obj/item/anomaly_core))
|
||||
if(AC)
|
||||
@@ -744,7 +753,6 @@
|
||||
user.drop_from_inventory(attacking_item, src)
|
||||
AC = attacking_item
|
||||
to_chat(user, SPAN_NOTICE("You insert \the [AC] into \the [src]."))
|
||||
desc_info = "\The [src] has an anomaly core installed! You can use a wrench to remove it."
|
||||
anomaly_overlay = image(AC.icon, null, AC.icon_state)
|
||||
anomaly_overlay.pixel_y = 3
|
||||
AddOverlays(anomaly_overlay)
|
||||
|
||||
@@ -28,6 +28,24 @@
|
||||
|
||||
var/list/owned_bee_swarms = list()
|
||||
|
||||
/obj/machinery/beehive/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += SPAN_NOTICE("\The [src] is holding <b>[frames]/[maxFrames]</b> frames.")
|
||||
if(is_adjacent)
|
||||
if(bee_count)
|
||||
if(closed)
|
||||
. += FONT_SMALL(SPAN_NOTICE("You can hear buzzing from within \the [src]."))
|
||||
else
|
||||
. += FONT_SMALL(SPAN_WARNING("The lid is <b>open</b>. The bees can't grow and produce honey until it's <b>closed!</b>"))
|
||||
. += FONT_SMALL(SPAN_NOTICE("You can see bees buzzing around within \the [src]."))
|
||||
else
|
||||
if(closed)
|
||||
. += FONT_SMALL(SPAN_NOTICE("\The [src] lies silent."))
|
||||
else
|
||||
. += FONT_SMALL(SPAN_NOTICE("You can see bees buzzing around within \the [src]."))
|
||||
if(honeycombs / 100 > 1)
|
||||
. += SPAN_NOTICE("\The [src] has a frame full of honeycombs which you can harvest.")
|
||||
|
||||
/obj/machinery/beehive/update_icon()
|
||||
ClearOverlays()
|
||||
icon_state = "beehive"
|
||||
@@ -46,24 +64,6 @@
|
||||
if(81 to 100)
|
||||
AddOverlays("bees3")
|
||||
|
||||
/obj/machinery/beehive/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
. += SPAN_NOTICE("\The [src] is holding <b>[frames]/[maxFrames]</b> frames.")
|
||||
if(is_adjacent)
|
||||
if(bee_count)
|
||||
if(closed)
|
||||
. += FONT_SMALL(SPAN_NOTICE("You can hear buzzing from within \the [src]."))
|
||||
else
|
||||
. += FONT_SMALL(SPAN_WARNING("The lid is <b>open</b>. The bees can't grow and produce honey until it's <b>closed!</b>"))
|
||||
. += FONT_SMALL(SPAN_NOTICE("You can see bees buzzing around within \the [src]."))
|
||||
else
|
||||
if(closed)
|
||||
. += FONT_SMALL(SPAN_NOTICE("\The [src] lies silent."))
|
||||
else
|
||||
. += FONT_SMALL(SPAN_NOTICE("You can see bees buzzing around within \the [src]."))
|
||||
if(honeycombs / 100 > 1)
|
||||
. += SPAN_NOTICE("\The [src] has a frame full of honeycombs which you can harvest.")
|
||||
|
||||
/obj/machinery/beehive/attackby(obj/item/attacking_item, mob/user)
|
||||
if(attacking_item.iscrowbar())
|
||||
closed = !closed
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
/obj/item/bee_smoker
|
||||
name = "bee smoker"
|
||||
desc = "An archaic contraption that slowly burns welding fuel to create thick clouds of smoke, and directs it with attached bellows, used to control angry bees and calm them before harvesting honey."
|
||||
desc_antag = "This device can be used to blind people in short range."
|
||||
icon = 'icons/obj/beekeeping.dmi'
|
||||
icon_state = "bee_smoker"
|
||||
item_state = "bee_smoker"
|
||||
@@ -9,8 +8,12 @@
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
var/max_fuel = 60
|
||||
|
||||
/obj/item/bee_smoker/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
/obj/item/bee_smoker/antagonist_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "This device can be used to blind people in short range."
|
||||
|
||||
/obj/item/bee_smoker/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
if(is_adjacent)
|
||||
. += SPAN_NOTICE("It has <b>[get_fuel()]/[max_fuel]</b> welding fuel left.")
|
||||
|
||||
|
||||
@@ -695,9 +695,9 @@
|
||||
else if(dead)
|
||||
remove_dead(user)
|
||||
|
||||
/// TODO: Need to modernise this.
|
||||
/obj/machinery/portable_atmospherics/hydroponics/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
/obj/machinery/portable_atmospherics/hydroponics/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
|
||||
if(!seed)
|
||||
. += "[src] is empty."
|
||||
return
|
||||
|
||||
@@ -192,7 +192,6 @@
|
||||
icon = 'icons/obj/library.dmi'
|
||||
contained_sprite = TRUE
|
||||
icon_state = "book"
|
||||
desc_antag = "As a Cultist, this item can be reforged to become a cult tome."
|
||||
throw_speed = 1
|
||||
throw_range = 5
|
||||
w_class = WEIGHT_CLASS_NORMAL //upped to three because books are, y'know, pretty big. (and you could hide them inside eachother recursively forever)
|
||||
@@ -207,6 +206,10 @@
|
||||
drop_sound = 'sound/items/drop/book.ogg'
|
||||
pickup_sound = 'sound/items/pickup/book.ogg'
|
||||
|
||||
/obj/item/book/antagonist_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "As a Cultist, this item can be reforged to become a cult tome."
|
||||
|
||||
/obj/item/book/attack_self(var/mob/user as mob)
|
||||
if(carved)
|
||||
if(store)
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
// Stacked resources. They use a material datum for a lot of inherited values.
|
||||
/obj/item/stack/material
|
||||
desc_info = "Use in your hand to bring up the recipe menu. If you have enough sheets, click on something on the list to build it."
|
||||
force = 11
|
||||
throwforce = 5
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
@@ -16,6 +15,11 @@
|
||||
var/painted_colour
|
||||
var/use_material_sound = TRUE
|
||||
|
||||
/obj/item/stack/material/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Use in your hand to bring up the crafting menu."
|
||||
. += "If you have enough sheets, click on something on the list to build it."
|
||||
|
||||
/obj/item/stack/material/Initialize(mapload, amount)
|
||||
. = ..()
|
||||
randpixel_xy()
|
||||
|
||||
@@ -36,14 +36,18 @@
|
||||
default_type = MATERIAL_CLOTH
|
||||
|
||||
/obj/item/stack/material/cyborg/glass
|
||||
desc_info = "Use in your hand to build a window. Can be upgraded to reinforced glass by adding metal rods, which are made from metal sheets.<br>\
|
||||
As a synthetic, you can acquire more sheets of glass by recharging."
|
||||
icon_state = "sheet-glass"
|
||||
default_type = MATERIAL_GLASS
|
||||
|
||||
/obj/item/stack/material/cyborg/glass/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "As a synthetic, you can replenish your material supplies by recharging."
|
||||
|
||||
/obj/item/stack/material/cyborg/glass/assembly_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Use in your hand to build a window."
|
||||
|
||||
/obj/item/stack/material/cyborg/glass/reinforced
|
||||
desc_info = "Use in your hand to build a window. Reinforced glass is much stronger against damage.<br>\
|
||||
As a synthetic, you can gain more reinforced glass by recharging."
|
||||
icon_state = "sheet-rglass"
|
||||
default_type = MATERIAL_GLASS_REINFORCED
|
||||
charge_costs = list(500, 1000)
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
/obj/machinery/mining/drill
|
||||
name = "mining drill head"
|
||||
desc = "A large industrial drill. Its bore does not penetrate deep enough to access the sublevels."
|
||||
desc_info = "You can upgrade this machine with better matter bins, capacitors, micro lasers, and power cells. You can also attach a mining satchel that has a warp pack and a linked ore box to it, to bluespace teleport any mined ore directly into the linked ore box."
|
||||
icon_state = "mining_drill"
|
||||
var/braces_needed = 2
|
||||
var/list/supports = list()
|
||||
@@ -58,10 +57,6 @@
|
||||
/obj/item/cell/high
|
||||
)
|
||||
|
||||
component_hint_bin = "Upgraded <b>matter bins</b> will increase ore capacity."
|
||||
component_hint_cap = "Upgraded <b>capacitors</b> will improve power efficiency."
|
||||
component_hint_laser = "Upgraded <b>micro-lasers</b> will increase the amount of ore harvested."
|
||||
|
||||
parts_power_mgmt = FALSE
|
||||
|
||||
/// The list of ores currently held within the mining drill
|
||||
@@ -70,26 +65,18 @@
|
||||
/// The last time the stored ores were updated, used as a cooldown to not nuke the server
|
||||
var/last_stored_ore_update = 0
|
||||
|
||||
/obj/machinery/mining/drill/Initialize()
|
||||
. = ..()
|
||||
spark_system = bind_spark(src, 3)
|
||||
/obj/machinery/mining/drill/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Attaching a mining satchel with a warp extraction pack and a linked ore box to this drill will bluespace-teleport any mined ore directly into the linked ore box."
|
||||
|
||||
/obj/machinery/mining/drill/Destroy()
|
||||
QDEL_NULL(attached_satchel)
|
||||
QDEL_NULL(spark_system)
|
||||
return ..()
|
||||
|
||||
/obj/machinery/mining/drill/proc/update_ore_count()
|
||||
stored_ores = list()
|
||||
for(var/obj/item/ore/O in contents)
|
||||
if(stored_ores[O.name])
|
||||
stored_ores[O.name]++
|
||||
else
|
||||
stored_ores[O.name] = 1
|
||||
|
||||
/obj/machinery/mining/drill/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
/obj/machinery/mining/drill/upgrade_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Upgraded <b>matter bins</b> will increase ore capacity."
|
||||
. += "Upgraded <b>capacitors</b> will improve power efficiency."
|
||||
. += "Upgraded <b>micro-lasers</b> will increase the amount of ore harvested."
|
||||
|
||||
/obj/machinery/mining/drill/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
if(need_player_check)
|
||||
. += SPAN_WARNING("The drill error light is flashing. The cell panel is [panel_open ? "open" : "closed"].")
|
||||
else
|
||||
@@ -123,6 +110,23 @@
|
||||
for(var/ore in stored_ores)
|
||||
. += SPAN_NOTICE("- [stored_ores[ore]] [ore]")
|
||||
|
||||
/obj/machinery/mining/drill/Initialize()
|
||||
. = ..()
|
||||
spark_system = bind_spark(src, 3)
|
||||
|
||||
/obj/machinery/mining/drill/Destroy()
|
||||
QDEL_NULL(attached_satchel)
|
||||
QDEL_NULL(spark_system)
|
||||
return ..()
|
||||
|
||||
/obj/machinery/mining/drill/proc/update_ore_count()
|
||||
stored_ores = list()
|
||||
for(var/obj/item/ore/O in contents)
|
||||
if(stored_ores[O.name])
|
||||
stored_ores[O.name]++
|
||||
else
|
||||
stored_ores[O.name] = 1
|
||||
|
||||
/obj/machinery/mining/drill/process()
|
||||
if(need_player_check)
|
||||
return
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
/obj/machinery/mineral/processing_unit_console
|
||||
name = "ore redemption console"
|
||||
desc = "A handy console which can be use to retrieve mining points for use in the mining vendor, or to set processing values for various ore types."
|
||||
desc_info = "Up to date settings for the refinery can be found in the Aurorastation Guide to Mining wikipage."
|
||||
icon = 'icons/obj/machinery/wall/terminals.dmi'
|
||||
icon_state = "production_console"
|
||||
density = FALSE
|
||||
@@ -36,9 +35,11 @@
|
||||
/obj/item/stock_parts/console_screen
|
||||
)
|
||||
|
||||
component_hint_cap = "Upgraded <b>capacitors</b> will increase the amount of ore smelted per second."
|
||||
component_hint_laser = "Upgraded <b>micro-lasers</b> will increase the amount of ore smelted per second."
|
||||
component_hint_scan = "Upgraded <b>scanning modules</b> will increase the amount of ore smelted per second."
|
||||
/obj/machinery/mineral/processing_unit_console/upgrade_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Upgraded <b>capacitors</b> will increase the amount of ore smelted per second."
|
||||
. += "Upgraded <b>micro-lasers</b> will increase the amount of ore smelted per second."
|
||||
. += "Upgraded <b>scanning modules</b> will increase the amount of ore smelted per second."
|
||||
|
||||
/obj/machinery/mineral/processing_unit_console/Initialize(mapload, d, populate_components)
|
||||
. = ..()
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
/obj/machinery/mineral/rigpress
|
||||
name = "hardsuit module press"
|
||||
desc = "This machine converts certain items permanently into hardsuit modules."
|
||||
desc_info = "The following devices can be made:"
|
||||
icon = 'icons/obj/stationobjs.dmi'
|
||||
icon_state = "coinpress0"
|
||||
density = TRUE
|
||||
@@ -19,12 +18,13 @@
|
||||
/obj/item/gun/energy/vaurca/thermaldrill = /obj/item/rig_module/mounted/thermalldrill
|
||||
)
|
||||
|
||||
/obj/machinery/mineral/rigpress/Initialize()
|
||||
. = ..()
|
||||
/obj/machinery/mineral/rigpress/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "The following devices can be made:"
|
||||
for(var/press_type in press_types)
|
||||
var/obj/item/base = press_type
|
||||
var/obj/item/product = press_types[press_type]
|
||||
desc_info += "\n[initial(base.name)] -> [initial(product.name)]"
|
||||
. += "[initial(base.name)] -> [initial(product.name)]"
|
||||
|
||||
/obj/machinery/mineral/rigpress/update_icon()
|
||||
if(pressing)
|
||||
|
||||
@@ -963,12 +963,16 @@ GLOBAL_LIST_INIT_TYPED(total_extraction_beacons, /obj/structure/extraction_point
|
||||
|
||||
/obj/item/warp_core
|
||||
name = "warp extraction beacon signaller"
|
||||
desc = "Emits a signal which Warp-Item recovery devices can lock onto. Activate in hand to create a beacon."
|
||||
desc_info = "You can activate this item in-hand to create a static beacon, or you can click on an ore box with it to allow the ore box to be linked to warp packed mining satchels."
|
||||
desc = "Emits a signal which Warp-Item recovery devices can lock onto."
|
||||
icon = 'icons/obj/stock_parts.dmi'
|
||||
icon_state = "subspace_amplifier"
|
||||
origin_tech = list(TECH_BLUESPACE = 1, TECH_PHORON = 1, TECH_ENGINEERING = 2)
|
||||
|
||||
/obj/item/warp_core/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "You can activate this item in-hand to create a static beacon."
|
||||
. += "You can click on an ore box with it to allow the ore box to be linked to warp extraction pack-enabled mining satchels."
|
||||
|
||||
/obj/item/warp_core/attack_self(mob/user)
|
||||
to_chat(user, SPAN_NOTICE("You start placing down the beacon..."))
|
||||
if(do_after(user, 15))
|
||||
|
||||
@@ -26,15 +26,14 @@
|
||||
/// The anchor used to render the ore pings on top of, this follows us around as the ore detector resets its blips
|
||||
var/obj/item/detector_anchor/anchor
|
||||
|
||||
/obj/item/ore_detector/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "ALT-click to set the type of ore you wish to search for."
|
||||
|
||||
/obj/item/ore_detector/Initialize(mapload, ...)
|
||||
. = ..()
|
||||
anchor = new /obj/item/detector_anchor(src)
|
||||
|
||||
/obj/item/ore_detector/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
if(distance <= 1)
|
||||
. += FONT_SMALL(SPAN_NOTICE("Alt-click to set the ore you wish to search for."))
|
||||
|
||||
/obj/item/ore_detector/Destroy()
|
||||
deactivate()
|
||||
QDEL_NULL(anchor)
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
/obj/item/storage/bag/ore
|
||||
name = "mining satchel"
|
||||
desc = "This little bugger can be used to store and transport ores."
|
||||
desc_info = "You can attach a warp extraction pack to it, then click on an ore box that has a warp extraction beacon signaller attached to it to link them. Then ore put into this will be bluespace teleported into the ore box."
|
||||
icon = 'icons/obj/storage/bags.dmi'
|
||||
icon_state = "satchel"
|
||||
slot_flags = SLOT_BELT | SLOT_POCKET
|
||||
@@ -16,6 +15,15 @@
|
||||
var/linked_beacon = FALSE // can't hold an actual beacon beclause storage code a shit
|
||||
var/linked_beacon_uses = 3 // to hold the amount of uses the beacon had, storage code a shit.
|
||||
|
||||
/obj/item/storage/bag/ore/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "You can attach a warp extraction pack to it, then click on an ore box that has a warp extraction beacon signaller attached to it to link them. Then ore put into this will be bluespace teleported into the ore box."
|
||||
|
||||
/obj/item/storage/bag/ore/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
if(is_adjacent && linked_beacon)
|
||||
. += FONT_SMALL(SPAN_NOTICE("It has a <b>warp extraction pack</b> attached."))
|
||||
|
||||
/obj/item/storage/bag/ore/Destroy()
|
||||
if(listeningTo)
|
||||
UnregisterSignal(listeningTo, COMSIG_MOVABLE_MOVED)
|
||||
@@ -48,11 +56,6 @@
|
||||
if(location)
|
||||
pickup_items_from_loc_and_feedback(user, location, explicit_request = FALSE)
|
||||
|
||||
/obj/item/storage/bag/ore/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
if(is_adjacent && linked_beacon)
|
||||
. += FONT_SMALL(SPAN_NOTICE("It has a <b>warp extraction pack</b> inside."))
|
||||
|
||||
/obj/item/storage/bag/ore/drone
|
||||
// this used to be 400. The inventory system FUCKING DIED at this.
|
||||
max_storage_space = 200
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
/obj/structure/ore_box
|
||||
name = "ore box"
|
||||
desc = "A heavy box used for storing ore."
|
||||
desc_info = "You can attach a warp extraction beacon signaller to this, then click on it with an ore satchel that has a warp extraction pack attached, to link them."
|
||||
icon = 'icons/obj/mining.dmi'
|
||||
icon_state = "orebox0"
|
||||
density = TRUE
|
||||
@@ -13,6 +12,32 @@
|
||||
var/obj/item/warp_core/warp_core // to set up the bluespace network
|
||||
var/list/stored_ore = list()
|
||||
|
||||
/obj/structure/ore_box/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "You can attach a warp extraction beacon signaller to this, then click on it with an ore satchel that has a warp extraction pack attached, to link them."
|
||||
|
||||
/obj/structure/ore_box/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
if(!is_adjacent) //Can only check the contents of ore boxes if you can physically reach them.
|
||||
return
|
||||
|
||||
add_fingerprint(user)
|
||||
|
||||
if(warp_core)
|
||||
. += FONT_SMALL(SPAN_NOTICE("It has a <b>warp extraction beacon signaller</b> attached to it."))
|
||||
|
||||
if(!length(contents))
|
||||
. += SPAN_NOTICE("It is empty.")
|
||||
return
|
||||
|
||||
if(world.time > last_update + 10)
|
||||
update_ore_count()
|
||||
last_update = world.time
|
||||
|
||||
. += SPAN_NOTICE("It holds:")
|
||||
for(var/ore in stored_ore)
|
||||
. += SPAN_NOTICE("- [stored_ore[ore]] [ore]")
|
||||
|
||||
/obj/structure/ore_box/attackby(obj/item/attacking_item, mob/user)
|
||||
if(istype(attacking_item, /obj/item/ore))
|
||||
user.drop_from_inventory(attacking_item, src)
|
||||
@@ -71,28 +96,6 @@
|
||||
else
|
||||
stored_ore[O.name] = 1
|
||||
|
||||
/obj/structure/ore_box/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
if(!is_adjacent) //Can only check the contents of ore boxes if you can physically reach them.
|
||||
return
|
||||
|
||||
add_fingerprint(user)
|
||||
|
||||
if(warp_core)
|
||||
. += FONT_SMALL(SPAN_NOTICE("It has a <b>warp extraction beacon signaller</b> attached to it."))
|
||||
|
||||
if(!length(contents))
|
||||
. += SPAN_NOTICE("It is empty.")
|
||||
return
|
||||
|
||||
if(world.time > last_update + 10)
|
||||
update_ore_count()
|
||||
last_update = world.time
|
||||
|
||||
. += SPAN_NOTICE("It holds:")
|
||||
for(var/ore in stored_ore)
|
||||
. += SPAN_NOTICE("- [stored_ore[ore]] [ore]")
|
||||
|
||||
/obj/structure/ore_box/verb/empty_box()
|
||||
set name = "Empty Ore Box"
|
||||
set category = "Object"
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
/obj/machinery/slime_extractor
|
||||
name = "slime core extractor"
|
||||
desc = "A bulky machine that, when fed a slime corpse, rapidly extracts the held cores."
|
||||
desc_info = "This machine can be upgraded with a micro laser to increase its extraction speed, or a matter bin to increase its slime capacity. It will place slime extracts into a slime extract bag if it's adjacent to the machine."
|
||||
icon = 'icons/obj/stationobjs.dmi'
|
||||
icon_state = "slime_extractor"
|
||||
density = TRUE
|
||||
@@ -19,14 +18,20 @@
|
||||
/obj/item/stack/cable_coil{amount = 5}
|
||||
)
|
||||
|
||||
component_hint_bin = "Upgraded <b>matter bins</b> will increase slime capacity."
|
||||
component_hint_laser = "Upgraded <b>micro-lasers</b> will increase extraction speed."
|
||||
/obj/machinery/slime_extractor/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "It will place slime extracts into a slime extract bag automatically if it's adjacent to the machine."
|
||||
|
||||
/obj/machinery/slime_extractor/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
. += FONT_SMALL(SPAN_NOTICE("It can hold <b>[slime_limit] slime\s</b> at a time."))
|
||||
/obj/machinery/slime_extractor/upgrade_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Upgraded <b>matter bins</b> will increase slime capacity."
|
||||
. += "Upgraded <b>micro-lasers</b> will increase extraction speed."
|
||||
|
||||
/obj/machinery/slime_extractor/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "It can hold <b>[slime_limit] slime\s</b> at a time."
|
||||
if(length(extract_slimes))
|
||||
. += FONT_SMALL(SPAN_WARNING("It is currently processing <b>[length(extract_slimes)] slime\s</b>."))
|
||||
. += "It is currently processing <b>[length(extract_slimes)] slime\s</b>."
|
||||
|
||||
/obj/machinery/slime_extractor/update_icon()
|
||||
ClearOverlays()
|
||||
@@ -101,7 +106,6 @@
|
||||
qdel(extracted_slime)
|
||||
update_icon()
|
||||
|
||||
|
||||
#ifndef T_BOARD
|
||||
#error T_BOARD macro is not defined but we need it!
|
||||
#endif
|
||||
|
||||
@@ -103,10 +103,13 @@
|
||||
/obj/item/robot_emag
|
||||
name = "cryptographic sequencer"
|
||||
desc = "It's a card with a magnetic strip attached to some circuitry. This one is modified to be used by a robot."
|
||||
desc_antag = "This emag has an unlimited number of uses, however, each use will drain a little bit of your power cell."
|
||||
icon = 'icons/obj/card.dmi'
|
||||
icon_state = "emag"
|
||||
|
||||
/obj/item/robot_emag/antagonist_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "This emag has an unlimited number of uses, however, each use will drain a little bit of your power cell."
|
||||
|
||||
/obj/item/robot_emag/afterattack(var/atom/target, var/mob/living/user, proximity) //possible spaghetti code, but should work
|
||||
if(!target)
|
||||
return
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
name = "inductive charger"
|
||||
desc = "A phoron-enhanced induction charger hooked up to its attached stationbound's internal cell."
|
||||
desc_extended = "Harnessing the energy potential found in phoron structures, NanoTrasen engineers have created a portable device capable of highly efficient wireless charging. The expense and limit of energy output of using this method of charging prevents it from being used on a large scale, being far outclassed by Phoron-Supermatter charging systems."
|
||||
desc_info = "Click on an adjacent object that contains or is a power cell to attempt to find and charge it. After a successful charge, the inductive charger recharge in a few minutes. The amount transferred can be adjusted by alt clicking it."
|
||||
icon = 'icons/obj/item/inductive_charger.dmi'
|
||||
icon_state = "inductive_charger"
|
||||
item_state = "inductive_charger"
|
||||
@@ -16,6 +15,17 @@
|
||||
maptext_x = 3
|
||||
maptext_y = 2
|
||||
|
||||
/obj/item/inductive_charger/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Click on an adjacent object that contains or is a power cell to attempt to find and charge it."
|
||||
. += "ALT-click to adjust the transferred amount"
|
||||
. += "After a successful charge, the inductive charger recharge in a few minutes."
|
||||
|
||||
/obj/item/inductive_charger/handheld/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
if(cell)
|
||||
. += SPAN_NOTICE("Cell Charge: [cell.percent()]%")
|
||||
|
||||
/obj/item/inductive_charger/set_initial_maptext()
|
||||
held_maptext = SMALL_FONTS(7, "Ready")
|
||||
|
||||
@@ -103,11 +113,6 @@
|
||||
if(ispath(cell))
|
||||
cell = new cell(src)
|
||||
|
||||
/obj/item/inductive_charger/handheld/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
if(cell)
|
||||
. += SPAN_NOTICE("Cell Charge: [cell.percent()]%")
|
||||
|
||||
/obj/item/inductive_charger/handheld/get_cell()
|
||||
return cell
|
||||
|
||||
|
||||
@@ -15,11 +15,14 @@
|
||||
|
||||
/obj/item/borg/sight/thermal
|
||||
name = "\proper thermal vision"
|
||||
desc_antag = "Having this device on your hotbar will allow you to see in enhanced thermal vision, which allows you to see heat signatures through solid walls."
|
||||
sight_mode = BORGTHERM
|
||||
icon_state = "thermal"
|
||||
icon = 'icons/obj/clothing/glasses.dmi'
|
||||
|
||||
/obj/item/borg/sight/thermal/antagonist_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Having this device on your hotbar will allow you to see in enhanced thermal vision, which allows you to see heat signatures through solid walls."
|
||||
|
||||
/obj/item/borg/sight/meson
|
||||
name = "\proper meson vision"
|
||||
sight_mode = BORGMESON
|
||||
|
||||
@@ -16,16 +16,16 @@
|
||||
var/stored_doors = 5
|
||||
var/mode = MODE_WALL // 0 - Walls 1 - Doors
|
||||
|
||||
/obj/item/inflatable_dispenser/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += SPAN_NOTICE("It has <b>[stored_walls] wall segment\s</b> and <b>[stored_doors] door segment\s</b> stored.")
|
||||
. += SPAN_NOTICE("It is set to deploy <b>[mode ? "doors" : "walls"]</b>.")
|
||||
|
||||
/obj/item/inflatable_dispenser/Initialize(mapload, ...)
|
||||
. = ..()
|
||||
stored_walls = max_walls
|
||||
stored_doors = max_doors
|
||||
|
||||
/obj/item/inflatable_dispenser/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
. += SPAN_NOTICE("It has [stored_walls] wall segment\s and [stored_doors] door segment\s stored.")
|
||||
. += SPAN_NOTICE("It is set to deploy [mode ? "doors" : "walls"]")
|
||||
|
||||
/obj/item/inflatable_dispenser/attack_self(mob/user)
|
||||
if(!deploying)
|
||||
mode = !mode
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/mob/living/simple_animal/cosmozoan
|
||||
name = "cosmozoan"
|
||||
desc = "These jellyfish-like entities drift through asteroid fields, emitting a soft glow."
|
||||
desc_info = "Schools of Cosmozoans often congregate in asteroid fields, though they have rarely been witnessed in greater number and size in the Frontier. Their origin remains a mystery but it is believed they predate early man. This belief landed them the name Cosmozoa."
|
||||
desc_extended = "Schools of Cosmozoans often congregate in asteroid fields, though they have rarely been witnessed in greater number and size in the Frontier. Their origin remains a mystery but it is believed they predate early man. This belief landed them the name Cosmozoa."
|
||||
icon_state = "cosmozoan"
|
||||
icon_living = "cosmozoan"
|
||||
icon_dead = "cosmozoan_dead"
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
name = "tablet computer"
|
||||
lexical_name = "tablet"
|
||||
desc = "A portable device for your needs on the go."
|
||||
desc_info = "To deploy the charging cable on this device, either drag and drop it over a nearby APC, or click on the APC with the computer in hand."
|
||||
icon = 'icons/obj/modular_tablet.dmi'
|
||||
icon_state = "tablet"
|
||||
icon_state_unpowered = "tablet"
|
||||
@@ -15,6 +14,10 @@
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
looping_sound = FALSE
|
||||
|
||||
/obj/item/modular_computer/handheld/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "To deploy the charging cable on this device, either drag and drop it over a nearby APC, or click on the APC with the computer in hand."
|
||||
|
||||
/obj/item/modular_computer/handheld/Initialize()
|
||||
. = ..()
|
||||
set_icon()
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
name = "laptop computer"
|
||||
lexical_name = "laptop"
|
||||
desc = "A portable computer."
|
||||
desc_info = "You can alt-click the laptop while it's set down on surface to open it up and work with it. Left clicking while it is open will allow you to operate it."
|
||||
hardware_flag = PROGRAM_LAPTOP
|
||||
can_reset = TRUE
|
||||
icon_state_unpowered = "laptop-open"
|
||||
@@ -21,6 +20,11 @@
|
||||
broken_damage = 25
|
||||
var/icon_state_closed = "laptop-closed"
|
||||
|
||||
/obj/item/modular_computer/laptop/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "ALT-click the laptop while it's set down on a surface to open or close it."
|
||||
. += "Left-click on it while it is open to operate it."
|
||||
|
||||
/obj/item/modular_computer/laptop/AltClick()
|
||||
if(use_check(usr))
|
||||
return
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
/obj/item/paper_scanner
|
||||
name = "paper scanner"
|
||||
desc = "A simple device that can be used to scan paper or paper bundles in order to digitize them."
|
||||
desc_info = "Alt-click it while it's in one of your hands to eject the portable drive. Click paper or a paper bundle with it to digitize it and store it in the inserted drive."
|
||||
icon = 'icons/obj/devices/paperscanner.dmi'
|
||||
icon_state = "paperscanner"
|
||||
item_state = "paperscanner"
|
||||
contained_sprite = TRUE
|
||||
var/obj/item/computer_hardware/hard_drive/portable/drive
|
||||
|
||||
/obj/item/paper_scanner/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Click paper or a paper bundle with it to digitize it and store it in the inserted drive."
|
||||
. += "ALT-click it while it's in one of your hands to eject the portable drive."
|
||||
|
||||
/obj/item/paper_scanner/Initialize(mapload, ...)
|
||||
. = ..()
|
||||
drive = new /obj/item/computer_hardware/hard_drive/portable(src)
|
||||
|
||||
@@ -18,13 +18,17 @@
|
||||
/obj/effect/hoist_hook
|
||||
name = "hoist clamp"
|
||||
desc = "A clamp used to lift people or things."
|
||||
desc_info = "To use the hook, click drag the object you want to it to attach it.\nTo remove an object from the hook, click drag the hook to a nearby turf."
|
||||
icon = 'icons/obj/hoists.dmi'
|
||||
icon_state = "hoist_hook"
|
||||
var/obj/structure/hoist/source_hoist
|
||||
can_buckle = TRUE
|
||||
anchored = TRUE
|
||||
|
||||
/obj/effect/hoist_hook/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "To use the hook, click drag the object you want to it to attach it."
|
||||
. += "To remove an object from the hook, click drag the hook to a nearby turf."
|
||||
|
||||
/obj/effect/hoist_hook/attack_hand(mob/living/user)
|
||||
if (use_check_and_message(user, USE_DISALLOW_SILICONS))
|
||||
return
|
||||
@@ -96,7 +100,6 @@
|
||||
/obj/structure/hoist
|
||||
icon = 'icons/obj/hoists.dmi'
|
||||
icon_state = "hoist_base"
|
||||
desc_info = "To use the hook, click drag the object you want to it to attach it.\nTo remove an object from the hook, click drag the hook to a nearby turf."
|
||||
var/broken = 0
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
@@ -106,6 +109,11 @@
|
||||
var/movedir = UP
|
||||
var/obj/effect/hoist_hook/source_hook
|
||||
|
||||
/obj/structure/hoist/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "To use the hook, click drag the object you want to it to attach it."
|
||||
. += "To remove an object from the hook, click drag the hook to a nearby turf."
|
||||
|
||||
/obj/structure/hoist/Initialize(mapload, ndir)
|
||||
. = ..()
|
||||
dir = ndir
|
||||
|
||||
@@ -118,7 +118,6 @@
|
||||
/obj/structure/fuel_port //empty
|
||||
name = "fuel port"
|
||||
desc = "The fuel input port of the shuttle. Holds one fuel tank. Use a crowbar to open and close it."
|
||||
desc_info = "The fuel port must be wrenched and welded in place before it can be loaded and used by the shuttle."
|
||||
icon = 'icons/turf/shuttle.dmi'
|
||||
icon_state = "fuel_port"
|
||||
density = 0
|
||||
@@ -132,8 +131,12 @@
|
||||
var/parent_shuttle
|
||||
var/port_item_path = /obj/item/fuel_port
|
||||
|
||||
/obj/structure/fuel_port/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
/obj/structure/fuel_port/assembly_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "The fuel port must be wrenched and welded in place before it can be loaded and used by the shuttle."
|
||||
|
||||
/obj/structure/fuel_port/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
switch(state)
|
||||
if(FUEL_PORT_UNSECURED)
|
||||
. += SPAN_NOTICE("\The [src] is in place, but not attached to anything.")
|
||||
|
||||
@@ -10,6 +10,13 @@
|
||||
var/obj/machinery/ship_weapon/weapon
|
||||
var/weapon_id //Used to connect weapon systems to the relevant ammunition loader.
|
||||
|
||||
/obj/machinery/ammunition_loader/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Use a multitool to check or update the weapon loader's internal network ID for linking purposes. You probably don't need to do this."
|
||||
|
||||
/obj/machinery/ammunition_loader/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
|
||||
/obj/machinery/ammunition_loader/Initialize(mapload)
|
||||
..()
|
||||
return INITIALIZE_HINT_LATELOAD
|
||||
@@ -57,6 +64,8 @@
|
||||
if(istype(CL.carrying[1], /obj/item/ship_ammunition))
|
||||
var/obj/item/ship_ammunition/SA = CL.carrying[1]
|
||||
return load_ammo(SA, HV)
|
||||
else
|
||||
to_chat(user, SPAN_WARNING("\The [CL] does not appear to be holding any compatible ammunition."))
|
||||
if(istype(attacking_item, /obj/item/device/multitool))
|
||||
to_chat(user, SPAN_NOTICE("You hook up the tester's wires to \the [src]: its identification tag is <b>[weapon_id]</b>."))
|
||||
var/new_id = input(user, "Change the identification tag?", "Identification Tag", weapon_id)
|
||||
|
||||
@@ -31,6 +31,28 @@
|
||||
var/cookoff_heavy = 2
|
||||
var/cookoff_light = 3
|
||||
|
||||
/obj/item/ship_ammunition/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Using a pen on \the [src] will let you write a lovely message on it for your intended target; this message is detectable on the overmap by ship sensors."
|
||||
. += "Some types of ammunition are especially flammable, fragile, etc. They can cook off if not stored and handled very carefully."
|
||||
|
||||
/obj/item/ship_ammunition/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
if(written_message)
|
||||
if(distance > 3)
|
||||
. += "It has something written on it, but you'd need to get closer to tell what the writing says."
|
||||
else
|
||||
. += "It has a message written on the casing: <span class='notice'><i>[written_message]</i></span>."
|
||||
|
||||
/obj/item/ship_ammunition/antagonist_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
if(ammunition_flags & SHIP_AMMO_FLAG_INFLAMMABLE)
|
||||
. += "This ammunition is flammable, and will cook off and explode when exposed to fire."
|
||||
if(ammunition_flags & SHIP_AMMO_FLAG_VULNERABLE)
|
||||
. += "This ammunition is vulnerable, and will cook off and explode on impact if shot at or attacked."
|
||||
if(ammunition_flags & SHIP_AMMO_FLAG_VERY_FRAGILE)
|
||||
. += "This ammunition is very fragile, and will cook off and explode on impact if thrown, or even just dropped with the Harm intent!"
|
||||
|
||||
/obj/item/ship_ammunition/Initialize()
|
||||
. = ..()
|
||||
update_status()
|
||||
@@ -57,14 +79,6 @@
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/item/ship_ammunition/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
if(written_message)
|
||||
if(distance > 3)
|
||||
. += "It has something written on it, but you'd need to get closer to tell what the writing says."
|
||||
else
|
||||
. += "It has a message written on the casing: <span class='notice'><i>[written_message]</i></span>."
|
||||
|
||||
/obj/item/ship_ammunition/do_additional_pickup_checks(var/mob/user)
|
||||
if(ammunition_flags & SHIP_AMMO_FLAG_VERY_HEAVY)
|
||||
if(ishuman(user))
|
||||
|
||||
@@ -30,6 +30,48 @@
|
||||
var/list/obj/structure/ship_weapon_dummy/connected_dummies = list()
|
||||
var/obj/structure/ship_weapon_dummy/barrel
|
||||
|
||||
/obj/machinery/ship_weapon/condition_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
var/ratio = (damage / max_damage) * 100
|
||||
switch(ratio)
|
||||
if(1 to 10)
|
||||
. += SPAN_NOTICE("It looks to be in tip top shape apart from a few minor scratches and dings.")
|
||||
if(10 to 20)
|
||||
. += SPAN_ALERT("It has some kinks and bends here and there.")
|
||||
if(20 to 40)
|
||||
. += SPAN_ALERT("It has a few holes through which you can see some machinery.")
|
||||
if(40 to 60)
|
||||
. += SPAN_WARNING("Some fairly important parts are missing... but it should work anyway.")
|
||||
if(60 to 80)
|
||||
. += SPAN_WARNING("It needs repairs direly. Both aiming and firing components are missing or broken. It has a lot of holes, too. It definitely wouldn't \
|
||||
pass inspection.")
|
||||
if(90 to 100)
|
||||
. += SPAN_DANGER("It's falling apart! Just touching it might make the whole thing collapse!")
|
||||
else //At roundstart, weapons start with 0 damage, so it'd be 0 / 1000 * 100 -> 0
|
||||
. += SPAN_NOTICE("It looks to be in tip top shape and not damaged at all.")
|
||||
|
||||
/obj/machinery/ship_weapon/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Use a multitool to check or update the weapon's internal network ID for linking purposes. You probably don't need to do this."
|
||||
. += "To load a ship weapon, you must use a nearby Ammunition Loader linked to it."
|
||||
. += "This weapon is LOUD when it fires; you probably want to wear ear protection when nearby."
|
||||
|
||||
/obj/machinery/ship_weapon/assembly_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
var/ratio = (damage / max_damage) * 100
|
||||
if(ratio > 0)
|
||||
. += "The damage can be repaired with a <b>welder</b>, but given the size of \the [src] it will take a lot of time and welding fuel."
|
||||
|
||||
/obj/machinery/ship_weapon/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
var/loaded_ammo_count_txt = num2text(length(ammunition))
|
||||
var/max_ammo_txt = num2text(max_ammo)
|
||||
. += "\the [src] can load a maximum of [max_ammo_txt] [max_ammo == 1 ? "round" : "rounds"] at a time."
|
||||
if(length(ammunition) >= max_ammo)
|
||||
. += "\the [src] is fully loaded with ammunition!"
|
||||
else
|
||||
. += SPAN_NOTICE("\the [src] is currently loaded with [loaded_ammo_count_txt] [length(ammunition) == 1 ? "round" : "rounds"] of ammunition.")
|
||||
|
||||
/obj/machinery/ship_weapon/Initialize(mapload)
|
||||
..()
|
||||
appearance_flags &= ~TILE_BOUND //NOT BOUND BY ANY LIMITS
|
||||
@@ -70,29 +112,6 @@
|
||||
if(damage >= max_damage)
|
||||
qdel(src)
|
||||
|
||||
/obj/machinery/ship_weapon/proc/get_damage_description()
|
||||
var/ratio = (damage / max_damage) * 100
|
||||
switch(ratio)
|
||||
if(1 to 10)
|
||||
. = "It looks to be in tip top shape."
|
||||
if(10 to 20)
|
||||
. = "It has some kinks and bends here and there."
|
||||
if(20 to 40)
|
||||
. = "It has a few holes through which you can see some machinery."
|
||||
if(40 to 60)
|
||||
. = SPAN_WARNING("Some fairly important parts are missing... but it should work anyway.")
|
||||
if(60 to 80)
|
||||
. = SPAN_DANGER("It needs repairs direly. Both aiming and firing components are missing or broken. It has a lot of holes, too. It definitely wouldn't \
|
||||
pass inspection.")
|
||||
if(90 to 100)
|
||||
. = SPAN_DANGER("It's falling apart! Just touching it might make the whole thing collapse!")
|
||||
else //At roundstart, weapons start with 0 damage, so it'd be 0 / 1000 * 100 -> 0
|
||||
return "It looks to be in tip top shape and not damaged at all."
|
||||
|
||||
/obj/machinery/ship_weapon/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
. += get_damage_description()
|
||||
|
||||
/obj/machinery/ship_weapon/attackby(obj/item/attacking_item, mob/user)
|
||||
if(istype(attacking_item, /obj/item/device/multitool))
|
||||
to_chat(user, SPAN_NOTICE("You hook up the tester to \the [src]'s wires: its identification tag is <b>[weapon_id]></b>."))
|
||||
|
||||
@@ -496,14 +496,14 @@
|
||||
if(heat_percentage > 85)
|
||||
AddOverlays("sensors-effect-hot")
|
||||
|
||||
/obj/machinery/shipsensors/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
/obj/machinery/shipsensors/condition_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
if(health <= 0)
|
||||
. += "\The [src] is wrecked."
|
||||
else if(health < max_health * 0.25)
|
||||
. += SPAN_DANGER("\The [src] looks like it's about to break!")
|
||||
else if(health < max_health * 0.5)
|
||||
. += SPAN_DANGER("\The [src] looks seriously damaged!")
|
||||
. += SPAN_ALERT("\The [src] looks seriously damaged!")
|
||||
else if(health < max_health * 0.75)
|
||||
. += "\The [src] shows signs of damage!"
|
||||
|
||||
@@ -579,14 +579,11 @@
|
||||
if(use_power && health == 0)
|
||||
toggle()
|
||||
|
||||
/obj/machinery/shipsensors/RefreshParts()
|
||||
GetPartUpgradeDesc()
|
||||
|
||||
// For small shuttles
|
||||
/obj/machinery/shipsensors/weak
|
||||
heat_reduction = 1.7 // Can sustain range 4
|
||||
max_range = 7
|
||||
desc = "Miniturized gravity scanner with various other sensors, used to detect irregularities in surrounding space. Can only run in vacuum to protect delicate quantum BS elements."
|
||||
desc = "Miniaturized gravity scanner with various other sensors, used to detect irregularities in surrounding space. Can only run in vacuum to protect delicate quantum BS elements."
|
||||
deep_scan_range = 0
|
||||
component_types = list(
|
||||
/obj/item/circuitboard/shipsensors/weak,
|
||||
|
||||
@@ -4,8 +4,6 @@ with an /obj/effect/overmap/visitable/ship present elsewhere on that z level, or
|
||||
somewhere on that shuttle. Subtypes of these can be then used to perform ship overmap movement functions.
|
||||
*/
|
||||
/obj/machinery/computer/ship
|
||||
desc_antag = "These consoles, especially the ones that handle piloting and weaponry, may be access-locked.\
|
||||
You can remove this lock with <b>wirecutters</b>, but it would take awhile! Alternatively, you can also use a cryptographic sequencer (emag) for instant removal."
|
||||
/// Weakrefs to mobs in direct-view mode.
|
||||
var/list/viewers
|
||||
/// How much the view is increased by when the mob is in overmap mode.
|
||||
@@ -19,6 +17,10 @@ somewhere on that shuttle. Subtypes of these can be then used to perform ship ov
|
||||
/// For hotwiring, how many cycles are needed. This decreases by 1 each cycle and triggers at 0
|
||||
var/hotwire_progress = 8
|
||||
|
||||
/obj/machinery/computer/antagonist_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Consoles like these are typically access-locked."
|
||||
. += "You can remove this lock with <b>wirecutters</b>, but it would take awhile! Alternatively, you can also use a cryptographic sequencer (emag) for instant removal."
|
||||
|
||||
/obj/machinery/computer/ship/proc/display_reconnect_dialog(var/mob/user, var/flavor)
|
||||
var/datum/browser/popup = new (user, "[src]", "[src]")
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
/obj/item/clipboard
|
||||
name = "clipboard"
|
||||
desc = "When other writing surfaces are unavailable."
|
||||
desc_info = "You can store a pen in this."
|
||||
icon = 'icons/obj/bureaucracy.dmi'
|
||||
icon_state = "clipboard"
|
||||
item_state = "clipboard"
|
||||
@@ -15,6 +14,10 @@
|
||||
var/ui_open = FALSE
|
||||
slot_flags = SLOT_BELT
|
||||
|
||||
/obj/item/clipboard/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "You can store a pen in this."
|
||||
|
||||
/obj/item/clipboard/Initialize()
|
||||
. = ..()
|
||||
update_icon()
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
name = "journal"
|
||||
desc = "A journal, kind of like a folder, but bigger! And personal."
|
||||
var/closed_desc
|
||||
desc_info = "Alt-click this while it's on your person or next to you to open this journal.\nWhile the journal is open, use it in hand or use a pen on it to access the contents."
|
||||
icon = 'icons/obj/library.dmi'
|
||||
icon_state = "journal"
|
||||
item_state = "journal"
|
||||
@@ -20,6 +19,11 @@
|
||||
var/open = FALSE
|
||||
var/list/indices
|
||||
|
||||
/obj/item/journal/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "ALT-click this while it's on your person or next to you to open this journal."
|
||||
. += "While the journal is open, use it in hand or use a pen on it to access the contents."
|
||||
|
||||
/obj/item/journal/Destroy()
|
||||
for(var/obj/item/folder/embedded/E as anything in indices)
|
||||
qdel(E)
|
||||
@@ -109,7 +113,7 @@
|
||||
/obj/item/journal/notepad
|
||||
name = "notepad"
|
||||
desc = "A notepad for jotting down notes in meetings or interrogations."
|
||||
desc_info = "Alt-click this while it's on your person or next to you to open this notepad.\nWhile the notepad is open, use it in hand or use a pen on it to access the contents."
|
||||
|
||||
icon = 'icons/obj/library.dmi'
|
||||
icon_state = "notepad"
|
||||
item_state = "notepad"
|
||||
@@ -140,7 +144,6 @@
|
||||
/obj/item/journal/notepad/scc
|
||||
name = "scc notepad"
|
||||
desc = "A notepad for jotting down notes in corporate meetings. This one is navy blue with a gold SCC logo on the front."
|
||||
desc_info = "Alt-click this while it's on your person or next to you to open this notepad.\nWhile the notepad is open, use it in hand or use a pen on it to access the contents."
|
||||
icon_state = "notepad_scc"
|
||||
item_state = "notepad_scc"
|
||||
color = COLOR_WHITE
|
||||
|
||||
@@ -62,6 +62,18 @@
|
||||
var/can_change_icon_state = TRUE
|
||||
var/set_unsafe_on_init = FALSE
|
||||
|
||||
/obj/item/paper/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
if (old_name && (icon_state == "paper_plane" || icon_state == "paper_swan"))
|
||||
. += SPAN_NOTICE("You're going to have to unfold it before you can read it.")
|
||||
return
|
||||
if(name != initial(name))
|
||||
. += "It's titled '[name]'."
|
||||
if(distance <= 1)
|
||||
show_content(user)
|
||||
else
|
||||
. += SPAN_NOTICE("You have to go closer if you want to read it.")
|
||||
|
||||
/obj/item/paper/Initialize(mapload, text, title)
|
||||
. = ..()
|
||||
base_state = initial(icon_state)
|
||||
@@ -119,18 +131,6 @@
|
||||
if(new_text)
|
||||
free_space -= length(strip_html_properly(new_text))
|
||||
|
||||
/obj/item/paper/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
if (old_name && (icon_state == "paper_plane" || icon_state == "paper_swan"))
|
||||
. += SPAN_NOTICE("You're going to have to unfold it before you can read it.")
|
||||
return
|
||||
if(name != initial(name))
|
||||
. += "It's titled '[name]'."
|
||||
if(distance <= 1)
|
||||
show_content(user)
|
||||
else
|
||||
. += SPAN_NOTICE("You have to go closer if you want to read it.")
|
||||
|
||||
/obj/item/paper/proc/show_content(mob/user, forceshow)
|
||||
simple_asset_ensure_is_sent(user, /datum/asset/simple/paper)
|
||||
var/datum/browser/paper_win = new(user, name, null, 450, 500, null, TRUE)
|
||||
|
||||
@@ -23,6 +23,17 @@
|
||||
drop_sound = 'sound/items/drop/paper.ogg'
|
||||
pickup_sound = 'sound/items/pickup/paper.ogg'
|
||||
|
||||
/obj/item/paper_bundle/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Both papers and photos can be added to a paper bundle."
|
||||
|
||||
/obj/item/paper_bundle/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
if(is_adjacent)
|
||||
src.show_content(user)
|
||||
else
|
||||
. += SPAN_NOTICE("It is too far away to read.")
|
||||
|
||||
/obj/item/paper_bundle/attackby(obj/item/attacking_item, mob/user)
|
||||
..()
|
||||
|
||||
@@ -98,13 +109,6 @@
|
||||
else
|
||||
to_chat(user, SPAN_WARNING("You must hold \the [P] steady to burn \the [src]."))
|
||||
|
||||
/obj/item/paper_bundle/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
if(is_adjacent)
|
||||
src.show_content(user)
|
||||
else
|
||||
. += SPAN_NOTICE("It is too far away.")
|
||||
|
||||
/obj/item/paper_bundle/proc/show_content(mob/user as mob)
|
||||
var/dat
|
||||
var/obj/item/W = pages[page]
|
||||
|
||||
@@ -13,6 +13,13 @@
|
||||
var/amount = 30 //How much paper is in the bin.
|
||||
var/list/papers = new/list() //List of papers put in the bin for reference.
|
||||
|
||||
/obj/item/paper_bin/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
if(is_adjacent)
|
||||
if(amount)
|
||||
. += SPAN_NOTICE("There " + (amount > 1 ? "are [amount] papers" : "is one paper") + " in the bin.")
|
||||
else
|
||||
. += SPAN_NOTICE("There are no papers in the bin.")
|
||||
|
||||
/obj/item/paper_bin/mouse_drop_dragged(atom/over, mob/user, src_location, over_location, params)
|
||||
if((over == user && (!( user.restrained() ) && (!( user.stat ) && (user.contents.Find(src) || in_range(src, user))))))
|
||||
@@ -29,7 +36,6 @@
|
||||
|
||||
to_chat(H, SPAN_NOTICE("You pick up the [src]."))
|
||||
H.put_in_hands(src)
|
||||
|
||||
return
|
||||
|
||||
/obj/item/paper_bin/attack_hand(mob/user as mob)
|
||||
@@ -76,7 +82,6 @@
|
||||
add_fingerprint(user)
|
||||
return
|
||||
|
||||
|
||||
/obj/item/paper_bin/attackby(obj/item/attacking_item, mob/user)
|
||||
if(istype(attacking_item, /obj/item/paper))
|
||||
var/obj/item/paper/i = attacking_item
|
||||
@@ -85,15 +90,6 @@
|
||||
papers.Add(i)
|
||||
amount++
|
||||
|
||||
/obj/item/paper_bin/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
if(is_adjacent)
|
||||
if(amount)
|
||||
. += SPAN_NOTICE("There " + (amount > 1 ? "are [amount] papers" : "is one paper") + " in the bin.")
|
||||
else
|
||||
. += SPAN_NOTICE("There are no papers in the bin.")
|
||||
|
||||
|
||||
/obj/item/paper_bin/update_icon()
|
||||
if(amount < 1)
|
||||
icon_state = "paper_bin0"
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
/obj/item/pen
|
||||
name = "pen"
|
||||
desc = "An instrument for writing or drawing. This one is in black."
|
||||
desc_info = {"This is an item for writing down your thoughts, on paper or elsewhere. The following special commands are available:
|
||||
desc_extended = {"This is an item for writing down your thoughts, on paper or elsewhere. The following special commands are available:
|
||||
<br>
|
||||
Pen and crayon commands
|
||||
\[br\] : Creates a linebreak.
|
||||
|
||||
@@ -45,6 +45,14 @@ GLOBAL_VAR_INIT(photo_count, 0)
|
||||
drop_sound = 'sound/items/drop/paper.ogg'
|
||||
pickup_sound = 'sound/items/pickup/paper.ogg'
|
||||
|
||||
/obj/item/photo/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
if(distance <= 1)
|
||||
show(user)
|
||||
. += SPAN_NOTICE("[picture_desc]")
|
||||
else
|
||||
. += SPAN_NOTICE("You are too far away to discern its contents.")
|
||||
|
||||
/obj/item/photo/New()
|
||||
. = ..()
|
||||
id = GLOB.photo_count++
|
||||
@@ -59,14 +67,6 @@ GLOBAL_VAR_INIT(photo_count, 0)
|
||||
scribble = txt
|
||||
..()
|
||||
|
||||
/obj/item/photo/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
if(distance <= 1)
|
||||
show(user)
|
||||
. += SPAN_NOTICE("[picture_desc]")
|
||||
else
|
||||
. += SPAN_NOTICE("You are too far away to discern its contents.")
|
||||
|
||||
/obj/item/photo/proc/show(mob/user as mob)
|
||||
send_rsc(user, img, "tmp_photo_[id].png")
|
||||
var/dat = "<html><head><title>[name]</title></head>" \
|
||||
@@ -155,10 +155,10 @@ GLOBAL_VAR_INIT(photo_count, 0)
|
||||
var/icon_off = "camera_off"
|
||||
var/size = 3
|
||||
|
||||
/obj/item/device/camera/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
/obj/item/device/camera/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
if(is_adjacent)
|
||||
. += SPAN_NOTICE("It has <b>[pictures_left]</b> photos left.")
|
||||
. += SPAN_NOTICE("It has <b>[pictures_left] photos</b> left.")
|
||||
|
||||
/obj/item/device/camera/verb/change_size()
|
||||
set name = "Set Photo Focus"
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
/obj/item/portable_typewriter
|
||||
name = "portable typewriter"
|
||||
desc = "A reasonably lightweight typewriter designed to be moved around."
|
||||
desc_info = "You can alt-click this to eject the paper. Click and drag onto yourself while adjacent to type on the typewriter."
|
||||
desc_extended = "The National Typist Company in the People's Republic of Adhomai was once the largest producer of \
|
||||
typewriters on the planet. With the introduction of human technology, however, these items - \
|
||||
which were once staples of Tajaran offices - have slowly become more uncommon. That \
|
||||
@@ -21,6 +20,11 @@
|
||||
var/obj/item/paper/stored_paper = null
|
||||
var/obj/item/pen/pen
|
||||
|
||||
/obj/item/portable_typewriter/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "You can ALT-click this to eject the paper."
|
||||
. += "Click and drag \the [src] onto yourself while adjacent to type on it."
|
||||
|
||||
/obj/item/portable_typewriter/Initialize()
|
||||
. = ..()
|
||||
|
||||
@@ -119,7 +123,6 @@
|
||||
/obj/item/typewriter_case
|
||||
name = "typewriter case"
|
||||
desc = "A large briefcase-esque place to store one's typewriter."
|
||||
desc_info = "You can alt-click on this case to open and close it. A typewriter can only be removed or added when it is open!"
|
||||
desc_extended = "The National Typist Company in the People's Republic of Adhomai was once the largest producer of \
|
||||
typewriters on the planet. With the introduction of human technology, however, these items - \
|
||||
which were once staples of Tajaran offices - have slowly become more uncommon. That \
|
||||
@@ -139,6 +142,10 @@
|
||||
var/obj/item/portable_typewriter/machine
|
||||
var/opened = FALSE
|
||||
|
||||
/obj/item/typewriter_case/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "You can ALT-click on this case to open and close it. A typewriter can only be removed or added when it is open!"
|
||||
|
||||
/obj/item/typewriter_case/Initialize()
|
||||
. = ..()
|
||||
if(!machine)
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
/obj/item/am_containment
|
||||
name = "antimatter containment jar"
|
||||
desc = "Holds antimatter. Warranty void if exposed to matter."
|
||||
desc_antag = "Antimatter is extremely volatile, and containment jars are not particularly strong. Weak explosions will reduce the container's integrity, and larger ones will cause it to explode immediately."
|
||||
icon = 'icons/obj/machinery/antimatter.dmi'
|
||||
icon_state = "jar"
|
||||
force = 18
|
||||
@@ -13,6 +12,9 @@
|
||||
var/stability = 100 //TODO: add all the stability things to this so its not very safe if you keep hitting in on things
|
||||
var/exploded = FALSE
|
||||
|
||||
/obj/item/am_containment/antagonist_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Antimatter is extremely volatile, and containment jars are not particularly strong. Weak explosions will reduce the container's integrity, and larger ones will cause it to explode immediately."
|
||||
/obj/item/am_containment/proc/boom()
|
||||
var/percent = 0
|
||||
if(fuel)
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
/obj/machinery/power/am_control_unit
|
||||
name = "antimatter control unit"
|
||||
desc = "The control unit for an antimatter reactor. Probably safe."
|
||||
desc_info = "Use a wrench to attach the control unit to the ground, then arrange the reactor sections nearby. Reactor sections can only be activated if they are near the control unit, but otherwise are not restricted in how they must be placed."
|
||||
desc_antag = "The antimatter engine will quickly destabilize if the fuel injection rate is set too high, causing a large explosion."
|
||||
icon = 'icons/obj/machinery/new_ame.dmi'
|
||||
icon_state = "control"
|
||||
var/icon_mod = "on" // on, critical, or fuck
|
||||
@@ -32,6 +30,18 @@
|
||||
|
||||
var/stored_power = 0 //Power to deploy per tick
|
||||
|
||||
/obj/machinery/power/am_control_unit/assembly_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
if(!anchored)
|
||||
. += "First secure the control unit to the ground with some <b>bolts</b>."
|
||||
else
|
||||
. += "Arrange the reactor sections nearby and activate them."
|
||||
. += "Reactor sections can only be activated if they are near the control unit, but otherwise are not restricted in how they must be placed."
|
||||
|
||||
/obj/machinery/power/am_control_unit/antagonist_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "The antimatter engine will quickly destabilize if the fuel injection rate is set too high, causing a large explosion."
|
||||
|
||||
/obj/machinery/power/am_control_unit/Destroy()//Perhaps damage and run stability checks rather than just del on the others
|
||||
for(var/obj/machinery/am_shielding/AMS in linked_shielding)
|
||||
AMS.control_unit = null
|
||||
|
||||
@@ -11,8 +11,6 @@
|
||||
/obj/machinery/am_shielding
|
||||
name = "antimatter reactor section"
|
||||
desc = "A shielding component for an antimatter reactor. Looks delicate."
|
||||
desc_info = "Antimatter shielding sections must be beside an anchored control unit or another shielding section. If either are destroyed, the section will disappear."
|
||||
desc_antag = "Antimatter shielding sections are delicate. Attacking the shielding unit with a damaging object will reduce its stability, as will explosions. If the stability hits zero, the reactor may explode."
|
||||
icon = 'icons/obj/machinery/new_ame.dmi'
|
||||
icon_state = "shield"
|
||||
anchored = TRUE
|
||||
@@ -30,6 +28,14 @@
|
||||
var/dirs = 0
|
||||
var/mapped = FALSE //Set to 1 to ignore usual suicide if it doesn't immediately find a control_unit
|
||||
|
||||
/obj/machinery/am_shielding/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Antimatter shielding sections must be beside an anchored control unit or another shielding section. If either are destroyed, the section will disappear."
|
||||
|
||||
/obj/machinery/am_shielding/antagonist_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Antimatter shielding sections are delicate. Attacking the shielding unit with a damaging object will reduce its stability, as will explosions. If the stability hits zero, the reactor may explode."
|
||||
|
||||
// Stupidly easy way to use it in maps
|
||||
/obj/machinery/am_shielding/map
|
||||
mapped = TRUE
|
||||
@@ -215,7 +221,6 @@
|
||||
/obj/item/device/am_shielding_container
|
||||
name = "packaged antimatter reactor section"
|
||||
desc = "A section of antimatter reactor shielding. Do not eat."
|
||||
desc_info = "To deploy, drop near an antimatter control unit or an existing deployed section and use your multitool on it."
|
||||
icon = 'icons/obj/machinery/antimatter.dmi'
|
||||
icon_state = "box"
|
||||
item_state = "electronic"
|
||||
@@ -223,6 +228,10 @@
|
||||
throw_speed = 1
|
||||
throw_range = 2
|
||||
|
||||
/obj/item/device/am_shielding_container/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "To deploy, drop near an antimatter control unit or an existing deployed section and use your multitool on it."
|
||||
|
||||
/obj/item/device/am_shielding_container/attackby(obj/item/attacking_item, mob/user)
|
||||
if(attacking_item.ismultitool() && isturf(loc))
|
||||
if(locate(/obj/machinery/am_shielding) in loc)
|
||||
|
||||
@@ -71,13 +71,6 @@
|
||||
ABSTRACT_TYPE(/obj/machinery/power/apc)
|
||||
name = "area power controller"
|
||||
desc = "A control terminal for the area electrical systems."
|
||||
desc_info = "An APC (Area Power Controller) regulates and supplies backup power for the area they are in. Their power channels are divided \
|
||||
out into 'environmental' (Items that manipulate airflow and temperature), 'lighting' (the lights), and 'equipment' (Everything else that consumes power). \
|
||||
Power consumption and backup power cell charge can be seen from the interface, further controls (turning a specific channel on, off or automatic, \
|
||||
toggling the APC's ability to charge the backup cell, or toggling power for the entire area via master breaker) first requires the interface to be unlocked \
|
||||
with an ID with Engineering access or by one of the station's robots or the artificial intelligence."
|
||||
desc_antag = "This can be emagged to unlock it. It will cause the APC to have a blue error screen. \
|
||||
Wires can be pulsed remotely with a signaler attached to it. A powersink will also drain any APCs connected to the same wire the powersink is on."
|
||||
|
||||
icon = 'icons/obj/machinery/power/apc.dmi'
|
||||
icon_state = "apc0"
|
||||
@@ -144,6 +137,20 @@ ABSTRACT_TYPE(/obj/machinery/power/apc)
|
||||
var/charge_mode = CHARGE_MODE_CHARGE // if we're actually able to charge
|
||||
var/last_time = 1
|
||||
|
||||
/obj/machinery/power/apc/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "An APC (Area Power Controller) regulates and supplies backup power for the area they are in."
|
||||
. += "Their power channels are divided into 'environmental' (items that manipulate airflow and temperature), 'lighting' (lights), and 'equipment' (everything else that consumes power)."
|
||||
. += "Power consumption and backup power cell charge can be seen from the interface; further controls (turning a specific channel on, off or automatic, \
|
||||
toggling the APC's ability to charge the backup cell, or toggling power for the entire area via master breaker) first requires the interface to be unlocked \
|
||||
with an ID with Engineering access or by one of the ship's robots or AI."
|
||||
|
||||
/obj/machinery/power/apc/antagonist_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "This can be emagged to unlock it; it will cause the APC to have a blue error screen."
|
||||
. += "Wires can be pulsed remotely with a signaler attached to them."
|
||||
. += "A powersink will drain any APCs connected to the same powernet (wires) the powersink is on"
|
||||
|
||||
/obj/machinery/power/apc/Initialize(mapload, var/ndir, var/building=0)
|
||||
. = ..(mapload)
|
||||
wires = new(src)
|
||||
|
||||
@@ -18,6 +18,19 @@
|
||||
var/RCon_tag = "NO_TAG"
|
||||
var/update_locked = 0
|
||||
|
||||
/obj/machinery/power/breakerbox/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "A breaker brox functions as an electrical passthrough; if enabled, power will flow freely around it. In substations, this means that the PSU/SMES will be bypassed."
|
||||
. += "Toggling the breaker box has a sixty-second cooldown time."
|
||||
. += "A multitool can be used to update or clear the breaker's RCON tag."
|
||||
|
||||
/obj/machinery/power/breakerbox/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
if(on)
|
||||
. += "It seems to be online."
|
||||
else
|
||||
. += "It seems to be offline."
|
||||
|
||||
/obj/machinery/power/breakerbox/Initialize()
|
||||
LAZYADD(SSmachinery.breaker_boxes, src)
|
||||
return ..()
|
||||
@@ -40,13 +53,6 @@
|
||||
/obj/machinery/power/breakerbox/activated/LateInitialize()
|
||||
set_state(1)
|
||||
|
||||
/obj/machinery/power/breakerbox/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
if(on)
|
||||
. += SPAN_GOOD("It seems to be online.")
|
||||
else
|
||||
. += SPAN_BAD("It seems to be offline.")
|
||||
|
||||
/obj/machinery/power/breakerbox/attack_ai(mob/user)
|
||||
if(!ai_can_interact(user))
|
||||
return
|
||||
|
||||
@@ -47,8 +47,8 @@ By design, d1 is the smallest direction and d2 is the highest
|
||||
color = COLOR_RED
|
||||
var/obj/machinery/power/breakerbox/breaker_box
|
||||
|
||||
/obj/structure/cable/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
/obj/structure/cable/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
var/found_color_name = "Unknown"
|
||||
for(var/color_name in GLOB.cable_coil_colours)
|
||||
var/color_value = GLOB.cable_coil_colours[color_name]
|
||||
@@ -530,9 +530,8 @@ By design, d1 is the smallest direction and d2 is the highest
|
||||
update_icon()
|
||||
update_wclass()
|
||||
|
||||
/obj/item/stack/cable_coil/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
|
||||
/obj/item/stack/cable_coil/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
var/found_color_name = "Unknown"
|
||||
for(var/color_name in GLOB.cable_coil_colours)
|
||||
var/color_value = GLOB.cable_coil_colours[color_name]
|
||||
@@ -542,7 +541,7 @@ By design, d1 is the smallest direction and d2 is the highest
|
||||
. += "This cable is: <span style='color:[color]'>[found_color_name]</span>"
|
||||
|
||||
if(!uses_charge)
|
||||
. += "There [src.amount == 1 ? "is" : "are"] <b>[src.amount]</b> [src.singular_name]\s of cable in the coil."
|
||||
. += "There [src.amount == 1 ? "is" : "are"] <b>[src.amount] [src.singular_name]\s</b> of cable in the coil."
|
||||
else
|
||||
. += "You have enough charge to produce <b>[get_amount()]</b>."
|
||||
|
||||
|
||||
+14
-14
@@ -2,6 +2,20 @@
|
||||
// charge from 0 to 100%
|
||||
// fits in APC to provide backup power
|
||||
|
||||
/obj/item/cell/antagonist_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Injecting 5 units of phoron into a power cell with a syringe will rig it to explode!"
|
||||
. += "The higher the charge in the cell, the bigger and more damaging the explosion will be."
|
||||
. += "When rigged, the cell will explode immediately whenever it is next charged or discharged."
|
||||
|
||||
/obj/item/cell/feedback_hints(mob/user, distance, is_adjacent)
|
||||
if(distance > 1)
|
||||
return
|
||||
. = list()
|
||||
. += ..()
|
||||
. += "The manufacturer's label states this cell has a power rating of [maxcharge]J, and that you should not swallow it."
|
||||
. += "The charge meter reads [round(src.percent() )]%."
|
||||
|
||||
/obj/item/cell/Initialize()
|
||||
. = ..()
|
||||
|
||||
@@ -103,20 +117,6 @@
|
||||
SEND_SIGNAL(src, COMSIG_CELL_CHARGE, charge)
|
||||
return amount_used
|
||||
|
||||
|
||||
/obj/item/cell/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
if(distance > 1)
|
||||
return
|
||||
|
||||
if(maxcharge <= 2500)
|
||||
. += "[desc]"
|
||||
. += "The manufacturer's label states this cell has a power rating of [maxcharge]J, and that you should not swallow it."
|
||||
. += "The charge meter reads [round(src.percent() )]%."
|
||||
else
|
||||
. += "This power cell has an exciting chrome finish, as it is an uber-capacity cell type! It has a power rating of [maxcharge]J!"
|
||||
. += "The charge meter reads [round(src.percent() )]%."
|
||||
|
||||
/obj/item/cell/attackby(obj/item/attacking_item, mob/user)
|
||||
if(istype(attacking_item, /obj/item/reagent_containers/syringe))
|
||||
var/obj/item/reagent_containers/syringe/S = attacking_item
|
||||
|
||||
@@ -43,6 +43,12 @@ GLOBAL_LIST_INIT_TYPED(rad_collectors, /obj/machinery/power/rad_collector, list(
|
||||
/// How long to wait between alert messages, if radiation input exceeds safe levels
|
||||
var/alert_delay = 10 SECONDS
|
||||
|
||||
/obj/machinery/power/rad_collector/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
if (..(user, 3))
|
||||
var/last_power_kw = round(last_power / 1000, 0.1)
|
||||
. += "The meter indicates that \the [src] is collecting [last_power_kw] kW."
|
||||
|
||||
/obj/machinery/power/rad_collector/Initialize()
|
||||
. = ..()
|
||||
GLOB.rad_collectors += src
|
||||
@@ -178,11 +184,6 @@ GLOBAL_LIST_INIT_TYPED(rad_collectors, /obj/machinery/power/rad_collector, list(
|
||||
desc += " This one is destroyed beyond repair."
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/power/rad_collector/get_examine_text(user, distance, is_adjacent, infix, suffix)
|
||||
. = ..()
|
||||
if (..(user, 3))
|
||||
. += "The meter indicates that \the [src] is collecting [last_power] W."
|
||||
|
||||
/obj/machinery/power/rad_collector/return_air()
|
||||
if(loaded_tank)
|
||||
return loaded_tank.return_air()
|
||||
|
||||
@@ -26,11 +26,13 @@
|
||||
/obj/item/circuitboard/crystal_agitator
|
||||
)
|
||||
|
||||
component_hint_cap = "Upgraded <b>capacitors</b> will reduce active power usage."
|
||||
component_hint_servo = "Upgraded <b>manipulators</b> will increase agitation speed."
|
||||
|
||||
parts_power_mgmt = FALSE
|
||||
|
||||
/obj/machinery/power/crystal_agitator/upgrade_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Upgraded <b>capacitors</b> will reduce active power usage."
|
||||
. += "Upgraded <b>manipulators</b> will increase agitation speed."
|
||||
|
||||
/obj/machinery/power/crystal_agitator/Initialize()
|
||||
. = ..()
|
||||
connect_to_network()
|
||||
|
||||
@@ -22,6 +22,11 @@
|
||||
var/randomize_color = TRUE
|
||||
var/list/randomized_colors = LIGHT_STANDARD_COLORS
|
||||
|
||||
/obj/item/light/antagonist_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "Injecting 5 units of phoron into a light bulb/tube with a syringe will rig it to explode!"
|
||||
. += "When rigged, the light will explode immediately when it is next turned on."
|
||||
|
||||
/obj/item/light/Initialize()
|
||||
. = ..()
|
||||
if(randomize_range)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user