mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-01-03 22:12:38 +00:00
Psionics Rework: Kyoushiki Murasaki (#16951)
* Your unbeatable smile wrecks the media We wanna know your secret, so mysterious * Even the things she lacks end up in her area Such a perfect liar, you are * Miss ingenious, godly idol! (You're my savior, you're my saving grace) * So, what'd you eat today? What's your favorite book? * And if you wanna go to play, where are you gonna go? I haven't eaten at all * That's a secret No matter what you ask * She's elusive, evasive * So nonchalant Yet still shining bright; * Her secret: out of sight, as if visible, has the taste of honey There is none, none, none of this * And also none, none, none of that What type of guy do you like? * Who is your partner? Come on, answer me * "I don't understand what falling in love with someone else is like" (Hey! Hey!) I cannot tell what is true from what is a lie (Hey! Hey! Hey! Hey!) * And yet again, someone falls for such words (Hey! Hey! Hey! Hey!) Gently lulled into love * Drawing everyone's eyes You are the perfect, ultimate idol * Never to appear again A reincarnation of Venus * With that smile, with that "I love you" You captivate everyone * Even if those eyes, those words, are false They make up a perfect love (Ai) * Yeah, yeah, that girl stands out, exceptional We were extras from the beginning * BS that acted as adornments for the star's leading role Everything we've accomplished is thanks to her — no! * How impudent How could envy and jealousy not exist? * examine * This isn't some made-up drama for appearances So I cannot forgive * You're not perfect, I cannot forgive you I cannot forgive myself * I cannot accept any version of you other than the one stronger than everyone else * Everybody trusts and worships The very strongest, most invincible idol * Weaknesses and whatnot are not to be found Carrying the morning star within * Showing any weakness is no good, no good (Hey! Hey!) Don't let them see anything that they don't want to know (Hey! Hey! Hey! Hey!) * Anything but being one-of-a-kind is a definite no, no (Hey! Hey! Hey! Hey!) That is the real love (Hey!) * can commune fixes * can commune rename * fix is psi blocked * fixes agian * My signature smile that fires up the media The only secret that I shall keep is this: * My career was built upon fake "I love you"s This is love, in my own way * Even the flowing sweats are beautiful Aqua These eyelids that hid the Ruby within * Sing, dance, flutter, I am Maria — Right, lying is the most exquisite form of love * I have never been loved by anyone Nor have I loved anyone else * That such lies of mine will become true someday I trust in it * Someday, surely, I will have it all in hand I am such a greedy idol * Because I wish to love everybody properly in a life-sized way I shall lie today as well (Hey! Hey! Hey! Hey!) * a * b * c * d * And yet, still, (Hey! Hey!) I have been unable to tell you, and you, alone (Hey! Hey! Hey! Hey!) * jesus christ * Update code/controllers/subsystems/processing/psi.dm Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com> * Update code/controllers/subsystems/processing/psi.dm Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com> * Update code/controllers/subsystems/processing/psi.dm Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com> * Update code/game/gamemodes/technomancer/spell_objs.dm Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com> * Update code/modules/mob/living/carbon/human/human.dm Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com> * Update code/modules/mob/living/carbon/human/human_helpers.dm Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com> * Update code/modules/organs/organ_external.dm Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com> * Update code/modules/psionics/abilities/assay.dm Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com> * Update code/modules/psionics/abilities/command.dm Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com> * Update code/modules/psionics/abilities/emotional_suggestion.dm Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com> * Update code/modules/psionics/abilities/grip.dm Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com> * Update code/modules/psionics/abilities/grip.dm Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com> * Update code/modules/psionics/abilities/mend.dm Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com> * Update code/modules/psionics/abilities/mend.dm Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com> * Update code/modules/psionics/abilities/mend.dm Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com> * Update code/modules/psionics/abilities/psi_search.dm Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com> * Update code/modules/psionics/abilities/shockwave.dm Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com> * Update code/modules/psionics/abilities/shockwave.dm Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com> * Update code/modules/psionics/abilities/singularity.dm Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com> * Update code/modules/psionics/abilities/time_stop.dm Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com> * Update code/modules/psionics/events/mini_spasm.dm Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com> * Update code/modules/psionics/interface/ui_hub.dm Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com> * Update code/modules/psionics/interface/ui_hub.dm Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com> * Update code/modules/psionics/interface/ui_hub.dm Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com> * Update code/modules/psionics/interface/ui_hub.dm Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com> * Update code/modules/psionics/interface/ui_hub.dm Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com> * Update code/modules/psionics/interface/ui_hub.dm Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com> * cl update --------- Co-authored-by: Matt Atlas <liermattia@gmail.com> Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
This commit is contained in:
135
code/modules/client/preference_setup/general/07_psionics.dm
Normal file
135
code/modules/client/preference_setup/general/07_psionics.dm
Normal file
@@ -0,0 +1,135 @@
|
||||
/datum/category_item/player_setup_item/general/psionics
|
||||
name = "Psionics"
|
||||
sort_order = 7
|
||||
|
||||
/datum/category_item/player_setup_item/general/psionics/load_character(var/savefile/S)
|
||||
S["psionics"] >> pref.psionics
|
||||
|
||||
/datum/category_item/player_setup_item/general/psionics/save_character(var/savefile/S)
|
||||
var/list/psionics = pref.psionics
|
||||
for(var/psi in psionics)
|
||||
var/singleton/psionic_power/P = GET_SINGLETON(text2path(psi))
|
||||
if(!istype(P))
|
||||
continue
|
||||
psionics |= P.type
|
||||
S["psionics"] << json_encode(psionics)
|
||||
|
||||
/datum/category_item/player_setup_item/general/psionics/gather_load_query()
|
||||
return list(
|
||||
"ss13_characters" = list(
|
||||
"vars" = list(
|
||||
"psionics" = "psionics",
|
||||
),
|
||||
"args" = list("id")
|
||||
)
|
||||
)
|
||||
|
||||
/datum/category_item/player_setup_item/general/psionics/gather_load_parameters()
|
||||
return list("id" = pref.current_character)
|
||||
|
||||
/datum/category_item/player_setup_item/general/psionics/gather_save_query()
|
||||
return list(
|
||||
"ss13_characters" = list(
|
||||
"psionics",
|
||||
"id" = 1
|
||||
)
|
||||
)
|
||||
|
||||
/datum/category_item/player_setup_item/general/psionics/gather_save_parameters()
|
||||
var/list/sanitized_psionics = list()
|
||||
for(var/S in pref.psionics)
|
||||
var/singleton/psionic_power/P = GET_SINGLETON(text2path(S))
|
||||
if(!istype(P))
|
||||
continue
|
||||
sanitized_psionics |= "[P.type]"
|
||||
return list(
|
||||
"psionics" = json_encode(sanitized_psionics),
|
||||
"char_id" = pref.current_character,
|
||||
"ckey" = PREF_CLIENT_CKEY
|
||||
)
|
||||
|
||||
/datum/category_item/player_setup_item/general/psionics/load_special(savefile/S)
|
||||
var/before = pref.psionics
|
||||
try
|
||||
pref.psionics = json_decode(pref.psionics)
|
||||
catch (var/exception/e)
|
||||
log_debug("PSIONICS: Caught [e]. Initial value: [before]")
|
||||
pref.psionics = list()
|
||||
|
||||
/datum/category_item/player_setup_item/general/psionics/sanitize_character(var/sql_load = 0)
|
||||
var/datum/species/mob_species = all_species[pref.species]
|
||||
if(length(pref.psionics) && !mob_species.has_psionics)
|
||||
to_chat(pref.client, SPAN_WARNING("This species does not have psionics! Resetting..."))
|
||||
pref.psionics = list()
|
||||
return
|
||||
var/list/bought_psionic_powers = list()
|
||||
for(var/S in pref.psionics)
|
||||
var/singleton/psionic_power/P = GET_SINGLETON(text2path(S))
|
||||
if(istype(P))
|
||||
if(!(P.ability_flags & PSI_FLAG_CANON))
|
||||
pref.psionics -= S
|
||||
to_chat(pref.client, SPAN_WARNING("[P.name] is an invalid psionic!"))
|
||||
continue
|
||||
bought_psionic_powers |= P
|
||||
else
|
||||
to_chat(pref.client, SPAN_WARNING("[S] is an invalid psionic!"))
|
||||
pref.psionics -= S
|
||||
continue
|
||||
if(length(bought_psionic_powers) > mob_species.character_creation_psi_points)
|
||||
to_chat(pref.client, SPAN_WARNING("You have more psionics than possible! Resetting..."))
|
||||
pref.psionics = list()
|
||||
|
||||
/datum/category_item/player_setup_item/general/psionics/content(var/mob/user)
|
||||
var/datum/species/mob_species = all_species[pref.species]
|
||||
if(!(mob_species.has_psionics))
|
||||
return
|
||||
var/list/bought_psionic_powers = list()
|
||||
for(var/S in pref.psionics)
|
||||
var/singleton/psionic_power/P = GET_SINGLETON(text2path(S))
|
||||
if(istype(P))
|
||||
bought_psionic_powers |= P
|
||||
|
||||
var/list/dat = list(
|
||||
"<b>Psionics:</b><br>"
|
||||
)
|
||||
for(var/singleton/psionic_power/P in bought_psionic_powers)
|
||||
dat += "- [P.name] <a href='?src=\ref[src];remove_psi_power=[P.type]'>-</a><br>"
|
||||
dat += "<a href='?src=\ref[src];add_psi_power=1'>Add Psionic Power</a><br>"
|
||||
. = dat.Join()
|
||||
|
||||
/datum/category_item/player_setup_item/general/psionics/OnTopic(var/href,var/list/href_list, var/mob/user)
|
||||
if(href_list["remove_psi_power"])
|
||||
var/power_to_remove = href_list["remove_psi_power"]
|
||||
if(power_to_remove && (power_to_remove in pref.psionics))
|
||||
pref.psionics -= power_to_remove
|
||||
return TOPIC_REFRESH
|
||||
|
||||
else if(href_list["add_psi_power"])
|
||||
var/datum/species/mob_species = all_species[pref.species]
|
||||
var/total_psi_points = mob_species.character_creation_psi_points
|
||||
var/list/available_psionics = list()
|
||||
var/list/psionic_map = list()
|
||||
var/list/bought_psionic_powers = list()
|
||||
|
||||
for(var/S in pref.psionics)
|
||||
var/singleton/psionic_power/P = GET_SINGLETON(text2path(S))
|
||||
if(istype(P))
|
||||
bought_psionic_powers |= P
|
||||
total_psi_points = max(0, total_psi_points - P.point_cost)
|
||||
|
||||
for(var/singleton/psionic_power/P in GET_SINGLETON_SUBTYPE_LIST(/singleton/psionic_power))
|
||||
if((P.ability_flags & PSI_FLAG_CANON) && (P.point_cost <= total_psi_points) && !(P in bought_psionic_powers))
|
||||
available_psionics |= "[P.name]"
|
||||
psionic_map[P.name] = P.type
|
||||
|
||||
if(!length(available_psionics))
|
||||
to_chat(user, SPAN_WARNING("You ran out of points!"))
|
||||
return
|
||||
|
||||
var/new_power = input(user, "Choose a psionic power to add.", "Psionics") as null|anything in available_psionics
|
||||
if(new_power)
|
||||
var/singleton/psionic_power/P = GET_SINGLETON(psionic_map[new_power])
|
||||
if(istype(P))
|
||||
pref.psionics += "[P.type]"
|
||||
return TOPIC_REFRESH
|
||||
|
||||
@@ -144,8 +144,7 @@
|
||||
display_name = "psionic receiver"
|
||||
description = "An augment installed into the head that functions as a surrogate for a missing zona bovinae, also functioning as a filter for the psionically-challenged."
|
||||
path = /obj/item/organ/internal/augment/psi
|
||||
whitelisted = list(SPECIES_HUMAN, SPECIES_HUMAN_OFFWORLD, SPECIES_TAJARA, SPECIES_TAJARA_ZHAN, SPECIES_TAJARA_MSAI, SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR, SPECIES_VAURCA_BULWARK, SPECIES_VAURCA_BREEDER, SPECIES_IPC, SPECIES_IPC_G1, SPECIES_IPC_G2, SPECIES_IPC_XION, SPECIES_IPC_ZENGHU, SPECIES_IPC_BISHOP, SPECIES_IPC_SHELL)
|
||||
|
||||
whitelisted = list(SPECIES_HUMAN, SPECIES_HUMAN_OFFWORLD, SPECIES_TAJARA, SPECIES_TAJARA_ZHAN, SPECIES_TAJARA_MSAI, SPECIES_UNATHI, SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR, SPECIES_VAURCA_BULWARK, SPECIES_VAURCA_BREEDER, SPECIES_IPC, SPECIES_IPC_G1, SPECIES_IPC_G2, SPECIES_IPC_XION, SPECIES_IPC_ZENGHU, SPECIES_IPC_BISHOP, SPECIES_IPC_SHELL)
|
||||
/datum/gear/augment/memory_inhibitor
|
||||
display_name = "memory inhibitor"
|
||||
description = "A Zeng Hu implant that allows one to have control over their memories, allowing you to set a timer and remove any memories developed within it."
|
||||
|
||||
@@ -99,6 +99,8 @@ var/list/preferences_datums = list()
|
||||
var/culture
|
||||
var/origin
|
||||
|
||||
var/list/psionics = list()
|
||||
|
||||
var/list/char_render_holders //Should only be a key-value list of north/south/east/west = obj/screen.
|
||||
var/static/list/preview_screen_locs = list(
|
||||
"1" = "character_preview_map:1,5:-12",
|
||||
@@ -471,6 +473,12 @@ var/list/preferences_datums = list()
|
||||
|
||||
character.headset_choice = headset_choice
|
||||
|
||||
if(length(psionics) && character.client)
|
||||
for(var/power in psionics)
|
||||
var/singleton/psionic_power/P = GET_SINGLETON(text2path(power))
|
||||
if(istype(P) && (P.ability_flags & PSI_FLAG_CANON))
|
||||
P.apply(character)
|
||||
|
||||
if(icon_updates)
|
||||
character.force_update_limbs()
|
||||
character.update_mutations(0)
|
||||
@@ -638,6 +646,7 @@ var/list/preferences_datums = list()
|
||||
|
||||
ccia_actions = list()
|
||||
disabilities = list()
|
||||
psionics = list()
|
||||
|
||||
economic_status = ECONOMICALLY_AVERAGE
|
||||
|
||||
|
||||
Reference in New Issue
Block a user