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:
Matt Atlas
2023-07-31 20:56:52 +02:00
committed by GitHub
co-authored by Fluffy Matt Atlas
parent a894c77990
commit d9b79db97b
146 changed files with 3213 additions and 1617 deletions
+2 -5
View File
@@ -23,12 +23,9 @@
/mob/living/carbon/proc/breathe(var/volume_needed = BREATH_VOLUME)
if(species && (species.flags & NO_BREATHE))
return
var/datum/changeling/changeling = get_antag_datum(MODE_CHANGELING)
if(changeling?.space_adapted)
if(HAS_TRAIT(src, TRAIT_PRESSURE_IMMUNITY))
return
if(changeling?.no_breathing)
return
volume_needed *= (species?.breath_vol_mul || 1)
var/datum/gas_mixture/breath = null
@@ -1485,6 +1485,9 @@
species.set_default_tail(src)
if(species.psi_deaf || HAS_FLAG(species.flags, IS_MECHANICAL) || HAS_FLAG(species.flags, NO_SCAN))
ADD_TRAIT(src, TRAIT_PSIONICALLY_DEAF, INNATE_TRAIT)
if(client)
client.init_verbs()
@@ -185,7 +185,7 @@
return O
/mob/living/carbon/human/proc/awaken_psi_basic(var/source, var/allow_latency = TRUE)
/mob/living/carbon/human/proc/awaken_psi_basic(var/source)
var/static/list/psi_operancy_messages = list(
"There's something in your skull!",
"Something is eating your thoughts!",
@@ -197,13 +197,10 @@
)
to_chat(src, SPAN_DANGER("An indescribable, brain-tearing sound hisses from [source], and you collapse in a seizure!"))
seizure()
var/new_latencies = rand(2,4)
var/list/faculties = list(PSI_COERCION, PSI_REDACTION, PSI_ENERGISTICS, PSI_PSYCHOKINESIS)
for(var/i = 1 to new_latencies)
custom_pain(SPAN_DANGER("<font size = 3>[pick(psi_operancy_messages)]</font>"), 25)
set_psi_rank(pick_n_take(faculties), allow_latency ? PSI_RANK_LATENT : PSI_RANK_OPERANT) // if set to latent, it spikes anywhere from OPERANT to PARAMOUNT
sleep(30)
addtimer(CALLBACK(psi, TYPE_PROC_REF(/datum/psi_complexus, check_latency_trigger), 100, source, TRUE), 4.5 SECONDS)
custom_pain(SPAN_DANGER(FONT_LARGE("[pick(psi_operancy_messages)]")), 25)
set_psi_rank(PSI_RANK_HARMONIOUS)
sleep(30)
addtimer(CALLBACK(psi, TYPE_PROC_REF(/datum/psi_complexus, check_psionic_trigger), 100, source, TRUE), 4.5 SECONDS)
/mob/living/carbon/human/get_resist_power()
return species.resist_mod
@@ -349,8 +346,7 @@
/mob/living/carbon/human/proc/pressure_resistant()
if(HAS_FLAG(mutations, COLD_RESISTANCE))
return TRUE
var/datum/changeling/changeling = get_antag_datum(MODE_CHANGELING)
if(changeling?.space_adapted)
if(HAS_TRAIT(src, TRAIT_PRESSURE_IMMUNITY))
return TRUE
return FALSE
@@ -418,7 +414,7 @@
/mob/living/carbon/human/proc/get_tail_accessory()
var/obj/item/organ/external/groin/G = organs_by_name[BP_GROIN]
if(!G)
if(!istype(G))
return
if(!G.tail_storage)
return
@@ -239,14 +239,16 @@
// Simple mobs cannot use Skrellepathy
/mob/proc/can_commune()
/mob/proc/has_psionics()
return FALSE
/mob/living/carbon/human/can_commune()
/mob/living/carbon/human/has_psionics()
if(HAS_TRAIT(src, TRAIT_PSIONICALLY_DEAF))
return FALSE
if(psi)
return TRUE
else
return species ? species.can_commune() : FALSE
return species ? species.has_psionics() : FALSE
/mob/living/carbon/human/proc/commune()
set category = "Abilities"
@@ -322,14 +324,14 @@
to_chat(M,"<span class='notice'>[src] telepathically says to [target]:</span> [text]")
var/mob/living/carbon/human/H = target
if (target.can_commune())
if (target.has_psionics())
to_chat(H,"<span class='psychic'>You instinctively sense [src] sending their thoughts into your mind, hearing:</span> [text]")
else if(prob(25) && (target.mind && target.mind.assigned_role=="Chaplain"))
to_chat(H,"<span class='changeling'>You sense [src]'s thoughts enter your mind, whispering quietly:</span> [text]")
else
to_chat(H,"<span class='alium'>You feel pressure behind your eyes as alien thoughts enter your mind:</span> [text]")
if(istype(H))
if (target.can_commune())
if (target.has_psionics())
return
if(prob(10) && !(H.species.flags & NO_BLOOD))
to_chat(H,"<span class='warning'>Your nose begins to bleed...</span>")
@@ -295,6 +295,13 @@
var/use_alt_hair_layer = FALSE
/// Species psionics. FALSE for no psionics. Otherwise, set to the PSI_RANK define you want.
var/has_psionics = FALSE
/// Number of psi points in character creation.
var/character_creation_psi_points = 0
/// Is this species psionically deaf?
var/psi_deaf = FALSE
/datum/species/proc/get_eyes(var/mob/living/carbon/human/H)
return
@@ -470,6 +477,8 @@
if(!H.client || !H.client.prefs || !H.client.prefs.gender)
H.gender = pick(default_genders)
H.pronouns = H.gender
if(has_psionics)
H.set_psi_rank(has_psionics)
/datum/species/proc/handle_death(var/mob/living/carbon/human/H, var/gibbed = 0) //Handles any species-specific death events (such as dionaea nymph spawns).
return
@@ -739,11 +748,8 @@
/datum/species/proc/get_digestion_product()
return /singleton/reagent/nutriment
/datum/species/proc/can_commune()
return FALSE
/datum/species/proc/has_psi_potential()
return TRUE
/datum/species/proc/has_psionics()
return has_psionics
/datum/species/proc/handle_despawn()
return
@@ -129,6 +129,7 @@
)
alterable_internal_organs = list()
psi_deaf = TRUE
/datum/species/diona/can_understand(var/mob/other)
var/mob/living/carbon/alien/diona/D = other
@@ -184,9 +185,6 @@
if(SB)
SB.handle_item_insertion(new /obj/item/device/flashlight/survival(get_turf(H)), TRUE)
/datum/species/diona/has_psi_potential()
return FALSE
/datum/species/diona/is_naturally_insulated()
return TRUE
@@ -98,6 +98,8 @@ var/global/list/golem_types = list(SPECIES_GOLEM_COAL,
hud_type = /datum/hud_data/construct
psi_deaf = TRUE
var/turn_into_materials = TRUE //the golem will turn into materials upon its death
var/golem_designation = "Coal" //used in the creation of the name
@@ -124,9 +126,6 @@ var/global/list/golem_types = list(SPECIES_GOLEM_COAL,
return TRUE
return FALSE
/datum/species/golem/has_psi_potential()
return FALSE
/datum/species/golem/iron
name = SPECIES_GOLEM_IRON
name_plural = "iron golems"
@@ -143,6 +143,7 @@
var/move_charge_factor = 1
use_alt_hair_layer = TRUE
psi_deaf = TRUE
/datum/species/machine/handle_post_spawn(var/mob/living/carbon/human/H)
. = ..()
@@ -373,9 +374,6 @@
. = ..()
check_tag(H, H.client)
/datum/species/machine/has_psi_potential()
return FALSE
/datum/species/machine/handle_death_check(var/mob/living/carbon/human/H)
if(H.get_total_health() <= config.health_threshold_dead)
return TRUE
@@ -107,6 +107,9 @@
alterable_internal_organs = list(BP_HEART, BP_EYES, BP_LUNGS, BP_LIVER, BP_KIDNEYS, BP_STOMACH)
has_psionics = PSI_RANK_SENSITIVE
character_creation_psi_points = 4
/datum/species/skrell/handle_trail(var/mob/living/carbon/human/H, var/turf/T)
var/list/trail_info = ..()
if(!length(trail_info) && !H.shoes)
@@ -117,10 +120,6 @@
return trail_info
/datum/species/skrell/handle_post_spawn(mob/living/carbon/human/H)
..()
H.set_psi_rank(PSI_COERCION, PSI_RANK_OPERANT)
/datum/species/skrell/handle_strip(var/mob/user, var/mob/living/carbon/human/H, var/action)
switch(action)
if("headtail")
@@ -142,6 +141,3 @@
/datum/species/skrell/can_breathe_water()
return TRUE
/datum/species/skrell/can_commune()
return TRUE
@@ -141,6 +141,7 @@
alterable_internal_organs = list(BP_HEART, BP_EYES, BP_LUNGS, BP_STOMACH, BP_APPENDIX)
psi_deaf = TRUE
/datum/species/bug/before_equip(var/mob/living/carbon/human/H)
. = ..()
@@ -158,9 +159,6 @@
H.gender = NEUTER
return ..()
/datum/species/bug/has_psi_potential()
return FALSE
/datum/species/bug/is_naturally_insulated()
return TRUE
@@ -168,3 +166,4 @@
if(I.w_class <= ITEMSIZE_SMALL)
return TRUE
return FALSE
+6 -2
View File
@@ -18,6 +18,10 @@
var/natural_armor = GetComponent(/datum/component/armor)
if(natural_armor)
. += natural_armor
if(psi)
var/armor = psi.GetComponent(/datum/component/armor/psionic)
if(armor)
. += armor
/mob/living/bullet_act(var/obj/item/projectile/P, var/def_zone, var/used_weapon = null)
@@ -247,7 +251,7 @@
// End BS12 momentum-transfer code.
/mob/living/attack_generic(var/mob/user, var/damage, var/attack_message, var/armor_penetration, var/attack_flags)
/mob/living/attack_generic(var/mob/user, var/damage, var/attack_message, var/armor_penetration, var/attack_flags, var/damage_type = DAMAGE_BRUTE)
if(!damage)
return
@@ -257,7 +261,7 @@
src.visible_message("<span class='danger'>[user] has [attack_message] [src]!</span>")
user.do_attack_animation(src)
apply_damage(damage, DAMAGE_BRUTE, user.zone_sel?.selecting, armor_pen = armor_penetration, damage_flags = attack_flags)
apply_damage(damage, damage_type, user.zone_sel?.selecting, armor_pen = armor_penetration, damage_flags = attack_flags)
updatehealth()
return TRUE
@@ -453,8 +453,8 @@
if(chemicals < 150)
to_chat(src, SPAN_WARNING("You don't have enough chemicals!"))
return
if(!host.species.has_psi_potential())
to_chat(src, SPAN_WARNING("\The [host] lacks a zona bovinidae to psionically enlighten! How disturbing..."))
if(host.species.psi_deaf)
to_chat(src, SPAN_WARNING("\The [host] lacks a zona bovinae to psionically enlighten! How disturbing..."))
if(host.psi)
to_chat(src, SPAN_WARNING("Your host is already psionically active!"))
return
@@ -481,13 +481,14 @@
return
to_chat(src, SPAN_NOTICE("You succeed in interfacing with the host's zona bovinae, this will be a painful process for them."))
host.awaken_psi_basic("something in your head", FALSE)
host.awaken_psi_basic("something in your head")
host.psi.psi_points = 3 /// You don't get a lot at the start.
host.add_language(LANGUAGE_TCB) // if we don't have TCB, give them TCB | this allows monkey borers to RP
/mob/living/simple_animal/borer/verb/advance_faculty()
/mob/living/simple_animal/borer/verb/advance_psionics()
set category = "Abilities"
set name = "Advance Psionic Faculty (75)"
set desc = "Advance one of your host's psionic faculties by one step."
set name = "Advance Psionics (75)"
set desc = "Advance your host's psionic capability by one step."
if(!host)
to_chat(src, SPAN_NOTICE("You are not inside a host body."))
@@ -507,18 +508,8 @@
to_chat(src, SPAN_WARNING("\The [host]'s mind is shielded against your powers."))
return
var/list/faculties = list(capitalize(PSI_COERCION), capitalize(PSI_REDACTION), capitalize(PSI_ENERGISTICS), capitalize(PSI_PSYCHOKINESIS))
var/selected_faculty = input(src, "Choose a faculty to upgrade.") as null|anything in faculties
if(!selected_faculty)
return
selected_faculty = lowertext(selected_faculty)
var/max_rank = islesserform(host) ? PSI_RANK_OPERANT : PSI_RANK_MASTER
if(host.psi.get_rank(selected_faculty) >= max_rank)
to_chat(src, SPAN_NOTICE("This faculty has already been pushed to the max potential you can achieve!"))
return
var/faculty_time = 10 SECONDS
if(!start_ability(host, faculty_time))
var/upgrade_time = 10 SECONDS
if(!start_ability(host, upgrade_time))
to_chat(src, SPAN_WARNING("You're busy doing something else, complete that task first."))
return
@@ -526,19 +517,16 @@
to_chat(src, SPAN_NOTICE("You probe your tendrils deep within your host's zona bovinae, seeking to upgrade their abilities."))
to_chat(host, SPAN_WARNING("You feel a burning, tingling sensation at the back of your head..."))
addtimer(CALLBACK(src, PROC_REF(faculty_upgrade), selected_faculty), faculty_time)
addtimer(CALLBACK(src, PROC_REF(upgrade_rank)), upgrade_time)
/mob/living/simple_animal/borer/proc/faculty_upgrade(var/selected_faculty)
/mob/living/simple_animal/borer/proc/upgrade_rank()
if(!host)
return
var/host_psi_rank = host.psi.get_rank(selected_faculty)
var/next_rank = host_psi_rank > PSI_RANK_BLUNT ? host_psi_rank + 1 : PSI_RANK_OPERANT
host.psi.set_rank(selected_faculty, next_rank)
host.psi.update(TRUE)
to_chat(src, SPAN_NOTICE("You successfully manage to upgrade your host to [psychic_ranks_to_strings[host.psi.ranks[selected_faculty]]] [selected_faculty]."))
host.psi.psi_points++
to_chat(src, SPAN_NOTICE("You successfully manage to expand your living host's control over their Zona Bovinae. They know have an extra psionic point to spend."))
to_chat(host, SPAN_GOOD("A breeze of fresh air washes over your mind, you feel powerful!"))
to_chat(host, SPAN_NOTICE("You have been psionically enlightened. You are now a [psychic_ranks_to_strings[host.psi.ranks[selected_faculty]]] in the [selected_faculty] faculty."))
to_chat(host, SPAN_NOTICE("Your control over the Nlom has expanded. You now have an extra psionic point to spend in the Point Shop."))
/mob/living/simple_animal/borer/verb/host_health_scan()
set category = "Abilities"
@@ -214,7 +214,7 @@
var/atom/target
if(isliving(target_mob))
var/mob/living/L = target_mob
on_attack_mob(L, L.attack_generic(src, rand(melee_damage_lower, melee_damage_upper), attacktext, armor_penetration, attack_flags))
on_attack_mob(L, L.attack_generic(src, rand(melee_damage_lower, melee_damage_upper), attacktext, armor_penetration, attack_flags, damage_type))
target = L
else if(istype(target_mob, /obj/machinery/bot))
var/obj/machinery/bot/B = target_mob
@@ -14,6 +14,9 @@
mob_swap_flags = MONKEY|SLIME|SIMPLE_ANIMAL
mob_push_flags = MONKEY|SLIME|SIMPLE_ANIMAL
/// The type of damage this mob deals.
var/damage_type = DAMAGE_BRUTE
var/show_stat_health = 1 //does the percentage health show in the stat panel for the mob
var/icon_living = ""
@@ -538,7 +541,7 @@
simple_harm_attack(user)
/mob/living/simple_animal/proc/simple_harm_attack(var/mob/living/user)
apply_damage(harm_intent_damage, DAMAGE_BRUTE, used_weapon = "Attack by [user.name]")
apply_damage(harm_intent_damage, damage_type, used_weapon = "Attack by [user.name]")
user.visible_message(SPAN_WARNING("<b>\The [user]</b> [response_harm] \the [src]!"), SPAN_WARNING("You [response_harm] \the [src]!"))
user.do_attack_animation(src, FIST_ATTACK_ANIMATION)
poke(TRUE)
-5
View File
@@ -348,11 +348,6 @@
if(!affecting)
return
if(ishuman(user) && affecting == M)
var/mob/living/carbon/human/H = user
if(H.check_psi_grab(src))
return
if(world.time < (last_action + 20))
return