Files
VOREStation/code/modules/nifsoft/software/15_misc.dm
T
Cameron Lennox 84dc5535dc var/global/list -> GLOB. conversion (#17928)
* These two are easy

* !!!runlevel_flags

the fact it was global.runlevel_flags.len has me a bit...iffy on this.

* !!!json_cache

Same as above. used global.

* player_list & observer_mob_list

* mechas_list

* this wasn't even used

* surgery_steps

* event_triggers

* landmarks_list

* dead_mob_list

* living_mob_list

* ai_list

* cable_list

* cleanbot_reserved_turfs

* listening_objects

* silicon_mob_list

* human_mob_list

* Update global_lists.dm

* joblist

* mob_list

* Update global_lists.dm

* holomap_markers

* mapping_units

* mapping_beacons

* hair_styles_list

* facial_hair_styles_list

* Update global_lists.dm

* facial_hair_styles_male_list

* facial_hair_styles_female_list

* body_marking_styles_list

* body_marking_nopersist_list

* ear_styles_list

* hair_styles_male_list

* tail_styles_list

* wing_styles_list

* escape_list & rune_list & endgame_exits

these were all really small

* endgame_safespawns

* stool_cache

* emotes_by_key

* random_maps & map_count

* item_tf_spawnpoints

* narsie_list

* active_radio_jammers

* unused

* paikeys

* pai_software_by_key & default_pai_software

* plant_seed_sprites

* magazine_icondata_keys  & magazine_icondata_states

* unused

* ashtray_cache

* light_type_cache

* HOLIDAY!!!

this one was annoying

* faction stuff (red?!)

* Update preferences_factions.dm

* vs edit removal

* backbaglist, pdachoicelist, exclude_jobs

* item_digestion_blacklist, edible_tech, blacklisted_artifact_effect, selectable_footstep, hexNums, syndicate_access

* string_slot_flags and hexdigits->hexNums

* possible_changeling_IDs

* vr_mob_tf_options

* vr_mob_spawner_options

* pipe_colors

* vr_mob_spawner_options

* common_tools

* newscaster_standard_feeds

* Update periodic_news.dm

* changeling_fabricated_clothing

* semirandom_mob_spawner_decisions

* id_card_states

* Update syndicate_ids.dm

* overlay_cache & gear_distributed_to

* more

* radio_channels_by_freq

* Update global_lists.dm

* proper

* default_medbay_channels & default_internal_channels

default_internal_channels is weird as it has a mapbased proc() but that proc is never called...

* valid_ringtones

* move this

* possible_plants

* more

* separate these

moves xeno2chemlist from a hook to a new global list.

* tube_dir_list

* valid_bloodreagents & monitor_states

* Junk

* valid_bloodtypes

* breach_burn_descriptors & burn

* more!!

appliance_available_recipes seems uber cursed, re-look at later

* Appliance code is cursed

* wide_chassis & flying_chassis

* allows_eye_color

* all_tooltip_styles

* direction_table

* gun_choices

* severity_to_string

* old event_viruses

* description_icons

* MOVE_KEY_MAPPINGS

* more more

* pai & robot modules

* Update global_lists.dm

* GEOSAMPLES

Also swaps a .len to LAZYLEN()

* shieldgens

* reagent recipies

* global ammo types

* rad collector

* old file and unused global

* nif_look_messages

* FESH

* nifsoft

* chamelion

* the death of sortAtom

* globulins

* lazylen that

* Update global_lists.dm

* LAZY

* Theese too

* quick fix

---------

Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
2025-07-14 20:14:31 +02:00

202 lines
6.4 KiB
Plaintext

/datum/nifsoft/apc_recharge
name = "APC Connector"
desc = "A small attachment that allows synthmorphs to recharge themselves from APCs."
list_pos = NIF_APCCHARGE
cost = 625
wear = 2
applies_to = NIF_SYNTHETIC
tick_flags = NIF_ACTIVETICK
var/obj/machinery/power/apc/apc
other_flags = (NIF_O_APCCHARGE)
/datum/nifsoft/apc_recharge/activate()
if((. = ..()))
var/mob/living/carbon/human/H = nif.human
apc = locate(/obj/machinery/power/apc) in get_step(H,H.dir)
if(!apc)
apc = locate(/obj/machinery/power/apc) in get_step(H,0)
if(!apc)
nif.notify("You must be facing an APC to connect to.",TRUE)
spawn(0)
deactivate()
return FALSE
H.visible_message(span_warning("Thin snakelike tendrils grow from [H] and connect to \the [apc]."),span_notice("Thin snakelike tendrils grow from you and connect to \the [apc]."))
/datum/nifsoft/apc_recharge/deactivate(var/force = FALSE)
if((. = ..()))
apc = null
/datum/nifsoft/apc_recharge/life()
if((. = ..()))
var/mob/living/carbon/human/H = nif.human
if(apc && (get_dist(H,apc) <= 1) && H.nutrition < 440) // 440 vs 450, life() happens before we get here so it'll never be EXACTLY 450
H.nutrition = min(H.nutrition+10, 450)
apc.drain_power(7000/450*10) //This is from the large rechargers. No idea what the math is.
return TRUE
else
nif.notify("APC charging has ended.")
H.visible_message(span_warning("[H]'s snakelike tendrils whip back into their body from \the [apc]."),span_notice("The APC connector tendrils return to your body."))
deactivate()
return FALSE
/datum/nifsoft/pressure
name = "Pressure Seals"
desc = "Creates pressure seals around important synthetic components to protect them from vacuum. Almost impossible on organics."
list_pos = NIF_PRESSURE
cost = 875
a_drain = 0.5
wear = 3
applies_to = NIF_SYNTHETIC
other_flags = (NIF_O_PRESSURESEAL)
/datum/nifsoft/heatsinks
name = "Heat Sinks"
desc = "Advanced heat sinks for internal heat storage of heat on a synth until able to vent it in atmosphere."
list_pos = NIF_HEATSINK
cost = 725
a_drain = 0.25
wear = 3
var/used = 0
tick_flags = NIF_ALWAYSTICK
applies_to = NIF_SYNTHETIC
other_flags = (NIF_O_HEATSINKS)
/datum/nifsoft/heatsinks/activate()
if((. = ..()))
if(used >= 1500)
nif.notify("Heat sinks not safe to operate again yet! Max 75% on activation.",TRUE)
spawn(0)
deactivate()
return FALSE
/datum/nifsoft/heatsinks/stat_text()
return "[active ? "Active" : "Disabled"] (Stored Heat: [FLOOR((used/20), 1)]%)"
/datum/nifsoft/heatsinks/life()
if((. = ..()))
//Not being used, all clean.
if(!active && !used)
return TRUE
//Being used, and running out.
else if(active && ++used == 2000)
nif.notify("Heat sinks overloaded! Shutting down!",TRUE)
deactivate()
//Being cleaned, and finishing empty.
else if(!active && --used == 0)
nif.notify("Heat sinks re-chilled.")
/datum/nifsoft/compliance
name = "Compliance Module"
desc = "A system that allows one to apply 'laws' to sapient life. Extremely illegal, of course."
list_pos = NIF_COMPLIANCE
cost = 8200
wear = 4
illegal = TRUE
vended = FALSE
access = 999 //Prevents anyone from buying it without an emag.
var/laws = "Be nice to people!"
/datum/nifsoft/compliance/New(var/newloc,var/newlaws)
laws = newlaws //Sanitize before this (the disk does)
..(newloc)
/datum/nifsoft/compliance/activate()
if((. = ..()))
to_chat(nif.human,span_danger("You are compelled to follow these rules:") + "\n" + span_notify("[laws]"))
/datum/nifsoft/compliance/install()
if((. = ..()))
to_chat(nif.human,span_danger("You feel suddenly compelled to follow these rules:") + "\n" + span_notify("[laws]"))
/datum/nifsoft/compliance/uninstall()
nif.notify("ERROR! Unable to comply!",TRUE)
return FALSE //NOPE.
/datum/nifsoft/compliance/stat_text()
return "Show Laws"
/datum/nifsoft/sizechange
name = "Mass Alteration"
desc = "A system that allows one to change their size, through drastic mass rearrangement. Causes significant wear when installed."
list_pos = NIF_SIZECHANGE
cost = 300
wear = 1
/datum/nifsoft/sizechange/activate()
if((. = ..()))
var/new_size = tgui_input_number(usr, "Put the desired size (25-200%), or (1-600%) in dormitory areas.", "Set Size", 200, 600, 1)
if (!nif.human.size_range_check(new_size))
if(new_size)
to_chat(nif.human,span_notice("The safety features of the NIF Program prevent you from choosing this size."))
return
else
if(nif.human.resize(new_size/100, uncapped=nif.human.has_large_resize_bounds(), ignore_prefs = TRUE))
to_chat(nif.human,span_notice("You set the size to [new_size]%"))
nif.human.visible_message(span_warning("Swirling grey mist envelops [nif.human] as they change size!"),span_notice("Swirling streams of nanites wrap around you as you change size!"))
spawn(0)
deactivate()
/datum/nifsoft/sizechange/deactivate(var/force = FALSE)
if((. = ..()))
return TRUE
/datum/nifsoft/sizechange/stat_text()
return "Change Size"
/datum/nifsoft/worldbend
name = "World Bender"
desc = "Alters your perception of various objects in the world. Only has one setting for now: displaying all your crewmates as farm animals."
list_pos = NIF_WORLDBEND
cost = 100
a_drain = 0.01
/datum/nifsoft/worldbend/activate()
if((. = ..()))
var/list/justme = list(nif.human)
for(var/human in GLOB.human_mob_list)
if(human == nif.human)
continue
var/mob/living/carbon/human/H = human
H.display_alt_appearance("animals", justme)
GLOB.alt_farmanimals += nif.human
/datum/nifsoft/worldbend/deactivate(var/force = FALSE)
if((. = ..()))
var/list/justme = list(nif.human)
for(var/human in GLOB.human_mob_list)
if(human == nif.human)
continue
var/mob/living/carbon/human/H = human
H.hide_alt_appearance("animals", justme)
GLOB.alt_farmanimals -= nif.human
/datum/nifsoft/malware
name = "Cool Kidz Toolbar"
desc = "Best toolbar in business since 2098."
list_pos = NIF_MALWARE
cost = 1987
wear = 0
illegal = TRUE
vended = FALSE
tick_flags = NIF_ALWAYSTICK
var/last_ads
can_uninstall = FALSE
/datum/nifsoft/malware/activate()
if((. = ..()))
to_chat(nif.human,span_danger("Runtime error in 15_misc.dm, line 191."))
/datum/nifsoft/malware/install()
if((. = ..()))
last_ads = world.time
/datum/nifsoft/malware/life()
if((. = ..()))
if(nif.human.client && world.time - last_ads > rand(10 MINUTES, 15 MINUTES) && prob(1))
last_ads = world.time
nif.human.client.create_fake_ad_popup_multiple(/obj/screen/popup/default, 5)