/obj/item/poi
icon = 'icons/obj/objects.dmi'
desc = "This is definitely something cool."
/datum/category_item/catalogue/information/objects/pascalb
name = "Object - Pascal B Steel Shaft Cap"
desc = "In the year 1957, the United States of America - an Earth nation - performed a series \
of earth nuclear weapons tests codenamed 'Operation Plumbbob', which remain the largest and \
longest running nuclear test series performed on the American continent. Test data included \
various altitude detonations, effects on several materials and structures at various \
distances, and the effects of radiation on military hardware and the human body. \
\
On the 27th of August that year, in a test named 'Pascal-B' a 300t nuclear payload \
was buried in a shaft capped by a 900kg steel plate cap. The test was intended to \
verify the safety of underground detonation, but the shaft was not sufficient to \
contain the shockwave. According to experiment designer Robert Brownlee, the steel \
cap was propelled upwards at a velocity of 240,000km/h - over six times Earth's \
escape velocity. The cap appeared in only one frame of high-speed camera recording. \
\
It had been theorized that the cap had exited earth's atmosphere and entered orbit. \
It would seem the cap traveled farther than had been possibly imagined."
value = CATALOGUER_REWARD_MEDIUM
/obj/item/poi/pascalb
icon_state = "pascalb"
name = "misshapen manhole cover"
desc = "The top of this twisted chunk of metal is faintly stamped with a five pointed star. 'Property of US Army, Pascal B - 1957'."
catalogue_data = list(/datum/category_item/catalogue/information/objects/pascalb)
/obj/item/poi/pascalb/Initialize(mapload)
. = ..()
START_PROCESSING(SSobj, src)
/obj/item/poi/pascalb/process()
SSradiation.radiate(src, 5)
/obj/item/poi/pascalb/Destroy()
STOP_PROCESSING(SSobj, src)
return ..()
/datum/category_item/catalogue/information/objects/oldreactor
name = "Object - 24th Century Fission Reactor Rack"
desc = "Prior to the discovery of Phoron in 2380, and the development of the hydrophoron \
supermatter reactor, most spacecraft operated on nuclear fission reactors, using processed \
radioactive material as fuel. While the design had been near-perfected by the 24th century, \
with some models capable of holding hundreds of fuel rods at one time and operating almost \
unsupervised for weeks at a time.\
\
However, as accidents were not uncommon due to the inherent dangers of space travel and the \
nature of reactor racks such as this one fully containing the unstable fuel material, many \
fission vessels were built capable of jettisoning their entire engine sections as it was seen \
as preferable to evacuating a ship's crew and potentially losing the entire craft and its cargo. \
\
VifGov records indicate that the colony ship ICV Kauai declared a major onboard emergency in Sif orbit \
on the 14th April 2353, citing major systems malfunction following a fire in the engine compartment. \
Due to the relatively sparse population of the planet, it was deemed safe to jettison both engine \
blocks, and the colonists were safely towed to port with no hands lost."
value = CATALOGUER_REWARD_MEDIUM
/obj/structure/closet/crate/oldreactor
name = "fission reactor rack"
desc = "Used in older models of nuclear reactors, essentially a cooling rack for high volumes of radioactive material."
icon = 'icons/obj/closets/poireactor.dmi'
closet_appearance = null
catalogue_data = list(/datum/category_item/catalogue/information/objects/oldreactor)
starts_with = list(
/obj/item/fuel_assembly/deuterium = 6)
/obj/structure/closet/crate/oldreactor/Initialize(mapload)
. = ..()
// Not climbable!
RemoveElement(/datum/element/climbable)
/obj/item/poi/brokenoldreactor
icon_state = "poireactor_broken"
name = "ruptured fission reactor rack"
desc = "This broken hunk of machinery looks extremely dangerous."
catalogue_data = list(/datum/category_item/catalogue/information/objects/oldreactor)
/obj/item/poi/brokenoldreactor/Initialize(mapload)
. = ..()
START_PROCESSING(SSobj, src)
/obj/item/poi/brokenoldreactor/process()
SSradiation.radiate(src, 25)
/obj/item/poi/brokenoldreactor/Destroy()
STOP_PROCESSING(SSobj, src)
return ..()
/datum/category_item/catalogue/information/objects/growthcanister
name = "Object - Growth Inhibitor 78-1"
desc = "The production of Vatborn humans is a process which involves the synthesis of over two hundred \
distinct chemical compounds. While most Vatborn are 'produced' as infants and merely genetically modified \
to encourage rapid early maturation, the specific development of the controversial 'Expedited' Vatborn calls for \
a far more intensive process.\
\
Growth Inhibitor Type 78-1 is used in the rapid artificial maturation process to prevent the 'overdevelopment' of\
particular cell structures in the Vatborn's body, halting the otherwise inevitable development of aggressive cancerous\
growths which would be detrimental or lethal to the subject. Exposure to the compound in its pure form can cause\
devastating damage to living tissue, ceasing all regenerative activity in an organism's cells. While immediate effects\
can be halted by recent medical innovations, exposure can severely shorten a sapient's life expectancy.\
\
In early 2564, the NanoTrasen corporation was implicated in the accidental spillage of over a dozen full cargo containers\
of Growth Inhibitor 78-1 in the Ullran Expanse of Sif, and were charged by the Sif Environmental Agency with extreme \
environmental damage and neglect."
value = CATALOGUER_REWARD_MEDIUM
/obj/structure/prop/poicanister
name = "Ruptured Chemical Canister"
desc = "A cracked open chemical canister labelled 'Growth Inhibitor 78-1'"
icon = 'icons/obj/atmos.dmi'
icon_state = "yellow-1"
catalogue_data = list(/datum/category_item/catalogue/information/objects/growthcanister)
anchored = FALSE
density = TRUE
/obj/item/poi/broken_drone_circuit
name = "Central Processing Strata" //Ideally we spawn this as loot for robotic enemies
desc = "The pinnacle of artifical intelligence which can be achieved using classical computer science. \n \
This one seems somewhat damaged. Perhaps a trained roboticist could extract its memories?"
catalogue_data = list(/datum/category_item/catalogue/technology/drone/drones)
icon = 'icons/obj/module.dmi'
icon_state = "mainboard"
w_class = ITEMSIZE_NORMAL
origin_tech = list(TECH_ENGINEERING = 4, TECH_MATERIAL = 3, TECH_DATA = 4)
var/drone_name = "" //Randomly picked unless pre-defined. Used by tool examines
var/examine_multitool = "TEST_multi - CONTACT DEV" //Read by attacking with multitool
var/examine_canalyzer = "TEST_canalyzer spoken - CONTACT DEV" //Read by attacking with cyborg analyzer. Define in New() if using vars
var/examine_canalyzer_printed = "" //If we want different formatting or more detals for printed. By default unused
var/wirecutted = FALSE
var/unscrewed = FALSE
var/unlocked = FALSE
var/fried = FALSE
var/has_paper = FALSE
/obj/item/poi/broken_drone_circuit/Initialize(mapload)
. = ..()
drone_name = "[pick(list("ADA","DOS","GNU","MAC","WIN","NJS","SKS","DRD","IOS","CRM","IBM","TEX","LVM","BSD",))]-[rand(1000, 9999)]]"
var/new_canalyzer = "[drone_name] [examine_canalyzer]" //Only way I could think to dynamically insert drone name here
examine_canalyzer = new_canalyzer
/obj/item/poi/broken_drone_circuit/attackby(obj/item/I as obj, mob/living/user as mob)
if(!istype(user))
return FALSE
if(fried)
to_chat(user, span_warning("[src] is covered in black marks. You feel there's nothing more you can do..."))
return FALSE
var/turf/message_turf = get_turf(user) //We use this to ensure everyone can see it!
if(istype(I, /obj/item/tool/screwdriver))
unscrewed = !unscrewed
to_chat(user, "You screw the blackbox panel [unscrewed ? "off" : "on"]")
if(istype(I, /obj/item/tool/wirecutters))
wirecutted = !wirecutted
to_chat(user, "You [wirecutted ? "cut" : "mend"] the power wire to the blackbox")
if(istype(I, /obj/item/paper) && unscrewed)
if(!has_paper)
to_chat(user, "You feed the debug printer some paper")
has_paper = TRUE
qdel(I)
else
to_chat(user, span_notice("[src] cannot hold more than 1 sheet of paper."))
if(istype(I, /obj/item/multitool))
if(!unscrewed && !wirecutted)
to_chat(user, span_notice("You cannot access the debug interface with the panel screwed on!"))
else if(unscrewed && !wirecutted)
message_turf.audible_message(message = examine_multitool,
deaf_message = span_bold("[src]") + " flashes red repeatedly", runemessage= "Beep! Beep!")
to_chat(user, span_warning("The components spark from the multitool's unregulated pulse. \
Perhaps it'd been better to use more sophisticated tools..."))
fried = TRUE
message_turf.visible_message(message = span_bold("[src]") + " FLASHES VIOLENTLY!",
blind_message = "ZAP!", runemessage = "CRACKLE!")
var/used_hand = user.get_organ(user.get_active_hand())
user.electrocute_act(10,def_zone = used_hand)
else if(wirecutted) //The security circuit is accessible outside the special panel, so we don't care for screwdrivers
to_chat(user, span_notice("You modify the security settings."))
unlocked = TRUE
if(istype(I, /obj/item/robotanalyzer))
if(!unscrewed)
to_chat(user, span_notice("You cannot access the debug interface with the panel screwed on!"))
else if(wirecutted)
to_chat(user, span_notice("You only receive garbled data. Perhaps you should reconnect the wires?"))
else if(!unlocked)
to_chat(user, span_danger("Security protocols seemingly engage, purging and bricking the circuit!\n \
Perhaps, it would've been a good idea to disconnect some wires while pulsing the security circuit..."))
else
if(!has_paper)
message_turf.visible_message(message = span_bold("[src]") + " displays, 'PAPER NOT BIN'",
blind_message = "you hear VERY ANGRY beeping.", runemessage = "BEEP BEEP!")
message_turf.audible_message(message = span_bold("[src]") + " recites, \n '[examine_canalyzer]'",
deaf_message = span_bold("[src]") + " flashes green!", runemessage= "Ping!")
else
message_turf.audible_message(message = span_bold("[src]") + " rattles loudly as it prints",
deaf_message = span_bold("[src]") + " flashes green!", runemessage= "RATTLE RATTLE")
var/obj/item/paper/P = new /obj/item/paper(get_turf(src))
P.name = "[drone_name] blackbox transcript"
P.info = "[examine_canalyzer_printed ? examine_canalyzer_printed : examine_canalyzer]"
has_paper = FALSE
return ..()
/obj/item/poi/broken_drone_circuit/attack_self(mob/living/user as mob)
user.visible_message(message = "[user] is studiously examining [src]", self_message = "You take your time to analyze the circuit...")
var/message = ""
if(fried)
message += "Amidst the scorch mark, you barely make out [drone_name] stenciled on the board... \n"
to_chat(user, message)
return FALSE
else
message += "You see [drone_name] stenciled onto the board on close inspection! This looks like a secure drone intelligence strata. \n"
if(unlocked)
message += "The power logic to the blackbox is scorched. Whatever secrets lie in the blackbox are yours for taking! \n"
else if(wirecutted)
message += "The power wire to the blackbox has been cut. It's safe to pulse the circuit with power, the blackbox won't fry. \n"
else if(!unscrewed && !wirecutted)
message += "The blackbox is intact, it seems to have a direct wire into the PSU. Strange... \n"
else if(unscrewed && !wirecutted)
message += "Some manner of hardwired logic seems to connect the PSU into the databanks. There is no step-down circuit. \n \
It looks like a single pulse will fry this system for good\n"
if(unscrewed && !has_paper)
message += "Looks like there's a printer without any paper in it."
if(do_after(user, delay = 5 SECONDS))
to_chat(user, message)
..()