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.
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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,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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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\
|
||||
|
||||
@@ -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,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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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?
|
||||
|
||||
@@ -281,6 +281,7 @@
|
||||
icon = 'icons/obj/radio.dmi'
|
||||
icon_state = "beacon"
|
||||
item_state = "signaler"
|
||||
contained_sprite = TRUE
|
||||
|
||||
/*
|
||||
* Fake singularity
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,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,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
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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 = ""
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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."
|
||||
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 6.0 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 6.0 KiB |
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 236 B |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |