mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-06-05 13:34:25 +01:00
84dc5535dc
* 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>
202 lines
6.4 KiB
Plaintext
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)
|