Skip to content

Commit

Permalink
Replaces gibbing on being heretic sacrificed with being sent to brazil (
Browse files Browse the repository at this point in the history
#12548)

* heretic stuff lmao

* time for feedback (everyone will hate me)

* mapemrege

* update

* Update open.dm

* Update closed.dm
  • Loading branch information
SomeguyManperson committed Nov 8, 2021
1 parent a308b68 commit eb1e118
Show file tree
Hide file tree
Showing 10 changed files with 9,122 additions and 8,939 deletions.
17,877 changes: 8,942 additions & 8,935 deletions _maps/map_files/generic/CentCom.dmm

Large diffs are not rendered by default.

8 changes: 8 additions & 0 deletions code/__DEFINES/status_effects.dm
Expand Up @@ -115,6 +115,14 @@

#define STATUS_EFFECT_LIMP /datum/status_effect/limp //For when you have a busted leg (or two!) and want additional slowdown when walking on that leg

#define STATUS_EFFECT_HERETIC_SACRIFICE /datum/status_effect/heretic_sacrifice //controls heretic sacrifice events

#define STATUS_EFFECT_HERETIC_SACRIFICE_ASH /datum/status_effect/heretic_sacrifice/ash

#define STATUS_EFFECT_HERETIC_SACRIFICE_FLESH /datum/status_effect/heretic_sacrifice/flesh

#define STATUS_EFFECT_HERETIC_SACRIFICE_RUST /datum/status_effect/heretic_sacrifice/rust

/////////////
// NEUTRAL //
/////////////
Expand Down
1 change: 1 addition & 0 deletions code/_globalvars/lists/mapping.dm
Expand Up @@ -39,6 +39,7 @@ GLOBAL_LIST_EMPTY(emergencyresponseteamspawn)
GLOBAL_LIST_EMPTY(servant_spawns) //Servants of Ratvar spawn here
GLOBAL_LIST_EMPTY(servant_spawns_scarabs) //Servants of Ratvar spawn here
GLOBAL_LIST_EMPTY(city_of_cogs_spawns) //Anyone entering the City of Cogs spawns here
GLOBAL_LIST_EMPTY(brazil_reception) //teleport recieve spots for heretic sacrifices
GLOBAL_LIST_EMPTY(ruin_landmarks)
GLOBAL_LIST_EMPTY(bar_areas)
// IF YOU ARE MAKING A NEW BAR TEMPLATE AND WANT IT ROUNDSTART ADD IT TO THIS LIST!
Expand Down
116 changes: 116 additions & 0 deletions code/datums/status_effects/debuffs.dm
Expand Up @@ -1065,3 +1065,119 @@
var/mob/living/simple_animal/S = owner
for(var/i in S.damage_coeff)
S.damage_coeff[i] /= power

#define HERETIC_SACRIFICE_EFFECT_THRESHOLD 3 //number of ticks per event, this will get cut off if it occurs at the same time the effect ends.
#define LIMB_SPOOK "limb_skeletonification"
#define WOUNDING "oof_ouch_my_bones"
#define BRAIN_DAMAGE "shouldnt_have_done_that"

/datum/status_effect/heretic_sacrifice
id = "heretic_sac"
alert_type = null
status_type = STATUS_EFFECT_UNIQUE
duration = 4 MINUTES
tick_interval = 15 SECONDS
var/list/unspooked_limbs = list(BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_R_LEG, BODY_ZONE_L_LEG)
var/list/all_limbs = list(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG, BODY_ZONE_CHEST, BODY_ZONE_HEAD)
var/next_event_timer = 0
var/list/limb_removal_flavor = list("The skin on your %LIMB falls off, revealing the skeleton beneath!")
var/dam_type = BRUTE
var/wound_type = /datum/wound/blunt/critical
var/list/wound_flavor = list("The bones in your %LIMB suddenly snap!")
var/list/brain_traumas = list(/datum/brain_trauma/mild/phobia/space, /datum/brain_trauma/mild/phobia/supernatural, /datum/brain_trauma/severe/monophobia, /datum/brain_trauma/special/death_whispers, /datum/brain_trauma/mild/phobia/clowns,/datum/brain_trauma/mild/phobia/robots,/datum/brain_trauma/mild/phobia/conspiracies) //if death whipsers is too stupid feel free to axe it
var/list/brain_damage_flavor = list("You see... nothing...? It hurts.", "The stars are wrong.", "One of the dark stars suddenly vanishes. You think? Your mind slips.", "You catch a glimpse of something of something of something- that shouldn't- that's too- that's... old. Then it's gone.")

/datum/status_effect/heretic_sacrifice/on_apply()
owner.revive(full_heal = TRUE) //this totally won't be used to bypass stuff(tm)
owner.regenerate_organs()
owner.regenerate_limbs()
owner.SetStun(60 MINUTES, ignore_canstun = TRUE)
to_chat(owner, "<span class='revenbignotice'>You find yourself floating in a strange, unfamiliar void. Are you dead? ... no ... that feels different... Maybe there's a way out?</span>")
for(var/i in GLOB.brazil_reception)
if(locate(/mob) in get_turf(i)) //there are actually 64 total spots at brazil to get teleported to so if this gets filled (unlikely) they just get returned as a failsafe
continue
owner.forceMove(get_turf(i))
return TRUE

/datum/status_effect/heretic_sacrifice/tick()
owner.SetStun(60 MINUTES, ignore_canstun = TRUE) //not getting out of it that easy
if(!iscarbon(owner))
return
if(prob(20))
to_chat(owner, span_velvet(pick("The stars flicker in the distance.", "You faintly see movement.", "You feel something turn its gaze to you, then move on.", "This can't be it, can it?")))
next_event_timer++
var/mob/living/carbon/C = owner
if(!(next_event_timer % HERETIC_SACRIFICE_EFFECT_THRESHOLD))
if(prob(1)) //small chance of no effect
to_chat(owner, span_boldnotice("You float, The glow of the dark stars oddly relaxing. Everything feels alright for once.</span>"))
return
var/effect = pick(LIMB_SPOOK, WOUNDING, BRAIN_DAMAGE)
switch(effect)
if(LIMB_SPOOK)
var/obj/item/bodypart/BP
while(!BP)
if(!LAZYLEN(unspooked_limbs))
break
var/target_zone = pick_n_take(unspooked_limbs)
BP = C.get_bodypart(target_zone)
var/obj/item/bodypart/replacement_part = new BP.type
if(BP.species_id == "skeleton")
continue
var/msg = pick(limb_removal_flavor)
msg = replacetext(msg, "%LIMB", BP.name)
to_chat(owner, span_userdanger(msg))
replacement_part.species_id = "skeleton"
replacement_part.original_owner = "inside"
replacement_part.replace_limb(owner)
C.apply_damage(30, damagetype = dam_type, def_zone = target_zone, wound_bonus = CANT_WOUND)
owner.emote("scream")
if(BP)
qdel(BP)
if(WOUNDING)
var/obj/item/bodypart/BP
while(!BP)
if(!LAZYLEN(all_limbs))
break
BP = C.get_bodypart(pick_n_take(all_limbs))
BP.force_wound_upwards(wound_type)
var/msg = pick(wound_flavor)
msg = replacetext(msg, "%LIMB", BP.name)
to_chat(owner, span_userdanger(msg))
if(BRAIN_DAMAGE)
var/msg = pick(brain_damage_flavor)
to_chat(owner, span_userdanger(msg))
if(!owner.has_status_effect(STATUS_EFFECT_NECROPOLIS_CURSE) && prob(20)) //20% chance for a blinding necropolis curse instead of a permanent trauma (only happens once, lasts several minutes)
owner.apply_necropolis_curse(CURSE_BLINDING)
else
var/trauma = pick_n_take(brain_traumas)
var/datum/brain_trauma/T = new trauma
C.gain_trauma(T, TRAUMA_RESILIENCE_LOBOTOMY)

/datum/status_effect/heretic_sacrifice/on_remove()
. = ..()
to_chat(owner, "<span class='revenbignotice'>You suddenly snap back to something familiar, with no recollection of the past few minutes, or any proof of it beyond your mangled state.</span>")
owner.SetStun(2 SECONDS, ignore_canstun = TRUE)
var/turf/safe_turf = get_safe_random_station_turf(typesof(/area/hallway) - typesof(/area/hallway/secondary))
if(safe_turf)
owner.forceMove(safe_turf)

/datum/status_effect/heretic_sacrifice/ash
limb_removal_flavor = list("The flesh on your %LIMB ignites and burns off, revealing the bones beneath!")
wound_type = /datum/wound/burn/critical
wound_flavor = list("You feel a stinging pain as the skin on your %LIMB suddenly bursts into flames!")
brain_damage_flavor = list("You see a fire, people, burning, screaming.", "Suddenly, two flaming eyes appear before you. Their stare burning into your eyes, your mind.", "For a moment, you are in the middle of a raging inferno, you can see your skin burn and melt, then you're back here.", "You see someone you know trapped in a fire, but you can't reach them. You can't help.")

/datum/status_effect/heretic_sacrifice/flesh
limb_removal_flavor = list("The flesh on your %LIMB suddenly rots off, revealing the bones beneath!", "You feel a presence by your side, then a flash of pain. By the time you can turn, your %LIMB is already reduced to bones, and the presence is gone.")
wound_flavor = list("Your %LIMB's bones suddenly crumble beneath your skin!")
brain_damage_flavor = list("You see bodies. So many bodies... The worst part is, you think you can recognize some of them.", "You see yourself, bleeding, dying.", "For a minute, you feel something... knitting? Your skin. But whenever you turn, it moves somewhere else.")

/datum/status_effect/heretic_sacrifice/rust
limb_removal_flavor = list("The flesh on your %LIMB begins to flake off, revealing the bones beneath!")
wound_flavor = list("Your %LIMB's bones, brittle and aching at the joints, finally break!")
brain_damage_flavor = list("You see everything you've worked for reduced to dust before your eyes...", "You see an ending.", "You find yourself on the station for a moment, but it's rusted and derelict. You check the time... it's only been an hour?")

#undef HERETIC_SACRIFICE_EFFECT_THRESHOLD
#undef LIMB_SPOOK
#undef WOUNDING
#undef BRAIN_DAMAGE
14 changes: 13 additions & 1 deletion code/game/objects/effects/landmarks.dm
Expand Up @@ -432,7 +432,6 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/start/new_player)
icon_state = "generic_event"
layer = HIGH_LANDMARK_LAYER


/obj/effect/landmark/event_spawn/New()
..()
GLOB.generic_event_spawns += src
Expand All @@ -441,6 +440,19 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/start/new_player)
GLOB.generic_event_spawns -= src
return ..()

/obj/effect/landmark/brazil
name = "brazilian reception marker"
icon_state = "x"
layer = HIGH_LANDMARK_LAYER

/obj/effect/landmark/brazil/New()
..()
GLOB.brazil_reception += src

/obj/effect/landmark/brazil/Destroy()
GLOB.brazil_reception -= src
return ..()

/obj/effect/landmark/ruin
var/datum/map_template/ruin/ruin_template

Expand Down
20 changes: 20 additions & 0 deletions code/game/turfs/open.dm
Expand Up @@ -289,6 +289,26 @@
playsound(L, 'sound/magic/exit_blood.ogg', 50, TRUE)
flash_color(L, flash_color = "#C80000", flash_time = 10)

/turf/open/indestructible/brazil
name = ".."
desc = "it hurts to look at it hurts to see it hurts to think it hurts it hurts it hurts."
icon = 'icons/turf/space.dmi'

/turf/open/indestructible/brazil/Initialize(mapload)
. = ..()
icon_state = "[rand(1,25)]"
add_atom_colour(list(-1,0,0,0, 0,-1,0,0, 0,0,-1,0, 0,0,0,1, 1,1,1,0), FIXED_COLOUR_PRIORITY)

/turf/open/indestructible/brazil/Enter(atom/movable/AM, atom/old_loc)
if(isliving(AM))
var/mob/living/L = AM
if(!L.has_status_effect(STATUS_EFFECT_HERETIC_SACRIFICE))
var/turf/open/floor/safe_turf = find_safe_turf(zlevels = 2)
if(safe_turf)
to_chat(L, span_warning("You're not supposed to be here..."))
do_teleport(AM, safe_turf , 0, channel = TELEPORT_CHANNEL_FREE)
return FALSE //don't forget, you're here forever

/turf/open/Initalize_Atmos(times_fired)
set_excited(FALSE)
update_visuals()
Expand Down
Expand Up @@ -153,6 +153,7 @@
name = "Attune Heart"
required_atoms = list(/obj/item/living_heart)
required_shit_list = "A living heart, which will be given a target for sacrifice or sacrifice its target if their corpse is on the rune."
var/effect_path = STATUS_EFFECT_HERETIC_SACRIFICE //conveniently works if you haven't bought anything

/datum/eldritch_transmutation/basic/recipe_snowflake_check(list/atoms, loc)
. = ..()
Expand All @@ -171,7 +172,7 @@
if(LH.target && LH.target.stat == DEAD)
to_chat(carbon_user,span_danger("Your patrons accepts your offer.."))
var/mob/living/carbon/human/H = LH.target
H.gib()
H.apply_status_effect(effect_path)
LH.target = null
var/datum/antagonist/heretic/EC = carbon_user.mind.has_antag_datum(/datum/antagonist/heretic)

Expand Down
6 changes: 6 additions & 0 deletions code/modules/antagonists/eldritch_cult/knowledge/ash_lore.dm
Expand Up @@ -8,6 +8,12 @@
route = PATH_ASH
tier = TIER_PATH

/datum/eldritch_knowledge/base_ash/on_gain(mob/user)
..()
var/datum/antagonist/heretic/EC = user.mind?.has_antag_datum(/datum/antagonist/heretic)
var/datum/eldritch_transmutation/basic/B = EC.get_transmutation(1)
B.effect_path = STATUS_EFFECT_HERETIC_SACRIFICE_ASH

/datum/eldritch_knowledge/base_ash/on_mansus_grasp(atom/target, mob/user, proximity_flag, click_parameters)
. = ..()
if(!iscarbon(target))
Expand Down
Expand Up @@ -10,6 +10,12 @@
var/ghoul_amt = 1
var/list/spooky_scaries

/datum/eldritch_knowledge/base_flesh/on_gain(mob/user)
..()
var/datum/antagonist/heretic/EC = user.mind?.has_antag_datum(/datum/antagonist/heretic)
var/datum/eldritch_transmutation/basic/B = EC.get_transmutation(1)
B.effect_path = STATUS_EFFECT_HERETIC_SACRIFICE_FLESH

/datum/eldritch_knowledge/base_flesh/on_mansus_grasp(atom/target, mob/user, proximity_flag, click_parameters)
. = ..()
if(!ishuman(target) || target == user)
Expand Down
10 changes: 8 additions & 2 deletions code/modules/antagonists/eldritch_cult/knowledge/rust_lore.dm
Expand Up @@ -8,6 +8,12 @@
route = PATH_RUST
tier = TIER_PATH

/datum/eldritch_knowledge/base_rust/on_gain(mob/user)
..()
var/datum/antagonist/heretic/EC = user.mind?.has_antag_datum(/datum/antagonist/heretic)
var/datum/eldritch_transmutation/basic/B = EC.get_transmutation(1)
B.effect_path = STATUS_EFFECT_HERETIC_SACRIFICE_RUST

/datum/eldritch_knowledge/base_rust/on_mansus_grasp(atom/target, mob/user, proximity_flag, click_parameters)
. = ..()
if(ishuman(target))
Expand All @@ -22,7 +28,7 @@
/datum/eldritch_knowledge/rust_regen
name = "Leeching Walk"
desc = "Passively heals you when you are on rusted tiles."
gain_text = "His strength was unparallel, it was unnatural. The Blacksmith was smiling."
gain_text = "His strength was unparalleled, it was unnatural. The Blacksmith was smiling."
cost = 1
route = PATH_RUST
tier = TIER_1
Expand Down Expand Up @@ -50,7 +56,7 @@
/datum/eldritch_knowledge/essence
name = "Priest's ritual"
desc = "You can now transmute a tank of water into a bottle of eldritch water."
gain_text = "I learned an old recipe, tought by an Owl in my dreams."
gain_text = "I learned an old recipe, taught by an Owl in my dreams."
cost = 1
unlocked_transmutations = list(/datum/eldritch_transmutation/water)
tier = TIER_1
Expand Down

0 comments on commit eb1e118

Please sign in to comment.