mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-19 13:35:10 +00:00
* Optimizes away /obj/Initialize We were spending like 0.15 seconds just checking for blueprints, obj flags and network ids All these things can just be applied where they're wanted, saves time Oh and I replaced object flags with an emag injector. I'll give it a sprite and name later I promise * Requires a GenerateTag() call to set DF_USE_TAG, rather then doing a check in atom New This is technically harder to use, but I don't really want people using tags, and it saves 0.15 seconds * Moves generatetag to /datum * I am dumb * Saves 0.5 seconds, makes init emissive blockers actually work Ok so background. If an overlay is added with add_overlay, and not "managed" somehow, it will effectively never be removed, because nothing's tracking it. Update_overlays uses the managed_overlays list/var (one of those) to do this. I'm gonna piggyback off this to make emissive overlays actually like, respect overlay updates. Oh and uh, I've saved maybe 0.5 seconds by caching the new emissive, and not using add_overlay. There's a chance this will lead to overlay corruption, but since we never readd the flattened, I think we'll be safe * Fixes plane not being set right, changes color logic too, since alpha will override past color sets * Makes it actually work. also makes rand posters update appearance to clear away the overlay, since it shows on right click and looks bad * Fixes blockers showing as emissives. It turns out alpha sets override the color list we use. Not sure why we pretend to support them * Makes the injector support traits, adds an amazing sprite
102 lines
3.8 KiB
Plaintext
102 lines
3.8 KiB
Plaintext
/obj/item/computer_hardware/network_card
|
|
name = "network card"
|
|
desc = "A basic wireless network card for usage with standard NTNet frequencies."
|
|
power_usage = 50
|
|
icon_state = "radio_mini"
|
|
var/hardware_id = null // Identification ID. Technically MAC address of this device. Can't be changed by user.
|
|
var/identification_string = "" // Identification string, technically nickname seen in the network. Can be set by user.
|
|
var/long_range = 0
|
|
var/ethernet = 0 // Hard-wired, therefore always on, ignores NTNet wireless checks.
|
|
malfunction_probability = 1
|
|
device_type = MC_NET
|
|
|
|
/obj/item/computer_hardware/network_card/Initialize(mapload)
|
|
. = ..()
|
|
init_network_id(NETWORK_CARDS)
|
|
|
|
/obj/item/computer_hardware/network_card/diagnostics(mob/user)
|
|
..()
|
|
to_chat(user, "NIX Unique ID: [hardware_id]")
|
|
to_chat(user, "NIX User Tag: [identification_string]")
|
|
to_chat(user, "Supported protocols:")
|
|
to_chat(user, "511.m SFS (Subspace) - Standard Frequency Spread")
|
|
if(long_range)
|
|
to_chat(user, "511.n WFS/HB (Subspace) - Wide Frequency Spread/High Bandiwdth")
|
|
if(ethernet)
|
|
to_chat(user, "OpenEth (Physical Connection) - Physical network connection port")
|
|
|
|
|
|
// Returns a string identifier of this network card
|
|
/obj/item/computer_hardware/network_card/proc/get_network_tag()
|
|
return "[identification_string] (NID [hardware_id])"
|
|
|
|
// 0 - No signal, 1 - Low signal, 2 - High signal. 3 - Wired Connection
|
|
/obj/item/computer_hardware/network_card/proc/get_signal(specific_action = 0)
|
|
if(!holder) // Hardware is not installed in anything. No signal. How did this even get called?
|
|
return 0
|
|
|
|
if(!check_functionality())
|
|
return 0
|
|
|
|
if(ethernet) // Computer is connected via wired connection.
|
|
return 3
|
|
|
|
if(!SSnetworks.station_network || !SSnetworks.station_network.check_function(specific_action)) // NTNet is down and we are not connected via wired connection. No signal.
|
|
return 0
|
|
|
|
if(holder)
|
|
|
|
var/turf/T = get_turf(holder)
|
|
if((T && istype(T)) && (is_station_level(T.z) || is_mining_level(T.z)))
|
|
// Computer is on station. Low/High signal depending on what type of network card you have
|
|
if(long_range)
|
|
return 2
|
|
else
|
|
return 1
|
|
|
|
if(long_range) // Computer is not on station, but it has upgraded network card. Low signal.
|
|
return 1
|
|
|
|
return 0 // Computer is not on station and does not have upgraded network card. No signal.
|
|
|
|
|
|
/obj/item/computer_hardware/network_card/advanced
|
|
name = "advanced network card"
|
|
desc = "An advanced network card for usage with standard NTNet frequencies. Its transmitter is strong enough to connect even off-station."
|
|
long_range = 1
|
|
power_usage = 100 // Better range but higher power usage.
|
|
icon_state = "radio"
|
|
lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi'
|
|
righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi'
|
|
w_class = WEIGHT_CLASS_TINY
|
|
|
|
/obj/item/computer_hardware/network_card/wired
|
|
name = "wired network card"
|
|
desc = "An advanced network card for usage with standard NTNet frequencies. This one also supports wired connection."
|
|
ethernet = 1
|
|
power_usage = 100 // Better range but higher power usage.
|
|
icon_state = "net_wired"
|
|
w_class = WEIGHT_CLASS_NORMAL
|
|
|
|
/obj/item/computer_hardware/network_card/integrated //Borg tablet version, only works while the borg has power and is not locked
|
|
name = "cyborg data link"
|
|
|
|
/obj/item/computer_hardware/network_card/integrated/get_signal(specific_action = 0)
|
|
var/obj/item/modular_computer/tablet/integrated/modularInterface = holder
|
|
|
|
if(!modularInterface || !istype(modularInterface))
|
|
return FALSE //wrong type of tablet
|
|
|
|
if(!modularInterface.borgo)
|
|
return FALSE //No borg found
|
|
|
|
var/mob/living/silicon/robot/robo = modularInterface.borgo
|
|
if(istype(robo))
|
|
if(robo.lockcharge)
|
|
return FALSE //lockdown restricts borg networking
|
|
|
|
if(!robo.cell || robo.cell.charge == 0)
|
|
return FALSE //borg cell dying restricts borg networking
|
|
|
|
return ..()
|