mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-14 11:42:27 +00:00
About The Pull Request Sprites were generously made by https://github.com/Tramzz This was a branch I've been putting off for months because my hatred for tablet apps brought me to removing computer parts, tablets, and ntnet, however I've now returned (after a lot more procrastination). Adds Maintenance tablet applications to the game, so far there's only three of them, for proof of concept; The health analyzer app (the chem analyzer part is removed entirely) move away from being given to medical/geneticists/detectives/RD. There is on exception, which is the CMO, who gets to have the application on their tablet roundstart. Maybe it could be given to their role disk as well? A camera application: image image MODsuit control application: image image image Maintenance applications stand out from normal tablet apps because they can't be downloaded off the App store, and instead can only be found in maintenance, with a one-use download, cloning the application from a disk to a computer, or vice versa, will delete the old one, meaning you can only have one application at once. Why It's Good For The Game This is more as a proof of concept for maintenance applications, but I also think that the analyzer application wasn't really that good as an app, you should either use a health analyzer or the wand in front of medbay, you shouldn't just have one in your tablet at all times because it makes it lame if your analyzer is stolen. Changelog cl JohnFulpWillard, sprites by Tramzz add: Added Maintenance tablet applications, applications that can't be cloned or downloaded from the store, instead you can find one app in maintenance. balance: The Analyzer tablet application is also a maintenance tablet application now. /cl
75 lines
2.4 KiB
Plaintext
75 lines
2.4 KiB
Plaintext
/datum/computer_file
|
|
///The name of the internal file shown in file management.
|
|
var/filename = "NewFile"
|
|
///The type of file format the file is in, placed after filename. PNG, TXT, ect. This would be NewFile.XXX
|
|
var/filetype = "XXX"
|
|
///How much GQ storage space the file will take to store. Integers only!
|
|
var/size = 1
|
|
///Whether the file may be deleted. Setting to TRUE prevents deletion/renaming/etc.
|
|
var/undeletable = FALSE
|
|
///The computer file's personal ID
|
|
var/uid
|
|
///Static ID to ensure all IDs are unique.
|
|
var/static/file_uid = 0
|
|
///The modular computer hosting the file.
|
|
var/obj/item/modular_computer/computer
|
|
///The computer disk hosting the file.
|
|
var/obj/item/computer_disk/disk_host
|
|
|
|
/datum/computer_file/New()
|
|
..()
|
|
uid = file_uid++
|
|
RegisterSignal(src, COMSIG_MODULAR_COMPUTER_FILE_ADDED, PROC_REF(on_install))
|
|
|
|
/datum/computer_file/Destroy(force)
|
|
if(computer)
|
|
computer.remove_file(src)
|
|
computer = null
|
|
if(disk_host)
|
|
disk_host.remove_file(src)
|
|
disk_host = null
|
|
return ..()
|
|
|
|
// Returns independent copy of this file.
|
|
/datum/computer_file/proc/clone(rename = FALSE)
|
|
var/datum/computer_file/temp = new type
|
|
temp.undeletable = undeletable
|
|
temp.size = size
|
|
if(rename)
|
|
temp.filename = filename + "(Copy)"
|
|
else
|
|
temp.filename = filename
|
|
temp.filetype = filetype
|
|
return temp
|
|
|
|
///Called post-installation of an application in a computer, after 'computer' var is set.
|
|
/datum/computer_file/proc/on_install()
|
|
SIGNAL_HANDLER
|
|
return
|
|
|
|
/**
|
|
* Called when examining a modular computer
|
|
* Args:
|
|
* Source - The tablet that's being examined
|
|
* User - Person examining the computer
|
|
*
|
|
* note: please replace this with signals when hdd's are removed and program's New() already has the tablet set.
|
|
*/
|
|
/datum/computer_file/proc/on_examine(obj/item/modular_computer/source, mob/user)
|
|
return null
|
|
|
|
/// Called when attacking a tablet with an item, checking if any application uses it. Return TRUE to cancel the attack chain.
|
|
/datum/computer_file/proc/application_attackby(obj/item/attacking_item, mob/living/user)
|
|
return FALSE
|
|
|
|
/**
|
|
* Implement this when your program has an object that the user can eject.
|
|
*
|
|
* Examples include ejecting cells AI intellicards.
|
|
* Arguments:
|
|
* * user - The mob requesting the eject.
|
|
* * forced - Whether we are forced to eject everything (usually by the app being deleted)
|
|
*/
|
|
/datum/computer_file/proc/try_eject(mob/living/user, forced = FALSE)
|
|
return FALSE
|