Skip to content

Commit

Permalink
Adds magic tarot cards [SERIOUS DO NOT CLOSE AFTER AFD] (ParadiseSS13…
Browse files Browse the repository at this point in the history
…#24933)

* starts it

* Update magic_tarot.dm

* MORE PROGRESS

* So many thanks to Cloudbucket, for sprites

* The Work, the Art, continues.

* more changes

* pushes the Work foward. All cards done.

* and more thanks github

* adds to BSH

* tochat

* Finishes QWERTYTODO. Magic key. World smoke

* Isaac and his mother lived alone in a small house on a hill.  Isaac kept to himself, drawing pictures and playing with his toys as his mom watched Christian broadcasts on the television.  Life was simple, and they were both happy. That was, until the day Isaac’s mom heard a voice from above.  “Your son has become corrupted by sin. He needs to be saved.”  “I will do my best to save him, my Lord,” Isaac’s mother replied, rushing into Isaac’s room, removing all that was evil from his life.  Again the voice called to her, "Isaac’s soul is still corrupt. He needs to be cut off from all that is evil in this world and confess his sins."  “I will follow your instructions, Lord. I have faith in thee,” Isaac’s mother replied, as she locked Isaac in his room, away from the evils of the world.  One last time, Isaac’s mom heard the voice of God calling to her.  “You've done as I've asked, but I still question your devotion to me. To prove your faith, I will ask one more thing of you."  "Yes Lord, anything!” Isaac’s mother begged.  "To prove your love and devotion, I require a sacrifice. Your son, Isaac, will be this sacrifice. Go into his room and end his life, as an offering to me to prove you love me above all else."  "Yes Lord", she replied, grabbing a butcher’s knife from the kitchen.  Isaac, watching through a crack in his door, trembled in fear.  Scrambling around his room to find a hiding place, he noticed a trap door to the basement hidden under his rug.  Without hesitation, he flung open the hatch, just as his mother burst through his door, and threw himself down into the unknown depths below.

* nanny bag it before I forget

* Apply suggestions from code review

Co-authored-by: DGamerL <[email protected]>

* returns early

* Apply suggestions from code review

Co-authored-by: Luc <[email protected]>

* RE-RE-RE-REVIEW

* Apply suggestions from code review

Co-authored-by: Burzah <[email protected]>
Co-authored-by: DGamerL <[email protected]>
Co-authored-by: synthtee <[email protected]>

* requested changes and such

* duh

* Apply suggestions from code review

Co-authored-by: DGamerL <[email protected]>

* returns early

* Update code/datums/status_effects/buffs.dm

Co-authored-by: DGamerL <[email protected]>

* new hrefs here to troll CI :trollface:

* Update code/game/gamemodes/wizard/magic_tarot.dm

Co-authored-by: DGamerL <[email protected]>
Signed-off-by: Qwertytoforty <[email protected]>

---------

Signed-off-by: Qwertytoforty <[email protected]>
Co-authored-by: DGamerL <[email protected]>
Co-authored-by: Luc <[email protected]>
Co-authored-by: Burzah <[email protected]>
Co-authored-by: synthtee <[email protected]>
  • Loading branch information
5 people authored Apr 24, 2024
1 parent 69d6a8d commit af5d187
Show file tree
Hide file tree
Showing 25 changed files with 1,154 additions and 13 deletions.
7 changes: 6 additions & 1 deletion _maps/map_files/RandomRuins/SpaceRuins/intactemptyship.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,11 @@
/obj/structure/bed,
/turf/simulated/floor/mineral/titanium/purple,
/area/ruin/space/powered)
"Q" = (
/obj/structure/table/wood,
/obj/item/blank_tarot_card,
/turf/simulated/floor/mineral/titanium/purple,
/area/ruin/space/powered)

(1,1,1) = {"
a
Expand Down Expand Up @@ -277,7 +282,7 @@ b
j
r
w
n
Q
j
b
a
Expand Down
1 change: 1 addition & 0 deletions _maps/map_files/RandomRuins/SpaceRuins/wizardcrash.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,7 @@
/area/ruin/space/unpowered)
"aF" = (
/obj/structure/table/wood,
/obj/item/blank_tarot_card,
/turf/simulated/floor/wood{
icon_state = "wood-broken6"
},
Expand Down
12 changes: 12 additions & 0 deletions code/__DEFINES/status_effects.dm
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
#define STATUS_EFFECT_SHADOW_MEND /datum/status_effect/shadow_mend //Quick, powerful heal that deals damage afterwards. Heals 15 brute/burn every second for 3 seconds.
#define STATUS_EFFECT_VOID_PRICE /datum/status_effect/void_price //The price of healing yourself with void energy. Deals 3 brute damage every 3 seconds for 30 seconds.

#define STATUS_EFFECT_SHADOW_MEND_DEVIL /datum/status_effect/shadow_mend/devil //Tarot version, hurts others over self

#define STATUS_EFFECT_HIPPOCRATIC_OATH /datum/status_effect/hippocraticOath //Gives you an aura of healing as well as regrowing the Rod of Asclepius if lost

#define STATUS_EFFECT_REGENERATIVE_CORE /datum/status_effect/regenerative_core
Expand All @@ -37,6 +39,8 @@

#define STATUS_EFFECT_BLOODDRUNK /datum/status_effect/blooddrunk //Stun immunity and greatly reduced damage taken

#define STATUS_EFFECT_BLOODDRUNK_CHARIOT /datum/status_effect/blooddrunk/chariot //adds pacifism

#define STATUS_EFFECT_DASH /datum/status_effect/dash // Grants the ability to dash, expiring after a few secodns

/// Rapid burn/brute/oxy/blood healing from the cling ability
Expand All @@ -62,6 +66,12 @@

#define STATUS_EFFECT_BEARSERKER_RAGE /datum/status_effect/bearserker_rage

#define STATUS_EFFECT_XRAY /datum/status_effect/xray // Xray vision for 2 minutes

#define STATUS_EFFECT_BADASS /datum/status_effect/badass // Badass trait for 2 minutes.

#define STATUS_EFFECT_REVERSED_SUN /datum/status_effect/reversed_sun // Weaker eternal darkness, nightvision, but nearsight

/////////////
// DEBUFFS //
/////////////
Expand Down Expand Up @@ -114,6 +124,8 @@

#define STATUS_EFFECT_PEPPERSPRAYED /datum/status_effect/pepper_spray

#define STATUS_EFFECT_REVERSED_HIGH_PRIESTESS /datum/status_effect/reversed_high_priestess //Bubblegum will chase the person hit by the effect, grabbing people at random. This can and WILL include the caster.

//#define STATUS_EFFECT_NECROPOLIS_CURSE /datum/status_effect/necropolis_curse
//#define CURSE_BLINDING 1 //makes the edges of the target's screen obscured
//#define CURSE_SPAWNING 2 //spawns creatures that attack the target only
Expand Down
105 changes: 101 additions & 4 deletions code/datums/status_effects/buffs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,11 @@
id = "shadow_mend"
duration = 3 SECONDS
alert_type = /atom/movable/screen/alert/status_effect/shadow_mend
/// If this is true, the status effect will try to apply the debuff to others, rather than the user
var/devil = FALSE

/datum/status_effect/shadow_mend/devil
devil = TRUE

/atom/movable/screen/alert/status_effect/shadow_mend
name = "Shadow Mend"
Expand All @@ -78,10 +83,25 @@
owner.adjustFireLoss(-15)

/datum/status_effect/shadow_mend/on_remove()
owner.visible_message("<span class='warning'>The violet light around [owner] glows black!</span>", "<span class='warning'>The tendrils around you cinch tightly and reap their toll...</span>")
playsound(owner, 'sound/magic/teleport_diss.ogg', 50, 1)
owner.apply_status_effect(STATUS_EFFECT_VOID_PRICE)
if(!devil)
owner.visible_message("<span class='warning'>The violet light around [owner] glows black!</span>", "<span class='warning'>The tendrils around you cinch tightly and reap their toll...</span>")
playsound(owner, 'sound/magic/teleport_diss.ogg', 50, TRUE)
owner.apply_status_effect(STATUS_EFFECT_VOID_PRICE)
return

var/found_someone = FALSE

for(var/mob/living/L in oview(9, owner))
found_someone = TRUE
playsound(owner, 'sound/magic/teleport_diss.ogg', 50, TRUE)
L.Beam(owner, "grabber_beam", time = 1 SECONDS, maxdistance = 9)
L.apply_status_effect(STATUS_EFFECT_VOID_PRICE)
if(found_someone)
owner.visible_message("<span class='warning'>The violet light around [owner] glows black... and shoots off to those around [owner.p_them()]!</span>", "<span class='warning'>The tendrils around you cinch tightly... but then unwravel and fly at others!</span>")
else
owner.visible_message("<span class='warning'>The violet light around [owner] glows black!</span>", "<span class='warning'>The tendrils around you cinch tightly and reap their toll...</span>")
playsound(owner, 'sound/magic/teleport_diss.ogg', 50, TRUE)
owner.apply_status_effect(STATUS_EFFECT_VOID_PRICE)

/datum/status_effect/void_price
id = "void_price"
Expand Down Expand Up @@ -110,6 +130,13 @@
tick_interval = 0
alert_type = /atom/movable/screen/alert/status_effect/blooddrunk
var/blooddrunk_damage_mod_remove = 4 // Damage is multiplied by this at the end of the status effect. Modify this one, it changes the _add
/// If this is the chariot subtype, which grants pacifism while the effect is active.
var/chariot = FALSE

/datum/status_effect/blooddrunk/chariot
duration = 10 SECONDS
chariot = TRUE
blooddrunk_damage_mod_remove = 6

/atom/movable/screen/alert/status_effect/blooddrunk
name = "Blood-Drunk"
Expand All @@ -120,6 +147,8 @@
. = ..()
if(.)
ADD_TRAIT(owner, TRAIT_IGNOREDAMAGESLOWDOWN, "blooddrunk")
if(chariot)
ADD_TRAIT(owner, TRAIT_PACIFISM, "blooddrunk")
if(ishuman(owner))
var/mob/living/carbon/human/H = owner
var/blooddrunk_damage_mod_add = 1 / blooddrunk_damage_mod_remove // Damage is multiplied by this at the start of the status effect. Don't modify this one directly.
Expand All @@ -144,6 +173,7 @@
H.physiology.stamina_mod *= blooddrunk_damage_mod_remove
add_attack_logs(owner, owner, "lost blood-drunk stun immunity", ATKLOG_ALL)
REMOVE_TRAIT(owner, TRAIT_IGNOREDAMAGESLOWDOWN, "blooddrunk")
REMOVE_TRAIT(owner, TRAIT_PACIFISM, "blooddrunk")
if(islist(owner.stun_absorption) && owner.stun_absorption["blooddrunk"])
owner.remove_stun_absorption("blooddrunk")

Expand Down Expand Up @@ -183,7 +213,7 @@
H.physiology.stamina_mod *= 0.5
H.physiology.stun_mod *= 0.5
var/datum/antagonist/vampire/V = owner.mind.has_antag_datum(/datum/antagonist/vampire)
if(V.get_ability(/datum/vampire_passive/blood_swell_upgrade))
if(V?.get_ability(/datum/vampire_passive/blood_swell_upgrade))
bonus_damage_applied = TRUE
H.physiology.melee_bonus += 10
H.dna.species.punchstunthreshold += 8 //higher chance to stun but not 100%
Expand Down Expand Up @@ -776,3 +806,70 @@
var/mob/living/carbon/human/H = owner
H.physiology.stamina_mod /= 0.75
add_attack_logs(owner, owner, "lost bearserker rage resistances", ATKLOG_ALL)

/datum/status_effect/xray
id = "xray"
alert_type = null
status_type = STATUS_EFFECT_REFRESH
duration = 2 MINUTES
tick_interval = 0

/datum/status_effect/xray/on_apply()
. = ..()
ADD_TRAIT(owner, TRAIT_XRAY_VISION, "XRAY_BUFF")
ADD_TRAIT(owner, TRAIT_NIGHT_VISION, "XRAY_BUFF")
owner.update_sight()

/datum/status_effect/xray/on_remove()
. = ..()
REMOVE_TRAIT(owner, TRAIT_XRAY_VISION, "XRAY_BUFF")
REMOVE_TRAIT(owner, TRAIT_NIGHT_VISION, "XRAY_BUFF")
owner.update_sight()

/datum/status_effect/badass
id = "badass"
alert_type = null
status_type = STATUS_EFFECT_REFRESH
duration = 2 MINUTES
tick_interval = 0

/datum/status_effect/badass/on_apply()
. = ..()
ADD_TRAIT(owner, TRAIT_BADASS, "BADDASS_BUFF")

/datum/status_effect/badass/on_remove()
. = ..()
REMOVE_TRAIT(owner, TRAIT_BADASS, "BADDASS_BUFF")

/datum/status_effect/reversed_sun
id = "reversed_sun"
alert_type = null
status_type = STATUS_EFFECT_REFRESH
duration = 1 MINUTES
tick_interval = 0.2 SECONDS

/datum/status_effect/reversed_sun/on_apply()
. = ..()
owner.become_nearsighted("REVERSED_SUN")
ADD_TRAIT(owner, TRAIT_NIGHT_VISION, "REVERSED_SUN")
owner.update_sight()
owner.set_light(7, -5, "#ddd6cf")

/datum/status_effect/reversed_sun/on_remove()
. = ..()
owner.remove_light()
owner.cure_nearsighted("REVERSED_SUN")
REMOVE_TRAIT(owner, TRAIT_NIGHT_VISION, "REVERSED_SUN")
owner.update_sight()

/datum/status_effect/reversed_sun/tick()
for(var/atom/movable/AM in oview(8, owner))
if(isliving(AM))
var/mob/living/L = AM
if(L.affects_vampire(owner))
L.adjust_bodytemperature(-1.5 * TEMPERATURE_DAMAGE_COEFFICIENT)
continue
if(istype(AM, /obj/item/projectile))
var/obj/item/projectile/P = AM
if(P.flag == ENERGY || P.flag == LASER)
P.damage *= 0.85
26 changes: 26 additions & 0 deletions code/datums/status_effects/debuffs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1322,3 +1322,29 @@
desc = "Real winners quit before they reach the ultimate prize."

#undef DEFAULT_MAX_CURSE_COUNT

/datum/status_effect/reversed_high_priestess
id = "reversed_high_priestess"
duration = 1 MINUTES
status_type = STATUS_EFFECT_REFRESH
tick_interval = 6 SECONDS
alert_type = /atom/movable/screen/alert/status_effect/bubblegum_curse

/datum/status_effect/reversed_high_priestess/tick()
. = ..()
new /obj/effect/bubblegum_warning(get_turf(owner))

/obj/effect/bubblegum_warning
name = "bloody rift"
desc = "You feel like even being *near* this is a bad idea"
icon = 'icons/obj/biomass.dmi'
icon_state = "rift"
color = "red"

/obj/effect/bubblegum_warning/Initialize()
. = ..()
addtimer(CALLBACK(src, PROC_REF(slap_someone)), 2.5 SECONDS) //A chance to run away

/obj/effect/bubblegum_warning/proc/slap_someone()
new /obj/effect/abstract/bubblegum_rend_helper(get_turf(src), null, 10)
qdel(src)
11 changes: 11 additions & 0 deletions code/datums/uplink_items/uplink_traitor.dm
Original file line number Diff line number Diff line change
Expand Up @@ -305,6 +305,17 @@
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST)
job = list("Head of Personnel", "Quartermaster", "Cargo Technician", "Librarian", "Coroner", "Psychiatrist", "Virologist")

// Tarot card generator, librarian and Chaplain.

/datum/uplink_item/jobspecific/tarot_generator
name = "Enchanted tarot card deck"
desc = "A magic tarot card deck \"borrowed\" from a Wizard federation storage unit. \
Capable of producing magic tarot cards of the 22 major arcana, and their reversed versions. Each card has a different effect. \
Throw the card at someone to use it on them, or use it in hand to apply it to yourself. Unlimited uses, 25 second cooldown, can have up to 3 cards in the world."
reference = "tarot"
item = /obj/item/tarot_generator
cost = 55 //This can do a lot of stuff, but is quite random. As such, higher price.
job = list("Chaplain", "Librarian")

//--------------------------//
// Species Restricted Gear //
Expand Down
2 changes: 1 addition & 1 deletion code/game/gamemodes/cult/cult_structures.dm
Original file line number Diff line number Diff line change
Expand Up @@ -318,7 +318,7 @@ GLOBAL_LIST_INIT(blacklisted_pylon_turfs, typecacheof(list(
selection_title = "Archives"
creation_message = "<span class='cultitalic'>You invoke the dark magic of the tomes creating a %ITEM%!</span>"
choosable_items = list("Shuttle Curse" = /obj/item/shuttle_curse, "Zealot's Blindfold" = /obj/item/clothing/glasses/hud/health/night/cultblind,
"Veil Shifter" = /obj/item/cult_shift, "Reality sunderer" = /obj/item/portal_amulet) //Add void torch to veil shifter spawn
"Veil Shifter" = /obj/item/cult_shift, "Reality sunderer" = /obj/item/portal_amulet, "Blank Tarot Card" = /obj/item/blank_tarot_card)

/obj/structure/cult/functional/archives/Initialize(mapload)
. = ..()
Expand Down
Loading

0 comments on commit af5d187

Please sign in to comment.