Merge pull request #6091 from Novacat/nova-ert

Uplink additions
This commit is contained in:
Novacat
2019-10-21 21:01:06 -04:00
committed by GitHub
8 changed files with 128 additions and 40 deletions

View File

@@ -0,0 +1,57 @@
/**********
* Medical *
**********/
/datum/uplink_item/item/medical/mre
name = "Meal, Ready to eat (Random)"
item_cost = 5
path = /obj/item/weapon/storage/mre/random
/datum/uplink_item/item/medical/protein
name = "Meal, Ready to eat (Protein)"
item_cost = 5
path = /obj/item/weapon/storage/mre/menu10
/datum/uplink_item/item/medical/emergency
name = "Meal, Ready to eat (Emergency)"
item_cost = 5
path = /obj/item/weapon/storage/mre/menu11
/datum/uplink_item/item/medical/glucose
name = "Glucose injector"
item_cost = 5
path = /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/glucose
/datum/uplink_item/item/medical/purity
name = "Purity injector"
item_cost = 5
path = /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/purity
/datum/uplink_item/item/medical/brute
name = "Brute injector"
item_cost = 5
path = /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/brute
/datum/uplink_item/item/medical/burn
name = "Burn injector"
item_cost = 5
path = /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/burn
/datum/uplink_item/item/medical/toxin
name = "Toxin injector"
item_cost = 5
path = /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/toxin
/datum/uplink_item/item/medical/oxy
name = "Oxy injector"
item_cost = 5
path = /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/oxy
/datum/uplink_item/item/medical/nanites
name = "Healing Nanite pill bottle"
item_cost = 30
path = /obj/item/weapon/storage/pill_bottle/healing_nanites
/datum/uplink_item/item/medical/insiderepair
name = "Combat organ kit"
item_cost = 120
path = /obj/item/weapon/storage/firstaid/insiderepair

View File

@@ -0,0 +1,42 @@
/********************
* Devices and Tools *
********************/
/datum/uplink_item/item/tools/basiclaptop
name = "Laptop (Basic)"
item_cost = 5
path = /obj/item/modular_computer/laptop/preset/custom_loadout/cheap
/datum/uplink_item/item/tools/survivalcapsule
name = "Survival Capsule"
item_cost = 5
path = /obj/item/device/survivalcapsule
/datum/uplink_item/item/tools/nanopaste
name = "Nanopaste (Advanced)"
item_cost = 10
path = /obj/item/stack/nanopaste/advanced
/datum/uplink_item/item/tools/elitetablet
name = "Tablet (Advanced)"
item_cost = 15
path = /obj/item/modular_computer/tablet/preset/custom_loadout/advanced
/datum/uplink_item/item/tools/elitelaptop
name = "Laptop (Advanced)"
item_cost = 20
path = /obj/item/modular_computer/laptop/preset/custom_loadout/elite
/datum/uplink_item/item/tools/luxurycapsule
name = "Survival Capsule (Luxury)"
item_cost = 40
path = /obj/item/device/survivalcapsule/luxury
/datum/uplink_item/item/tools/translocator
name = "Translocator"
item_cost = 40
path = /obj/item/device/perfect_tele
/datum/uplink_item/item/tools/barcapsule
name = "Survival Capsule (Bar)"
item_cost = 80
path = /obj/item/device/survivalcapsule/luxurybar

View File

@@ -95,7 +95,7 @@ var/global/list/default_medbay_channels = list(
/obj/item/device/radio/interact(mob/user) /obj/item/device/radio/interact(mob/user)
if(!user) if(!user)
return 0 return FALSE
if(b_stat) if(b_stat)
wires.Interact(user) wires.Interact(user)
@@ -151,10 +151,10 @@ var/global/list/default_medbay_channels = list(
/obj/item/device/radio/proc/has_channel_access(var/mob/user, var/freq) /obj/item/device/radio/proc/has_channel_access(var/mob/user, var/freq)
if(!user) if(!user)
return 0 return FALSE
if(!(freq in internal_channels)) if(!(freq in internal_channels))
return 0 return FALSE
return user.has_internal_radio_channel_access(internal_channels[freq]) return user.has_internal_radio_channel_access(internal_channels[freq])
@@ -191,7 +191,7 @@ var/global/list/default_medbay_channels = list(
/obj/item/device/radio/Topic(href, href_list) /obj/item/device/radio/Topic(href, href_list)
if(..()) if(..())
return 1 return TRUE
usr.set_machine(src) usr.set_machine(src)
if (href_list["track"]) if (href_list["track"])
@@ -229,7 +229,7 @@ var/global/list/default_medbay_channels = list(
set_frequency(text2num(freq)) set_frequency(text2num(freq))
. = 1 . = 1
if(href_list["nowindow"]) // here for pAIs, maybe others will want it, idk if(href_list["nowindow"]) // here for pAIs, maybe others will want it, idk
return 1 return TRUE
if(.) if(.)
SSnanoui.update_uis(src) SSnanoui.update_uis(src)
@@ -246,15 +246,11 @@ var/global/list/default_medbay_channels = list(
channel = null channel = null
if (!istype(connection)) if (!istype(connection))
return return
if (!connection)
return
var/static/mob/living/silicon/ai/announcer/A = new /mob/living/silicon/ai/announcer(src, null, null, 1) var/mob/living/silicon/ai/A = new /mob/living/silicon/ai(src, null, null, 1)
A.SetName(from) A.fully_replace_character_name(null,from)
Broadcast_Message(connection, A, talk_into(A, message, channel,"states")
0, "*garbled automated announcement*", src, qdel(A)
message, from, "Automated Announcement", from, "synthesized voice",
4, 0, list(0), connection.frequency, "states")
// Interprets the message mode when talking into a radio, possibly returning a connection datum // Interprets the message mode when talking into a radio, possibly returning a connection datum
/obj/item/device/radio/proc/handle_message_mode(mob/living/M as mob, message, message_mode) /obj/item/device/radio/proc/handle_message_mode(mob/living/M as mob, message, message_mode)
@@ -273,19 +269,19 @@ var/global/list/default_medbay_channels = list(
// If we were to send to a channel we don't have, drop it. // If we were to send to a channel we don't have, drop it.
return null return null
/obj/item/device/radio/talk_into(mob/living/M as mob, message, channel, var/verb = "says", var/datum/language/speaking = null) /obj/item/device/radio/talk_into(mob/living/M, message, channel, var/verb = "says", var/datum/language/speaking = null)
if(!on) return 0 // the device has to be on if(!on) return FALSE // the device has to be on
// Fix for permacell radios, but kinda eh about actually fixing them. // Fix for permacell radios, but kinda eh about actually fixing them.
if(!M || !message) return 0 if(!M || !message) return FALSE
if(speaking && (speaking.flags & (SIGNLANG|NONVERBAL))) return 0 if(speaking && (speaking.flags & (SIGNLANG|NONVERBAL))) return FALSE
if(istype(M)) M.trigger_aiming(TARGET_CAN_RADIO) if(istype(M)) M.trigger_aiming(TARGET_CAN_RADIO)
// Uncommenting this. To the above comment: // Uncommenting this. To the above comment:
// The permacell radios aren't suppose to be able to transmit, this isn't a bug and this "fix" is just making radio wires useless. -Giacom // The permacell radios aren't suppose to be able to transmit, this isn't a bug and this "fix" is just making radio wires useless. -Giacom
if(wires.IsIndexCut(WIRE_TRANSMIT)) // The device has to have all its wires and shit intact if(wires.IsIndexCut(WIRE_TRANSMIT)) // The device has to have all its wires and shit intact
return 0 return FALSE
if(!radio_connection) if(!radio_connection)
set_frequency(frequency) set_frequency(frequency)
@@ -304,9 +300,7 @@ var/global/list/default_medbay_channels = list(
//#### Grab the connection datum ####// //#### Grab the connection datum ####//
var/datum/radio_frequency/connection = handle_message_mode(M, message, channel) var/datum/radio_frequency/connection = handle_message_mode(M, message, channel)
if (!istype(connection)) if (!istype(connection))
return 0 return FALSE
if (!connection)
return 0
var/turf/position = get_turf(src) var/turf/position = get_turf(src)
@@ -360,13 +354,12 @@ var/global/list/default_medbay_channels = list(
/* ###### Radio headsets can only broadcast through subspace ###### */ /* ###### Radio headsets can only broadcast through subspace ###### */
if(subspace_transmission) if(subspace_transmission)
var/list/jamming = is_jammed(src) var/list/jamming = is_jammed(src)
if(jamming) if(jamming)
var/distance = jamming["distance"] var/distance = jamming["distance"]
to_chat(M,"<span class='danger'>\icon[src] You hear the [distance <= 2 ? "loud hiss" : "soft hiss"] of static.</span>") to_chat(M,"<span class='danger'>\icon[src] You hear the [distance <= 2 ? "loud hiss" : "soft hiss"] of static.</span>")
return 0 return FALSE
// First, we want to generate a new radio signal // First, we want to generate a new radio signal
var/datum/signal/signal = new var/datum/signal/signal = new
@@ -414,6 +407,7 @@ var/global/list/default_medbay_channels = list(
for(var/obj/machinery/telecomms/allinone/R in telecomms_list) for(var/obj/machinery/telecomms/allinone/R in telecomms_list)
R.receive_signal(signal) R.receive_signal(signal)
// Receiving code can be located in Telecommunications.dm
if(signal.data["done"] && position.z in signal.data["level"]) if(signal.data["done"] && position.z in signal.data["level"])
return TRUE //Huzzah, sent via subspace return TRUE //Huzzah, sent via subspace
@@ -480,7 +474,7 @@ var/global/list/default_medbay_channels = list(
// Send a mundane broadcast with limited targets: // Send a mundane broadcast with limited targets:
//THIS IS TEMPORARY. YEAH RIGHT //THIS IS TEMPORARY. YEAH RIGHT
if(!connection) return 0 //~Carn if(!connection) return FALSE //~Carn
//VOREStation Add Start //VOREStation Add Start
if(bluespace_radio) if(bluespace_radio)
@@ -504,7 +498,7 @@ var/global/list/default_medbay_channels = list(
/obj/item/device/radio/proc/accept_rad(obj/item/device/radio/R as obj, message) /obj/item/device/radio/proc/accept_rad(obj/item/device/radio/R as obj, message)
if ((R.frequency == frequency && message)) if ((R.frequency == frequency && message))
return 1 return TRUE
else if else if
else else
@@ -544,7 +538,7 @@ var/global/list/default_medbay_channels = list(
if (!accept) if (!accept)
for (var/ch_name in channels) for (var/ch_name in channels)
var/datum/radio_frequency/RF = secure_radio_connections[ch_name] var/datum/radio_frequency/RF = secure_radio_connections[ch_name]
if (RF.frequency==freq && (channels[ch_name]&FREQ_LISTENING)) if (RF && RF.frequency==freq && (channels[ch_name]&FREQ_LISTENING))
accept = 1 accept = 1
break break
if (!accept) if (!accept)
@@ -695,7 +689,7 @@ var/global/list/default_medbay_channels = list(
/obj/item/device/radio/borg/Topic(href, href_list) /obj/item/device/radio/borg/Topic(href, href_list)
if(..()) if(..())
return 1 return TRUE
if (href_list["mode"]) if (href_list["mode"])
var/enable_subspace_transmission = text2num(href_list["mode"]) var/enable_subspace_transmission = text2num(href_list["mode"])
if(enable_subspace_transmission != subspace_transmission) if(enable_subspace_transmission != subspace_transmission)

View File

@@ -64,7 +64,9 @@
O_LIVER = /obj/item/organ/internal/liver, O_LIVER = /obj/item/organ/internal/liver,
O_KIDNEYS = /obj/item/organ/internal/kidneys, O_KIDNEYS = /obj/item/organ/internal/kidneys,
O_BRAIN = /obj/item/organ/internal/brain, O_BRAIN = /obj/item/organ/internal/brain,
O_EYES = /obj/item/organ/internal/eyes O_EYES = /obj/item/organ/internal/eyes,
O_STOMACH = /obj/item/organ/internal/stomach,
O_INTESTINE = /obj/item/organ/internal/intestine
) )
flesh_color = "#AFA59E" flesh_color = "#AFA59E"

View File

@@ -30,7 +30,7 @@
/mob/living/silicon/robot/shared_nano_interaction() /mob/living/silicon/robot/shared_nano_interaction()
. = STATUS_INTERACTIVE . = STATUS_INTERACTIVE
if(cell.charge <= 0) if(!has_power)
return STATUS_CLOSE return STATUS_CLOSE
if(lockdown) if(lockdown)
. = STATUS_DISABLED . = STATUS_DISABLED

View File

@@ -23722,15 +23722,6 @@
/obj/structure/cable/green, /obj/structure/cable/green,
/turf/simulated/floor/tiled/white, /turf/simulated/floor/tiled/white,
/area/tether/surfacebase/medical/lowerhall) /area/tether/surfacebase/medical/lowerhall)
"aSx" = (
/obj/effect/floor_decal/borderfloorwhite,
/obj/effect/floor_decal/corner/paleblue/border,
/obj/machinery/alarm{
dir = 1;
pixel_y = -25
},
/turf/simulated/floor/tiled/white,
/area/tether/surfacebase/medical/lowerhall)
"aSy" = ( "aSy" = (
/obj/effect/floor_decal/borderfloorwhite{ /obj/effect/floor_decal/borderfloorwhite{
dir = 6 dir = 6
@@ -43075,7 +43066,7 @@ aRd
aRw aRw
aQa aQa
aSh aSh
aSx aSb
aad aad
abe abe
aai aai

View File

@@ -400,10 +400,12 @@
#include "code\datums\uplink\hardsuit_modules.dm" #include "code\datums\uplink\hardsuit_modules.dm"
#include "code\datums\uplink\implants.dm" #include "code\datums\uplink\implants.dm"
#include "code\datums\uplink\medical.dm" #include "code\datums\uplink\medical.dm"
#include "code\datums\uplink\medical_vr.dm"
#include "code\datums\uplink\stealth_items.dm" #include "code\datums\uplink\stealth_items.dm"
#include "code\datums\uplink\stealthy_weapons.dm" #include "code\datums\uplink\stealthy_weapons.dm"
#include "code\datums\uplink\telecrystals.dm" #include "code\datums\uplink\telecrystals.dm"
#include "code\datums\uplink\tools.dm" #include "code\datums\uplink\tools.dm"
#include "code\datums\uplink\tools_vr.dm"
#include "code\datums\uplink\uplink_categories.dm" #include "code\datums\uplink\uplink_categories.dm"
#include "code\datums\uplink\uplink_items.dm" #include "code\datums\uplink\uplink_items.dm"
#include "code\datums\uplink\visible_weapons.dm" #include "code\datums\uplink\visible_weapons.dm"