Files
Aurora.3/code/modules/psionics/equipment/cerebro_enhancers.dm
T
VMSolidusandGitHub b5a3a165e1 Loner Update (#22034)
Antag Psionics were generally kind of underwhelming (especially in the
face of more interesting power sets like the Vampire/Ling jumpstarters),
so to add a new option for autotraitor rounds, I've given Loner back
their Awaken and Drain powers that they were allegedly supposed to have
according to the wiki. There is now also a new Loner Jumpstarter
available in the (Traitor-only) Antag Uplink, which changes the user
into a Loner antag.

I have also reduced the cost of the standard Psi Jumpstarter to 15tc,
which yes that does put it within the realms of what Mercs can buy. In
the grand scheme of balance it's still really underwhelming in
comparison to everything else Mercs can roll with, though I am very
interested in seeing mercs pull more antag psionic gimmicks.

<img width="1918" height="970" alt="image"
src="https://github.com/user-attachments/assets/33d21a21-9d26-40ac-b9c1-758fc7af2809"
/>
2026-03-18 12:47:32 +00:00

213 lines
7.4 KiB
Plaintext

//Psi-boosting item (antag only)
/obj/item/clothing/head/helmet/space/psi_amp
name = "cerebro-energetic enhancer"
desc = "A matte-black, eyeless cerebro-energetic enhancement helmet. It uses highly sophisticated, and illegal, techniques to drill into your brain and install psi-infected AIs into the fluid cavities between your lobes."
action_button_name = "Install Boosters"
icon = 'icons/obj/clothing/hats.dmi'
contained_sprite = FALSE
icon_state = "amp"
item_state_slots = list(
slot_l_hand_str = "helmet",
slot_r_hand_str = "helmet"
)
var/operating = FALSE
var/boosted_rank = PSI_RANK_HARMONIOUS
var/boosted_psipower = 120
/obj/item/clothing/head/helmet/space/psi_amp/mechanics_hints(mob/user, distance, is_adjacent)
. += ..()
. += "Due to the nature of this headgear, it will also protect you from the pressure of space."
. += "When installing the boosters, your chosen faculties will be boosted to the headgear's maximum potential, but the unchosen faculties will also be boosted somewhat."
/obj/item/clothing/head/helmet/space/psi_amp/lesser
name = "psionic amplifier"
desc = "A crown-of-thorns cerebro-energetic enhancer that interfaces directly with the brain, isolating and strengthening psionic signals. It kind of looks like a tiara."
flags_inv = 0
body_parts_covered = 0
boosted_rank = PSI_RANK_HARMONIOUS
boosted_psipower = 50
/obj/item/clothing/head/helmet/space/psi_amp/Initialize()
. = ..()
verbs += /obj/item/clothing/head/helmet/space/psi_amp/proc/integrate
/obj/item/clothing/head/helmet/space/psi_amp/proc/deintegrate()
set name = "Remove Psi-Amp"
set desc = "Removes your psi-amp."
set category = "Abilities"
set src in usr
if(operating)
return
if(canremove)
return
var/mob/living/carbon/human/H = loc
if(!istype(H) || H.head != src)
canremove = TRUE
return
to_chat(H, SPAN_WARNING("You feel a strange tugging sensation as \the [src] begins removing the slave-minds from your brain..."))
playsound(H, 'sound/weapons/circsawhit.ogg', 50, 1, -1)
operating = TRUE
sleep(80)
if(H.psi)
H.psi.reset()
to_chat(H, SPAN_NOTICE("\The [src] chimes quietly as it finishes removing the slave-minds from your brain."))
canremove = TRUE
operating = FALSE
verbs -= /obj/item/clothing/head/helmet/space/psi_amp/proc/deintegrate
verbs |= /obj/item/clothing/head/helmet/space/psi_amp/proc/integrate
action_button_name = "Integrate Psionic Amplifier"
H.update_action_buttons()
set_light(0)
/obj/item/clothing/head/helmet/space/psi_amp/Move()
var/lastloc = loc
. = ..()
if(.)
var/mob/living/carbon/human/H = lastloc
if(istype(H) && H.psi)
H.psi.reset()
H = loc
if(!istype(H) || H.head != src)
canremove = TRUE
/obj/item/clothing/head/helmet/space/psi_amp/proc/integrate()
set name = "Integrate Psionic Amplifier"
set desc = "Enhance your brainpower."
set category = "Abilities"
set src in usr
if(operating)
return
if(!canremove)
return
var/mob/living/carbon/human/H = loc
if(!istype(H) || H.head != src)
to_chat(usr, SPAN_WARNING("\The [src] must be worn on your head in order to be activated."))
return
canremove = FALSE
operating = TRUE
to_chat(H, SPAN_WARNING("You feel a series of sharp pinpricks as \the [src] anaesthetises your scalp before drilling down into your brain."))
playsound(H, 'sound/weapons/circsawhit.ogg', 50, 1, -1)
sleep(80)
H.set_psi_rank(boosted_rank, temporary = TRUE)
if(H.psi)
H.psi.max_stamina = boosted_psipower
H.psi.stamina = H.psi.max_stamina
H.psi.update(force = TRUE)
to_chat(H, SPAN_NOTICE("You experience a brief but powerful wave of deja vu as \the [src] finishes modifying your brain."))
verbs |= /obj/item/clothing/head/helmet/space/psi_amp/proc/deintegrate
verbs -= /obj/item/clothing/head/helmet/space/psi_amp/proc/integrate
operating = FALSE
action_button_name = "Remove Psionic Amplifier"
H.update_action_buttons()
H.client.init_verbs()
set_light(0.5, 0.1, 3, 2, l_color = "#880000")
/obj/item/psionic_jumpstarter
name = "psionic jumpstarter"
desc = "Use this to jumpstart your psionic rank to Psionically Harmonious, enabling you to use the Psionic Point Shop and buy offensive psionic abilities. \
This won't work on species with no Zona Bovinae, like synthetics, vaurcae or dionae! This item is definitely not canon."
icon = 'icons/obj/clothing/hats.dmi'
icon_state = "amp"
contained_sprite = FALSE
/**
* The psi rank that this jumpstarter will set a user to.
* If the user is below this psi-rank, it will upgrade them
*/
var/psi_rank_to_set = PSI_RANK_HARMONIOUS
/**
* The amount of psi-points this jumpstarter will set a user to have.
* Due to limitations of the current psionics code, it's not actually feasible for me to make this a modifier.
* If this is set to -1, it will set the points to whatever the default point total is for the given psi-rank.
*/
var/psi_points_override = 8
/// The message displayed to a character that is not eligible for psionics when attempting to use the psionic jumpstarter.
var/non_eligible_message = SPAN_WARNING("You don't have a Zona Bovinae!")
/// The message displayed to a character that is already at or above the jumpstarter's psionic rating.
var/already_psionic_message = SPAN_WARNING("You've already awakened your psionic potential!")
/// The message displayed to a player who successfully uses a psionic jumpstarter.
var/awakening_message = SPAN_NOTICE("You've awakened your psionic potential. Note that you have a reduced point pool than usual.")
/// Optionally also give the user specific additional psi-power datums
var/list/singleton/psionic_power/additional_powers = list()
/obj/item/psionic_jumpstarter/attack_self(mob/user)
. = ..()
if(!ishuman(user))
return
var/mob/living/carbon/human/H = user
if(!H.has_zona_bovinae())
to_chat(H, non_eligible_message)
return
if(H.psi && H.psi.get_rank() >= psi_rank_to_set)
to_chat(H, already_psionic_message)
return
H.set_psi_rank(psi_rank_to_set)
if(psi_points_override != -1)
H.psi.psi_points = psi_points_override
to_chat(H, awakening_message)
for (var/power in additional_powers)
astype(GET_SINGLETON(power), /singleton/psionic_power)?.apply(H)
qdel(src)
/obj/item/psionic_jumpstarter/sensitive
name = "psionic awakener"
desc = "Use this to jumpstart your psionic rank to Psionically Sensitive, enabling you to use the Psionic Point Shop and buy basic psionic abilities. \
This won't work on species with no Zona Bovinae, like synthetics, vaurcae or dionae! This item is definitely not canon."
psi_rank_to_set = PSI_RANK_SENSITIVE
psi_points_override = 3
awakening_message = SPAN_NOTICE("You've awakened your psionic potential.")
/obj/item/psionic_jumpstarter/loner
name = "loner jumpstarter"
desc = "Use this to gain the powers of a Loner, enabling you to use the Psionic Point Shop, as well as the Zona Absorbtion, Awaken, and Drain powers. \
This won't work on species with no Zona Bovinae, like synthetics, vaurcae or dionae! This item is definitely not canon."
psi_points_override = 10
awakening_message = SPAN_DANGER("The curtain of reality parts before your mind, revealing the truth of all existence.")
/// Same as Loner bonus powers
additional_powers = list(
/singleton/psionic_power/zona_absorption,
/singleton/psionic_power/awaken,
/singleton/psionic_power/psi_drain)
/obj/item/psionic_jumpstarter/loner/attack_self(mob/user)
. = ..()
if (!ishuman(user))
return
var/mob/living/carbon/human/character = user
GLOB.loners.add_antagonist(character.mind, do_not_equip = TRUE, do_not_announce = TRUE, preserve_appearance = TRUE)