mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-22 12:41:09 +01:00
Merge remote-tracking branch 'tgstation/master' into upstream-feb12-2026
# Conflicts: # .github/CODEOWNERS # .github/workflows/compile_changelogs.yml # .github/workflows/stale.yml # SQL/database_changelog.md # _maps/map_files/CatwalkStation/CatwalkStation_2023.dmm # code/__DEFINES/atom_hud.dm # code/__DEFINES/inventory.dm # code/__DEFINES/mobs.dm # code/__DEFINES/species_clothing_paths.dm # code/__DEFINES/subsystems.dm # code/__DEFINES/surgery.dm # code/__HELPERS/global_lists.dm # code/_globalvars/lists/maintenance_loot.dm # code/_globalvars/traits/_traits.dm # code/controllers/subsystem/minor_mapping.dm # code/controllers/subsystem/processing/quirks.dm # code/controllers/subsystem/shuttle.dm # code/datums/components/palette.dm # code/datums/components/surgery_initiator.dm # code/datums/diseases/advance/advance.dm # code/datums/hud.dm # code/datums/mood.dm # code/datums/mutations/chameleon.dm # code/datums/quirks/negative_quirks/nyctophobia.dm # code/datums/status_effects/debuffs/debuffs.dm # code/datums/status_effects/debuffs/drunk.dm # code/datums/status_effects/debuffs/slime/slime_leech.dm # code/datums/weather/weather.dm # code/game/data_huds.dm # code/game/objects/items.dm # code/game/objects/items/devices/scanners/health_analyzer.dm # code/game/objects/items/frog_statue.dm # code/game/objects/items/rcd/RLD.dm # code/game/objects/items/robot/items/hypo.dm # code/game/objects/items/stacks/medical.dm # code/game/objects/items/stacks/wrap.dm # code/game/objects/items/storage/garment.dm # code/game/objects/items/tools/medical/defib.dm # code/game/objects/items/weaponry.dm # code/game/objects/items/weaponry/melee/misc.dm # code/game/objects/structures/crates_lockers/closets/secure/security.dm # code/game/objects/structures/curtains.dm # code/game/objects/structures/dresser.dm # code/game/objects/structures/girders.dm # code/game/objects/structures/maintenance.dm # code/game/objects/structures/mirror.dm # code/modules/admin/greyscale_modify_menu.dm # code/modules/admin/verbs/light_debug.dm # code/modules/antagonists/ashwalker/ashwalker.dm # code/modules/antagonists/heretic/knowledge/starting_lore.dm # code/modules/antagonists/ninja/ninjaDrainAct.dm # code/modules/art/paintings.dm # code/modules/client/preferences.dm # code/modules/client/verbs/ooc.dm # code/modules/clothing/head/wig.dm # code/modules/events/disease_outbreak.dm # code/modules/holodeck/holo_effect.dm # code/modules/jobs/job_types/head_of_security.dm # code/modules/jobs/job_types/security_officer.dm # code/modules/library/skill_learning/generic_skillchips/point.dm # code/modules/mining/lavaland/ash_flora.dm # code/modules/mining/lavaland/mining_loot/megafauna/ash_drake.dm # code/modules/mob/dead/new_player/new_player.dm # code/modules/mob/living/basic/guardian/guardian.dm # code/modules/mob/living/basic/space_fauna/space_dragon/space_dragon.dm # code/modules/mob/living/carbon/carbon.dm # code/modules/mob/living/carbon/human/human.dm # code/modules/mob/living/carbon/human/human_defines.dm # code/modules/mob/living/carbon/life.dm # code/modules/mob/living/living.dm # code/modules/mob/living/living_defines.dm # code/modules/mob/mob.dm # code/modules/mob_spawn/ghost_roles/mining_roles.dm # code/modules/mod/mod_control.dm # code/modules/mod/modules/modules_general.dm # code/modules/modular_computers/computers/item/computer_ui.dm # code/modules/paperwork/paper.dm # code/modules/paperwork/paperbin.dm # code/modules/power/lighting/light.dm # code/modules/projectiles/guns/energy/kinetic_accelerator.dm # code/modules/projectiles/projectile.dm # code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm # code/modules/reagents/chemistry/reagents/food_reagents.dm # code/modules/reagents/chemistry/reagents/other_reagents.dm # code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm # code/modules/research/xenobiology/crossbreeding/_clothing.dm # code/modules/research/xenobiology/crossbreeding/prismatic.dm # code/modules/surgery/advanced/brainwashing.dm # code/modules/surgery/advanced/lobotomy.dm # code/modules/surgery/amputation.dm # code/modules/surgery/blood_filter.dm # code/modules/surgery/bodyparts/_bodyparts.dm # code/modules/surgery/brain_surgery.dm # code/modules/surgery/cavity_implant.dm # code/modules/surgery/coronary_bypass.dm # code/modules/surgery/gastrectomy.dm # code/modules/surgery/healing.dm # code/modules/surgery/limb_augmentation.dm # code/modules/surgery/organ_manipulation.dm # code/modules/surgery/revival.dm # code/modules/surgery/sleeper_protocol.dm # code/modules/surgery/surgery_helpers.dm # code/modules/surgery/surgery_step.dm # code/modules/unit_tests/_unit_tests.dm # code/modules/unit_tests/designs.dm # code/modules/unit_tests/icon_state_worn.dm # code/modules/unit_tests/screenshots/screenshot_antag_icons_cultist.png # code/modules/unit_tests/screenshots/screenshot_antag_icons_headrevolutionary.png # code/modules/unit_tests/screenshots/screenshot_antag_icons_provocateur.png # code/modules/unit_tests/screenshots/screenshot_husk_body.png # code/modules/unit_tests/screenshots/screenshot_husk_body_missing_limbs.png # icons/map_icons/clothing/head/_head.dmi # icons/map_icons/clothing/shoes.dmi # icons/map_icons/items/_item.dmi # icons/mob/huds/hud.dmi # icons/mob/inhands/64x64_lefthand.dmi # icons/mob/inhands/64x64_righthand.dmi # icons/obj/machines/computer.dmi # tgui/packages/tgui/interfaces/OperatingComputer.jsx # tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/MainPage.tsx # tgui/packages/tgui/interfaces/PreferencesMenu/types.ts # tgui/packages/tgui/interfaces/SurgeryInitiator.tsx # tools/icon_cutter/check.py
This commit is contained in:
@@ -19,7 +19,7 @@
|
||||
///The alt slot, only used by certain UIs like the access app.
|
||||
var/obj/item/card/id/alt_stored_id
|
||||
///The disk in this PDA. If set, this will be inserted on Initialize.
|
||||
var/obj/item/computer_disk/inserted_disk
|
||||
var/obj/item/disk/computer/inserted_disk
|
||||
///The power cell the computer uses to run on.
|
||||
var/obj/item/stock_parts/power_store/internal_cell = /obj/item/stock_parts/power_store/cell
|
||||
///A pAI currently loaded into the modular computer.
|
||||
@@ -626,7 +626,7 @@
|
||||
physical.loc.visible_message(span_notice("[icon2html(physical, viewers(physical.loc))] \The [src] displays a [call_source.filedesc] notification: [alerttext]"))
|
||||
|
||||
/obj/item/modular_computer/proc/ring(ringtone, list/balloon_alertees) // bring bring
|
||||
if(!use_energy())
|
||||
if(!use_energy(check_programs = FALSE))
|
||||
return
|
||||
if(HAS_TRAIT(SSstation, STATION_TRAIT_PDA_GLITCHED))
|
||||
playsound(src, pick(
|
||||
@@ -873,6 +873,8 @@
|
||||
/obj/item/modular_computer/wrench_act_secondary(mob/living/user, obj/item/tool)
|
||||
. = ..()
|
||||
tool.play_tool_sound(src, user, 20, volume=20)
|
||||
if(!do_after(user, 2 SECONDS, target = physical))
|
||||
return ITEM_INTERACT_BLOCKING
|
||||
deconstruct(TRUE)
|
||||
user.balloon_alert(user, "disassembled")
|
||||
return ITEM_INTERACT_SUCCESS
|
||||
@@ -928,7 +930,7 @@
|
||||
if(istype(tool, /obj/item/paper_bin))
|
||||
return paper_bin_act(user, tool)
|
||||
|
||||
if(istype(tool, /obj/item/computer_disk))
|
||||
if(istype(tool, /obj/item/disk/computer))
|
||||
return computer_disk_act(user, tool)
|
||||
|
||||
return NONE
|
||||
@@ -965,7 +967,7 @@
|
||||
return ITEM_INTERACT_SUCCESS
|
||||
|
||||
/obj/item/modular_computer/proc/photo_act(mob/user, obj/item/photo/scanned_photo)
|
||||
if(!store_file(new /datum/computer_file/picture(scanned_photo.picture)))
|
||||
if(!store_file(new /datum/computer_file/picture(scanned_photo.picture), user))
|
||||
balloon_alert(user, "no space!")
|
||||
return ITEM_INTERACT_BLOCKING
|
||||
balloon_alert(user, "photo scanned")
|
||||
@@ -1000,7 +1002,7 @@
|
||||
bin.update_appearance()
|
||||
return ITEM_INTERACT_SUCCESS
|
||||
|
||||
/obj/item/modular_computer/proc/computer_disk_act(mob/user, obj/item/computer_disk/disk)
|
||||
/obj/item/modular_computer/proc/computer_disk_act(mob/user, obj/item/disk/computer/disk)
|
||||
if(!user.transferItemToLoc(disk, src))
|
||||
return ITEM_INTERACT_BLOCKING
|
||||
if(inserted_disk)
|
||||
|
||||
@@ -3,8 +3,9 @@
|
||||
*
|
||||
* Adds an already initialized file to the computer, checking if one already exists.
|
||||
* Returns TRUE if successfully stored, FALSE otherwise.
|
||||
* user is optional: If set, the action was done by a mob/player
|
||||
*/
|
||||
/obj/item/modular_computer/proc/store_file(datum/computer_file/file_storing)
|
||||
/obj/item/modular_computer/proc/store_file(datum/computer_file/file_storing, mob/user)
|
||||
if(!file_storing || !istype(file_storing))
|
||||
return FALSE
|
||||
if(!can_store_file(file_storing))
|
||||
@@ -16,8 +17,8 @@
|
||||
|
||||
file_storing.computer = src
|
||||
used_capacity += file_storing.size
|
||||
SEND_SIGNAL(file_storing, COMSIG_COMPUTER_FILE_STORE, src)
|
||||
SEND_SIGNAL(src, COMSIG_MODULAR_COMPUTER_FILE_STORE, file_storing)
|
||||
SEND_SIGNAL(file_storing, COMSIG_COMPUTER_FILE_STORE, src, user)
|
||||
SEND_SIGNAL(src, COMSIG_MODULAR_COMPUTER_FILE_STORE, file_storing, user)
|
||||
return TRUE
|
||||
|
||||
/**
|
||||
@@ -74,7 +75,7 @@
|
||||
* the same filename (disregarding extension), will return it.
|
||||
* If a computer disk is passed instead, it will check the disk over the computer.
|
||||
*/
|
||||
/obj/item/modular_computer/proc/find_file_by_name(filename, obj/item/computer_disk/target_disk)
|
||||
/obj/item/modular_computer/proc/find_file_by_name(filename, obj/item/disk/computer/target_disk)
|
||||
if(!istext(filename))
|
||||
return null
|
||||
if(isnull(target_disk))
|
||||
@@ -94,7 +95,7 @@
|
||||
* A file's uid is always unique to them, so this proc is sometimes preferable over find_file_by_name.
|
||||
* If a computer disk is passed instead, it will check the disk over the computer.
|
||||
*/
|
||||
/obj/item/modular_computer/proc/find_file_by_uid(uid, obj/item/computer_disk/target_disk)
|
||||
/obj/item/modular_computer/proc/find_file_by_uid(uid, obj/item/disk/computer/target_disk)
|
||||
if(!isnum(uid))
|
||||
return null
|
||||
if(isnull(target_disk))
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
if(!internal_cell)
|
||||
return FALSE
|
||||
if(internal_cell.use(amount))
|
||||
if(!amount || internal_cell.use(amount))
|
||||
return TRUE
|
||||
if(!check_programs)
|
||||
return FALSE
|
||||
|
||||
@@ -176,7 +176,7 @@
|
||||
var/mob/user = usr
|
||||
var/new_color
|
||||
while(!new_color)
|
||||
new_color = tgui_color_picker(user, "Choose a new color for [src]'s flashlight.", "Light Color",light_color) // BUBBERSTATION EDIT: TGUI COLOR PICKER
|
||||
new_color = tgui_color_picker(user, "Choose a new color for [src]'s flashlight.", "Light Color",light_color)
|
||||
if(!new_color)
|
||||
return
|
||||
if(is_color_dark(new_color, 50) ) //Colors too dark are rejected
|
||||
|
||||
@@ -1,26 +1,21 @@
|
||||
/obj/item/computer_disk
|
||||
name = "data disk"
|
||||
desc = "Removable disk used to store data."
|
||||
icon = 'icons/obj/devices/circuitry_n_data.dmi'
|
||||
icon_state = "datadisk6"
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
///The amount of storage space is on the disk
|
||||
/obj/item/disk/computer
|
||||
/// The amount of free storage space
|
||||
var/max_capacity = 16
|
||||
///The amount of storage space we've got filled
|
||||
/// The amount of storage space occupied
|
||||
var/used_capacity = 0
|
||||
///List of stored files on this drive. DO NOT MODIFY DIRECTLY!
|
||||
/// List of stored files on this drive. Do NOT directly modify; use setters instead.
|
||||
var/list/datum/computer_file/stored_files = list()
|
||||
|
||||
///List of all programs that the disk should start with.
|
||||
/// List of all programs that the disk should start with
|
||||
var/list/datum/computer_file/starting_programs = list()
|
||||
|
||||
/obj/item/computer_disk/Initialize(mapload)
|
||||
/obj/item/disk/computer/Initialize(mapload)
|
||||
. = ..()
|
||||
for(var/programs in starting_programs)
|
||||
var/datum/computer_file/program_type = new programs
|
||||
add_file(program_type)
|
||||
|
||||
/obj/item/computer_disk/Destroy(force)
|
||||
/obj/item/disk/computer/Destroy(force)
|
||||
. = ..()
|
||||
QDEL_LIST(stored_files)
|
||||
|
||||
@@ -29,7 +24,7 @@
|
||||
*
|
||||
* Attempts to add an already existing file to the computer disk, then adds that capacity to the used capicity.
|
||||
*/
|
||||
/obj/item/computer_disk/proc/add_file(datum/computer_file/file)
|
||||
/obj/item/disk/computer/proc/add_file(datum/computer_file/file)
|
||||
if((file.size + used_capacity) > max_capacity)
|
||||
return FALSE
|
||||
stored_files.Add(file)
|
||||
@@ -42,7 +37,7 @@
|
||||
*
|
||||
* Removes an app from the stored_files list, then removes their size from the capacity.
|
||||
*/
|
||||
/obj/item/computer_disk/proc/remove_file(datum/computer_file/file)
|
||||
/obj/item/disk/computer/proc/remove_file(datum/computer_file/file)
|
||||
if(!(file in stored_files))
|
||||
return FALSE
|
||||
stored_files.Remove(file)
|
||||
@@ -50,12 +45,12 @@
|
||||
qdel(file)
|
||||
return TRUE
|
||||
|
||||
/obj/item/computer_disk/advanced
|
||||
/obj/item/disk/computer/advanced
|
||||
name = "advanced data disk"
|
||||
icon_state = "datadisk5"
|
||||
max_capacity = 64
|
||||
|
||||
/obj/item/computer_disk/super
|
||||
/obj/item/disk/computer/super
|
||||
name = "super data disk"
|
||||
desc = "Removable disk used to store large amounts of data."
|
||||
icon_state = "datadisk3"
|
||||
|
||||
@@ -1,30 +1,30 @@
|
||||
/obj/item/computer_disk/maintenance
|
||||
/obj/item/disk/computer/maintenance
|
||||
name = "maintenance data disk"
|
||||
desc = "A data disk forgotten in the depths of maintenance, might have some useful program on it."
|
||||
|
||||
/// Medical health analyzer app
|
||||
/obj/item/computer_disk/maintenance/scanner
|
||||
/obj/item/disk/computer/maintenance/scanner
|
||||
starting_programs = list(/datum/computer_file/program/maintenance/phys_scanner)
|
||||
|
||||
///Camera app, forced to always have largest image size
|
||||
/obj/item/computer_disk/maintenance/camera
|
||||
/obj/item/disk/computer/maintenance/camera
|
||||
starting_programs = list(/datum/computer_file/program/maintenance/camera)
|
||||
|
||||
///MODsuit UI, in your PDA!
|
||||
/obj/item/computer_disk/maintenance/modsuit_control
|
||||
/obj/item/disk/computer/maintenance/modsuit_control
|
||||
starting_programs = list(/datum/computer_file/program/maintenance/modsuit_control)
|
||||
|
||||
///Returns A 'spookiness' value based on the number of ghastly creature and hauntium and their distance from the PC.
|
||||
/obj/item/computer_disk/maintenance/spectre_meter
|
||||
/obj/item/disk/computer/maintenance/spectre_meter
|
||||
starting_programs = list(/datum/computer_file/program/maintenance/spectre_meter)
|
||||
|
||||
///A version of the arcade program with less HP/MP for the enemy and more for the player
|
||||
/obj/item/computer_disk/maintenance/arcade
|
||||
/obj/item/disk/computer/maintenance/arcade
|
||||
starting_programs = list(/datum/computer_file/program/arcade/eazy)
|
||||
|
||||
/obj/item/computer_disk/maintenance/theme/Initialize(mapload)
|
||||
/obj/item/disk/computer/maintenance/theme/Initialize(mapload)
|
||||
starting_programs = list(pick(subtypesof(/datum/computer_file/program/maintenance/theme)))
|
||||
return ..()
|
||||
|
||||
/obj/item/computer_disk/maintenance/cool_sword
|
||||
/obj/item/disk/computer/maintenance/cool_sword
|
||||
starting_programs = list(/datum/computer_file/program/maintenance/cool_sword)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Command
|
||||
*/
|
||||
/obj/item/computer_disk/command
|
||||
/obj/item/disk/computer/command
|
||||
icon_state = "datadisk7"
|
||||
max_capacity = 32
|
||||
///Static list of programss ALL command tablets have.
|
||||
@@ -10,13 +10,13 @@
|
||||
/datum/computer_file/program/status,
|
||||
)
|
||||
|
||||
/obj/item/computer_disk/command/Initialize(mapload)
|
||||
/obj/item/disk/computer/command/Initialize(mapload)
|
||||
. = ..()
|
||||
for(var/programs in command_programs)
|
||||
var/datum/computer_file/program/program_type = new programs
|
||||
add_file(program_type)
|
||||
|
||||
/obj/item/computer_disk/command/captain
|
||||
/obj/item/disk/computer/command/captain
|
||||
name = "captain data disk"
|
||||
desc = "Removable disk used to download essential Captain tablet apps."
|
||||
icon_state = "datadisk10"
|
||||
@@ -25,21 +25,21 @@
|
||||
/datum/computer_file/program/records/medical,
|
||||
)
|
||||
|
||||
/obj/item/computer_disk/command/cmo
|
||||
/obj/item/disk/computer/command/cmo
|
||||
name = "chief medical officer data disk"
|
||||
desc = "Removable disk used to download essential CMO tablet apps."
|
||||
starting_programs = list(
|
||||
/datum/computer_file/program/records/medical,
|
||||
)
|
||||
|
||||
/obj/item/computer_disk/command/rd
|
||||
/obj/item/disk/computer/command/rd
|
||||
name = "research director data disk"
|
||||
desc = "Removable disk used to download essential RD tablet apps."
|
||||
starting_programs = list(
|
||||
/datum/computer_file/program/signal_commander,
|
||||
)
|
||||
|
||||
/obj/item/computer_disk/command/hos
|
||||
/obj/item/disk/computer/command/hos
|
||||
name = "head of security data disk"
|
||||
desc = "Removable disk used to download essential HoS tablet apps."
|
||||
icon_state = "datadisk9"
|
||||
@@ -47,7 +47,7 @@
|
||||
/datum/computer_file/program/records/security,
|
||||
)
|
||||
|
||||
/obj/item/computer_disk/command/hop
|
||||
/obj/item/disk/computer/command/hop
|
||||
name = "head of personnel data disk"
|
||||
desc = "Removable disk used to download essential HoP tablet apps."
|
||||
starting_programs = list(
|
||||
@@ -55,7 +55,7 @@
|
||||
/datum/computer_file/program/job_management,
|
||||
)
|
||||
|
||||
/obj/item/computer_disk/command/ce
|
||||
/obj/item/disk/computer/command/ce
|
||||
name = "chief engineer data disk"
|
||||
desc = "Removable disk used to download essential CE tablet apps."
|
||||
starting_programs = list(
|
||||
@@ -67,7 +67,7 @@
|
||||
/**
|
||||
* Security
|
||||
*/
|
||||
/obj/item/computer_disk/security
|
||||
/obj/item/disk/computer/security
|
||||
name = "security officer data disk"
|
||||
desc = "Removable disk used to download security-related tablet apps."
|
||||
icon_state = "datadisk9"
|
||||
@@ -78,7 +78,7 @@
|
||||
/**
|
||||
* Medical
|
||||
*/
|
||||
/obj/item/computer_disk/medical
|
||||
/obj/item/disk/computer/medical
|
||||
name = "medical doctor data disk"
|
||||
desc = "Removable disk used to download medical-related tablet apps."
|
||||
icon_state = "datadisk7"
|
||||
@@ -89,10 +89,10 @@
|
||||
/**
|
||||
* Supply
|
||||
*/
|
||||
/obj/item/computer_disk/quartermaster
|
||||
/obj/item/disk/computer/quartermaster
|
||||
name = "cargo data disk"
|
||||
desc = "Removable disk used to download cargo-related tablet apps."
|
||||
icon_state = "cargodisk"
|
||||
icon_state = "datadisk12"
|
||||
starting_programs = list(
|
||||
/datum/computer_file/program/shipping,
|
||||
/datum/computer_file/program/budgetorders,
|
||||
@@ -102,7 +102,7 @@
|
||||
/**
|
||||
* Science
|
||||
*/
|
||||
/obj/item/computer_disk/ordnance
|
||||
/obj/item/disk/computer/ordnance
|
||||
name = "ordnance data disk"
|
||||
desc = "Removable disk used to download ordnance-related tablet apps."
|
||||
icon_state = "datadisk5"
|
||||
@@ -114,7 +114,7 @@
|
||||
/**
|
||||
* Engineering
|
||||
*/
|
||||
/obj/item/computer_disk/engineering
|
||||
/obj/item/disk/computer/engineering
|
||||
name = "engineering data disk"
|
||||
desc = "Removable disk used to download engineering-related tablet apps."
|
||||
icon_state = "datadisk6"
|
||||
|
||||
@@ -1,19 +1,27 @@
|
||||
/obj/item/computer_disk/syndicate
|
||||
/obj/item/disk/computer/syndicate
|
||||
name = "golden data disk"
|
||||
desc = "A data disk with some high-tech programs, probably expensive as hell."
|
||||
icon_state = "datadisk8"
|
||||
icon_state = "datadisk9"
|
||||
custom_materials = list(/datum/material/gold = SMALL_MATERIAL_AMOUNT)
|
||||
|
||||
/obj/item/computer_disk/syndicate/camera_app
|
||||
/obj/item/disk/computer/syndicate/Initialize(mapload)
|
||||
. = ..()
|
||||
add_overlay("o_syndicate")
|
||||
|
||||
/obj/item/disk/computer/syndicate/camera_app
|
||||
starting_programs = list(/datum/computer_file/program/secureye/syndicate)
|
||||
|
||||
/obj/item/computer_disk/syndicate/contractor
|
||||
/obj/item/disk/computer/syndicate/contractor
|
||||
starting_programs = list(/datum/computer_file/program/contract_uplink)
|
||||
|
||||
/obj/item/computer_disk/black_market
|
||||
/obj/item/disk/computer/black_market
|
||||
desc = "Removable disk used to store data. This one has a smudged piece of paper glued to it, reading \"PC softwarez\"."
|
||||
|
||||
/obj/item/computer_disk/black_market/Initialize(mapload)
|
||||
/obj/item/disk/computer/black_market/Initialize(mapload)
|
||||
. = ..()
|
||||
add_overlay("o_code")
|
||||
|
||||
/obj/item/disk/computer/black_market/Initialize(mapload)
|
||||
icon_state = "datadisk[rand(0, 10)]"
|
||||
//Populated with programs not found in the verified downloader app or that require access to download (but not to run).
|
||||
var/list/potential_programs = list(
|
||||
|
||||
@@ -2,14 +2,14 @@
|
||||
* Virus disk
|
||||
* Can't hold apps, instead does unique actions.
|
||||
*/
|
||||
/obj/item/computer_disk/virus
|
||||
/obj/item/disk/computer/virus
|
||||
name = "\improper generic virus disk"
|
||||
icon_state = "virusdisk"
|
||||
max_capacity = 0
|
||||
///How many charges the virus has left
|
||||
var/charges = 5
|
||||
|
||||
/obj/item/computer_disk/virus/proc/send_virus(obj/item/modular_computer/pda/source, obj/item/modular_computer/pda/target, mob/living/user, message)
|
||||
/obj/item/disk/computer/virus/proc/send_virus(obj/item/modular_computer/pda/source, obj/item/modular_computer/pda/target, mob/living/user, message)
|
||||
if(charges <= 0)
|
||||
to_chat(user, span_notice("ERROR: Out of charges."))
|
||||
return FALSE
|
||||
@@ -23,10 +23,10 @@
|
||||
* Makes people's PDA honk
|
||||
* Can also be used on open panel airlocks to make them honk on opening.
|
||||
*/
|
||||
/obj/item/computer_disk/virus/clown
|
||||
/obj/item/disk/computer/virus/clown
|
||||
name = "\improper H.O.N.K. disk"
|
||||
|
||||
/obj/item/computer_disk/virus/clown/send_virus(obj/item/modular_computer/pda/source, obj/item/modular_computer/pda/target, mob/living/user, message)
|
||||
/obj/item/disk/computer/virus/clown/send_virus(obj/item/modular_computer/pda/source, obj/item/modular_computer/pda/target, mob/living/user, message)
|
||||
. = ..()
|
||||
if(!.)
|
||||
return FALSE
|
||||
@@ -40,10 +40,10 @@
|
||||
* Mime virus
|
||||
* Makes PDA's silent, removing their ringtone.
|
||||
*/
|
||||
/obj/item/computer_disk/virus/mime
|
||||
/obj/item/disk/computer/virus/mime
|
||||
name = "\improper sound of silence disk"
|
||||
|
||||
/obj/item/computer_disk/virus/mime/send_virus(obj/item/modular_computer/pda/source, obj/item/modular_computer/pda/target, mob/living/user, message)
|
||||
/obj/item/disk/computer/virus/mime/send_virus(obj/item/modular_computer/pda/source, obj/item/modular_computer/pda/target, mob/living/user, message)
|
||||
. = ..()
|
||||
if(!.)
|
||||
return FALSE
|
||||
@@ -60,11 +60,11 @@
|
||||
* Detomatix virus
|
||||
* Sends a false message, and blows the PDA up if the target responds to it (or opens their messenger before a timer)
|
||||
*/
|
||||
/obj/item/computer_disk/virus/detomatix
|
||||
/obj/item/disk/computer/virus/detomatix
|
||||
name = "\improper D.E.T.O.M.A.T.I.X. disk"
|
||||
charges = 6
|
||||
|
||||
/obj/item/computer_disk/virus/detomatix/send_virus(obj/item/modular_computer/pda/source, obj/item/modular_computer/pda/target, mob/living/user, message)
|
||||
/obj/item/disk/computer/virus/detomatix/send_virus(obj/item/modular_computer/pda/source, obj/item/modular_computer/pda/target, mob/living/user, message)
|
||||
. = ..()
|
||||
if(!.)
|
||||
return FALSE
|
||||
@@ -101,7 +101,7 @@
|
||||
* Creates and opens a false uplink on someone's PDA
|
||||
* Can be loaded with TC to show up on the false uplink.
|
||||
*/
|
||||
/obj/item/computer_disk/virus/frame
|
||||
/obj/item/disk/computer/virus/frame
|
||||
name = "\improper F.R.A.M.E. disk"
|
||||
|
||||
///How many telecrystals the uplink should have
|
||||
@@ -109,7 +109,7 @@
|
||||
///How much progression should be shown in the uplink, set on purchase of the item.
|
||||
var/current_progression = 0
|
||||
|
||||
/obj/item/computer_disk/virus/frame/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers)
|
||||
/obj/item/disk/computer/virus/frame/attackby(obj/item/attacking_item, mob/user, list/modifiers, list/attack_modifiers)
|
||||
. = ..()
|
||||
if(!istype(attacking_item, /obj/item/stack/telecrystal))
|
||||
return
|
||||
@@ -122,7 +122,7 @@
|
||||
telecrystal_stack.use(telecrystal_stack.amount)
|
||||
|
||||
|
||||
/obj/item/computer_disk/virus/frame/send_virus(obj/item/modular_computer/pda/source, obj/item/modular_computer/pda/target, mob/living/user, message)
|
||||
/obj/item/disk/computer/virus/frame/send_virus(obj/item/modular_computer/pda/source, obj/item/modular_computer/pda/target, mob/living/user, message)
|
||||
. = ..()
|
||||
if(!.)
|
||||
return FALSE
|
||||
|
||||
@@ -116,9 +116,9 @@
|
||||
if(!target_machine.panel_open && !istype(target, /obj/machinery/computer))
|
||||
return ..()
|
||||
|
||||
if(!istype(inserted_disk, /obj/item/computer_disk/virus/clown))
|
||||
if(!istype(inserted_disk, /obj/item/disk/computer/virus/clown))
|
||||
return ..()
|
||||
var/obj/item/computer_disk/virus/clown/installed_cartridge = inserted_disk
|
||||
var/obj/item/disk/computer/virus/clown/installed_cartridge = inserted_disk
|
||||
if(!installed_cartridge.charges)
|
||||
to_chat(user, span_notice("Out of virus charges."))
|
||||
return ..()
|
||||
@@ -229,7 +229,7 @@
|
||||
|
||||
if(current_turf)
|
||||
current_turf.hotspot_expose(700,125)
|
||||
if(istype(inserted_disk, /obj/item/computer_disk/virus/detomatix))
|
||||
if(istype(inserted_disk, /obj/item/disk/computer/virus/detomatix))
|
||||
explosion(src, devastation_range = -1, heavy_impact_range = 1, light_impact_range = 3, flash_range = 4)
|
||||
else
|
||||
explosion(src, devastation_range = -1, heavy_impact_range = -1, light_impact_range = 2, flash_range = 3)
|
||||
@@ -251,6 +251,14 @@
|
||||
if(new_ringtone && (new_ringtone != MESSENGER_RINGTONE_DEFAULT))
|
||||
update_ringtone(new_ringtone)
|
||||
|
||||
var/datum/computer_file/program/themeify/theme_app = locate() in stored_files
|
||||
if(theme_app)
|
||||
var/list/unlocked_themes = owner_client.get_award_status(/datum/award/score/progress/pda_themes)
|
||||
for(var/theme_id in unlocked_themes)
|
||||
var/theme_name = GLOB.pda_id_to_name[theme_id]
|
||||
if(theme_name)
|
||||
LAZYOR(theme_app.imported_themes, theme_name)
|
||||
|
||||
var/new_theme = owner_client.prefs.read_preference(/datum/preference/choiced/pda_theme)
|
||||
if(new_theme)
|
||||
device_theme = GLOB.pda_name_to_theme[new_theme]
|
||||
|
||||
@@ -326,7 +326,7 @@
|
||||
icon = 'icons/obj/devices/modular_pda.dmi'
|
||||
icon_state = "pda-clown"
|
||||
post_init_icon_state = null
|
||||
inserted_disk = /obj/item/computer_disk/virus/clown
|
||||
inserted_disk = /obj/item/disk/computer/virus/clown
|
||||
greyscale_config = null
|
||||
greyscale_colors = null
|
||||
inserted_item = /obj/item/toy/crayon/rainbow
|
||||
@@ -358,7 +358,7 @@
|
||||
|
||||
/obj/item/modular_computer/pda/clown/proc/AfterSlip(mob/living/carbon/human/M)
|
||||
if (istype(M) && (M.real_name != saved_identification))
|
||||
var/obj/item/computer_disk/virus/clown/cart = inserted_disk
|
||||
var/obj/item/disk/computer/virus/clown/cart = inserted_disk
|
||||
if(istype(cart) && cart.charges < 5)
|
||||
cart.charges++
|
||||
playsound(src,'sound/machines/ping.ogg',30,TRUE)
|
||||
@@ -368,7 +368,7 @@
|
||||
|
||||
/obj/item/modular_computer/pda/mime
|
||||
name = "mime PDA"
|
||||
inserted_disk = /obj/item/computer_disk/virus/mime
|
||||
inserted_disk = /obj/item/disk/computer/virus/mime
|
||||
icon_state = "/obj/item/modular_computer/pda/mime"
|
||||
greyscale_config = /datum/greyscale_config/tablet/mime
|
||||
greyscale_colors = "#FAFAFA#EA3232"
|
||||
@@ -503,7 +503,7 @@
|
||||
var/datum/computer_file/program/themeify/theme_app = locate() in stored_files
|
||||
if(theme_app)
|
||||
for(var/theme_key in GLOB.pda_name_to_theme - GLOB.default_pda_themes)
|
||||
theme_app.imported_themes += theme_key
|
||||
LAZYADD(theme_app.imported_themes, theme_key)
|
||||
|
||||
/obj/item/modular_computer/pda/clear/get_messenger_ending()
|
||||
return "Sent from my crystal PDA"
|
||||
|
||||
Reference in New Issue
Block a user