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

More arcane tamper stuff #37228

Open
wants to merge 103 commits into
base: Bleeding-Edge
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
103 commits
Select commit Hold shift + click to select a range
06f8426
fluffs up this
Mar 20, 2024
7a6e549
initial stuff
SECBATON-GRIFFON Apr 29, 2024
eb63453
makes it compile
SECBATON-GRIFFON Apr 29, 2024
67ab256
this too
SECBATON-GRIFFON Apr 29, 2024
35b973c
adds these
SECBATON-GRIFFON Apr 29, 2024
c00148e
stops limb removal for this
SECBATON-GRIFFON Apr 29, 2024
3936797
living long balloons
SECBATON-GRIFFON Apr 29, 2024
ee95ad4
more syndie items done
SECBATON-GRIFFON Apr 29, 2024
b789db4
stack recipes are now infected
SECBATON-GRIFFON Apr 29, 2024
eb9a170
arcane tampering chems
SECBATON-GRIFFON Sep 4, 2024
ea9cf3c
Merge branch 'Bleeding-Edge' into more-arcane-tamper
SECBATON-GRIFFON Sep 4, 2024
4991f88
fixes from merge
SECBATON-GRIFFON Sep 4, 2024
87c5f4f
nother one
SECBATON-GRIFFON Sep 4, 2024
b954cb1
Merge branch 'outsnatch-willy' into more-arcane-tamper
SECBATON-GRIFFON Oct 3, 2024
de20918
puts this here
SECBATON-GRIFFON Oct 3, 2024
61bb4c0
vocal implant funnies
SECBATON-GRIFFON Oct 4, 2024
e8a84bf
nother fun thing
SECBATON-GRIFFON Oct 4, 2024
bf82559
CLEANUP and more
SECBATON-GRIFFON Oct 4, 2024
1ca1c12
fixes
SECBATON-GRIFFON Oct 4, 2024
4cb6be3
fixes
SECBATON-GRIFFON Oct 4, 2024
88c5937
cleaner
SECBATON-GRIFFON Oct 4, 2024
d0dbf6e
reading da mind
SECBATON-GRIFFON Oct 4, 2024
d7b3cc9
comments out OP ones that ruin medbay, adds ratio for some funny effe…
SECBATON-GRIFFON Oct 4, 2024
8f808cb
up it a little
SECBATON-GRIFFON Oct 4, 2024
8e90e00
consistency
SECBATON-GRIFFON Oct 4, 2024
5075763
balance
SECBATON-GRIFFON Oct 4, 2024
09e95c7
changes this
SECBATON-GRIFFON Oct 4, 2024
bc3a174
let's not do that one
SECBATON-GRIFFON Oct 4, 2024
87deea6
also too OP, we dont want wiz to make another antag for the round
SECBATON-GRIFFON Oct 4, 2024
28c5e5e
fix
SECBATON-GRIFFON Oct 4, 2024
190efea
this too
SECBATON-GRIFFON Oct 4, 2024
246a45e
obligatory
SECBATON-GRIFFON Oct 4, 2024
d86f2d6
better, really
SECBATON-GRIFFON Oct 4, 2024
dd0a0b6
more realistic, covers most cases save for some words like maint
SECBATON-GRIFFON Oct 4, 2024
5ee321d
cleaner
SECBATON-GRIFFON Oct 4, 2024
d4ab3ea
NEEDED
SECBATON-GRIFFON Oct 4, 2024
36fd943
but of course
SECBATON-GRIFFON Oct 4, 2024
8cbb2b2
cleaner
SECBATON-GRIFFON Oct 4, 2024
695366a
needed in all cases
SECBATON-GRIFFON Oct 4, 2024
d7ce5c2
..mgar..
SECBATON-GRIFFON Oct 4, 2024
f02a363
cleanups that make things work right
SECBATON-GRIFFON Oct 4, 2024
fcf194e
cleaner again
SECBATON-GRIFFON Oct 4, 2024
651d48a
compile
SECBATON-GRIFFON Oct 4, 2024
174138c
oh this too
SECBATON-GRIFFON Oct 4, 2024
b8eea16
ideally, also runtime fix
SECBATON-GRIFFON Oct 4, 2024
1aacb5c
assistants and clowns auto stunning the loyalty implanted
SECBATON-GRIFFON Oct 4, 2024
617291a
ah, it goes here
SECBATON-GRIFFON Oct 4, 2024
18d47c2
oh that explains it
SECBATON-GRIFFON Oct 4, 2024
e3b167a
probably needed
SECBATON-GRIFFON Oct 4, 2024
597b4ac
so more interesting invocations show up
SECBATON-GRIFFON Oct 4, 2024
9401d9a
now work
SECBATON-GRIFFON Oct 4, 2024
6b6ffd5
cleanups
SECBATON-GRIFFON Oct 4, 2024
202b841
sanity
SECBATON-GRIFFON Oct 4, 2024
f2746e9
no this is
SECBATON-GRIFFON Oct 4, 2024
9de2af0
makes these count for gult shouts too
SECBATON-GRIFFON Oct 4, 2024
41e18c0
funnier
SECBATON-GRIFFON Oct 4, 2024
729fc34
makes this work off the bat
SECBATON-GRIFFON Oct 4, 2024
f187d75
fixes name update
SECBATON-GRIFFON Oct 4, 2024
660f078
cleaner code, doesn't block both arms if in just one
SECBATON-GRIFFON Oct 5, 2024
409d8e9
now we got a mix of stuff here
SECBATON-GRIFFON Oct 5, 2024
e21865c
seems fitting soundswise
SECBATON-GRIFFON Oct 5, 2024
770770a
not dealing with unforeseen consequences this time
SECBATON-GRIFFON Oct 5, 2024
3e5c46a
oh yea and another one
SECBATON-GRIFFON Oct 5, 2024
181480c
simplifies this greatly
SECBATON-GRIFFON Oct 5, 2024
8442c69
now makes this only affect the actual arm and not both too!
SECBATON-GRIFFON Oct 5, 2024
86ed695
cleaner
SECBATON-GRIFFON Oct 5, 2024
6a9b4ec
ah the numbers are backwards
SECBATON-GRIFFON Oct 5, 2024
1b7430a
line cutdown
SECBATON-GRIFFON Oct 5, 2024
82561cd
bit faster cus istype can be slow
SECBATON-GRIFFON Oct 5, 2024
d9bffce
no magic numbers allowed
SECBATON-GRIFFON Oct 5, 2024
2aeb492
cleanup
SECBATON-GRIFFON Oct 6, 2024
8521680
hopefully fixes this
SECBATON-GRIFFON Oct 6, 2024
5f00474
necessary for this to even work
SECBATON-GRIFFON Oct 6, 2024
2dfe0ce
requested
SECBATON-GRIFFON Oct 6, 2024
b768162
so this works right
SECBATON-GRIFFON Oct 6, 2024
8002ff3
this annoys me
SECBATON-GRIFFON Oct 6, 2024
090ebd4
hacky but consistent
SECBATON-GRIFFON Oct 6, 2024
a2ffb18
makes this actually work lul, turns out it was turning this off on th…
SECBATON-GRIFFON Oct 6, 2024
205b69e
ah the check is here
SECBATON-GRIFFON Oct 6, 2024
0eb7c64
so it does the damage too lel
SECBATON-GRIFFON Oct 6, 2024
6f06489
oh wow that's why this was broke
SECBATON-GRIFFON Oct 6, 2024
db6daed
much simpler and actually works
SECBATON-GRIFFON Oct 6, 2024
cc9d30c
restrict this to here pls
SECBATON-GRIFFON Oct 6, 2024
8bd6c4a
syntax...
SECBATON-GRIFFON Oct 6, 2024
957f599
accuracy
SECBATON-GRIFFON Oct 6, 2024
c922ff6
indents...
SECBATON-GRIFFON Oct 6, 2024
f719831
cleaner
SECBATON-GRIFFON Oct 6, 2024
0f51200
i trust this more
SECBATON-GRIFFON Oct 6, 2024
9fb92a4
more variety
SECBATON-GRIFFON Oct 6, 2024
cd0ba97
thing itself
SECBATON-GRIFFON Oct 6, 2024
51eadd5
the way it's done
SECBATON-GRIFFON Oct 6, 2024
2131fd1
oh whoops
SECBATON-GRIFFON Oct 6, 2024
040e979
forgot this!!!
SECBATON-GRIFFON Oct 6, 2024
a1a6dd6
better
SECBATON-GRIFFON Oct 6, 2024
3f8d29f
more accurate
SECBATON-GRIFFON Oct 6, 2024
ab1b654
more accurate feedback message
SECBATON-GRIFFON Oct 6, 2024
ec1aa89
only this type, also better checks
SECBATON-GRIFFON Oct 6, 2024
a90712c
we delayed it, remember?
SECBATON-GRIFFON Oct 6, 2024
633f3c4
not a fan of this
SECBATON-GRIFFON Oct 6, 2024
6f085fb
FIXES THIS, also does some user sanity checks
SECBATON-GRIFFON Oct 6, 2024
ee3b6e2
logic cleanup, now works with no user var
SECBATON-GRIFFON Oct 6, 2024
198f03c
removes arcane tamper drinks stopping arm removal
SECBATON-GRIFFON Oct 11, 2024
092fd42
actually this is too much, wizards can get both spells and make the r…
SECBATON-GRIFFON Oct 11, 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
10 changes: 8 additions & 2 deletions code/__HELPERS/game.dm
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,17 @@
return A
return 0

/proc/get_area_name(atom/X, format_text = FALSE)
/proc/get_area_name(atom/X, format_text = FALSE, short = FALSE)
var/area/A = isarea(X) ? X : get_area(X)
if(!A)
return null
return format_text ? format_text(A.name) : A.name
if(short)
if(A.short_name)
. = A.short_name
else
. = replacetext(format_text(get_first_word(A.name)),"'s","")
else
. = format_text ? format_text(A.name) : A.name

/proc/get_coordinates_string(var/atom/A)
var/turf/T = get_turf(A)
Expand Down
20 changes: 18 additions & 2 deletions code/datums/gamemode/factions/bloodcult/bloodcult_effects.dm
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@
qdel(src)

/obj/effect/cult_shortcut/attack_hand(var/mob/living/user)
if (!iscultist(user))
if (!iscultist(user) && !arcanetampered)
to_chat(user, "<span class='warning'>The markings on this wall are peculiar. You don't feel comfortable staring at them.</span>")
return
var/turf/T = get_turf(user)
Expand All @@ -79,7 +79,23 @@
user.forceMove(loc)
sleep(1)
new /obj/effect/afterimage/red(loc,user)
user.forceMove(get_step(loc,jump_dir))
if(!arcanetampered)
user.forceMove(get_step(loc,jump_dir))
else
user.dimensional_push()
if(!iscultist(user))
user.Knockdown(3)
user.Stun(3)
if(ishuman(user))
shake_camera(user, 20, 1)
spawn(20)
if(user)
to_chat(user,"<span class='danger'>You vomit from travelling through \the [src]!</span>")
user.nutrition = max(user.nutrition-20,0)
user.adjustToxLoss(-3)
var/turf/V = get_turf(user) //V for Vomit
V.add_vomit_floor(user)
playsound(V, 'sound/effects/splat.ogg', 50, 1)

/obj/effect/cult_shortcut/cultify()
return
Expand Down
47 changes: 37 additions & 10 deletions code/datums/gamemode/factions/bloodcult/bloodcult_runespells.dm
Original file line number Diff line number Diff line change
Expand Up @@ -312,15 +312,21 @@
R.active_spell.midcast(user)
return

switch(structure)
if("Altar")
spawntype = /obj/structure/cult/altar
if("Spire")
spawntype = /obj/structure/cult/spire
if("Forge")
spawntype = /obj/structure/cult/forge
if("Pylon")
spawntype = /obj/structure/cult/pylon
if(spell_holder?.arcanetampered)
spawntype = pick(/obj/item/weapon/reagent_containers/food/snacks/badrecipe,\
/obj/item/weapon/bikehorn/rubberducky,\
/obj/item/weapon/bikehorn,\
/obj/item/weapon/card/fake_emag)
else
switch(structure)
if("Altar")
spawntype = /obj/structure/cult/altar
if("Spire")
spawntype = /obj/structure/cult/spire
if("Forge")
spawntype = /obj/structure/cult/forge
if("Pylon")
spawntype = /obj/structure/cult/pylon

if(!spell_holder)
return
Expand Down Expand Up @@ -413,6 +419,8 @@
for(var/mob/living/L in contributors)
var/datum/role/cultist/C = L.mind.GetRole(CULTIST)
C.gain_devotion(10, DEVOTION_TIER_1,"raise_structure",structure)
if(spell_holder.arcanetampered)
playsound(spell_holder.loc, 'sound/misc/fart.ogg', 50, 1)
new spawntype(spell_holder.loc)
qdel(spell_holder) //Deletes the datum as well.

Expand Down Expand Up @@ -444,6 +452,7 @@
R.one_pulse()
var/mob/living/user = activator
comms = new /obj/effect/cult_ritual/cult_communication(spell_holder.loc,user,src)
comms.arcanetampered = spell_holder?.arcanetampered

/datum/rune_spell/communication/midcast(var/mob/living/user)
var/datum/faction/bloodcult/cult = find_active_faction_by_type(/datum/faction/bloodcult)
Expand Down Expand Up @@ -538,6 +547,13 @@
speaker_name = H.real_name
L = speech.speaker
rendered_message = speech.render_message()
if(arcanetampered)
if(prob(50))
speech.message = derpspeech(speech.message)
else
speech.message = tumblrspeech(speech.message)
speech.message = nekospeech(speech.message)
speaker_name = pick(clown_names)
var/datum/faction/bloodcult = find_active_faction_by_member(iscultist(L))
for(var/datum/role/cultist/C in bloodcult.members)
var/datum/mind/M = C.antag
Expand All @@ -549,6 +565,8 @@
to_chat(A, "<span class='game say'><b>[speaker_name]</b> communicates, <span class='sinisterbig'>[speech.message]</span></span>")
for(var/mob/dead/observer/O in player_list)
to_chat(O, "<span class='game say'><b>[speaker_name]</b> communicates, <span class='sinisterbig'>[speech.message]</span></span>")
if(arcanetampered && prob(50))
L.radio(speech,MODE_HEADSET) //busted!
log_cultspeak("[key_name(speech.speaker)] Cult Communicate Rune: [rendered_message]")

/obj/effect/cult_ritual/cult_communication/HasProximity(var/atom/movable/AM)
Expand Down Expand Up @@ -2303,7 +2321,9 @@ var/list/seer_rituals = list()
L.stat = CONSCIOUS
if (L.reagents)
L.reagents.del_reagent(HOLYWATER)
if (!L.reagents.has_any_reagents(HYPERZINES))
if(spell_holder.arcanetampered && !L.reagents.has_any_reagents(HONKSERUM))
L.reagents.add_reagent(HONKSERUM,1)
else if (!L.reagents.has_any_reagents(HYPERZINES))
L.reagents.add_reagent(HYPERZINE,1,"no motor mouth")
qdel(spell_holder)
qdel(src)
Expand Down Expand Up @@ -2495,6 +2515,11 @@ var/list/seer_rituals = list()
for(var/mob/living/L in contributors)
to_chat(activator, "<span class='warning'>The ritual failed, the target seems to be under a curse that prevents us from reaching them through the veil.</span>")
else
if(spell_holder?.arcanetampered) // send in the clowns!
for (var/mob/living/carbon/human/H in player_list)
if(istype(H) && !H.stat && istype(H.get_item_by_slot(slot_wear_mask),/obj/item/clothing/mask/gas/clown_hat))
target = H
break
if (rejoin)
var/list/valid_turfs = list()
for(var/turf/T in orange(target,1))
Expand Down Expand Up @@ -3084,6 +3109,8 @@ var/list/bloodcult_exitportals = list()
newCultist.tattoos[TATTOO_MANIFEST] = new /datum/cult_tattoo/manifest()

vessel.equip_or_collect(new /obj/item/clothing/under/leather_rags(vessel), slot_w_uniform)
if(spell_holder?.arcanetampered)
vessel.adjustBrainLoss(100)

M.regenerate_icons()

Expand Down
11 changes: 11 additions & 0 deletions code/game/area/Space Station 13 areas.dm
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,8 @@ NOTE: there are two lists of areas in the end of this file: centcom and station

var/destroy_after_marker = FALSE //The area is deleted after its holomap marker is created. Useful for shuttle docking zones that need to remain area-free.

var/short_name

/*Adding a wizard area teleport list because motherfucking lag -- Urist*/
/*I am far too lazy to make it a proper list of areas so I'll just make it run the usual telepot routine at the start of the game*/
var/list/teleportlocs = list()
Expand Down Expand Up @@ -661,6 +663,7 @@ var/global/list/adminbusteleportlocs = list()

/area/asteroid // -- TLE
name = "\improper Asteroid"
short_name = "Roid"
icon_state = "asteroid"
requires_power = 0
shuttle_can_crush = FALSE
Expand Down Expand Up @@ -872,6 +875,7 @@ var/global/list/adminbusteleportlocs = list()
//Maintenance

/area/maintenance
short_name = "Maint"
shuttle_can_crush = FALSE
ambient_sounds = list(
/datum/ambience/maint1,
Expand Down Expand Up @@ -1112,6 +1116,7 @@ var/global/list/adminbusteleportlocs = list()

/area/crew_quarters/sleep
name = "\improper Dormitories"
short_name = "Dorms"
icon_state = "Sleep"

/area/crew_quarters/sleep_male
Expand Down Expand Up @@ -1363,6 +1368,7 @@ var/global/list/adminbusteleportlocs = list()
//Solars

/area/solar
short_name = "Solars"
requires_power = 0
holomap_color = HOLOMAP_AREACOLOR_ENGINEERING
shuttle_can_crush = FALSE
Expand Down Expand Up @@ -1605,6 +1611,7 @@ var/global/list/adminbusteleportlocs = list()

/area/security/perma
name = "\improper Permanent Confinement"
short_name = "Perma"
icon_state = "sec_perma"

/area/security/gas_chamber
Expand Down Expand Up @@ -1659,6 +1666,7 @@ var/global/list/adminbusteleportlocs = list()

/area/security/armory
name = "\improper Secure Armory"
short_name = "Armory"
icon_state = "Armory"
holomap_color = HOLOMAP_AREACOLOR_COMMAND
jammed=1
Expand Down Expand Up @@ -1800,6 +1808,7 @@ var/global/list/adminbusteleportlocs = list()

/area/science/xenobiology
name = "\improper Xenobiology Lab"
short_name = "Xenobio"
icon_state = "xenobio"

/area/science/xenobiology/specimen_1
Expand Down Expand Up @@ -1871,6 +1880,7 @@ var/global/list/adminbusteleportlocs = list()
//Storage

/area/storage
short_name = "Storage"
shuttle_can_crush = FALSE

/area/storage/tools
Expand Down Expand Up @@ -1909,6 +1919,7 @@ var/global/list/adminbusteleportlocs = list()

/area/storage/nuke_storage
name = "\improper Vault"
short_name = null
icon_state = "nuke_storage"
holomap_color = HOLOMAP_AREACOLOR_COMMAND

Expand Down
14 changes: 11 additions & 3 deletions code/game/atoms.dm
Original file line number Diff line number Diff line change
Expand Up @@ -882,15 +882,23 @@ its easier to just keep the beam vertical.
/mob/var/list/atom/arcane_tampered_atoms = list()

/atom/proc/arcane_act(var/mob/user, var/recursive = FALSE)
if(user)
if(ismob(user))
arcanetampered = user
user.arcane_tampered_atoms.Add(src)
else
arcanetampered = TRUE
. = "E'MAGI!"
if(recursive)
for(var/atom/A in contents)
A.arcane_act(user,TRUE)
return "E'MAGI!"
var/invoke = A.arcane_act(user,TRUE)
if(invoke != "E'MAGI!") //anything other than the default recursively? return that instead
. = invoke
if(reagents)
for(var/datum/reagent/R in reagents.reagent_list)
if(R.arcane_id)
var/oldamt = R.volume
reagents.remove_reagent(R.id, oldamt*R.arcane_ratio)
reagents.add_reagent(R.arcane_id, oldamt*R.arcane_ratio)

//Called on holy_water's reaction_obj()
/atom/proc/bless()
Expand Down
4 changes: 2 additions & 2 deletions code/game/machinery/computer/arcade/arcade.dm
Original file line number Diff line number Diff line change
Expand Up @@ -70,8 +70,8 @@
game.emag_act(user)

/obj/machinery/computer/arcade/arcane_act(mob/user)
game.emag_act(user) // until i come up with something better, reward differs for now though
return ..()
game.arcane_act(user)
return "H'NK!"

/obj/machinery/computer/arcade/bless()
return
Expand Down
Loading
Loading