mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 02:09:41 +00:00
Merge pull request #3296 from VOREStation/aro-odywhitelist
Ody reagent whitelist
This commit is contained in:
@@ -404,7 +404,45 @@
|
||||
origin_tech = list(TECH_MATERIAL = 3, TECH_BIO = 4, TECH_MAGNET = 4, TECH_DATA = 3)
|
||||
required_type = /obj/mecha/medical
|
||||
|
||||
New()
|
||||
//This is a list of datums so as to allow id changes, and force compile errors if removed.
|
||||
var/static/list/allowed_reagents = list(
|
||||
//Med Reagents,
|
||||
/datum/reagent/inaprovaline,
|
||||
/datum/reagent/bicaridine,
|
||||
/datum/reagent/kelotane,
|
||||
/datum/reagent/dermaline,
|
||||
/datum/reagent/dylovene,
|
||||
/datum/reagent/dexalin,
|
||||
/datum/reagent/tricordrazine,
|
||||
/datum/reagent/paracetamol,
|
||||
/datum/reagent/tramadol,
|
||||
/datum/reagent/spaceacillin,
|
||||
//Dispenser Reagents,
|
||||
/datum/reagent/water,
|
||||
/datum/reagent/aluminum,
|
||||
/datum/reagent/carbon,
|
||||
/datum/reagent/chlorine,
|
||||
/datum/reagent/copper,
|
||||
/datum/reagent/ethanol,
|
||||
/datum/reagent/fluorine,
|
||||
/datum/reagent/hydrogen,
|
||||
/datum/reagent/iron,
|
||||
/datum/reagent/lithium,
|
||||
/datum/reagent/mercury,
|
||||
/datum/reagent/nitrogen,
|
||||
/datum/reagent/oxygen,
|
||||
/datum/reagent/phosphorus,
|
||||
/datum/reagent/potassium,
|
||||
/datum/reagent/radium,
|
||||
/datum/reagent/acid,
|
||||
/datum/reagent/silicon,
|
||||
/datum/reagent/sodium,
|
||||
/datum/reagent/sugar,
|
||||
/datum/reagent/sulfur,
|
||||
/datum/reagent/tungsten
|
||||
)
|
||||
|
||||
/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/New()
|
||||
..()
|
||||
flags |= NOREACT
|
||||
syringes = new
|
||||
@@ -413,22 +451,30 @@
|
||||
create_reagents(max_volume)
|
||||
synth = new (list(src),0)
|
||||
|
||||
detach()
|
||||
/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/initialize()
|
||||
. = ..()
|
||||
//Wow nice, firsties
|
||||
if(LAZYLEN(allowed_reagents) && !istext(allowed_reagents[1]))
|
||||
for(var/index = 1 to allowed_reagents.len)
|
||||
var/datum/reagent/path = allowed_reagents[index]
|
||||
allowed_reagents[index] = initial(path.id)
|
||||
|
||||
/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/detach()
|
||||
synth.stop()
|
||||
return ..()
|
||||
|
||||
critfail()
|
||||
/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/critfail()
|
||||
..()
|
||||
flags &= ~NOREACT
|
||||
return
|
||||
|
||||
get_equip_info()
|
||||
/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/get_equip_info()
|
||||
var/output = ..()
|
||||
if(output)
|
||||
return "[output] \[<a href=\"?src=\ref[src];toggle_mode=1\">[mode? "Analyze" : "Launch"]</a>\]<br />\[Syringes: [syringes.len]/[max_syringes] | Reagents: [reagents.total_volume]/[reagents.maximum_volume]\]<br /><a href='?src=\ref[src];show_reagents=1'>Reagents list</a>"
|
||||
return
|
||||
|
||||
action(atom/movable/target)
|
||||
/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/action(atom/movable/target)
|
||||
if(!action_checks(target))
|
||||
return
|
||||
if(istype(target,/obj/item/weapon/reagent_containers/syringe))
|
||||
@@ -488,7 +534,7 @@
|
||||
return 1
|
||||
|
||||
|
||||
Topic(href,href_list)
|
||||
/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/Topic(href,href_list)
|
||||
..()
|
||||
var/datum/topic_input/top_filter = new (href,href_list)
|
||||
if(top_filter.get("toggle_mode"))
|
||||
@@ -526,7 +572,7 @@
|
||||
return
|
||||
return
|
||||
|
||||
proc/get_reagents_page()
|
||||
/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/proc/get_reagents_page()
|
||||
var/output = {"<html>
|
||||
<head>
|
||||
<title>Reagent Synthesizer</title>
|
||||
@@ -554,7 +600,7 @@
|
||||
"}
|
||||
return output
|
||||
|
||||
proc/get_reagents_form()
|
||||
/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/proc/get_reagents_form()
|
||||
var/r_list = get_reagents_list()
|
||||
var/inputs
|
||||
if(r_list)
|
||||
@@ -569,14 +615,14 @@
|
||||
"}
|
||||
return output
|
||||
|
||||
proc/get_reagents_list()
|
||||
/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/proc/get_reagents_list()
|
||||
var/output
|
||||
for(var/i=1 to known_reagents.len)
|
||||
var/reagent_id = known_reagents[i]
|
||||
output += {"<input type="checkbox" value="[reagent_id]" name="reagent_[i]" [(reagent_id in processed_reagents)? "checked=\"1\"" : null]> [known_reagents[reagent_id]]<br />"}
|
||||
return output
|
||||
|
||||
proc/get_current_reagents()
|
||||
/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/proc/get_current_reagents()
|
||||
var/output
|
||||
for(var/datum/reagent/R in reagents.reagent_list)
|
||||
if(R.volume > 0)
|
||||
@@ -585,7 +631,7 @@
|
||||
output += "Total: [round(reagents.total_volume,0.001)]/[reagents.maximum_volume] - <a href=\"?src=\ref[src];purge_all=1\">Purge All</a>"
|
||||
return output || "None"
|
||||
|
||||
proc/load_syringe(obj/item/weapon/reagent_containers/syringe/S)
|
||||
/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/proc/load_syringe(obj/item/weapon/reagent_containers/syringe/S)
|
||||
if(syringes.len<max_syringes)
|
||||
if(get_dist(src,S) >= 2)
|
||||
occupant_message("The syringe is too far away.")
|
||||
@@ -607,7 +653,7 @@
|
||||
occupant_message("The [src] syringe chamber is full.")
|
||||
return 0
|
||||
|
||||
proc/analyze_reagents(atom/A)
|
||||
/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/proc/analyze_reagents(atom/A)
|
||||
if(get_dist(src,A) >= 4)
|
||||
occupant_message("The object is too far away.")
|
||||
return 0
|
||||
@@ -616,30 +662,34 @@
|
||||
return 0
|
||||
occupant_message("Analyzing reagents...")
|
||||
for(var/datum/reagent/R in A.reagents.reagent_list)
|
||||
if(R.reagent_state == 2 && add_known_reagent(R.id,R.name))
|
||||
if(R.id in known_reagents)
|
||||
occupant_message("Reagent \"[R.name]\" already present in database, skipping.")
|
||||
else if(R.reagent_state == 2 && add_known_reagent(R.id,R.name))
|
||||
occupant_message("Reagent analyzed, identified as [R.name] and added to database.")
|
||||
send_byjax(chassis.occupant,"msyringegun.browser","reagents_form",get_reagents_form())
|
||||
else
|
||||
occupant_message("Reagent \"[R.name]\" unable to be scanned, skipping.")
|
||||
occupant_message("Analyzis complete.")
|
||||
return 1
|
||||
|
||||
proc/add_known_reagent(r_id,r_name)
|
||||
/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/proc/add_known_reagent(r_id,r_name)
|
||||
set_ready_state(0)
|
||||
do_after_cooldown()
|
||||
if(!(r_id in known_reagents))
|
||||
if(!(r_id in known_reagents) && (r_id in allowed_reagents))
|
||||
known_reagents += r_id
|
||||
known_reagents[r_id] = r_name
|
||||
return 1
|
||||
return 0
|
||||
|
||||
|
||||
update_equip_info()
|
||||
/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/update_equip_info()
|
||||
if(..())
|
||||
send_byjax(chassis.occupant,"msyringegun.browser","reagents",get_current_reagents())
|
||||
send_byjax(chassis.occupant,"msyringegun.browser","reagents_form",get_reagents_form())
|
||||
return 1
|
||||
return
|
||||
|
||||
on_reagent_change()
|
||||
/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun/on_reagent_change()
|
||||
..()
|
||||
update_equip_info()
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user