mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 10:12:45 +00:00
Camera network key itself is useless without security camera program. Created hidden version of this program and added it to each laptop. In short: it works.
167 lines
4.1 KiB
Plaintext
167 lines
4.1 KiB
Plaintext
// I am deciding that for sayustation's purposes directories are right out,
|
|
// we can't even get backpacks to work right with recursion, and that
|
|
// actually fucking matters. Metadata too, that can be added if ever needed.
|
|
|
|
/*
|
|
Files are datums that can be stored in digital storage devices
|
|
*/
|
|
|
|
/datum/file
|
|
var/name = "File"
|
|
var/extension = "dat"
|
|
var/volume = 10 // in KB
|
|
var/image = 'icons/ntos/file.png' // determines the icon to use, found in icons/ntos
|
|
var/obj/machinery/computer3/computer // the parent computer, if fixed
|
|
var/obj/item/part/computer/storage/device // the device that is containing this file
|
|
var/hidden_file = 0 // Prevents file from showing up on NTOS program list.
|
|
var/drm = 0 // Copy protection, called by copy() and move()
|
|
var/readonly = 0 // Edit protection, called by edit(), which is just a failcheck proc
|
|
|
|
proc/execute(var/datum/file/source)
|
|
return
|
|
|
|
//
|
|
// Copy file to device.
|
|
// If you overwrite this function, use the return value to make sure it succeeded
|
|
//
|
|
proc/copy(var/obj/item/part/computer/storage/dest)
|
|
if(!computer || computer.crit_fail) return null
|
|
if(drm)
|
|
if(!computer.emagged)
|
|
return null
|
|
var/datum/file/F = new type()
|
|
if(!dest.addfile(F))
|
|
return null // todo: arf here even though the player can't do a damn thing due to concurrency
|
|
return F
|
|
|
|
//
|
|
// Move file to device
|
|
// Returns null on failure even though the existing file doesn't go away
|
|
//
|
|
proc/move(var/obj/item/part/computer/storage/dest)
|
|
if(!computer || computer.crit_fail) return null
|
|
if(drm)
|
|
if(!computer.emagged)
|
|
return null
|
|
var/obj/item/part/computer/storage/current = device
|
|
if(!dest.addfile(src))
|
|
return null
|
|
current.removefile(src)
|
|
return src
|
|
|
|
//
|
|
// Determines if the file is editable. This does not use the DRM flag,
|
|
// but instead the readonly flag.
|
|
//
|
|
|
|
proc/edit()
|
|
if(!computer || computer.crit_fail)
|
|
return 0
|
|
if(readonly && !computer.emagged)
|
|
return 0 //
|
|
return 1
|
|
|
|
/*
|
|
Centcom root authorization certificate
|
|
|
|
Non-destructive, officially sanctioned.
|
|
Has the same effect on computers as an emag.
|
|
*/
|
|
/datum/file/centcom_auth
|
|
name = "Centcom Root Access Token"
|
|
extension = "auth"
|
|
volume = 100
|
|
copy()
|
|
return null
|
|
|
|
/*
|
|
A file that contains information
|
|
*/
|
|
|
|
/datum/file/data
|
|
|
|
var/content = "content goes here"
|
|
var/file_increment = 1
|
|
var/binary = 0 // determines if the file can't be opened by editor
|
|
|
|
// Set the content to a specific amount, increase filesize appropriately.
|
|
proc/set_content(var/text)
|
|
content = text
|
|
if(file_increment > 1)
|
|
volume = round(file_increment * length(text))
|
|
|
|
copy(var/obj/O)
|
|
var/datum/file/data/D = ..(O)
|
|
if(D)
|
|
D.content = content
|
|
D.readonly = readonly
|
|
|
|
New()
|
|
if(content)
|
|
if(file_increment > 1)
|
|
volume = round(file_increment * length(content))
|
|
|
|
/*
|
|
A generic file that contains text
|
|
*/
|
|
|
|
/datum/file/data/text
|
|
name = "Text File"
|
|
extension = "txt"
|
|
image = 'icons/ntos/file.png'
|
|
content = ""
|
|
file_increment = 0.002 // 0.002 kilobytes per character (1024 characters per KB)
|
|
|
|
/datum/file/data/text/ClownProphecy
|
|
name = "Clown Prophecy"
|
|
content = "HONKhHONKeHONKlHONKpHONKHONmKHONKeHONKHONKpHONKlHONKeHONKaHONKsHONKe"
|
|
|
|
|
|
/*
|
|
A file that contains research
|
|
*/
|
|
|
|
/datum/file/data/research
|
|
name = "Untitled Research"
|
|
binary = 1
|
|
content = "Untitled Tier X Research"
|
|
var/datum/tech/stored // the actual tech contents
|
|
volume = 1440
|
|
|
|
/*
|
|
A file that contains genetic information
|
|
*/
|
|
|
|
/datum/file/data/genome
|
|
name = "Genetic Buffer"
|
|
binary = 1
|
|
var/real_name = "Poop"
|
|
|
|
|
|
/datum/file/data/genome/SE
|
|
name = "Structural Enzymes"
|
|
var/mutantrace = null
|
|
|
|
/datum/file/data/genome/UE
|
|
name = "Unique Enzymes"
|
|
|
|
/*
|
|
the way genome computers now work, a subtype is the wrong way to do this;
|
|
it will no longer be picked up. You can change this later if you need to.
|
|
for now put it on a disk
|
|
|
|
/datum/file/data/genome/UE/GodEmperorOfMankind
|
|
name = "G.E.M.K."
|
|
content = "066000033000000000AF00330660FF4DB002690"
|
|
label = "God Emperor of Mankind"
|
|
*/
|
|
/datum/file/data/genome/UI
|
|
name = "Unique Identifier"
|
|
|
|
/datum/file/data/genome/UI/UE
|
|
name = "Unique Identifier + Unique Enzymes"
|
|
|
|
/datum/file/data/genome/cloning
|
|
name = "Cloning Data"
|
|
var/datum/data/record/record
|