Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ports Psionics From Baystation (2 years later edition) #22301

Open
wants to merge 249 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
249 commits
Select commit Hold shift + click to select a range
180b71a
pain
cowbot92 Jul 5, 2024
a83d05e
fucking sounds
cowbot92 Jul 5, 2024
a35a75d
fuck
cowbot92 Jul 5, 2024
e5f376d
adjusts latency
cowbot92 Jul 5, 2024
4e773fd
possible
cowbot92 Jul 5, 2024
1eff433
only intents left
cowbot92 Jul 5, 2024
4c26bed
compiles but doesnt work
cowbot92 Jul 5, 2024
0691eb3
remember to change this
cowbot92 Jul 5, 2024
b1cf655
these can go probably
cowbot92 Jul 7, 2024
caeaf27
huge update (we're getting somewhere)
cowbot92 Jul 8, 2024
538d012
coercion spells (molti dont be mad)
cowbot92 Jul 8, 2024
583feb3
Revert "coercion spells (molti dont be mad)"
Moltijoe Jul 8, 2024
5bdb0b0
Revert "huge update (we're getting somewhere)"
Moltijoe Jul 8, 2024
dc53bcc
Revert "coercion spells (molti dont be mad)"
Moltijoe Jul 8, 2024
d30bb3b
Update complexus.dm
Moltijoe Jul 8, 2024
5885213
very nice
Moltijoe Jul 8, 2024
b77dbe3
Update other_mobs.dm
Moltijoe Jul 8, 2024
1ed20a0
Update cerebro_enhancers.dm
Moltijoe Jul 8, 2024
32a8772
Update implant_psi.dm
Moltijoe Jul 8, 2024
59bf30f
lint
Moltijoe Jul 8, 2024
974f42b
updates some stuff
cowbot92 Jul 8, 2024
4e62408
moves shit
cowbot92 Jul 8, 2024
f3bacc8
a lot
cowbot92 Jul 9, 2024
cd93f71
e
cowbot92 Jul 9, 2024
3b9ba5c
Update ui_toggle.dm
Moltijoe Jul 9, 2024
76d6d7d
fixed
Moltijoe Jul 9, 2024
314ae9c
gross redaction shit
cowbot92 Jul 9, 2024
4e6cfd9
Update energistics.dm
Moltijoe Jul 9, 2024
76ef64e
Merge branch 'PortsPsionics' of https://github.com/cowbot92/Yogstatio…
Moltijoe Jul 9, 2024
fce1c3c
mining
cowbot92 Jul 9, 2024
ee9c3b3
radial
Moltijoe Jul 9, 2024
0195f62
Merge branch 'PortsPsionics' of https://github.com/cowbot92/Yogstatio…
Moltijoe Jul 9, 2024
d81e1b3
chat, is this real?
Moltijoe Jul 9, 2024
c8e6f7e
Update psipower_tinker.dm
Moltijoe Jul 9, 2024
de0b3d9
Update complexus_process.dm
Moltijoe Jul 9, 2024
85f6b9c
radials
Moltijoe Jul 9, 2024
6810bf5
Update redaction.dm
Moltijoe Jul 9, 2024
674d698
Update complexus_helpers.dm
Moltijoe Jul 9, 2024
2264915
abilities
Moltijoe Jul 9, 2024
186500a
psi batong
cowbot92 Jul 9, 2024
96196f5
Merge branch 'PortsPsionics' of https://github.com/cowbot92/Yogstatio…
cowbot92 Jul 9, 2024
15129e9
Update redaction.dm
Moltijoe Jul 9, 2024
ce45a71
Merge branch 'PortsPsionics' of https://github.com/cowbot92/Yogstatio…
Moltijoe Jul 9, 2024
4210dd8
Update redaction.dm
Moltijoe Jul 9, 2024
487b11e
Update redaction.dm
Moltijoe Jul 9, 2024
ca1a9b9
Update redaction.dm
Moltijoe Jul 9, 2024
e18fc42
updates this
cowbot92 Jul 9, 2024
33c6814
updates descriptors
cowbot92 Jul 9, 2024
f803b4d
Merge branch 'PortsPsionics' of https://github.com/cowbot92/Yogstatio…
cowbot92 Jul 9, 2024
0a61982
updates icons
cowbot92 Jul 9, 2024
edfc573
this
Moltijoe Jul 9, 2024
ba7956e
Merge branch 'PortsPsionics' of https://github.com/cowbot92/Yogstatio…
Moltijoe Jul 9, 2024
7d9e41f
Update towercap.dm
Moltijoe Jul 9, 2024
4699a82
icons
cowbot92 Jul 9, 2024
a5c92fb
Merge branch 'PortsPsionics' of https://github.com/cowbot92/Yogstatio…
cowbot92 Jul 9, 2024
b4b0b47
Update mineral_walls.dm
Moltijoe Jul 9, 2024
0a80b2e
Merge branch 'PortsPsionics' of https://github.com/cowbot92/Yogstatio…
Moltijoe Jul 9, 2024
b5cd4a8
tool stuff
Moltijoe Jul 9, 2024
9bc927b
fixes telekinesis
Moltijoe Jul 9, 2024
2d9df13
should be done
Moltijoe Jul 9, 2024
16c91ef
autoredaction
Moltijoe Jul 9, 2024
4f03c4a
Update complexus_process.dm
Moltijoe Jul 9, 2024
8c6c394
Update complexus_process.dm
Moltijoe Jul 9, 2024
b7f8333
shift
Moltijoe Jul 9, 2024
7b3aa45
update access
cowbot92 Jul 9, 2024
47f2e0c
Merge branch 'PortsPsionics' of https://github.com/cowbot92/Yogstatio…
cowbot92 Jul 9, 2024
31c792b
returns
Moltijoe Jul 9, 2024
c404424
Merge branch 'PortsPsionics' of https://github.com/cowbot92/Yogstatio…
Moltijoe Jul 9, 2024
92c4966
latency trigger
Moltijoe Jul 9, 2024
c51c350
fixes stacking + gives sec mind control
cowbot92 Jul 9, 2024
80608c5
Merge branch 'PortsPsionics' of https://github.com/cowbot92/Yogstatio…
cowbot92 Jul 9, 2024
b892d6e
awakener
Moltijoe Jul 9, 2024
469b2f1
Update psionic_awakener.dm
Moltijoe Jul 9, 2024
dace581
Merge branch 'PortsPsionics' of https://github.com/cowbot92/Yogstatio…
cowbot92 Jul 9, 2024
c532883
tweaks
Moltijoe Jul 9, 2024
c73a76a
Merge branch 'PortsPsionics' of https://github.com/cowbot92/Yogstatio…
Moltijoe Jul 9, 2024
8857951
remove lowmeme adjust races psionics
cowbot92 Jul 9, 2024
4dee5b5
Merge branch 'PortsPsionics' of https://github.com/cowbot92/Yogstatio…
cowbot92 Jul 9, 2024
374160b
admin and tooltips
Moltijoe Jul 9, 2024
8f926f4
Merge branch 'PortsPsionics' of https://github.com/cowbot92/Yogstatio…
Moltijoe Jul 9, 2024
d34c6aa
rearrange species stuff
Moltijoe Jul 9, 2024
826ab85
IPC """immunity"""
cowbot92 Jul 9, 2024
e857480
Merge branch 'PortsPsionics' of https://github.com/cowbot92/Yogstatio…
cowbot92 Jul 9, 2024
f6084ac
Update admin.dm
Moltijoe Jul 9, 2024
161d877
Merge branch 'PortsPsionics' of https://github.com/cowbot92/Yogstatio…
cowbot92 Jul 9, 2024
a2a08bc
coercion
Moltijoe Jul 9, 2024
42dd20e
Merge branch 'PortsPsionics' of https://github.com/cowbot92/Yogstatio…
Moltijoe Jul 9, 2024
25b26c5
oh fuck right
cowbot92 Jul 9, 2024
f48d1dd
fuck fuck
cowbot92 Jul 9, 2024
a6ab553
Merge branch 'PortsPsionics' of https://github.com/cowbot92/Yogstatio…
cowbot92 Jul 9, 2024
f4b42e3
conflicts b gone
cowbot92 Jul 9, 2024
089171c
no dobule
cowbot92 Jul 9, 2024
55196ed
maybe fix?
cowbot92 Jul 9, 2024
bebab64
null glass move
cowbot92 Jul 9, 2024
6be9234
[so ar,pr
Moltijoe Jul 9, 2024
ec8f1c8
Merge branch 'PortsPsionics' of https://github.com/cowbot92/Yogstatio…
Moltijoe Jul 9, 2024
0bd61d1
fix?
cowbot92 Jul 9, 2024
b17089f
Update living_defense.dm
Moltijoe Jul 9, 2024
93a1e53
Merge branch 'PortsPsionics' of https://github.com/cowbot92/Yogstatio…
Moltijoe Jul 9, 2024
5e33296
ok no null glass
cowbot92 Jul 9, 2024
bad4492
Merge branch 'PortsPsionics' of https://github.com/cowbot92/Yogstatio…
cowbot92 Jul 9, 2024
d70e75a
shrug
cowbot92 Jul 9, 2024
6396193
compile
cowbot92 Jul 9, 2024
c35f429
Update psychokenisis.dm
Moltijoe Jul 9, 2024
5f9f847
Update psychokenisis.dm
Moltijoe Jul 9, 2024
0f8d9a6
Update psychokenisis.dm
Moltijoe Jul 9, 2024
2e9b527
nullglass
Moltijoe Jul 9, 2024
3167e37
Update stack_objects.dmi
Moltijoe Jul 9, 2024
eb2b3e2
better parts better farts
cowbot92 Jul 9, 2024
205ae55
Merge branch 'PortsPsionics' of https://github.com/cowbot92/Yogstatio…
cowbot92 Jul 9, 2024
05430d5
Merge branch 'yogstation13:master' into PortsPsionics
cowbot92 Jul 9, 2024
bc7f796
Merge remote-tracking branch 'upstream/master' into PortsPsionics
cowbot92 Jul 9, 2024
3097e86
null
Moltijoe Jul 9, 2024
dee42be
Merge branch 'PortsPsionics' of https://github.com/cowbot92/Yogstatio…
cowbot92 Jul 9, 2024
e9b3a3d
brain damage
Moltijoe Jul 9, 2024
0d68c3d
Merge branch 'PortsPsionics' of https://github.com/cowbot92/Yogstatio…
Moltijoe Jul 9, 2024
0271c5f
Update psionic_awakener.dm
Moltijoe Jul 9, 2024
3c03aeb
Update psionic_awakener.dm
Moltijoe Jul 9, 2024
3b7d012
admin force
Moltijoe Jul 9, 2024
ff214c5
Update complexus_latency.dm
Moltijoe Jul 9, 2024
e745c99
Update complexus_latency.dm
Moltijoe Jul 9, 2024
ff00944
zorch hud plane
cowbot92 Jul 9, 2024
46d0d65
don'tshowuseless
Moltijoe Jul 9, 2024
16d33e0
pupdate
cowbot92 Jul 9, 2024
6e80d72
Merge branch 'PortsPsionics' of https://github.com/cowbot92/Yogstatio…
cowbot92 Jul 9, 2024
56819e3
Update complexus.dm
Moltijoe Jul 9, 2024
969c0b6
Merge branch 'PortsPsionics' of https://github.com/cowbot92/Yogstatio…
Moltijoe Jul 9, 2024
8add0d1
this might work
Moltijoe Jul 9, 2024
a7459da
it works
Moltijoe Jul 9, 2024
224635a
removes genetics
Moltijoe Jul 9, 2024
aa4e0dd
Update ui_toggle.dm
Moltijoe Jul 9, 2024
914747e
more armour + wound
Moltijoe Jul 9, 2024
159a4dd
adds to other maps
cowbot92 Jul 10, 2024
030ce93
Merge branch 'PortsPsionics' of https://github.com/cowbot92/Yogstatio…
cowbot92 Jul 10, 2024
997a740
update maps + access
cowbot92 Jul 10, 2024
de4cc39
molti wants to fix this
cowbot92 Jul 10, 2024
d1a331c
Update mob.dm
Moltijoe Jul 10, 2024
033ac31
Update complexus.dm
Moltijoe Jul 10, 2024
5ccfd02
quirks
cowbot92 Jul 10, 2024
af0cc34
quirk icon update
cowbot92 Jul 10, 2024
a85c2b4
Merge branch 'PortsPsionics' of https://github.com/cowbot92/Yogstatio…
cowbot92 Jul 10, 2024
467e84f
double macro
cowbot92 Jul 10, 2024
3da95f8
batong fix
Moltijoe Jul 10, 2024
5594cbb
Merge branch 'PortsPsionics' of https://github.com/cowbot92/Yogstatio…
Moltijoe Jul 10, 2024
b2214ff
gives three-eye a recipie
cowbot92 Jul 10, 2024
2647eb9
Merge branch 'PortsPsionics' of https://github.com/cowbot92/Yogstatio…
cowbot92 Jul 10, 2024
813dd6a
coercion
Moltijoe Jul 10, 2024
cab623f
Update coercion.dm
Moltijoe Jul 10, 2024
2de5a8a
Merge branch 'PortsPsionics' of https://github.com/cowbot92/Yogstatio…
Moltijoe Jul 10, 2024
47dfe50
detect darkspawns
Moltijoe Jul 10, 2024
1da353f
Update shadowpeople.dm
Moltijoe Jul 10, 2024
b394a43
oops
cowbot92 Jul 10, 2024
8306e8b
Merge branch 'PortsPsionics' of https://github.com/cowbot92/Yogstatio…
cowbot92 Jul 10, 2024
9f839e5
tweaks
Moltijoe Jul 10, 2024
f59090a
Update mini_spasms.dm
Moltijoe Jul 10, 2024
a894fd8
Update mini_spasms.dm
Moltijoe Jul 10, 2024
e2d2d6e
oops
cowbot92 Jul 10, 2024
2de96b3
oops nerf this
cowbot92 Jul 10, 2024
a594eed
Update IPC.dm
Moltijoe Jul 10, 2024
dfd2369
Merge branch 'PortsPsionics' of https://github.com/cowbot92/Yogstatio…
Moltijoe Jul 10, 2024
2021d8c
aura images are hard
Moltijoe Jul 10, 2024
a51981b
Update _basemap.dm
Moltijoe Jul 10, 2024
9132ab6
stop punching yourself
Moltijoe Jul 10, 2024
5b977da
Update coercion.dm
Moltijoe Jul 10, 2024
dde2fc3
Update coercion.dm
Moltijoe Jul 10, 2024
661f35f
tweaks
Moltijoe Jul 10, 2024
1115389
delete when outta juice
Moltijoe Jul 10, 2024
7d0de33
checks
Moltijoe Jul 10, 2024
e17f9d0
Update negative.dm
Moltijoe Jul 10, 2024
2986fc4
Update negative.dm
Moltijoe Jul 10, 2024
27f2000
Update quirks.dm
Moltijoe Jul 11, 2024
c530e93
Update quirks.dm
Moltijoe Jul 11, 2024
dff6e15
Update glass.dm
Moltijoe Jul 11, 2024
06b6ba6
armour and autoredaction
Moltijoe Jul 11, 2024
62c33df
Update complexus_process.dm
Moltijoe Jul 11, 2024
c107fac
ok
cowbot92 Jul 12, 2024
bcccdd0
q
cowbot92 Jul 12, 2024
02784dc
traits and tweaks
Moltijoe Jul 12, 2024
251e058
Merge branch 'PortsPsionics' of https://github.com/cowbot92/Yogstatio…
Moltijoe Jul 12, 2024
4c83e4b
sorry man, lore accuracy
Moltijoe Jul 12, 2024
df7af84
Update redaction.dm
Moltijoe Jul 12, 2024
2c6d26c
Update negative.dm
Moltijoe Jul 12, 2024
a3d5e05
Update geneticist.dm
Moltijoe Jul 12, 2024
91f731c
admin controls
Moltijoe Jul 13, 2024
610f776
awakener
Moltijoe Jul 13, 2024
6264582
bugfixes and consistency
Moltijoe Jul 13, 2024
5d5092f
more bugfixes
Moltijoe Jul 13, 2024
9da4780
Update ui_hub.dm
Moltijoe Jul 13, 2024
20cc658
Update mob.dm
Moltijoe Jul 13, 2024
08e4f42
Update mob.dm
Moltijoe Jul 13, 2024
40e88d7
Update mini_spasms.dm
Moltijoe Jul 13, 2024
493f5da
Update coercion.dm
Moltijoe Jul 13, 2024
5e6119a
tweaks
Moltijoe Jul 13, 2024
352bc1f
Update complexus_latency.dm
Moltijoe Jul 13, 2024
498120e
done
Moltijoe Jul 13, 2024
ac54ea6
Update complexus_latency.dm
Moltijoe Jul 13, 2024
9fdcb5a
Update complexus_latency.dm
Moltijoe Jul 13, 2024
237ac6c
fixes
Moltijoe Jul 14, 2024
241875d
fixes quirk not working
cowbot92 Jul 14, 2024
7fb9ac8
Update mob.dm
Moltijoe Jul 14, 2024
a5d36a3
gives psi blade cleaving at higher levels
cowbot92 Jul 14, 2024
c044053
remove tuned
cowbot92 Jul 14, 2024
9ba54c4
Update quirks.dm
Moltijoe Jul 14, 2024
1916357
revenant immunity
Moltijoe Jul 14, 2024
0b2a3cf
Update coercion.dm
Moltijoe Jul 14, 2024
3f44f82
Update psipower_tk.dm
Moltijoe Jul 14, 2024
4df7562
fix telekinesis
Moltijoe Jul 14, 2024
c51695a
Update mini_spasms.dm
Moltijoe Jul 15, 2024
fbb6eda
Merge remote-tracking branch 'upstream/master' into PortsPsionics
cowbot92 Jul 15, 2024
63b704d
Update darkspawn_progenitor.dm
Moltijoe Jul 15, 2024
50ecbe0
fix three eye colour
Moltijoe Jul 15, 2024
fe4c952
Merge remote-tracking branch 'upstream/master' into PortsPsionics
cowbot92 Jul 26, 2024
f218afc
readds
cowbot92 Jul 26, 2024
6d8c4c5
Merge remote-tracking branch 'upstream/master' into PortsPsionics
cowbot92 Aug 8, 2024
ffa8bcf
ok bye
cowbot92 Aug 8, 2024
64b6504
Merge remote-tracking branch 'upstream/master' into PortsPsionics
cowbot92 Aug 16, 2024
61ccef6
biome request
cowbot92 Aug 16, 2024
64a2559
bye chap shit
cowbot92 Aug 16, 2024
fde8a17
eeee
cowbot92 Sep 10, 2024
69a462e
Merge remote-tracking branch 'upstream/master' into PortsPsionics
cowbot92 Sep 10, 2024
8a569b9
ok this should work
cowbot92 Sep 15, 2024
b791b14
Merge remote-tracking branch 'upstream/master' into PortsPsionics
cowbot92 Sep 15, 2024
1c08cbb
fix
cowbot92 Sep 15, 2024
c02376b
fart
cowbot92 Sep 15, 2024
c67c528
fixed
Moltijoe Sep 16, 2024
52e7b18
fix tk
Moltijoe Sep 16, 2024
ec43c99
this will be used later
cowbot92 Sep 16, 2024
08c9869
updates
cowbot92 Sep 16, 2024
baa62b4
Merge remote-tracking branch 'upstream/master' into PortsPsionics
cowbot92 Sep 16, 2024
45d9fd3
ffsdfewv
ToasterBiome Sep 16, 2024
ff34f9c
Merge pull request #4 from ToasterBiome/PortsPsionics
cowbot92 Sep 16, 2024
f88444e
I forgot this
cowbot92 Sep 17, 2024
0779be7
piss
cowbot92 Sep 19, 2024
6c8032b
ea
cowbot92 Sep 19, 2024
0eaf3e6
slightly improves tgui for complexus
ToasterBiome Sep 19, 2024
f0be099
disables dis-arm for now
cowbot92 Sep 19, 2024
93888cb
Merge branch 'PortsPsionics' of https://github.com/cowbot92/Yogstatio…
cowbot92 Sep 19, 2024
f590cf2
actually nevermind this is better
cowbot92 Sep 19, 2024
e252711
f
cowbot92 Sep 19, 2024
e4288cc
removes the events for now
cowbot92 Sep 20, 2024
b1a939b
Merge remote-tracking branch 'upstream/master' into PortsPsionics
cowbot92 Sep 20, 2024
c20aada
e
cowbot92 Sep 21, 2024
c6d1621
comment out
cowbot92 Sep 22, 2024
4903725
aeae
cowbot92 Sep 22, 2024
69fbeeb
fck events
cowbot92 Sep 22, 2024
0cacfd0
e
cowbot92 Sep 22, 2024
401a319
update
cowbot92 Sep 22, 2024
88f91db
changes
Moltijoe Sep 23, 2024
c36d08d
better selection button
Moltijoe Oct 1, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions code/__DEFINES/atom_hud.dm
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@
#define DIAG_LAUNCHPAD_HUD "22"
//for antag huds. these are used at the /mob level
#define ANTAG_HUD "23"
/// psi control implant
#define IMPPSI_HUD "24"

//by default everything in the hud_list of an atom is an image
//a value in hud_list with one of these will change that behavior
Expand Down
33 changes: 33 additions & 0 deletions code/__DEFINES/psi.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#define PSI_COERCION "coercion"
#define PSI_PSYCHOKINESIS "psychokinesis"
#define PSI_REDACTION "redaction"
#define PSI_ENERGISTICS "energistics"

#define PSI_RANK_BLUNT 0
#define PSI_RANK_LATENT 1
#define PSI_RANK_OPERANT 2
#define PSI_RANK_MASTER 3
#define PSI_RANK_GRANDMASTER 4
#define PSI_RANK_PARAMOUNT 5

#define PSI_IMPLANT_AUTOMATIC "Security Level Derived"
#define PSI_IMPLANT_SHOCK "Issue Neural Shock"
#define PSI_IMPLANT_WARN "Issue Reprimand"
#define PSI_IMPLANT_LOG "Log Incident"
#define PSI_IMPLANT_DISABLED "Disabled"

#define INVOKE_PSI_POWERS(holder, powers, target, return_on_invocation) \
if(holder?.psi?.can_use()) { \
for(var/datum/psionic_power/power as anything in powers) { \
var/obj/item/result = power.invoke(holder, target); \
if(result) { \
power.handle_post_power(holder, target); \
if(istype(result)) { \
holder.playsound_local(soundin = 'sound/effects/psi/power_evoke.ogg'); \
LAZYADD(holder.psi.manifested_items, result); \
holder.put_in_hands(result); \
} \
return return_on_invocation; \
} \
} \
}
2 changes: 2 additions & 0 deletions code/_onclick/hud/screen_objects.dm
Original file line number Diff line number Diff line change
Expand Up @@ -284,6 +284,8 @@
var/obj/item/I = hud.mymob.get_active_held_item()
if(I)
I.Click(location, control, params)
else
hud.mymob.attack_empty_hand(hud.mymob.active_hand_index)
else
hud.mymob.swap_hand(held_index)
return 1
Expand Down
13 changes: 13 additions & 0 deletions code/_onclick/other_mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
Otherwise pretty standard.
*/
/mob/living/carbon/human/UnarmedAttack(atom/A, proximity, modifiers)
if(psi)
INVOKE_PSI_POWERS(src, psi.get_melee_powers(SSpsi.faculties_by_intent[a_intent]), A, FALSE)
if(HAS_TRAIT(src, TRAIT_HANDS_BLOCKED))
if(src == A)
check_self_for_injuries()
Expand Down Expand Up @@ -47,6 +49,14 @@

A.attack_hand(src, modifiers)

/mob/living/carbon/human/attack_empty_hand()
if(psi)
INVOKE_PSI_POWERS(src, psi.get_manifestations(), src, FALSE)

/mob/living/carbon/human/RangedAttack(atom/A, params)
if(psi)
INVOKE_PSI_POWERS(src, psi.get_ranged_powers(SSpsi.faculties_by_intent[a_intent]), A, TRUE)

//Return TRUE to cancel other attack hand effects that respect it.
/atom/proc/attack_hand(mob/user, modifiers)
. = FALSE
Expand All @@ -57,6 +67,9 @@
if(interaction_flags_atom & INTERACT_ATOM_ATTACK_HAND)
. = _try_interact(user, modifiers)

/mob/proc/attack_empty_hand(hand)
return

/// When the user uses their hand on an item while holding right-click
/// Returns a SECONDARY_ATTACK_* value.
/atom/proc/attack_hand_secondary(mob/user, modifiers)
Expand Down
38 changes: 38 additions & 0 deletions code/controllers/subsystem/processing/psi.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
GLOBAL_LIST_INIT(psychic_ranks_to_strings, list("Latent", "Operant", "Masterclass", "Grandmasterclass", "Paramount"))

PROCESSING_SUBSYSTEM_DEF(psi)
name = "Psychics"
// priority = SS_PRIORITY_PSYCHICS
flags = SS_POST_FIRE_TIMING | SS_BACKGROUND

var/list/faculties_by_id = list()
var/list/faculties_by_name = list()
var/list/all_aura_images = list()
var/list/all_psi_complexes = list()
var/list/psi_dampeners = list()
var/list/psi_monitors = list()
var/list/armour_faculty_by_type = list()
var/list/faculties_by_intent = list()

/datum/controller/subsystem/processing/psi/New()
NEW_SS_GLOBAL(SSpsi)

/datum/controller/subsystem/processing/psi/proc/get_faculty(faculty)
return faculties_by_name[faculty] || faculties_by_id[faculty]

/datum/controller/subsystem/processing/psi/Initialize()
. = ..()

var/list/faculties = subtypesof(/datum/psionic_faculty)
for(var/ftype in faculties)
var/datum/psionic_faculty/faculty = new ftype
faculties_by_id[faculty.id] = faculty
faculties_by_name[faculty.name] = faculty
faculties_by_intent[faculty.associated_intent] = faculty.id

var/list/powers = subtypesof(/datum/psionic_power)
for(var/ptype in powers)
var/datum/psionic_power/power = new ptype
if(power.faculty)
var/datum/psionic_faculty/faculty = get_faculty(power.faculty)
faculty?.powers |= power
7 changes: 7 additions & 0 deletions code/datums/mind.dm
Original file line number Diff line number Diff line change
Expand Up @@ -465,6 +465,13 @@
if(!check_rights(R_ADMIN))
return

if(current && isliving(current))
if(href_list["set_psi_faculty"] && href_list["set_psi_faculty_rank"])
current.set_psi_rank(href_list["set_psi_faculty"], text2num(href_list["set_psi_faculty_rank"]))
message_admins("[key_name_admin(usr)] set [key_name(current)]'s [href_list["set_psi_faculty"]] faculty to [text2num(href_list["set_psi_faculty_rank"])].")
log_admin("[key_name_admin(usr)] set [key_name(current)]'s [href_list["set_psi_faculty"]] faculty to [text2num(href_list["set_psi_faculty_rank"])].")
return TRUE

var/self_antagging = usr == current

if(href_list["add_antag"])
Expand Down
3 changes: 3 additions & 0 deletions code/game/atoms_movable.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1394,3 +1394,6 @@
if(destination)
forceMove(destination)
return TRUE

/atom/movable/proc/do_simple_ranged_interaction(mob/user)
return FALSE
10 changes: 8 additions & 2 deletions code/game/data_huds.dm
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@
hud_icons = list(ID_HUD)

/datum/atom_hud/data/human/security/advanced
hud_icons = list(ID_HUD, IMPTRACK_HUD, IMPLOYAL_HUD, IMPCHEM_HUD, WANTED_HUD, NANITE_HUD)
hud_icons = list(ID_HUD, IMPTRACK_HUD, IMPLOYAL_HUD, IMPCHEM_HUD, WANTED_HUD, NANITE_HUD, IMPPSI_HUD)

/datum/atom_hud/data/human/security/advanced/hos
hud_icons = list(ID_HUD, IMPTRACK_HUD, IMPLOYAL_HUD, IMPCHEM_HUD, WANTED_HUD, NANITE_HUD, STATUS_HUD, HEALTH_HUD)
Expand Down Expand Up @@ -212,7 +212,7 @@ Security HUDs! Basic mode shows only the job.

/mob/living/proc/sec_hud_set_implants()
var/image/holder
for(var/i in list(IMPTRACK_HUD, IMPLOYAL_HUD, IMPCHEM_HUD))
for(var/i in list(IMPTRACK_HUD, IMPLOYAL_HUD, IMPCHEM_HUD, IMPPSI_HUD))
holder = hud_list[i]
holder.icon_state = null
set_hud_image_inactive(i)
Expand All @@ -231,6 +231,12 @@ Security HUDs! Basic mode shows only the job.
holder.pixel_y = IC.Height() - world.icon_size
holder.icon_state = "hud_imp_chem"
set_hud_image_active(IMPCHEM_HUD)
else if(istype(I, /obj/item/implant/psi_control))
holder = hud_list[IMPPSI_HUD]
var/icon/IC = icon(icon, icon_state, dir)
holder.pixel_y = IC.Height() - world.icon_size
holder.icon_state = "hud_imp_psi"
set_hud_image_active(IMPPSI_HUD)

if(HAS_TRAIT(src, TRAIT_MINDSHIELD))
holder = hud_list[IMPLOYAL_HUD]
Expand Down
8 changes: 8 additions & 0 deletions code/game/machinery/doors/door.dm
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,14 @@
return
..()

/obj/machinery/door/do_simple_ranged_interaction(mob/user)
if(!requiresID() || allowed(null))
if(density)
open()
else
close()
return TRUE

/obj/machinery/door/proc/try_to_activate_door(mob/user)
add_fingerprint(user)
if(operating || (obj_flags & EMAGGED))
Expand Down
5 changes: 5 additions & 0 deletions code/game/objects/items.dm
Original file line number Diff line number Diff line change
Expand Up @@ -508,6 +508,11 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
R.activate_module(src)
R.hud_used.update_robot_modules_display()

/obj/item/do_simple_ranged_interaction(mob/user)
if(user)
attack_self(user)
return TRUE

/obj/item/proc/GetDeconstructableContents()
return get_all_contents() - src

Expand Down
174 changes: 174 additions & 0 deletions code/game/objects/items/implants/implant_psi.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,174 @@
/obj/item/implant/psi_control
name = "psi dampener implant"
desc = "A safety implant for registered psi-operants."
implant_color = "n"
activated = FALSE

var/overload = 0
var/max_overload = 100
var/cooldown_rate = 10
var/psi_mode = PSI_IMPLANT_AUTOMATIC
var/list/logs

/obj/item/implant/psi_control/get_data()
var/dat = {"<b>Implant Specifications:</b><BR>
<b>Name:</b> Nanotrasen Psionic Mitigation Implant<BR>
<b>Life:</b> Ten years.<BR>
<b>Important Notes:</b> Psionic personel injected with this device can have their psionic potental di.<BR>
<HR>
<b>Implant Details:</b><BR>
<b>Function:</b> Contains a small shard of nullglass that prevents those implanted from being able to use psionic powers.<BR>
<b>Special Features:</b> Will prevent and log the use of psionics.<BR>
<b>Integrity:</b> Implant will last so long as the device is inside the bloodstream."}
return dat

/obj/item/implant/psi_control/Initialize()
. = ..()
SSpsi.psi_dampeners += src
SSpsi.processing += src

/obj/item/implant/psi_control/Destroy()
SSpsi.psi_dampeners -= src
SSpsi.processing -= src
. = ..()

/obj/item/implant/psi_control/process()
..()
overload = max(overload - cooldown_rate, 0)

/obj/item/implant/psi_control/disrupts_psionics()
if(!imp_in)
return FALSE
var/use_psi_mode = get_psi_mode()
return (use_psi_mode == PSI_IMPLANT_SHOCK || use_psi_mode == PSI_IMPLANT_WARN) ? src : FALSE

/obj/item/implant/psi_control/removed()
var/mob/living/M = imp_in
if(disrupts_psionics() && istype(M) && M.psi)
to_chat(M, span_notice("You feel the chilly shackles around your psionic faculties fade away."))
. = ..()

/obj/item/implant/psi_control/proc/update_functionality(silent)
var/mob/living/M = imp_in
if(silent || !M || !M.psi)
return
if(get_psi_mode() == PSI_IMPLANT_DISABLED)
to_chat(M, span_notice("You feel the chilly shackles around your psionic faculties fade away."))
else
to_chat(M, span_notice("Bands of hollow ice close themselves around your psionic faculties."))

/obj/item/implant/psi_control/proc/meltdown()
overload = 100
if(imp_in)
report_failure()
psi_mode = PSI_IMPLANT_DISABLED
update_functionality()

/obj/item/implant/psi_control/proc/get_psi_mode()
if(psi_mode == PSI_IMPLANT_AUTOMATIC)
switch(get_security_level())
if("green")
return PSI_IMPLANT_SHOCK
if("blue")
return PSI_IMPLANT_WARN
else
return PSI_IMPLANT_LOG

return psi_mode

/obj/item/implant/psi_control/withstand_psi_stress(stress, atom/source)
if(source != imp_in)
return

var/use_psi_mode = get_psi_mode()

if(use_psi_mode == PSI_IMPLANT_DISABLED)
return stress

. = 0

if(stress)

// If we're disrupting psionic attempts at the moment, we might overload.
if(disrupts_psionics())
var/overload_amount = FLOOR(stress, 10)
if(overload_amount)
overload += overload_amount
if(overload >= 100)
if(imp_in)
to_chat(imp_in, span_danger("Your psi dampener overloads violently!"))
meltdown()
update_functionality()
return
if(imp_in)
if(overload >= 75 && overload < 100)
to_chat(imp_in, span_danger("Your psi dampener is searing hot!"))
else if(overload >= 50 && overload < 75)
to_chat(imp_in, span_warning("Your psi dampener is uncomfortably hot..."))
else if(overload >= 25 && overload < 50)
to_chat(imp_in, span_warning("You feel your psi dampener heating up..."))

// If all we're doing is logging the incident then just pass back stress without changing it.
if(source && source == imp_in)
report_violation(stress)
switch(use_psi_mode)
if(PSI_IMPLANT_LOG)
return stress
if(PSI_IMPLANT_SHOCK)
to_chat(imp_in, span_danger("Your psi dampener punishes you with a violent neural shock!"))
imp_in.electrocute_act(5, src)
if(isliving(imp_in))
var/mob/living/M = imp_in
if(M.psi) M.psi.stunned(5)
if(PSI_IMPLANT_WARN)
to_chat(imp_in, span_warning("Your psi dampener primly informs you it has reported this violation."))

/obj/item/implant/psi_control/proc/report_failure()
LAZYADD(logs, "Critical system failure - [imp_in.name].")

/obj/item/implant/psi_control/proc/report_violation(stress)
LAZYADD(logs, "Sigma [round(stress/10)] event - [imp_in.name].")

/obj/item/implant/psi_control/psych
psi_mode = PSI_IMPLANT_LOG

/obj/item/implanter/psi_control
name = "implanter (psi dampener)"
imp_type = /obj/item/implant/psi_control

/obj/item/implantcase/psi_control
name = "implant case - 'Psi Dampener'"
desc = "A glass case containing a psi dampener implant."
imp_type = /obj/item/implant/psi_control

/obj/item/implant/nullglass
name = "nullglass shard"
desc = "A shard of psionic inhibiting glass."
implant_color = "n"
var/stress_left = 100
var/lifespan = 1 MINUTES

/obj/item/implant/nullglass/Initialize()
. = ..()
QDEL_IN(src, lifespan)

/obj/item/implant/nullglass/disrupts_psionics()
if(imp_in)
return src

/obj/item/implant/nullglass/withstand_psi_stress(stress, atom/source)
if(source != imp_in)
return stress

. = max(stress - stress_left, 0)
stress_left -= stress
if(imp_in)
if(stress_left > 0 && stress_left < 25)
to_chat(imp_in, span_danger("You feel a searing hot piece of glass in your body!"))
else if(stress_left >= 25 && stress_left < 50)
to_chat(imp_in, span_warning("You feel a piece of glass in your body getting uncomfortably hot..."))
else if(stress_left >= 50)
to_chat(imp_in, span_warning("You feel a piece of glass in your body heating up..."))
if(stress_left <= 0)
to_chat(imp_in, span_danger("You hear a piece of glass shatter in your body!"))
qdel(src)
Loading
Loading