mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-13 16:13:19 +01:00
Adds magic tarot cards [SERIOUS DO NOT CLOSE AFTER AFD] (#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 <108773801+DGamerL@users.noreply.github.com> * returns early * Apply suggestions from code review Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> * RE-RE-RE-REVIEW * Apply suggestions from code review Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> Co-authored-by: synthtee <127706731+SynthTwo@users.noreply.github.com> * requested changes and such * duh * Apply suggestions from code review Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> * returns early * Update code/datums/status_effects/buffs.dm Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> * new hrefs here to troll CI :trollface: * Update code/game/gamemodes/wizard/magic_tarot.dm Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> Signed-off-by: Qwertytoforty <52090703+Qwertytoforty@users.noreply.github.com> --------- Signed-off-by: Qwertytoforty <52090703+Qwertytoforty@users.noreply.github.com> Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> Co-authored-by: synthtee <127706731+SynthTwo@users.noreply.github.com>
This commit is contained in:
@@ -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"
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
@@ -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.
|
||||
@@ -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")
|
||||
|
||||
@@ -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%
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 //
|
||||
|
||||
Reference in New Issue
Block a user