The Great Device Resprite and Contained Sprite-ening (#20344)

Don't let the large file size scare you, it's just mostly splitting
stuff into contained sprites and putting them in the correct place.

Anyway, resprites most non-resprited devices in devices.dmi, and puts
them in contained sprites.
Also puts any related /obj/item/device into contained sprites too.
That's basically the long and short of it.
This commit is contained in:
Wowzewow (Wezzy)
2025-01-24 20:16:30 +08:00
committed by GitHub
parent e9fd65e0af
commit e7232d04fc
188 changed files with 319 additions and 355 deletions
-2
View File
@@ -1187,7 +1187,6 @@
#include "code\game\objects\items\devices\spy_bug.dm"
#include "code\game\objects\items\devices\suit_cooling.dm"
#include "code\game\objects\items\devices\t_scanner.dm"
#include "code\game\objects\items\devices\tagger.dm"
#include "code\game\objects\items\devices\taperecorder.dm"
#include "code\game\objects\items\devices\traitordevices.dm"
#include "code\game\objects\items\devices\transfer_valve.dm"
@@ -3508,7 +3507,6 @@
#include "code\modules\research\designs\protolathe\stock_parts_designs.dm"
#include "code\modules\research\designs\protolathe\tool_designs.dm"
#include "code\modules\research\designs\protolathe\weapon_designs.dm"
#include "code\modules\research\xenoarchaeology\chemistry.dm"
#include "code\modules\research\xenoarchaeology\geosample.dm"
#include "code\modules\research\xenoarchaeology\manuals.dm"
#include "code\modules\research\xenoarchaeology\misc.dm"
+5 -3
View File
@@ -363,6 +363,8 @@
desc = "Used to communicate, it appears."
icon = 'icons/obj/radio.dmi'
icon_state = "radio"
item_state = "radio"
contained_sprite = TRUE
var/temp = null
var/uses = 4.0
var/selfdestruct = 0.0
@@ -370,7 +372,6 @@
var/obj/item/device/radio/origradio = null
obj_flags = OBJ_FLAG_CONDUCTABLE
slot_flags = SLOT_BELT
item_state = "radio"
throwforce = 5
w_class = WEIGHT_CLASS_SMALL
throw_speed = 4
@@ -460,10 +461,10 @@
/obj/item/device/camera_bug
name = "camera bug"
icon = 'icons/obj/device.dmi'
icon = 'icons/obj/item/device/flash.dmi'
icon_state = "flash"
item_state = "flash"
w_class = WEIGHT_CLASS_TINY
item_state = "electronic"
throw_speed = 4
throw_range = 20
@@ -521,6 +522,7 @@
icon_state = "RPED"
item_state = "RPED"
icon = 'icons/obj/storage/misc.dmi'
contained_sprite = TRUE
w_class = WEIGHT_CLASS_HUGE
can_hold = list(/obj/item/stock_parts,/obj/item/reagent_containers/glass/beaker)
storage_slots = 50
+4 -4
View File
@@ -7,6 +7,8 @@
return 1
/obj/item/antag_spawner
icon = 'icons/obj/item/hand_tele.dmi'
icon_state = "hand_tele"
throw_speed = 1
throw_range = 5
w_class = WEIGHT_CLASS_TINY
@@ -25,6 +27,8 @@
/obj/item/antag_spawner/proc/request_player(var/mob/user)
uses--
if(uses <= 0)
icon_state = "hand_tele_recharging"
var/mob/M = new mob_type(get_turf(user))
M.faction = user.faction
@@ -36,8 +40,6 @@
/obj/item/antag_spawner/combat_robot
name = "combat robot teleporter"
desc = "A single-use teleporter used to deploy a Combat Robot on the field. Due to budget restrictions, it is only possible to deploy a single robot."
icon = 'icons/obj/device.dmi'
icon_state = "locator"
mob_type = /mob/living/silicon/robot/combat
ghost_role_id = "combatrobot"
@@ -53,8 +55,6 @@
/obj/item/antag_spawner/technomancer_apprentice
name = "apprentice teleporter"
desc = "A teleportation device, which will bring a less potent manipulator of space to you."
icon = 'icons/obj/device.dmi'
icon_state = "locator"
mob_type = /mob/living/carbon/human
ghost_role_id = "technoapprentice"
var/outfit_type = /obj/outfit/admin/techomancer/apprentice
+36 -36
View File
@@ -1,11 +1,12 @@
/obj/item/pinpointer
name = "pinpointer"
icon = 'icons/obj/device.dmi'
icon = 'icons/obj/item/pinpointer.dmi'
icon_state = "pinoff"
item_state = "electronic"
contained_sprite = TRUE
obj_flags = OBJ_FLAG_CONDUCTABLE
slot_flags = SLOT_BELT
w_class = WEIGHT_CLASS_SMALL
item_state = "electronic"
throw_speed = 4
throw_range = 20
matter = list(DEFAULT_WALL_MATERIAL = 500)
@@ -16,12 +17,11 @@
if(!active)
active = 1
START_PROCESSING(SSfast_process, src)
to_chat(usr, SPAN_NOTICE("You activate the pinpointer"))
to_chat(usr, SPAN_NOTICE("You activate the pinpointer."))
else
active = 0
STOP_PROCESSING(SSfast_process, src)
icon_state = "pinoff"
to_chat(usr, "<span>You deactivate the pinpointer</span>")
to_chat(usr, SPAN_NOTICE("You deactivate the pinpointer."))
/obj/item/pinpointer/process()
if (active)
@@ -30,22 +30,23 @@
STOP_PROCESSING(SSfast_process, src)
/obj/item/pinpointer/proc/workdisk()
ClearOverlays()
if(!active) return
if(!the_disk)
the_disk = locate()
if(!the_disk)
icon_state = "pinonnull"
AddOverlays("pinonnull")
return
set_dir(get_dir(src,the_disk))
switch(get_dist(src,the_disk))
if(0)
icon_state = "pinondirect"
AddOverlays("pinondirect")
if(1 to 8)
icon_state = "pinonclose"
AddOverlays("pinonclose")
if(9 to 16)
icon_state = "pinonmedium"
AddOverlays("pinonmedium")
if(16 to INFINITY)
icon_state = "pinonfar"
AddOverlays("pinonfar")
return TRUE
/obj/item/pinpointer/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
@@ -60,8 +61,7 @@
return ..()
/obj/item/pinpointer/advpinpointer
name = "Advanced Pinpointer"
icon = 'icons/obj/device.dmi'
name = "advanced pinpointer"
desc = "A larger version of the normal pinpointer, this unit features a helpful quantum entanglement detection system to locate various objects that do not broadcast a locator signal."
var/mode = 0 // Mode 0 locates disk, mode 1 locates coordinates.
var/turf/location = null
@@ -94,26 +94,26 @@
workobj()
/obj/item/pinpointer/advpinpointer/proc/worklocation()
ClearOverlays()
if(!active)
STOP_PROCESSING(SSfast_process, src)
return
if(!location)
icon_state = "pinonnull"
AddOverlays("pinonnull")
return
set_dir(get_dir(src,location))
set_z_overlays(location)
switch(get_dist(src,location))
if(0)
icon_state = "pinondirect"
AddOverlays("pinondirect")
if(1 to 8)
icon_state = "pinonclose"
AddOverlays("pinonclose")
if(9 to 16)
icon_state = "pinonmedium"
AddOverlays("pinonmedium")
if(16 to INFINITY)
icon_state = "pinonfar"
AddOverlays("pinonfar")
/obj/item/pinpointer/advpinpointer/proc/set_z_overlays(var/atom/target)
ClearOverlays()
if(AreConnectedZLevels(src.loc.z, target.z))
if(src.loc.z > target.z)
AddOverlays("pinzdown")
@@ -130,23 +130,24 @@
set_z_overlays(the_disk)
/obj/item/pinpointer/advpinpointer/proc/workobj()
ClearOverlays()
if(!active)
STOP_PROCESSING(SSfast_process, src)
return
if(!target)
icon_state = "pinonnull"
AddOverlays("pinonnull")
return
set_dir(get_dir(src,target))
set_z_overlays(target)
switch(get_dist(src,target))
if(0)
icon_state = "pinondirect"
AddOverlays("pinondirect")
if(1 to 8)
icon_state = "pinonclose"
AddOverlays("pinonclose")
if(9 to 16)
icon_state = "pinonmedium"
AddOverlays("pinonmedium")
if(16 to INFINITY)
icon_state = "pinonfar"
AddOverlays("pinonfar")
/obj/item/pinpointer/advpinpointer/verb/toggle_mode()
set category = "Object"
@@ -154,7 +155,6 @@
set src in view(1)
active = 0
icon_state = "pinoff"
target = null
location = null
@@ -232,7 +232,6 @@
else
active = 0
STOP_PROCESSING(SSfast_process, src)
icon_state = "pinoff"
to_chat(user, SPAN_NOTICE("You deactivate the pinpointer."))
/obj/item/pinpointer/nukeop/process()
@@ -242,6 +241,7 @@
worklocation()
/obj/item/pinpointer/nukeop/workdisk()
ClearOverlays()
if(!active) return
if(mode) //Check in case the mode changes while operating
worklocation()
@@ -255,7 +255,7 @@
if(!the_disk)
the_disk = locate()
if(!the_disk)
icon_state = "pinonnull"
AddOverlays("pinonnull")
return
// if(loc.z != the_disk.z) //If you are on a different z-level from the disk
// icon_state = "pinonnull"
@@ -263,13 +263,13 @@
set_dir(get_dir(src, the_disk))
switch(get_dist(src, the_disk))
if(0)
icon_state = "pinondirect"
AddOverlays("pinondirect")
if(1 to 8)
icon_state = "pinonclose"
AddOverlays("pinonclose")
if(9 to 16)
icon_state = "pinonmedium"
AddOverlays("pinonmedium")
if(16 to INFINITY)
icon_state = "pinonfar"
AddOverlays("pinonfar")
/obj/item/pinpointer/nukeop/proc/worklocation()
if(!active) return
@@ -285,18 +285,18 @@
if(!home)
home = locate()
if(!home)
icon_state = "pinonnull"
AddOverlays("pinonnull")
return
if(loc.z != home.z) //If you are on a different z-level from the shuttle
icon_state = "pinonnull"
AddOverlays("pinonnull")
else
set_dir(get_dir(src, home))
switch(get_dist(src, home))
if(0)
icon_state = "pinondirect"
AddOverlays("pinondirect")
if(1 to 8)
icon_state = "pinonclose"
AddOverlays("pinonclose")
if(9 to 16)
icon_state = "pinonmedium"
AddOverlays("pinonmedium")
if(16 to INFINITY)
icon_state = "pinonfar"
AddOverlays("pinonfar")
@@ -8,8 +8,10 @@
/obj/item/disposable_teleporter
name = "disposable teleporter"
desc = "A very compact personal teleportation device. It's very precise and safe, however it can only be used a few times."
icon = 'icons/obj/device.dmi'
icon = 'icons/obj/item/hand_tele.dmi'
icon_state = "hand_tele"
item_state = "electronic"
contained_sprite = TRUE
var/uses = 3.0
w_class = WEIGHT_CLASS_TINY
item_state = "paper"
+1 -1
View File
@@ -1,6 +1,6 @@
/obj/machinery/ai_slipper
name = "\improper AI Liquid Dispenser"
icon = 'icons/obj/device.dmi'
icon = 'icons/obj/machinery/ai_slipper.dmi'
icon_state = "motion0"
anchored = 1.0
idle_power_usage = 10
+1 -1
View File
@@ -1040,7 +1040,7 @@ Just a object used in constructing air alarms
*/
/obj/item/airalarm_electronics
name = "air alarm electronics"
icon = 'icons/obj/device.dmi'
icon = 'icons/obj/module.dmi'
icon_state = "door_electronics"
desc = "Looks like a circuit. Probably is."
w_class = WEIGHT_CLASS_SMALL
@@ -1,6 +1,6 @@
/obj/item/airlock_electronics
name = "airlock electronics"
icon = 'icons/obj/device.dmi'
icon = 'icons/obj/module.dmi'
icon_state = "door_electronics"
w_class = WEIGHT_CLASS_TINY
+1 -1
View File
@@ -301,7 +301,7 @@ Just a object used in constructing fire alarms
*/
/obj/item/firealarm_electronics
name = "fire alarm electronics"
icon = 'icons/obj/device.dmi'
icon = 'icons/obj/module.dmi'
icon_state = "door_electronics"
desc = "A circuit. It has a label on it, it says \"Can handle heat levels up to 40 degrees celsius!\""
w_class = WEIGHT_CLASS_SMALL
+2 -3
View File
@@ -1,16 +1,15 @@
/obj/item/device/vending_refill
name = "resupply canister"
var/vend_id = "generic"
desc = "A vending machine restock cart."
icon = 'icons/obj/assemblies/electronic_setups.dmi'
icon_state = "setup_medium-open"
item_state = "restock_unit"
desc = "A vending machine restock cart."
force = 16
throwforce = 10
throw_speed = 1
throw_range = 7
w_class = WEIGHT_CLASS_NORMAL
var/vend_id = "generic"
var/charges = 0
/obj/item/device/vending_refill/get_examine_text(mob/user, distance, is_adjacent, infix, suffix)
+1 -5
View File
@@ -288,13 +288,9 @@
AddOverlays(overlay_image(icon, "[icon_state]_acc", accent_color, accent_flags))
/obj/item/device
icon = 'icons/obj/device.dmi'
item_icons = list(
slot_l_hand_str = 'icons/mob/items/device/lefthand_device.dmi',
slot_r_hand_str = 'icons/mob/items/device/righthand_device.dmi',
)
pickup_sound = 'sound/items/pickup/device.ogg'
drop_sound = 'sound/items/drop/device.ogg'
contained_sprite = TRUE
/atom/proc/get_cell()
return DEVICE_NO_CELL
+1 -1
View File
@@ -1,7 +1,7 @@
/obj/item/blueprints
name = "blueprints"
desc = "Blueprints of the station. There is a \"Classified\" stamp and several coffee stains on it."
icon = 'icons/obj/item/tools/blueprints.dmi'
icon = 'icons/obj/item/blueprints.dmi'
icon_state = "blueprints"
attack_verb = list("attacked", "bapped", "hit")
w_class = WEIGHT_CLASS_SMALL
@@ -6,7 +6,6 @@
icon = 'icons/obj/guns/decloner.dmi'
icon_state = "decloner"
item_state = "decloner"
contained_sprite = TRUE
var/obj/item/organ/augment_type
var/new_augment
@@ -2,8 +2,10 @@
name = "binoculars"
desc = "A pair of binoculars."
icon = 'icons/obj/item/device/binoculars.dmi'
icon_state = "binoculars"
item_state = "binoculars"
action_button_name = "Toggle Binoculars"
obj_flags = OBJ_FLAG_CONDUCTABLE
force = 11
w_class = WEIGHT_CLASS_SMALL
@@ -2,10 +2,11 @@
name = "chameleon projector"
desc = "A strange device."
desc_antag = "This device can let you disguise as common objects. Click on an object with this in your active hand to scan it, then activate it to use it in your hand."
icon = 'icons/obj/item/device/chameleon.dmi'
icon_state = "shield0"
item_state = "electronic"
obj_flags = OBJ_FLAG_CONDUCTABLE
slot_flags = SLOT_BELT
item_state = "electronic"
throwforce = 5
throw_speed = 1
throw_range = 5
@@ -6,10 +6,9 @@
name = "clothes dyer"
desc = "This is a device designed to rapidly dye clothes to new colors. Naysayers say it isn't great for the fabric, but what do they know?"
desc_info = "Select the desired color by using the item on yourself, and alternate between the primary and secondary colour of the item by alt-clicking the item. This only works on clothing items that are recolorable."
icon = 'icons/obj/item/tools/paint_sprayer.dmi'
icon_state = "floor_painter"
item_state = "floor_painter"
contained_sprite = TRUE
icon = 'icons/obj/item/device/paint_sprayer.dmi'
icon_state = "paint_sprayer"
item_state = "paint_sprayer"
/// Controls whether the dyer changes the primary or accent color of the clothes item.
var/selected_mode = BASE_COLOR
/// Contains the colors the dyer is set to for each possible mode.
@@ -1,7 +1,7 @@
/obj/item/device/cosmetic_surgery_kit
name = "cosmetic surgery auto-kit"
icon = 'icons/obj/device.dmi'
icon_state = "depthscanner"
icon = 'icons/obj/item/autoimplanter.dmi'
icon_state = "autoimplanter"
item_state = "electronic"
slot_flags = SLOT_BELT
throwforce = 5
+2 -4
View File
@@ -3,11 +3,9 @@
desc = "A complex single use recharging injector that spreads a complex neurological serum that makes animals docile and friendly. Somewhat."
w_class = WEIGHT_CLASS_NORMAL
origin_tech = list(TECH_BIO = 5, TECH_MATERIAL = 2)
// To-do track down where the hell this sprite went?
icon = 'icons/obj/guns/decloner.dmi'
icon_state = "decloner"
item_state = "decloner"
contained_sprite = TRUE
force = 0
var/loaded = 1
var/mode = "completely"
@@ -59,11 +57,11 @@
L.name = name
loaded = 0
icon_state = "animal_tagger0"
icon_state = "decloner0"
addtimer(CALLBACK(src, PROC_REF(do_recharge)), 5 MINUTES)
/obj/item/device/dociler/proc/do_recharge()
loaded = 1
icon_state = "animal_tagger1"
icon_state = "decloner"
src.visible_message("\The [src] beeps, refilling itself.")
@@ -1,8 +1,8 @@
/obj/item/device/orbital_dropper
name = "laser targeting dropper"
desc = "A device used to paint a target, which will then promptly orbitally drop the requested items."
icon = 'icons/obj/device.dmi'
icon_state = "drillpointer"
icon = 'icons/obj/item/device/binoculars.dmi'
icon_state = "binoculars"
item_state = "binoculars"
slot_flags = SLOT_BELT
w_class = WEIGHT_CLASS_SMALL
@@ -59,7 +59,7 @@
add_fingerprint(user)
//laser pointer image
icon_state = "drillpointer_on"
icon_state = "binoculars_high"
var/list/showto = list()
for(var/mob/M in viewers(targloc))
if(M.client)
@@ -91,7 +91,7 @@
addtimer(CALLBACK(src, PROC_REF(orbital_drop), targloc, user), 105)
flick_overlay(I, showto, 20) //2 seconds of the red dot appearing
icon_state = "drillpointer"
icon_state = "binoculars"
/obj/item/device/orbital_dropper/proc/orbital_drop(var/turf/target, var/user)
if(!map)
+1
View File
@@ -2,6 +2,7 @@
name = "flash"
desc = "A security device capable of producing a blinding, incapacitating flash at close ranges. Repeated use may result in a burnt-out bulb and/or excessive force investigations."
desc_info = "Click on someone adjacent to you to attempt to blind them. Use it in your hand with HARM intent, or on yourself, to blind everyone in a small radius (including yourself!)"
icon = 'icons/obj/item/device/flash.dmi'
icon_state = "flash"
item_state = "flash"
throwforce = 5
@@ -1,10 +1,9 @@
/obj/item/device/hearing_aid
name = "hearing aid"
desc = "A device that allows the naturally deaf to hear, to an extent."
icon = 'icons/obj/hearing_aid.dmi'
icon = 'icons/obj/item/device/hearing_aid.dmi'
icon_state = "hearing_aid"
item_state = "hearing_aid"
contained_sprite = TRUE
slot_flags = SLOT_EARS
w_class = WEIGHT_CLASS_SMALL
@@ -3,7 +3,7 @@
/obj/item/device/laser_pointer
name = "laser pointer"
desc = "Don't shine it in your eyes!"
icon = 'icons/obj/device.dmi'
icon = 'icons/obj/item/device/laser_pointer.dmi'
icon_state = "pointer"
item_state = "pen"
var/pointer_icon_state
@@ -12,9 +12,6 @@
var/turf/pointer_loc
var/obj/item/stock_parts/micro_laser/diode //cant use the laser without it
/obj/item/device/laser_pointer/red
pointer_icon_state = "red_laser"
/obj/item/device/laser_pointer/green
@@ -3,9 +3,9 @@
/obj/item/device/light_meter
name = "light meter"
desc = "A simple device that measures ambient light levels."
icon = 'icons/obj/device.dmi'
icon_state = "locator"
icon = 'icons/obj/item/device/gps.dmi'
icon_state = "gps"
item_state = "radio"
// Copied from debugger.dm
obj_flags = OBJ_FLAG_CONDUCTABLE
force = 11
+1 -2
View File
@@ -3,10 +3,9 @@
desc = "Pretend to be a director for a brief moment before someone tackles you to make you shut up."
desc_extended = "Annoy your colleagues! Scare interns! Impress no one!"
desc_info = "A device used to project your voice. Loudly."
icon = 'icons/obj/item/tools/megaphone.dmi'
icon = 'icons/obj/item/device/megaphone.dmi'
icon_state = "megaphone"
item_state = "megaphone"
contained_sprite = TRUE
w_class = WEIGHT_CLASS_SMALL
obj_flags = OBJ_FLAG_CONDUCTABLE
@@ -6,7 +6,6 @@
icon = 'icons/obj/memorywiper.dmi'
icon_state = "portable_memorywiper"
item_state = "portable_memorywiper"
contained_sprite = TRUE
anchored = FALSE
drop_sound = 'sound/items/drop/backpack.ogg'
pickup_sound = 'sound/items/pickup/backpack.ogg'
+8 -2
View File
@@ -6,7 +6,9 @@
/obj/item/device/modkit
name = "voidsuit modification kit"
desc = "A kit containing all the needed tools and parts to modify a voidsuit for another user."
icon = 'icons/obj/item/device/modkit.dmi'
icon_state = "modkit"
item_state = "restock_unit"
var/parts = MODKIT_FULL
var/target_species = BODYTYPE_HUMAN
var/is_multi_species = FALSE //can this modkit change things for multiple species?
@@ -105,8 +107,10 @@
/obj/item/voidsuit_modkit
name = "voidsuit kit"
icon = 'icons/obj/device.dmi'
icon = 'icons/obj/item/device/modkit.dmi'
icon_state = "modkit"
item_state = "restock_unit"
contained_sprite = TRUE
desc = "A simple cardboard box containing the requisition forms, permits, and decal kits for a Himean voidsuit."
desc_info = "In order to convert a voidsuit simply click on voidsuit or helmet with this item\
The same process can be used to convert the voidsuit back into a regular voidsuit. Make sure not to have a helmet or tank in the suit\
@@ -235,8 +239,10 @@
/obj/item/voidsuit_modkit_multi //for converting between a large range of options instead of having 5000 subtypes
name = "voidsuit kit"
icon = 'icons/obj/device.dmi'
icon = 'icons/obj/item/device/modkit.dmi'
icon_state = "modkit"
item_state = "restock_unit"
contained_sprite = TRUE
desc = "A simple cardboard box designed to modify a voidsuit to a selection of alternate options."
desc_info = "In order to convert a voidsuit simply click on voidsuit or helmet with this item\
The same process can be used to convert the voidsuit back into a regular voidsuit. Make sure not to have a helmet or tank in the suit\
+1 -2
View File
@@ -7,11 +7,10 @@
name = "multitool"
desc = "This small, handheld device is made of durable, insulated plastic. It has a electrode jack, perfect for interfacing with numerous machines, as well as an in-built NT-SmartTrack! system."
desc_info = "You can use this on airlocks or APCs to try to hack them without cutting wires. You can also use it to wire circuits, and track APCs by using it in-hand."
icon = 'icons/obj/item/tools/multitool.dmi'
icon = 'icons/obj/item/device/multitool.dmi'
icon_state = "multitool"
item_state = "multitool"
item_icons = null
contained_sprite = TRUE
obj_flags = OBJ_FLAG_CONDUCTABLE
force = 11
w_class = WEIGHT_CLASS_SMALL
+1 -1
View File
@@ -1,7 +1,7 @@
/obj/item/device/oxycandle
name = "oxygen candle"
desc = "A steel tube with the words 'OXYGEN - PULL CORD TO IGNITE' stamped on the side. A small label warns against using the device underwater."
icon = 'icons/obj/device.dmi'
icon = 'icons/obj/item/device/oxycandle.dmi'
icon_state = "oxycandle"
item_state = "oxycandle"
w_class = WEIGHT_CLASS_SMALL // Should fit into internal's box or maybe pocket
@@ -7,10 +7,9 @@
name = "paint gun"
desc = "A Hephaestus-made paint gun that uses microbes to replenish its paint storage. Very high-tech and fancy too!"
desc_info = "Use control-click on a coloured decal on a turf to copy its colour. You can also use shift-click on a turf with the paint gun in hand to clear all decals on it."
icon = 'icons/obj/item/tools/paint_sprayer.dmi'
icon_state = "floor_painter"
item_state = "floor_painter"
contained_sprite = TRUE
icon = 'icons/obj/item/device/paint_sprayer.dmi'
icon_state = "paint_sprayer"
item_state = "mister"
var/decal = "remove all decals"
var/paint_dir = "precise"
var/paint_colour = COLOR_WHITE
@@ -81,6 +80,10 @@
"bulkhead black" = COLOR_WALL_GUNMETAL
)
/obj/item/device/paint_sprayer/update_icon()
ClearOverlays()
AddOverlays(overlay_image(icon, "paint_sprayer_color", paint_colour))
/obj/item/device/paint_sprayer/afterattack(var/atom/A, var/mob/user, proximity, params)
if(!proximity)
return
@@ -324,6 +327,7 @@
var/new_colour = input(usr, "Choose a colour.", "paintgun", paint_colour) as null|anything in preset_colors
if(new_colour && new_colour != paint_colour)
paint_colour = preset_colors[new_colour]
update_icon()
to_chat(usr, SPAN_NOTICE("You set \the [src] to paint with <font color='[paint_colour]'>a new colour</font>."))
/obj/item/device/paint_sprayer/verb/choose_decal()
@@ -4,7 +4,6 @@
icon = 'icons/obj/personal_shield.dmi'
icon_state = "personal_shield"
item_state = "personal_shield"
contained_sprite = TRUE
slot_flags = SLOT_BELT
w_class = WEIGHT_CLASS_NORMAL
action_button_name = "Toggle Shield"
@@ -1,9 +1,9 @@
/obj/item/device/pin_extractor
name = "firing pin extractor"
desc = "A device that is capable of removing firing pin without damaging it."
icon = 'icons/obj/device.dmi'
icon = 'icons/obj/item/device/pin_extractor.dmi'
icon_state = "pin_extractor"
item_state = "pin_extractor"
item_state = "analyzer"
w_class = WEIGHT_CLASS_SMALL
obj_flags = OBJ_FLAG_CONDUCTABLE
action_button_name = "Toggle extractor"
@@ -1,9 +1,8 @@
/obj/item/device/pipe_painter
name = "pipe painter"
icon = 'icons/obj/item/tools/pipe_painter.dmi'
icon = 'icons/obj/item/device/pipe_painter.dmi'
icon_state = "pipe_painter"
item_state = "pipe_painter"
contained_sprite = TRUE
var/list/modes
var/mode
@@ -3,6 +3,7 @@
/obj/item/device/powersink
name = "power sink"
desc = "A nulling power sink which drains energy from electrical systems."
icon = 'icons/obj/item/device/powersink.dmi'
icon_state = "powersink0"
item_state = "powersink0"
w_class = WEIGHT_CLASS_BULKY
@@ -1,7 +1,7 @@
/obj/item/device/encryptionkey
name = "standard encryption key"
desc = "An encryption key for a radio headset. Contains cypherkeys."
icon = 'icons/obj/radio.dmi'
icon = 'icons/obj/item/device/encryptionkey.dmi'
icon_state = "cypherkey"
item_state = ""
w_class = WEIGHT_CLASS_TINY
@@ -101,7 +101,7 @@
/obj/item/device/encryptionkey/bluespace
name = "bluespace encryption key"
desc = "A nonsensical mimicry of a standard encryption key, in the form of an elongated bluespace crystal. It seems to function."
icon_state = "bs_cyperkey"
icon_state = "bs_cypherkey"
additional_channels = list(CHANNEL_BLUESPACE = TRUE)
origin_tech = list(TECH_BLUESPACE = 3)
syndie = TRUE
@@ -266,7 +266,7 @@
/obj/item/storage/box/fancy/keypouch
name = "encryption key pouch"
desc = "A pouch designed to store three encryption keys."
icon = 'icons/obj/radio.dmi'
icon = 'icons/obj/item/device/encryptionkey.dmi'
icon_state = "keypouch0"
icon_type = "key"
storage_type = "pouch"
@@ -1,6 +1,7 @@
/obj/item/device/radio/headset
name = "radio headset"
desc = "An updated, modular intercom that fits over the head. Takes encryption keys."
icon = 'icons/obj/item/device/radio/headset.dmi'
icon_state = "headset"
item_state = "headset"
matter = list(MATERIAL_ALUMINIUM = 75)
@@ -193,6 +194,7 @@
/obj/item/device/radio/headset/alt
name = "bowman headset"
icon = 'icons/obj/item/device/radio/headset_alt.dmi'
icon_state = "headset_alt"
item_state = "headset_alt"
@@ -200,6 +202,7 @@
name = "soundproof headset"
desc = "A sound isolating version of the common radio headset."
desc_info = "This radio doubles as a pair of earmuffs by providing sound protection."
icon = 'icons/obj/item/device/radio/headset_alt_double.dmi'
icon_state = "earset"
item_state = "earset"
item_flags = ITEM_FLAG_SOUND_PROTECTION
@@ -209,6 +212,7 @@
name = "wristbound radio"
desc = "A radio designed to fit on the wrist. Often known for broadcasting loudly enough that those closeby might overhear it."
desc_info = "This radio can be heard by people standing next to the one wearing it."
icon = 'icons/obj/item/device/radio/headset_wrist.dmi'
icon_state = "wristset"
item_state = "wristset"
slot_flags = SLOT_WRISTS
@@ -240,11 +244,10 @@
name = "clip-on radio"
desc = "A radio designed to clip onto your clothes. Often known for broadcasting loudly enough that those closeby might overhear it."
desc_info = "This radio can be heard by people standing next to the one wearing it."
icon = 'icons/obj/item/tools/radio/clip.dmi'
icon = 'icons/obj/item/device/radio/headset_clip.dmi'
icon_state = "clip"
item_state = "clip"
slot_flags = SLOT_WRISTS | SLOT_EARS
contained_sprite = TRUE
/obj/item/device/radio/headset/wrist/clip/verb/flip_radio()
set category = "Object"
@@ -283,11 +286,13 @@
name = "service radio headset"
desc = "Headset used by the service staff, tasked with keeping the station full, happy and clean."
icon_state = "srv_headset"
item_state = "srv_headset"
ks2type = /obj/item/device/encryptionkey/headset_service
/obj/item/device/radio/headset/headset_service/alt
name = "service radio bowman headset"
icon_state = "headset_alt"
icon_state = "srv_headset_alt"
item_state = "srv_headset_alt"
/obj/item/device/radio/headset/alt/double/service
name = "soundproof service headset"
@@ -444,8 +449,8 @@
/obj/item/device/radio/headset/alt/double/mining
name = "soundproof mining headset"
icon_state = "earset_Mine"
item_state = "earset_Mine"
icon_state = "earset_mine"
item_state = "earset_mine"
ks2type = /obj/item/device/encryptionkey/headset_cargo
/obj/item/device/radio/headset/wrist/cargo/mining
@@ -689,8 +694,8 @@
/obj/item/device/radio/headset/alt/double/sec
name = "soundproof security headset"
icon_state = "earset_Sec"
item_state = "earset_Sec"
icon_state = "earset_sec"
item_state = "earset_sec"
ks2type = /obj/item/device/encryptionkey/headset_sec
/obj/item/device/radio/headset/wrist/sec
@@ -20,8 +20,9 @@ var/list/active_radio_jammers = list()
name = "radio jammer"
desc = "A small, inconspicious looking item with an 'ON/OFF' toggle."
desc_info = "Use in-hand to activate or deactivate, alt-click while adjacent or in-hand to toggle whether it blocks all wireless signals, or just stationbound wireless interfacing."
icon = 'icons/obj/device.dmi'
icon = 'icons/obj/item/device/chameleon.dmi'
icon_state = "shield0"
item_state = "electronic"
w_class = WEIGHT_CLASS_SMALL
var/active = JAMMER_OFF
var/radius = 7
+17 -9
View File
@@ -10,8 +10,9 @@ BREATH ANALYZER
/obj/item/device/healthanalyzer
name = "health analyzer"
desc = "A hand-held body scanner able to distinguish vital signs of the subject."
icon = 'icons/obj/item/device/healthanalyzer.dmi'
icon_state = "health"
item_state = "healthanalyzer"
item_state = "analyzer"
obj_flags = OBJ_FLAG_CONDUCTABLE
slot_flags = SLOT_BELT
throwforce = 3
@@ -373,10 +374,9 @@ BREATH ANALYZER
/obj/item/device/analyzer
name = "analyzer"
desc = "A hand-held environmental scanner which reports current gas levels."
icon = 'icons/obj/item/tools/air_analyzer.dmi'
icon = 'icons/obj/item/device/air_analyzer.dmi'
icon_state = "analyzer"
item_state = "analyzer"
contained_sprite = TRUE
w_class = WEIGHT_CLASS_SMALL
obj_flags = OBJ_FLAG_CONDUCTABLE
slot_flags = SLOT_BELT
@@ -409,8 +409,9 @@ BREATH ANALYZER
/obj/item/device/mass_spectrometer
name = "mass spectrometer"
desc = "A hand-held mass spectrometer which identifies trace chemicals in a blood sample."
icon = 'icons/obj/item/device/mass_spectrometer.dmi'
icon_state = "spectrometer"
item_state = "analyzer"
item_state = "spectrometer"
w_class = WEIGHT_CLASS_SMALL
atom_flags = ATOM_FLAG_OPEN_CONTAINER
obj_flags = OBJ_FLAG_CONDUCTABLE
@@ -471,6 +472,7 @@ BREATH ANALYZER
/obj/item/device/mass_spectrometer/adv
name = "advanced mass spectrometer"
icon_state = "adv_spectrometer"
item_state = "adv_spectrometer"
details = TRUE
origin_tech = list(TECH_MAGNET = 4, TECH_BIO = 2)
@@ -483,6 +485,7 @@ BREATH ANALYZER
/obj/item/device/reagent_scanner
name = "reagent scanner"
desc = "A hand-held reagent scanner which identifies chemical agents."
icon = 'icons/obj/item/device/reagent_scanner.dmi'
icon_state = "reagent_scanner"
item_state = "analyzer"
w_class = WEIGHT_CLASS_SMALL
@@ -518,12 +521,14 @@ BREATH ANALYZER
/obj/item/device/reagent_scanner/adv
name = "advanced reagent scanner"
icon_state = "adv_reagent_scanner"
item_state = "analyzer"
details = 1
origin_tech = list(TECH_MAGNET = 4, TECH_BIO = 2)
/obj/item/device/slime_scanner
name = "slime scanner"
icon_state = "adv_spectrometer"
icon = 'icons/obj/item/device/slime_scanner.dmi'
icon_state = "slime_scanner"
item_state = "analyzer"
origin_tech = list(TECH_BIO = 1)
w_class = WEIGHT_CLASS_SMALL
@@ -568,8 +573,8 @@ BREATH ANALYZER
/obj/item/device/price_scanner
name = "price scanner"
desc = "Using an up-to-date database of various costs and prices, this device estimates the market price of an item up to 0.001% accuracy."
icon = 'icons/obj/item/device/price_scanner.dmi'
icon_state = "price_scanner"
item_state = "price_scanner"
item_flags = ITEM_FLAG_NO_BLUDGEON
slot_flags = SLOT_BELT
w_class = WEIGHT_CLASS_SMALL
@@ -589,6 +594,7 @@ BREATH ANALYZER
/obj/item/device/breath_analyzer
name = "breath analyzer"
desc = "A hand-held breath analyzer that provides a robust amount of information about the subject's respiratory system."
icon = 'icons/obj/item/device/breath_analyzer.dmi'
icon_state = "breath_analyzer"
item_state = "analyzer"
w_class = WEIGHT_CLASS_SMALL
@@ -698,9 +704,10 @@ BREATH ANALYZER
/obj/item/device/advanced_healthanalyzer
name = "advanced health analyzer"
desc = "An expensive and varied-use health analyzer of Zeng-Hu design that prints full-body scans after a short scanning delay."
icon_state = "adv-analyzer"
item_state = "adv-analyzer"
desc = "An expensive and varied-use health analyzer that prints full-body scans after a short scanning delay."
icon = 'icons/obj/item/device/advanced_healthanalyzer.dmi'
icon_state = "health_adv"
item_state = "analyzer"
slot_flags = SLOT_BELT
w_class = WEIGHT_CLASS_NORMAL
origin_tech = list(TECH_MAGNET = 2, TECH_BIO = 3)
@@ -725,6 +732,7 @@ BREATH ANALYZER
user.setClickCooldown(DEFAULT_QUICK_COOLDOWN)
user.do_attack_animation(src)
user.visible_message("<b>[user]</b> starts scanning \the [target_mob] with \the [src].", SPAN_NOTICE("You start scanning \the [target_mob] with \the [src]."))
flick("[icon_state]-scan", src)
if(do_after(user, 7 SECONDS, target_mob, DO_UNIQUE))
print_scan(target_mob, user)
add_fingerprint(user)
@@ -2,11 +2,10 @@
name = "portable suit cooling unit"
desc = "A portable heat sink and liquid cooled radiator that can be hooked up to a space suit's existing temperature controls to provide industrial levels of cooling."
w_class = WEIGHT_CLASS_BULKY
icon = 'icons/obj/item/tools/suitcooler.dmi'
icon = 'icons/obj/item/device/suitcooler.dmi'
icon_state = "suitcooler0"
item_state = "coolingpack"
action_button_name = "Toggle Cooling Unit"
contained_sprite = TRUE
slot_flags = SLOT_BACK //you can carry it on your back if you want, but it won't do anything unless attached to suit storage
//copied from tank.dm
+2 -2
View File
@@ -3,10 +3,10 @@
/obj/item/device/t_scanner
name = "\improper T-ray scanner"
desc = "A terahertz-ray emitter and scanner used to detect underfloor objects such as cables and pipes."
icon = 'icons/obj/item/tools/t_scanner.dmi'
icon = 'icons/obj/item/device/t_scanner.dmi'
icon_state = "t-ray0"
item_state = "t-ray"
contained_sprite = TRUE
slot_flags = SLOT_BELT
w_class = WEIGHT_CLASS_SMALL
matter = list(MATERIAL_PLASTIC = 100, MATERIAL_ALUMINIUM = 50)
-42
View File
@@ -1,42 +0,0 @@
/obj/item/device/animaltagger
name = "animal tagger"
desc = "Used for tagging animals to be identified by a ear tag."
icon_state = "animal_tagger0"
force = 11
w_class = WEIGHT_CLASS_SMALL
throwforce = 5.0
throw_range = 15
throw_speed = 3
var/animaltag = null
matter = list(DEFAULT_WALL_MATERIAL = 50, MATERIAL_GLASS = 20)
origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 1)
/obj/item/device/animaltagger/Destroy()
return ..()
/obj/item/device/animaltagger/attack(mob/living/target_mob, mob/living/user, target_zone)
return
/obj/item/device/animaltagger/afterattack(atom/A as mob|obj, mob/user as mob)
if(isanimal(A))
A.name = animaltag
to_chat(user,SPAN_NOTICE("You tag the animal as [animaltag]."))
else
to_chat(user, SPAN_NOTICE("You can't tag non animals."))
return
/obj/item/device/animaltagger/attack_self(mob/user as mob)
var/inputtag = sanitizeSafe(input(user,"Label text?","Set label",""), MAX_NAME_LEN)
if(!inputtag || !length(inputtag))
to_chat(user, SPAN_NOTICE("Invalid tag line."))
return
animaltag = inputtag
+13 -12
View File
@@ -1,7 +1,8 @@
/obj/item/device/taperecorder
name = "universal recorder"
desc = "A device that can record up to an hour of dialogue and play it back. It automatically translates the content in playback."
icon_state = "taperecorderidle"
icon = 'icons/obj/item/device/taperecorder.dmi'
icon_state = "taperecorder_idle"
item_state = "analyzer"
w_class = WEIGHT_CLASS_SMALL
@@ -73,7 +74,7 @@
emagged = TRUE
recording = FALSE
to_chat(user, SPAN_NOTICE("PZZTTPFFFT"))
icon_state = "taperecorderidle"
icon_state = "taperecorder_idle"
return TRUE
/obj/item/device/taperecorder/proc/explode()
@@ -96,7 +97,7 @@
if(emagged)
src.audible_message(SPAN_WARNING("\The [src] makes a scratchy noise."), hearing_distance = 3)
return
icon_state = "taperecorderrecording"
icon_state = "taperecorder_recording"
if(time_recorded < 3600 && !playing)
to_chat(usr, SPAN_NOTICE("Recording started."))
recording = TRUE
@@ -108,7 +109,7 @@
time_recorded++
sleep(10)
recording = FALSE
icon_state = "taperecorderidle"
icon_state = "taperecorder_idle"
return
else
to_chat(usr, SPAN_NOTICE("Either your tape recorder's memory is full, or it is currently playing back its memory."))
@@ -129,12 +130,12 @@
timestamp += time_recorded
stored_info += "\[[time2text(time_recorded*10,"mm:ss")]\] Recording stopped."
to_chat(usr, SPAN_NOTICE("Recording stopped."))
icon_state = "taperecorderidle"
icon_state = "taperecorder_idle"
return
else if(playing)
playing = FALSE
audible_message("<font color=Maroon><B>Tape Recorder</B>: Playback stopped.</font>", hearing_distance = 3)
icon_state = "taperecorderidle"
icon_state = "taperecorder_idle"
return
/obj/item/device/taperecorder/verb/clear_memory()
@@ -174,7 +175,7 @@
to_chat(usr, SPAN_WARNING("You're already playing!"))
return
playing = TRUE
icon_state = "taperecorderplaying"
icon_state = "taperecorder_playing"
to_chat(usr, SPAN_NOTICE("Playing started."))
for(var/i = 1, time_recorded < 3600, sleep(10 * play_sleep_seconds))
if(!playing)
@@ -196,7 +197,7 @@
audible_message("<font color=Maroon><B>Tape Recorder</B>: Skipping [play_sleep_seconds] seconds of silence.</font>", hearing_distance = 3)
play_sleep_seconds = 1
i++
icon_state = "taperecorderidle"
icon_state = "taperecorder_idle"
playing = FALSE
if(emagged)
audible_message("<font color=Maroon><B>Tape Recorder</B>: This tape recorder will self-destruct in... Five.</font>", hearing_distance = 3)
@@ -283,7 +284,7 @@
if(emagged)
src.audible_message(SPAN_WARNING("\The [src] makes a scratchy noise."), hearing_distance = 3)
return
icon_state = "taperecorderrecording"
icon_state = "taperecorder_recording"
if(time_recorded < 3600 && !playing)
to_chat(usr, SPAN_NOTICE("Recording started."))
recording = TRUE
@@ -295,7 +296,7 @@
time_recorded++
sleep(10)
recording = FALSE
icon_state = "taperecorderidle"
icon_state = "taperecorder_idle"
return
else
to_chat(usr, SPAN_WARNING("Either \the [src]'s memory is full, or it is currently playing back its memory."))
@@ -308,7 +309,7 @@
timestamp += time_recorded
stored_info += "\[[time2text(time_recorded*10,"mm:ss")]\] Recording stopped."
to_chat(usr, SPAN_NOTICE("Recording stopped."))
icon_state = "taperecorderidle"
icon_state = "taperecorder_idle"
return
else if(emagged)
to_chat(usr, SPAN_WARNING("\The [src]'s buttons doesn't react!"))
@@ -316,7 +317,7 @@
else if(playing)
playing = FALSE
audible_message("<font color=Maroon><B>Tape Recorder</B>: Playback stopped.</font>", hearing_distance = 3)
icon_state = "taperecorderidle"
icon_state = "taperecorder_idle"
return
/obj/item/device/taperecorder/attackby(obj/item/attacking_item, mob/user)
@@ -17,13 +17,14 @@ effective or pretty fucking useless.
/obj/item/device/batterer
name = "mind batterer"
desc = "A strange device with twin antennas."
icon = 'icons/obj/item/device/batterer.dmi'
icon_state = "batterer"
item_state = "electronic"
throwforce = 5
w_class = WEIGHT_CLASS_TINY
throw_speed = 4
throw_range = 10
obj_flags = OBJ_FLAG_CONDUCTABLE
item_state = "electronic"
origin_tech = list(TECH_MAGNET = 3, TECH_COMBAT = 3, TECH_ILLEGAL = 3)
var/times_used = 0 //Number of times it's been used.
@@ -55,7 +56,9 @@ effective or pretty fucking useless.
/obj/item/device/liidrafier //adminspawn/event injector, designed to easily make someone a lii'dra zombie/actual lii'dra
name = "Lii'drafication Injector"
desc = "Use this single-use injector on a Vaurca to grant them access to the Lii'dra Hivenet. Use it on an organic non-Vaurca to infect them with black k'ois. This is an OOC item, do not let anyone see it!"
icon_state = "animal_tagger1"
icon = 'icons/obj/guns/decloner.dmi'
icon_state = "decloner"
item_state = "decloner"
/obj/item/device/liidrafier/attack(mob/living/target_mob, mob/living/user, target_zone)
return
@@ -1,6 +1,7 @@
/obj/item/device/tvcamera
name = "press camera drone"
desc = "An Ingi Usang Entertainment Co. livestreaming press camera drone. Weapon of choice for war correspondents and reality show cameramen. It does not appear to have any internal memory storage."
icon = 'icons/obj/item/device/tvcamera.dmi'
icon_state = "camcorder"
item_state = "camcorder"
w_class = WEIGHT_CLASS_BULKY
+3 -2
View File
@@ -391,8 +391,9 @@ Then check if it's true, if true return. This will stop the normal menu appearin
//for revs to create their own central command reports
/obj/item/device/announcer
name = "relay positioning device"
icon = 'icons/obj/device.dmi'
icon_state = "locator"
icon = 'icons/obj/item/device/gps.dmi'
icon_state = "gps"
item_state = "radio"
desc_antag = "This device allows you to create a single central command report. It has only one use."
w_class = WEIGHT_CLASS_SMALL
@@ -1,6 +1,7 @@
/obj/item/device/hailer
name = "hailer"
desc = "Used by obese officers to save their breath for running."
icon = 'icons/obj/item/device/hailer.dmi'
icon_state = "voice0"
item_state = "flashbang" //looks exactly like a flash (and nothing like a flashbang)
w_class = WEIGHT_CLASS_TINY
+2 -2
View File
@@ -1,7 +1,7 @@
/obj/item/knittingneedles
name = "knitting needles"
desc = "Silver knitting needles used for stitching yarn."
icon = 'icons/obj/item/tools/knitting.dmi'
icon = 'icons/obj/item/knitting.dmi'
icon_state = "knittingneedles"
item_state = "knittingneedles"
w_class = WEIGHT_CLASS_SMALL
@@ -119,7 +119,7 @@
/obj/item/yarn
name = "ball of yarn"
desc = "A ball of yarn, this one is white."
icon = 'icons/obj/item/tools/knitting.dmi'
icon = 'icons/obj/item/knitting.dmi'
icon_state = "white_ball"
w_class = WEIGHT_CLASS_TINY
+2 -1
View File
@@ -1,6 +1,7 @@
/obj/item/device/kit
icon = 'icons/obj/item/device/modkit.dmi'
icon_state = "modkit"
icon = 'icons/obj/device.dmi'
item_state = "restock_unit"
var/new_name = "exosuit" //What is the variant called?
var/new_desc = "An exosuit." //How is the new exosuit described?
var/new_icon = "ripley" //What base icon will the new exosuit use?
+1
View File
@@ -281,6 +281,7 @@
icon = 'icons/obj/radio.dmi'
icon_state = "beacon"
item_state = "signaler"
contained_sprite = TRUE
/*
* Fake singularity
+1 -1
View File
@@ -1,7 +1,7 @@
/obj/item/vitals_monitor
name = "vitals monitor"
desc = "A vitals monitor, used to track a patient's vitality. It needs to be attached to a rollerbed to function."
icon = 'icons/obj/item/tools/vitals_monitor.dmi'
icon = 'icons/obj/item/vitals_monitor.dmi'
icon_state = "vitals_monitor"
item_state = "vitals_monitor"
contained_sprite = TRUE
+4 -1
View File
@@ -5,8 +5,10 @@
/obj/item/autopsy_scanner
name = "autopsy scanner"
desc = "Extracts information on wounds."
icon = 'icons/obj/device.dmi'
icon = 'icons/obj/item/autopsy_scanner.dmi'
icon_state = "autopsy"
item_state = "autopsy"
contained_sprite = TRUE
obj_flags = OBJ_FLAG_CONDUCTABLE
w_class = WEIGHT_CLASS_SMALL
origin_tech = list(TECH_MATERIAL = 1, TECH_BIO = 1)
@@ -178,6 +180,7 @@
for(var/mob/O in viewers(M))
O.show_message(SPAN_NOTICE("\The [user] scans the wounds on [M.name]'s [S.name] with \the [src]"), 1)
flick("autopsy-scan", src)
src.add_data(S)
return 1
@@ -5,9 +5,10 @@
</br>This will not make you inaudible, your footsteps can still be heard, and it will make a very distinctive sound when uncloaking.\
</br>Any items you're holding in your hands can still be seen."
desc_antag = "Being cloaked makes you impossible to click on, which offers a major advantage in combat. People can only hit you by blind-firing in your direction."
icon = 'icons/obj/device.dmi'
icon = 'icons/obj/item/device/chameleon.dmi'
icon_state = "shield0"
item_state = "electronic"
contained_sprite = TRUE
var/active = 0.0
obj_flags = OBJ_FLAG_CONDUCTABLE
item_state = "electronic"
@@ -2,7 +2,7 @@
name = "bluespace neutralizer"
desc = "A strange device, supposedly capable of pre-emptively shutting down bluespace portals."
desc_info = "Click on it, or use it in-hand to activate it. Click on any portal-like structure to instantly close it. Stand near a bluespace rift while it's active to start the closing process."
icon = 'icons/obj/item/tools/neutralizer.dmi'
icon = 'icons/obj/item/neutralizer.dmi'
icon_state = "neutralizer"
contained_sprite = TRUE
@@ -4,6 +4,7 @@
icon = 'icons/obj/machinery/cell_charger.dmi'
icon_state = "cell"
item_state = "cell"
contained_sprite = TRUE
origin_tech = list(TECH_POWER = 1)
force = 11
throwforce = 5.0
@@ -2,7 +2,7 @@
name = "research slip"
desc = "A small slip of plastic with an embedded chip. It is commonly used to store small amounts of research data."
desc_info = "This item is to be used in the destructive analyzer to gain research points."
icon = 'icons/obj/item/tools/research_slip.dmi'
icon = 'icons/obj/item/research_slip.dmi'
icon_state = "slip_nt"
contained_sprite = TRUE
@@ -26,8 +26,8 @@
/obj/item/locator
name = "locator"
desc = "A device that can be used to track those with locator implants."
icon = 'icons/obj/device.dmi'
icon_state = "locator"
icon = 'icons/obj/item/pinpointer.dmi'
icon_state = "pinoff"
var/temp = null
var/frequency = 1451
var/broadcasting = null
@@ -142,7 +142,7 @@ Frequency:
name = "hand tele"
desc = "A hand-held bluespace teleporter that can rip open portals to a random nearby location, or lock onto a teleporter with a selected teleportation beacon."
desc_info = "Ctrl-click to choose which teleportation pad to link to. Use in-hand or alt-click to deploy a portal. When not linked to a pad, or the pad isn't pointing at a beacon, it will choose a completely random teleportation destination."
icon = 'icons/obj/device.dmi'
icon = 'icons/obj/item/hand_tele.dmi'
icon_state = "hand_tele"
item_state = "electronic"
throwforce = 5
@@ -259,6 +259,9 @@ Frequency:
LAZYREMOVE(active_teleporters, P)
if(LAZYLEN(active_teleporters) < max_portals)
check_maptext(SMALL_FONTS(7, "Ready"))
icon_state = "hand_tele"
else
icon_state = "hand_tele_recharging"
/obj/item/closet_teleporter
name = "closet teleporter"
+12 -3
View File
@@ -4,8 +4,10 @@ var/list/global/all_tethers = list()
name = "tethering device"
desc = "A device used by explorers to keep track of partners by way of electro-tether."
desc_info = "Use in-hand to activate, must be on the same level and within fifteen tiles of another device to latch. Tethers are colour coded by distance."
icon = 'icons/obj/device.dmi'
icon_state = "locator"
icon = 'icons/obj/item/device/gps.dmi'
icon_state = "gps"
item_state = "radio"
contained_sprite = TRUE
w_class = WEIGHT_CLASS_SMALL
slot_flags = SLOT_BELT
force = 1
@@ -18,6 +20,11 @@ var/list/global/all_tethers = list()
. = ..()
all_tethers += src
/obj/item/tethering_device/update_icon()
ClearOverlays()
if(active)
AddOverlays("gps_on")
/obj/item/tethering_device/Destroy()
STOP_PROCESSING(SSprocessing, src)
deactivate()
@@ -26,6 +33,7 @@ var/list/global/all_tethers = list()
/obj/item/tethering_device/attack_self(mob/user)
active = !active
update_icon()
var/msg = "You [active ? "activate" : "deactivate"] \the [src]."
to_chat(user, SPAN_NOTICE(msg))
if(active)
@@ -33,6 +41,7 @@ var/list/global/all_tethers = list()
else
deactivate()
/obj/item/tethering_device/process()
var/turf/our_turf = get_turf(src)
for(var/tether in all_tethers - src)
@@ -54,7 +63,7 @@ var/list/global/all_tethers = list()
/obj/item/tethering_device/emp_act(severity)
. = ..()
AddOverlays("gps_emp")
deactivate()
/obj/item/tethering_device/proc/activate()
+5 -5
View File
@@ -219,7 +219,7 @@
/obj/item/weldingtool
name = "welding tool"
desc = "A welding tool with a built-in fuel tank, designed for welding and cutting metal."
icon = 'icons/obj/item/tools/welding_tools.dmi'
icon = 'icons/obj/item/welding_tools.dmi'
icon_state = "welder"
item_state = "welder"
var/welding_state = "welding_sparks"
@@ -662,7 +662,7 @@
name = "experimental eyeshield"
desc = "An advanced eyeshield capable of dampening the welding glare produced when working on modern super-materials, removing the need for user-worn welding gear."
desc_info = "This can be attached to an experimental welder to give it welding protection, removing the need for welding goggles or masks."
icon = 'icons/obj/item/tools/welding_tools.dmi'
icon = 'icons/obj/item/welding_tools.dmi'
icon_state = "eyeshield"
item_state = "eyeshield"
contained_sprite = TRUE
@@ -671,7 +671,7 @@
name = "experimental overcapacitor"
desc = "An advanced capacitor that injects a current into the welding stream, doubling the speed of welding tasks without sacrificing quality. Excess current burns up welding fuel, reducing fuel efficiency, however."
desc_info = "This can be attached to an experimental welder to double the speed it works at, at the cost of tripling the fuel cost of using it."
icon = 'icons/obj/item/tools/welding_tools.dmi'
icon = 'icons/obj/item/welding_tools.dmi'
icon_state = "overcap"
item_state = "overcap"
contained_sprite = TRUE
@@ -750,7 +750,7 @@
/obj/item/crowbar/hydraulic_rescue_tool
name = "Hydraulic rescue tool"
desc = "A hydraulic rescue tool that functions like a crowbar by applying strong amounts of hydraulic pressure to force open different things. Also known as jaws of life."
icon = 'icons/obj/item/tools/hydraulic_rescue_tool.dmi'
icon = 'icons/obj/item/hydraulic_rescue_tool.dmi'
icon_state = "jawspry"
force = 15
throwforce = 1
@@ -870,7 +870,7 @@
/obj/item/powerdrill
name = "impact wrench"
desc = "The screwdriver's big brother."
icon = 'icons/obj/item/tools/impact_wrench.dmi'
icon = 'icons/obj/item/impact_wrench.dmi'
icon_state = "impact_wrench-screw"
item_state = "impact_wrench"
contained_sprite = TRUE
+2 -2
View File
@@ -15,8 +15,8 @@
/obj/random/technology_scanner
name = "random scanner"
desc = "This is a random technology scanner."
icon = 'icons/obj/device.dmi'
icon_state = "atmos"
icon = 'icons/obj/item/device/air_analyzer.dmi'
icon_state = "analyzer"
problist = list(
/obj/item/device/t_scanner = 5,
/obj/item/device/radio = 2,
@@ -813,8 +813,8 @@
/obj/item/device/cratescanner
name = "crate contents scanner"
desc = "A handheld device used to scan and print a manifest of a container's contents. Does not work on locked crates, for privacy reasons."
icon = 'icons/obj/item/device/cratescanner.dmi'
icon_state = "cratescanner"
item_state = "cratescanner"
matter = list(DEFAULT_WALL_MATERIAL = 250, MATERIAL_GLASS = 140)
w_class = WEIGHT_CLASS_SMALL
obj_flags = OBJ_FLAG_CONDUCTABLE
+1 -1
View File
@@ -1,5 +1,5 @@
/obj/item/device/assembly_holder
name = "Assembly"
name = "assembly"
icon = 'icons/obj/assemblies/new_assemblies.dmi'
icon_state = "holder"
item_state = "assembly"
+1 -1
View File
@@ -1,7 +1,7 @@
/obj/item/export_scanner
name = "export scanner"
desc = "A device used to check objects against NanoTrasen exports and bounty database."
icon = 'icons/obj/device.dmi'
icon = 'icons/obj/item/device/price_scanner.dmi'
icon_state = "price_scanner"
slot_flags = SLOT_BELT
item_flags = ITEM_FLAG_NO_BLUDGEON
+3 -2
View File
@@ -570,8 +570,8 @@
/obj/item/device/kinetic_analyzer
name = "kinetic analyzer"
desc = "Analyzes the kinetic accelerator and prints useful information on it's statistics."
icon = 'icons/obj/device.dmi'
icon_state = "kinetic_anal"
icon = 'icons/obj/item/device/kinetic_analyzer.dmi'
icon_state = "kinetic_analyzer"
/obj/item/device/kinetic_analyzer/afterattack(var/atom/target, var/mob/living/user, proximity, params)
@@ -580,6 +580,7 @@
SPAN_WARNING("\The [user] scans \the [target] with \the [src]."),
SPAN_ALERT("You scan \the [target] with \the [src]."))
flick("kinetic_analyzer_scan", src)
if(istype(target,/obj/item/gun/custom_ka))
playsound(src, 'sound/machines/ping.ogg', 10, 1)
+2 -1
View File
@@ -1,10 +1,11 @@
/obj/item/device/uv_light
name = "\improper UV light"
desc = "A small handheld black light."
icon = 'icons/obj/item/device/uv_light.dmi'
icon_state = "uv_off"
item_state = "electronic"
slot_flags = SLOT_BELT
w_class = WEIGHT_CLASS_SMALL
item_state = "electronic"
matter = list(DEFAULT_WALL_MATERIAL = 150)
origin_tech = list(TECH_MAGNET = 1, TECH_ENGINEERING = 1)
var/list/scanned = list()
+2 -1
View File
@@ -1,8 +1,9 @@
/obj/item/device/eftpos
name = "\improper EFTPOS scanner"
desc = "Swipe your ID card to make purchases electronically."
icon = 'icons/obj/device.dmi'
icon = 'icons/obj/item/device/eftpos.dmi'
icon_state = "eftpos"
item_state = "electronic"
w_class = WEIGHT_CLASS_TINY
var/machine_id = ""
var/eftpos_name = "Default EFTPOS scanner"
+2 -1
View File
@@ -3,8 +3,9 @@
/obj/item/device/quikpay
name = "\improper Idris Quik-Pay"
desc = "Swipe your ID to make direct company purchases."
icon = 'icons/obj/device.dmi'
icon = 'icons/obj/item/device/eftpos.dmi'
icon_state = "quikpay"
item_state = "electronic"
w_class = WEIGHT_CLASS_SMALL
slot_flags = SLOT_BELT
var/machine_id = ""
+4 -3
View File
@@ -2,9 +2,10 @@
/obj/item/portable_map_reader
name = "portable map reader"
desc = "Displays a map of the local space, as well as any marked points of interest."
icon = 'icons/obj/device.dmi'
icon_state = "depthscanner"
icon = 'icons/obj/item/device/gps.dmi'
icon_state = "gps"
item_state = "radio"
contained_sprite = TRUE
/// The map reader only shows that z-level (and any z-levels that z-level is connected to).
/// It will not show other z-levels, like if the user were to transport it elsewhere on a shuttle.
var/list/connected_z_levels = null
+1 -2
View File
@@ -22,10 +22,9 @@
/obj/item/device/analyzer/plant_analyzer
name = "plant analyzer"
icon = 'icons/obj/item/tools/plant_analyzer.dmi'
icon = 'icons/obj/item/device/plant_analyzer.dmi'
icon_state = "hydro"
item_state = "hydro"
contained_sprite = TRUE
var/form_title
var/last_data
matter = list(DEFAULT_WALL_MATERIAL = 80, MATERIAL_GLASS = 20)
@@ -406,7 +406,10 @@
name = "global positioning system"
desc = "This allows you to easily know the position of a machine containing this device."
extended_desc = "The GPS's coordinates it gives is absolute, not relative."
icon = 'icons/obj/item/device/gps.dmi'
icon_state = "gps"
item_state = "radio"
contained_sprite = TRUE
complexity = 4
inputs = list()
outputs = list(
+4 -3
View File
@@ -1,9 +1,10 @@
/obj/item/mining_scanner
name = "deep ore scanner"
desc = "A complex device used to locate ore deep underground."
icon = 'icons/obj/device.dmi'
icon_state = "forensic0-old" //GET A BETTER SPRITE.
item_state = "electronic"
icon = 'icons/obj/item/mining_scanner.dmi'
icon_state = "manual_mining"
item_state = "manual_mining"
contained_sprite = TRUE
origin_tech = list(TECH_MAGNET = 1, TECH_ENGINEERING = 1)
matter = list(DEFAULT_WALL_MATERIAL = 150)
+8 -8
View File
@@ -200,7 +200,7 @@
/obj/item/pickaxe/drill
name = "mining drill" // Can dig sand as well!
desc = "Yours is the drill that will pierce through the rock walls."
icon = 'icons/obj/item/tools/drills.dmi'
icon = 'icons/obj/item/drills.dmi'
icon_state = "miningdrill"
item_state = "miningdrill"
contained_sprite = TRUE
@@ -221,8 +221,8 @@
/obj/item/pickaxe/drill/weak
name = "shaft drill"
desc = "Baby's first mining drill. Slow, but reliable."
icon_state = "babydrill"
item_state = "babydrill"
icon_state = "drill"
item_state = "drill"
digspeed = 5
digspeed_unwielded = 10
excavation_amount = 80
@@ -231,7 +231,7 @@
/obj/item/pickaxe/jackhammer
name = "sonic jackhammer"
desc = "Cracks rocks with sonic blasts, perfect for killing cave lizards."
icon = 'icons/obj/item/tools/drills.dmi'
icon = 'icons/obj/item/drills.dmi'
icon_state = "jackhammer"
item_state = "jackhammer"
contained_sprite = TRUE
@@ -275,7 +275,7 @@
/obj/item/pickaxe/diamonddrill //When people ask about the badass leader of the mining tools, they are talking about ME!
name = "diamond mining drill"
icon = 'icons/obj/item/tools/drills.dmi'
icon = 'icons/obj/item/drills.dmi'
icon_state = "diamonddrill"
item_state = "diamonddrill"
contained_sprite = TRUE
@@ -296,7 +296,7 @@
/obj/item/pickaxe/borgdrill
name = "cyborg mining drill"
icon = 'icons/obj/item/tools/drills.dmi'
icon = 'icons/obj/item/drills.dmi'
icon_state = "diamonddrill"
item_state = "jackhammer"
contained_sprite = TRUE
@@ -616,7 +616,7 @@
/obj/item/ore_radar
name = "scanner pad"
desc = "An antiquated device that can detect ore in a wide radius around the user."
icon = 'icons/obj/device.dmi'
icon = 'icons/obj/item/pinpointer.dmi'
icon_state = "pinoff"
obj_flags = OBJ_FLAG_CONDUCTABLE
slot_flags = SLOT_BELT
@@ -1166,7 +1166,7 @@ var/list/total_extraction_beacons = list()
/obj/item/autochisel
name = "auto-chisel"
desc = "With an integrated AI chip and hair-trigger precision, this baby makes sculpting almost automatic!"
icon = 'icons/obj/item/tools/drills.dmi'
icon = 'icons/obj/item/drills.dmi'
icon_state = "chisel"
item_state = "jackhammer"
contained_sprite = TRUE
+4 -5
View File
@@ -9,9 +9,8 @@
/obj/item/ore_detector
name = "ore detector"
desc = "A device capable of locating and displaying ores to the average untrained hole explorer."
icon = 'icons/obj/item/tools/ore_scanner.dmi'
icon_state = "ore_scanner"
item_state = "ore_scanner"
icon = 'icons/obj/item/adv_mining_scanner.dmi'
icon_state = "advmining0"
w_class = WEIGHT_CLASS_SMALL
slot_flags = SLOT_BELT
force = 1
@@ -42,7 +41,7 @@
return ..()
/obj/item/ore_detector/update_icon()
icon_state = "ore_scanner[active ? "-active" : ""]"
icon_state = "advmining[active]"
/obj/item/ore_detector/attack_self(mob/user)
ui_interact(user)
@@ -130,7 +129,7 @@
found_ores = TRUE
if(found_ores)
var/image/ore_ping = image(icon = 'icons/obj/item/tools/ore_scanner.dmi', icon_state = "signal_overlay", loc = anchor, layer = UNDER_HUD_LAYER)
var/image/ore_ping = image(icon = 'icons/obj/item/adv_mining_scanner.dmi', icon_state = "signal_overlay", loc = anchor, layer = UNDER_HUD_LAYER)
ore_ping.appearance_flags |= KEEP_APART|RESET_ALPHA|RESET_COLOR|RESET_TRANSFORM
ore_ping.pixel_x = rand(-6, 6)
ore_ping.pixel_y = rand(-6, 6)
+2 -2
View File
@@ -127,7 +127,7 @@
if(!underlays.len)
underlays += image(firstaid_item.icon, firstaid_item.icon_state)
var/matrix/M = matrix()
var/image/ha_image = image('icons/obj/device.dmi', "health")
var/image/ha_image = image('icons/obj/item/device/healthanalyzer.dmi', "health")
M.Translate(5, 0)
ha_image.transform = M
underlays += ha_image
@@ -376,7 +376,7 @@
to_chat(user, SPAN_NOTICE("You add the health sensor to [src]."))
name = "first-aid/robot arm/health analyzer assembly"
var/matrix/M = matrix()
var/image/ha_image = image('icons/obj/device.dmi', "health")
var/image/ha_image = image('icons/obj/item/device/healthanalyzer.dmi', "health")
M.Translate(5, 0)
ha_image.transform = M
underlays += ha_image
@@ -3,6 +3,7 @@
//
/obj/item/device/robotanalyzer
name = "cyborg analyzer"
icon = 'icons/obj/item/device/robotanalyzer.dmi'
icon_state = "robotanalyzer"
item_state = "analyzer"
desc = "A hand-held scanner able to diagnose robotic injuries."
@@ -109,6 +110,7 @@
/obj/item/device/robotanalyzer/augment
name = "retractable cyborg analyzer"
desc = "An scanner implanted directly into the hand, popping through the finger. This scanner can diagnose robotic injuries."
icon = 'icons/obj/item/device/robotanalyzer.dmi'
icon_state = "robotanalyzer"
item_state = "analyzer"
slot_flags = null
@@ -3,7 +3,7 @@
/obj/item/matter_decompiler
name = "matter decompiler"
desc = "Eating trash, bits of glass, or other debris will replenish your stores."
icon = 'icons/obj/device.dmi'
icon = 'icons/obj/item/gripper.dmi'
icon_state = "decompiler"
var/is_decompiling = FALSE
@@ -3,7 +3,7 @@
/obj/item/gripper
name = "magnetic gripper"
desc = "A simple grasping tool specialized in construction and engineering work."
icon = 'icons/obj/device.dmi'
icon = 'icons/obj/item/gripper.dmi'
icon_state = "gripper"
item_flags = ITEM_FLAG_NO_BLUDGEON
@@ -3,7 +3,7 @@
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 transfered can be adjusted by alt clicking it."
icon = 'icons/obj/item/tools/inductive_charger.dmi'
icon = 'icons/obj/item/inductive_charger.dmi'
icon_state = "inductive_charger"
item_state = "inductive_charger"
item_flags = ITEM_FLAG_HELD_MAP_TEXT
@@ -2,7 +2,7 @@
/obj/item/borg/combat/shield
name = "personal shielding"
desc = "A powerful experimental module that turns aside or absorbs incoming attacks at the cost of charge."
icon = 'icons/obj/device.dmi'
icon = 'icons/obj/item/device/chameleon.dmi'
icon_state = "shield1" //placeholder for now // four fucking years alberyk. FOUR
var/shield_level = 0.5 //Percentage of damage absorbed by the shield.
@@ -6,6 +6,8 @@
desc = "Small device which allows rapid deployment and removal of inflatables."
icon = 'icons/obj/item/inflatables.dmi'
icon_state = "inf_deployer"
item_state = "RPED" //inhands
contained_sprite = TRUE
w_class = WEIGHT_CLASS_NORMAL
var/deploying = FALSE
var/max_walls = 10
@@ -3,12 +3,9 @@
lexical_name = "tablet"
desc = "A personal data assistant. The latest in portable microcomputer solutions from Thinktronic Systems LTD."
icon = 'icons/obj/pda.dmi'
item_icons = list(
slot_l_hand_str = 'icons/mob/items/device/lefthand_device.dmi',
slot_r_hand_str = 'icons/mob/items/device/righthand_device.dmi',
)
icon_state = "pda"
item_state = "electronic"
contained_sprite = TRUE
icon_state_screensaver = "off"
icon_state_unpowered = "pda"
var/icon_add // this is the "bar" part in "pda-bar"
+1
View File
@@ -281,5 +281,6 @@
/obj/item/device/toner
name = "toner cartridge"
desc = "A high-definition toner for colour photocopying and printer machines. Good thing it's a business expense."
icon = 'icons/obj/item/device/toner.dmi'
icon_state = "tonercartridge"
var/toner_amount = 30
-1
View File
@@ -320,7 +320,6 @@ var/global/photo_count = 0
desc = "A slightly antiquated camera with a large flash bulb. Still popular with Tajara all over Adhomai."
icon_state = "taj_camera_on"
item_state = "taj_camera"
contained_sprite = TRUE
slot_flags = SLOT_MASK
black_white = TRUE
icon_on = "taj_camera_on"
+1 -1
View File
@@ -11,7 +11,7 @@
which were once staples of Tajaran offices - have slowly become more uncommon. That \
said, rural areas and less urban parts of the planet still rely heavily on these machines."
icon_state = "typewriter"
icon = 'icons/obj/device.dmi'
icon = 'icons/obj/bureaucracy.dmi'
force = 25
throwforce = 5
w_class = WEIGHT_CLASS_NORMAL
+1 -1
View File
@@ -77,6 +77,6 @@
/obj/item/tracker_electronics
name = "tracker electronics"
icon = 'icons/obj/device.dmi'
icon = 'icons/obj/module.dmi'
icon_state = "door_electronics"
w_class = WEIGHT_CLASS_SMALL
@@ -2,7 +2,7 @@
name = "welding kit"
desc = "A heavy-duty, portable welding fluid carrier."
slot_flags = SLOT_BACK
icon = 'icons/obj/item/tools/welderpack.dmi'
icon = 'icons/obj/item/reagent_containers/weldpack.dmi'
icon_state = "welderpack"
item_state = "welderpack"
contained_sprite = TRUE
+1 -1
View File
@@ -250,8 +250,8 @@
/obj/item/device/destTagger
name = "destination tagger"
desc = "Used to set the destination of properly wrapped packages."
icon = 'icons/obj/item/device/dest_tagger.dmi'
icon_state = "dest_tagger"
item_state = "dest_tagger"
var/currTag = 0
matter = list(DEFAULT_WALL_MATERIAL = 250, MATERIAL_GLASS = 140)
w_class = WEIGHT_CLASS_SMALL
@@ -1,85 +0,0 @@
//chemistry stuff here so that it can be easily viewed/modified
/obj/item/reagent_containers/glass/solution_tray
name = "solution tray"
desc = "A small, open-topped glass container for delicate research samples. It sports a re-useable strip for labelling with a pen."
icon = 'icons/obj/device.dmi'
icon_state = "solution_tray"
matter = list(MATERIAL_GLASS = 5)
w_class = WEIGHT_CLASS_SMALL
amount_per_transfer_from_this = 1
possible_transfer_amounts = list(1, 2)
volume = 2
atom_flags = ATOM_FLAG_OPEN_CONTAINER
/obj/item/reagent_containers/glass/solution_tray/attackby(obj/item/attacking_item, mob/user, params)
if(attacking_item.ispen())
var/new_label = sanitizeSafe( tgui_input_text(user, "What should the new label be?", "Label solution tray", max_length = MAX_NAME_LEN), MAX_NAME_LEN )
if(new_label)
name = "solution tray ([new_label])"
to_chat(user, SPAN_NOTICE("You write on the label of the solution tray."))
else
return ..()
/obj/item/storage/box/solution_trays
name = "solution tray box"
icon_state = "solution_trays"
/obj/item/storage/box/solution_trays/fill()
..()
new /obj/item/reagent_containers/glass/solution_tray( src )
new /obj/item/reagent_containers/glass/solution_tray( src )
new /obj/item/reagent_containers/glass/solution_tray( src )
new /obj/item/reagent_containers/glass/solution_tray( src )
new /obj/item/reagent_containers/glass/solution_tray( src )
new /obj/item/reagent_containers/glass/solution_tray( src )
new /obj/item/reagent_containers/glass/solution_tray( src )
/obj/item/reagent_containers/glass/beaker/tungsten
name = "beaker 'tungsten'"
/obj/item/reagent_containers/glass/beaker/tungsten/Initialize()
. = ..()
reagents.add_reagent(/singleton/reagent/tungsten,50)
update_icon()
/obj/item/reagent_containers/glass/beaker/oxygen
name = "beaker 'oxygen'"
/obj/item/reagent_containers/glass/beaker/oxygen/Initialize()
. = ..()
reagents.add_reagent(/singleton/reagent/acetone,50)
update_icon()
/obj/item/reagent_containers/glass/beaker/sodium
name = "beaker 'sodium'"
/obj/item/reagent_containers/glass/beaker/sodium/Initialize()
. = ..()
reagents.add_reagent(/singleton/reagent/sodium,50)
update_icon()
/obj/item/reagent_containers/glass/beaker/lithium
name = "beaker 'lithium'"
/obj/item/reagent_containers/glass/beaker/lithium/Initialize()
. = ..()
reagents.add_reagent(/singleton/reagent/lithium,50)
update_icon()
/obj/item/reagent_containers/glass/beaker/water
name = "beaker 'water'"
/obj/item/reagent_containers/glass/beaker/water/Initialize()
. = ..()
reagents.add_reagent(/singleton/reagent/water,50)
update_icon()
/obj/item/reagent_containers/glass/beaker/fuel
name = "beaker 'fuel'"
/obj/item/reagent_containers/glass/beaker/fuel/Initialize()
. = ..()
reagents.add_reagent(/singleton/reagent/fuel,50)
update_icon()
@@ -2,21 +2,6 @@
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Miscellaneous xenoarchaeology tools
/obj/item/device/gps
name = "relay positioning device"
desc = "Triangulates the approximate co-ordinates using a nearby satellite network."
icon = 'icons/obj/device.dmi'
icon_state = "locator"
item_state = "locator"
w_class = WEIGHT_CLASS_SMALL
/obj/item/device/gps/attack_self(var/mob/user as mob)
if(!emped)
ui_interact(user)
var/turf/T = get_turf(src)
to_chat(user, SPAN_NOTICE("[icon2html(src, user)] [src] flashes <i>[T.x].[rand(0,9)]:[T.y].[rand(0,9)]:[T.z].[rand(0,9)]</i>."))
/obj/item/device/measuring_tape
name = "measuring tape"
desc = "A coiled metallic tape used to check dimensions and lengths."
@@ -5,7 +5,6 @@
icon = 'icons/obj/xenoarchaeology.dmi'
icon_state = "xenoarch_scanner"
item_state = "xenoarch_scanner"
contained_sprite = TRUE
w_class = WEIGHT_CLASS_SMALL
slot_flags = SLOT_BELT
var/nearest_artifact_id = "unknown"
@@ -9,7 +9,6 @@
icon = 'icons/obj/xenoarchaeology.dmi'
icon_state = "depth_scanner"
item_state = "depth_scanner"
contained_sprite = TRUE
w_class = WEIGHT_CLASS_SMALL
slot_flags = SLOT_BELT
var/list/positive_locations = list()
@@ -5,7 +5,7 @@
/obj/item/device/beacon_locator
name = "locater device"
desc = "Used to scan and locate signals on a particular frequency according ."
icon = 'icons/obj/device.dmi'
icon = 'icons/obj/item/pinpointer.dmi'
icon_state = "pinoff" //pinonfar, pinonmedium, pinonclose, pinondirect, pinonnull
item_state = "electronic"
var/frequency = PUB_FREQ
+2 -1
View File
@@ -3,8 +3,9 @@ GLOBAL_LIST_EMPTY(gps_list)
/obj/item/device/gps
name = "global positioning system"
desc = "Helping lost spacemen find their way through the planets since 2016."
icon = 'icons/obj/telescience.dmi'
icon = 'icons/obj/item/device/gps.dmi'
icon_state = "gps-com"
item_state = "radio"
w_class = WEIGHT_CLASS_SMALL
slot_flags = SLOT_BELT
origin_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2)
+1
View File
@@ -91,6 +91,7 @@
icon = 'icons/obj/radio.dmi'
icon_state = "beacon"
item_state = "signaler"
origin_tech = list(TECH_BLUESPACE = 3)
/obj/item/device/telepad_beacon/attack_self(mob/user)
+60
View File
@@ -0,0 +1,60 @@
################################
# Example Changelog File
#
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
#
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
# When it is, any changes listed below will disappear.
#
# Valid Prefixes:
# bugfix
# - (fixes bugs)
# wip
# - (work in progress)
# qol
# - (quality of life)
# soundadd
# - (adds a sound)
# sounddel
# - (removes a sound)
# rscadd
# - (adds a feature)
# rscdel
# - (removes a feature)
# imageadd
# - (adds an image or sprite)
# imagedel
# - (removes an image or sprite)
# spellcheck
# - (fixes spelling or grammar)
# experiment
# - (experimental change)
# balance
# - (balance changes)
# code_imp
# - (misc internal code change)
# refactor
# - (refactors code)
# config
# - (makes a change to the config files)
# admin
# - (makes changes to administrator tools)
# server
# - (miscellaneous changes to server)
#################################
# Your name.
author: Wowzewow (Wezzy)
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
delete-after: True
# Any changes you've made. See valid prefix list above.
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
# SCREW THIS UP AND IT WON'T WORK.
# Also, this gets changed to [] after reading. Just remove the brackets when you add new shit.
# Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog.
changes:
- imageadd: "Resprites devices, fixes inhands, puts them in contained sprites."
- imageadd: "Adds new mounted flash sprites."
- imagedel: "Removes superfluous GPS item."
Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 236 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Some files were not shown because too many files have changed in this diff Show More