[MIRROR] Changes to the lore of Knock [MDB IGNORE] (#24891)

* Changes to the lore of Knock (#79542)

## About The Pull Request

This PR renames Knock to Lock, and changes most of the knowledge gain
lore.

## Why It's Good For The Game

The Knock Lore, is based on the Knock Principle from Cultist Simulator,
with the path description being copied from the wiki. Many other
keywords and concepts are fully lifted from that game (Locksmith's
Secret, Mother Of Ants, etc). In my vision, if a heretic path has to be
based on a principle from cultist simulator, it should have its own
spin, and also, the knowledge gain texts should tell a story. For
example, Ash tells the story of a watchman burning down their city after
being betrayed, and Cosmic is a love story between a knowledge seeker
and a monster from the beyond.

So I have decided to reflavour Knock. I have changed the name to Lock,
so at least it would feel similar, just like how Blade is akin to Edge.
Many powers also block people or confuse their paths instead of opening
new ways, and thus, I feel a path whose name implies that it *both*
opens and closes would be more self describing.

I have changed most of its lore to be about the Locked Labyrinth, where
knowledge seekers willingly trap themselves and submit themselves to
servitude to find ultimate freedom by progressing through its trials.
These are the Stewards, who are basically workers in an infinite and
malicious hotel in their dreams. Consider them assistants if you will
(this wasn't my intention when I wrote the lore, but thinking about it
in retrospect, it honestly fits). In the implied story, the heretic
joins their ranks, but keeps getting closer to the more corrupt members,
along with parasitic spirits. Ultimately, they manage to open the
Labyrinth's core, letting out the Stewards, allowing them to manifest in
the forms of heretic summon creatures.

The side path spells and the lock knowledge ritual I have not touched,
they were fine. Some items have been renamed and repathed.

I have kept the distinctive sound effect for using the Grasp, as its
unique enough. Though if someone did have a nice sound effect for
turning a lock and added some filters, I would add it.

**DB Issue**

I have renamed the achievement's define to MEDAL_LOCK_ASCENSION but kept
the value as "Knock", as I don't know how trigger a change in the DB. If
this is a blocking change, I'll try to figure out how to make a
migration file.

**Future improvements**

I would also come back later with another PR, that hands out names to
the eldritch beings spawned by the portal, based on the Stewards in the
knowledge gain lore that I added, along with some new ones that fit the
theme, and some jokey ones like Minotaur.

## Changelog

🆑
spellcheck: Renamed Knock to Locks, and changed most of the flavor text
of knowledge gain, and renamed some items and knowledges from the path.
/🆑

* Changes to the lore of Knock

---------

Co-authored-by: Profakos <profakos@gmail.com>
This commit is contained in:
SkyratBot
2023-11-09 15:31:16 -05:00
committed by GitHub
co-authored by Profakos
parent d8a665807d
commit e135ddecc1
19 changed files with 141 additions and 136 deletions
@@ -44,7 +44,7 @@
/obj/effect/decal/cleanable/blood/old,
/obj/effect/decal/cleanable/dirt/dust,
/turf/open/indestructible/plating,
/area/centcom/heretic_sacrifice/knock)
/area/centcom/heretic_sacrifice/lock)
"fO" = (
/turf/open/indestructible,
/area/space)
@@ -59,7 +59,7 @@
/obj/effect/decal/cleanable/dirt/dust,
/obj/item/storage/toolbox/mechanical/old,
/turf/open/indestructible/plating,
/area/centcom/heretic_sacrifice/knock)
/area/centcom/heretic_sacrifice/lock)
"hZ" = (
/obj/effect/decal/cleanable/blood/old,
/turf/open/indestructible/necropolis/air,
@@ -71,7 +71,7 @@
/area/centcom/heretic_sacrifice/rust)
"jt" = (
/turf/closed/indestructible/reinforced,
/area/centcom/heretic_sacrifice/knock)
/area/centcom/heretic_sacrifice/lock)
"jB" = (
/obj/machinery/light/very_dim/directional/south,
/turf/open/misc/asteroid,
@@ -105,7 +105,7 @@
/obj/effect/decal/cleanable/dirt/dust,
/obj/item/spear,
/turf/open/indestructible/plating,
/area/centcom/heretic_sacrifice/knock)
/area/centcom/heretic_sacrifice/lock)
"mZ" = (
/obj/effect/decal/fakelattice{
density = 0
@@ -176,7 +176,7 @@
/obj/effect/decal/cleanable/dirt/dust,
/obj/item/storage/toolbox/mechanical/old,
/turf/open/indestructible/plating,
/area/centcom/heretic_sacrifice/knock)
/area/centcom/heretic_sacrifice/lock)
"qu" = (
/obj/effect/turf_decal/weather/dirt,
/turf/open/misc/ashplanet/wateryrock{
@@ -234,7 +234,7 @@
/obj/effect/decal/cleanable/dirt/dust,
/obj/item/clothing/under/color/grey/ancient,
/turf/open/indestructible/plating,
/area/centcom/heretic_sacrifice/knock)
/area/centcom/heretic_sacrifice/lock)
"uT" = (
/obj/structure/cable,
/turf/open/floor/plating/rust,
@@ -260,7 +260,7 @@
/area/centcom/heretic_sacrifice/ash)
"wo" = (
/turf/closed/indestructible/grille,
/area/centcom/heretic_sacrifice/knock)
/area/centcom/heretic_sacrifice/lock)
"wt" = (
/obj/structure/stone_tile/block{
dir = 1
@@ -285,7 +285,7 @@
start_on = 1
},
/turf/open/indestructible/plating,
/area/centcom/heretic_sacrifice/knock)
/area/centcom/heretic_sacrifice/lock)
"wS" = (
/turf/open/misc/dirt/jungle/dark{
planetary_atmos = 0;
@@ -326,7 +326,7 @@
/obj/effect/decal/cleanable/dirt/dust,
/obj/item/clothing/mask/gas,
/turf/open/indestructible/plating,
/area/centcom/heretic_sacrifice/knock)
/area/centcom/heretic_sacrifice/lock)
"AH" = (
/obj/effect/turf_decal/trimline/brown/corner,
/turf/open/floor/plating/rust,
@@ -345,11 +345,11 @@
/obj/effect/decal/cleanable/dirt/dust,
/obj/item/clothing/mask/gas/tiki_mask/yalp_elor,
/turf/open/indestructible/plating,
/area/centcom/heretic_sacrifice/knock)
/area/centcom/heretic_sacrifice/lock)
"AY" = (
/obj/effect/decal/cleanable/dirt/dust,
/turf/open/indestructible/plating,
/area/centcom/heretic_sacrifice/knock)
/area/centcom/heretic_sacrifice/lock)
"Bv" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/trimline/brown/line,
@@ -405,7 +405,7 @@
/area/centcom/heretic_sacrifice/ash)
"En" = (
/turf/closed/indestructible/fakedoor/maintenance,
/area/centcom/heretic_sacrifice/knock)
/area/centcom/heretic_sacrifice/lock)
"ER" = (
/turf/open/misc/ironsand,
/area/centcom/heretic_sacrifice/rust)
@@ -543,7 +543,7 @@
start_on = 1
},
/turf/open/indestructible/plating,
/area/centcom/heretic_sacrifice/knock)
/area/centcom/heretic_sacrifice/lock)
"Nh" = (
/obj/effect/turf_decal/trimline/brown/line{
dir = 1
@@ -589,7 +589,7 @@
/obj/effect/decal/cleanable/dirt/dust,
/obj/item/clothing/under/color/grey/ancient,
/turf/open/indestructible/plating,
/area/centcom/heretic_sacrifice/knock)
/area/centcom/heretic_sacrifice/lock)
"Pl" = (
/obj/effect/turf_decal/weather/dirt{
dir = 6
@@ -712,9 +712,9 @@
"Zw" = (
/obj/effect/decal/cleanable/blood/old,
/obj/effect/decal/cleanable/dirt/dust,
/obj/effect/landmark/heretic/knock,
/obj/effect/landmark/heretic/lock,
/turf/open/indestructible/plating,
/area/centcom/heretic_sacrifice/knock)
/area/centcom/heretic_sacrifice/lock)
"ZA" = (
/turf/closed/indestructible/riveted/boss,
/area/centcom/heretic_sacrifice/ash)
+1 -1
View File
@@ -46,7 +46,7 @@
#define MEDAL_VOID_ASCENSION "Void"
#define MEDAL_BLADE_ASCENSION "Blade"
#define MEDAL_COSMOS_ASCENSION "Cosmos"
#define MEDAL_KNOCK_ASCENSION "Knock"
#define MEDAL_LOCK_ASCENSION "Knock"
#define MEDAL_TOOLBOX_SOUL "Toolsoul"
#define MEDAL_CHEM_TUT "Beginner Chemist"
#define MEDAL_HOT_DAMN "Hot Damn!"
+1 -1
View File
@@ -80,7 +80,7 @@
#define PATH_VOID "Void Path"
#define PATH_BLADE "Blade Path"
#define PATH_COSMIC "Cosmic Path"
#define PATH_KNOCK "Knock Path"
#define PATH_LOCK "Lock Path"
/// Defines are used in /proc/has_living_heart() to report if the heretic has no heart period, no living heart, or has a living heart.
#define HERETIC_NO_HEART_ORGAN -1
+3 -3
View File
@@ -367,7 +367,7 @@ GLOBAL_LIST_INIT(phobia_objs, list(
/obj/effect/forcefield/wizard/heretic,
/obj/effect/heretic_influence,
/obj/effect/heretic_rune,
/obj/effect/knock_portal,
/obj/effect/lock_portal,
/obj/effect/visible_heretic_influence,
/obj/item/ammo_box/strilka310/lionhunter,
/obj/item/ammo_casing/strilka310/lionhunter,
@@ -379,7 +379,7 @@ GLOBAL_LIST_INIT(phobia_objs, list(
/obj/item/codex_cicatrix,
/obj/item/coin/eldritch,
/obj/item/gun/ballistic/rifle/lionhunter,
/obj/item/heretic_lintel,
/obj/item/heretic_labyrinth_handbook,
/obj/item/melee/rune_carver,
/obj/item/melee/sickly_blade,
/obj/item/melee/touch_attack/mansus_fist,
@@ -388,7 +388,7 @@ GLOBAL_LIST_INIT(phobia_objs, list(
/obj/item/toy/reality_pierce,
/obj/projectile/curse_hand,
/obj/structure/destructible/eldritch_crucible,
/obj/structure/knock_tear,
/obj/structure/lock_tear,
)),
"insects" = typecacheof(list(
/obj/item/clothing/mask/animal/small/bee,
@@ -135,11 +135,11 @@
database_id = MEDAL_COSMOS_ASCENSION
icon = "cosmicascend"
/datum/award/achievement/misc/knock_ascension
name = "Secrets behind the Spider Door"
/datum/award/achievement/misc/lock_ascension
name = "Secrets of the Locked Labyrinth"
desc = "You managed to open a gate into the mansus."
database_id = MEDAL_KNOCK_ASCENSION
icon = "knockascend"
database_id = MEDAL_LOCK_ASCENSION
icon = "lockascend"
/datum/award/achievement/misc/grand_ritual_finale
name = "Archmage"
+1 -1
View File
@@ -75,7 +75,7 @@
/obj/item/wirecutters,
/obj/item/wrench,
/obj/item/spess_knife,
/obj/item/melee/sickly_blade/knock,
/obj/item/melee/sickly_blade/lock,
))
/obj/item/storage/belt/utility/chief
@@ -66,7 +66,7 @@
PATH_VOID = "blue",
PATH_BLADE = "label", // my favorite color is label
PATH_COSMIC = "purple",
PATH_KNOCK = "yellow",
PATH_LOCK = "yellow",
)
var/static/list/path_to_rune_color = list(
PATH_START = COLOR_LIME,
@@ -76,7 +76,7 @@
PATH_VOID = COLOR_CYAN,
PATH_BLADE = COLOR_SILVER,
PATH_COSMIC = COLOR_PURPLE,
PATH_KNOCK = COLOR_YELLOW,
PATH_LOCK = COLOR_YELLOW,
)
/datum/antagonist/heretic/Destroy()
@@ -134,12 +134,12 @@
after_use_message = "The Stargazer hears your call..."
// Path of Knock's blade
/obj/item/melee/sickly_blade/knock
/obj/item/melee/sickly_blade/lock
name = "\improper key blade"
desc = "A blade and a key, a key to what? \
What grand gates does it open?"
icon_state = "key_blade"
inhand_icon_state = "key_blade"
after_use_message = "The Mother of Ants hears your call..."
after_use_message = "The Stewards hear your call..."
tool_behaviour = TOOL_CROWBAR
toolspeed = 1.3
@@ -1,4 +1,4 @@
/obj/effect/knock_portal
/obj/effect/lock_portal
name = "crack in reality"
desc = "A crack in space, impossibly deep and painful to the eyes. Definitely not safe."
icon = 'icons/effects/eldritch.dmi'
@@ -12,18 +12,18 @@
density = FALSE //so we dont block doors closing
layer = OBJ_LAYER //under doors
///The knock portal we teleport to
var/obj/effect/knock_portal/destination
var/obj/effect/lock_portal/destination
///The airlock we are linked to, we delete if it is destroyed
var/obj/machinery/door/our_airlock
/// if true the heretic is teleported to a random airlock, nonheretics are sent to the target
var/inverted = FALSE
/obj/effect/knock_portal/Initialize(mapload, target, invert = FALSE)
/obj/effect/lock_portal/Initialize(mapload, target, invert = FALSE)
. = ..()
if(target)
our_airlock = target
RegisterSignal(target, COMSIG_QDELETING, PROC_REF(delete_on_door_delete))
var/static/list/loc_connections = list(
COMSIG_ATOM_ENTERED = PROC_REF(on_entered),
)
@@ -31,26 +31,26 @@
inverted = invert
///Deletes us and our destination portal if our_airlock is destroyed
/obj/effect/knock_portal/proc/delete_on_door_delete(datum/source)
/obj/effect/lock_portal/proc/delete_on_door_delete(datum/source)
SIGNAL_HANDLER
qdel(src)
///Signal handler for when our location is entered, calls teleport on the victim, if their old_loc didnt contain a portal already (to prevent loops)
/obj/effect/knock_portal/proc/on_entered(datum/source, mob/living/loser, atom/old_loc)
/obj/effect/lock_portal/proc/on_entered(datum/source, mob/living/loser, atom/old_loc)
SIGNAL_HANDLER
if(istype(loser) && !(locate(type) in old_loc))
teleport(loser)
/obj/effect/knock_portal/Destroy()
/obj/effect/lock_portal/Destroy()
if(!isnull(destination) && !QDELING(destination))
QDEL_NULL(destination)
destination = null
our_airlock = null
return ..()
///Teleports the teleportee, to a random airlock if the teleportee isnt a heretic, or the other portal if they are one
/obj/effect/knock_portal/proc/teleport(mob/living/teleportee)
/obj/effect/lock_portal/proc/teleport(mob/living/teleportee)
if(isnull(destination)) //dumbass
qdel(src)
return
@@ -67,7 +67,7 @@
INVOKE_ASYNC(src, PROC_REF(async_opendoor), doorstination)
///Returns a random airlock on the same Z level as our portal, that isnt our airlock
/obj/effect/knock_portal/proc/find_random_airlock()
/obj/effect/lock_portal/proc/find_random_airlock()
var/list/turf/possible_destinations = list()
for(var/obj/airlock as anything in SSmachines.get_machines_by_type_and_subtypes(/obj/machinery/door/airlock))
if(airlock.z != z)
@@ -78,7 +78,7 @@
return pick(possible_destinations)
///Asynchronous proc to unbolt, then open the passed door
/obj/effect/knock_portal/proc/async_opendoor(obj/machinery/door/door)
/obj/effect/lock_portal/proc/async_opendoor(obj/machinery/door/door)
if(istype(door, /obj/machinery/door/airlock)) //they can create portals on ANY door, but we should unlock airlocks so they can actually open
var/obj/machinery/door/airlock/as_airlock = door
as_airlock.unbolt()
@@ -89,9 +89,9 @@
///List of IDs this card consumed
var/list/obj/item/card/id/fused_ids = list()
///The first portal in the portal pair, so we can clear it later
var/obj/effect/knock_portal/portal_one
var/obj/effect/lock_portal/portal_one
///The second portal in the portal pair, so we can clear it later
var/obj/effect/knock_portal/portal_two
var/obj/effect/lock_portal/portal_two
///The first door we are linking in the pair, so we can create a portal pair
var/datum/weakref/link
/// are our created portals inverted? (heretics get sent to a random airlock, crew get sent to the target)
@@ -140,7 +140,7 @@
///Deletes and nulls our portal pair
/obj/item/card/id/advanced/heretic/proc/clear_portals()
QDEL_NULL(portal_one)
QDEL_NULL(portal_two)
QDEL_NULL(portal_two)
///Clears portal references
/obj/item/card/id/advanced/heretic/proc/clear_portal_refs()
@@ -154,7 +154,7 @@
if(portal_one || portal_two)
clear_portals()
message += ", previous cleared"
portal_one = new(get_turf(door2), door2, inverted)
portal_two = new(get_turf(door1), door1, inverted)
portal_one.destination = portal_two
@@ -175,7 +175,7 @@
. = ..()
if(!proximity_flag || !IS_HERETIC(user))
return
if(istype(target, /obj/effect/knock_portal))
if(istype(target, /obj/effect/lock_portal))
clear_portals()
return
@@ -1,5 +1,5 @@
/obj/effect/forcefield/wizard/heretic
name = "consecrated lintel"
name = "labyrinth pages"
desc = "A field of papers flying in the air, repulsing heathens with impossible force."
icon_state = "lintel"
initial_duration = 8 SECONDS
@@ -13,11 +13,11 @@
visible_message(span_danger("[src] repulses [bumpee] in a storm of paper!"))
///A heretic item that spawns a barrier at the clicked turf, 3 uses
/obj/item/heretic_lintel
name = "consecrated book"
desc = "Some kind of book, its contents make your head hurt. The material is not known to you and it seems to shift and twist unnaturally."
/obj/item/heretic_labyrinth_handbook
name = "labyrinth handbook"
desc = "A book containing the laws and regulations of the Locked Labyrinth, penned on an unknown substance. Its pages squirm and strain, looking to lash out and escape."
icon = 'icons/obj/service/library.dmi'
icon_state = "hereticlintel"
icon_state = "heretichandbook"
force = 10
damtype = BURN
worn_icon_state = "book"
@@ -34,14 +34,14 @@
///how many uses do we have left
var/uses = 3
/obj/item/heretic_lintel/examine(mob/user)
/obj/item/heretic_labyrinth_handbook/examine(mob/user)
. = ..()
if(!IS_HERETIC_OR_MONSTER(user))
return
. += span_hypnophrase("Materializes a barrier upon any tile in sight, which only you can pass through. Lasts 8 seconds.")
. += span_hypnophrase("It has <b>[uses]</b> uses left.")
/obj/item/heretic_lintel/afterattack(atom/target, mob/user, proximity_flag)
/obj/item/heretic_labyrinth_handbook/afterattack(atom/target, mob/user, proximity_flag)
. = ..()
if(IS_HERETIC(user))
var/turf/turf_target = get_turf(target)
@@ -1,17 +1,17 @@
/**
* # The path of Knock.
* # The path of Lock.
*
* Goes as follows:
*
* A Locksmiths Secret
* Grasp of Knock
* A Steward's Secret
* Grasp of Lock
* > Sidepaths:
* Ashen Eyes
* Codex Cicatrix
* Key Keepers Burden
*
* Rite Of Passage
* Mark Of Knock
* Concierge's Rite
* Mark Of Lock
* Ritual of Knowledge
* Burglar's Finesse
* > Sidepaths:
@@ -21,26 +21,26 @@
* Opening Blade
* Caretakers Last Refuge
*
* Many secrets behind the Spider Door
* Unlock the Labyrinth
*/
/datum/heretic_knowledge/limited_amount/starting/base_knock
name = "A Locksmiths Secret"
desc = "Opens up the Path of Knock to you. \
name = "A Steward's Secret"
desc = "Opens up the Path of Lock to you. \
Allows you to transmute a knife and a crowbar into a Key Blade. \
You can only create two at a time and they function as fast crowbars. \
In addition, they can fit into utility belts."
gain_text = "The Knock permits no seal and no isolation. It thrusts us gleefully out of the safety of ignorance."
next_knowledge = list(/datum/heretic_knowledge/knock_grasp)
gain_text = "The Locked Labyrinth leads to freedom. But only the trapped Stewards know the correct path."
next_knowledge = list(/datum/heretic_knowledge/lock_grasp)
required_atoms = list(
/obj/item/knife = 1,
/obj/item/crowbar = 1,
)
result_atoms = list(/obj/item/melee/sickly_blade/knock)
result_atoms = list(/obj/item/melee/sickly_blade/lock)
limit = 2
route = PATH_KNOCK
route = PATH_LOCK
/datum/heretic_knowledge/knock_grasp
name = "Grasp of Knock"
/datum/heretic_knowledge/lock_grasp
name = "Grasp of Lock"
desc = "Your mansus grasp allows you to access anything! Right click on an airlock or a locker to force it open. \
DNA locks on mechs will be removed, and any pilot will be ejected. Works on consoles. \
Makes a distinctive knocking sound on use."
@@ -51,24 +51,24 @@
/datum/heretic_knowledge/codex_cicatrix,
)
cost = 1
route = PATH_KNOCK
route = PATH_LOCK
/datum/heretic_knowledge/knock_grasp/on_gain(mob/user, datum/antagonist/heretic/our_heretic)
/datum/heretic_knowledge/lock_grasp/on_gain(mob/user, datum/antagonist/heretic/our_heretic)
RegisterSignal(user, COMSIG_HERETIC_MANSUS_GRASP_ATTACK_SECONDARY, PROC_REF(on_secondary_mansus_grasp))
RegisterSignal(user, COMSIG_HERETIC_MANSUS_GRASP_ATTACK, PROC_REF(on_mansus_grasp))
/datum/heretic_knowledge/knock_grasp/on_lose(mob/user, datum/antagonist/heretic/our_heretic)
/datum/heretic_knowledge/lock_grasp/on_lose(mob/user, datum/antagonist/heretic/our_heretic)
UnregisterSignal(user, COMSIG_HERETIC_MANSUS_GRASP_ATTACK_SECONDARY)
UnregisterSignal(user, COMSIG_HERETIC_MANSUS_GRASP_ATTACK)
/datum/heretic_knowledge/knock_grasp/proc/on_mansus_grasp(mob/living/source, mob/living/target)
/datum/heretic_knowledge/lock_grasp/proc/on_mansus_grasp(mob/living/source, mob/living/target)
SIGNAL_HANDLER
var/obj/item/clothing/under/suit = target.get_item_by_slot(ITEM_SLOT_ICLOTHING)
if(istype(suit) && suit.adjusted == NORMAL_STYLE)
suit.toggle_jumpsuit_adjust()
suit.update_appearance()
/datum/heretic_knowledge/knock_grasp/proc/on_secondary_mansus_grasp(mob/living/source, atom/target)
/datum/heretic_knowledge/lock_grasp/proc/on_secondary_mansus_grasp(mob/living/source, atom/target)
SIGNAL_HANDLER
if(ismecha(target))
@@ -98,7 +98,7 @@
It functions the same as an ID Card, but attacking it with an ID card fuses it and gains its access. \
You can use it in-hand to change its form to a card you fused. \
Does not preserve the card used in the ritual."
gain_text = "Gateways shall open before me, my very will ensnaring reality."
gain_text = "The Keeper sneered. \"These plastic rectangles are a mockery of keys, and I curse every door that desires them.\""
adds_sidepath_points = 1
required_atoms = list(
/obj/item/storage/wallet = 1,
@@ -106,64 +106,64 @@
/obj/item/card/id = 1,
)
result_atoms = list(/obj/item/card/id/advanced/heretic)
next_knowledge = list(/datum/heretic_knowledge/limited_amount/rite_of_passage)
next_knowledge = list(/datum/heretic_knowledge/limited_amount/concierge_rite)
cost = 1
route = PATH_KNOCK
route = PATH_LOCK
/datum/heretic_knowledge/limited_amount/rite_of_passage // item that creates 3 max at a time heretic only barriers, probably should limit to 1 only, holy people can also pass
name = "Rite Of Passage"
desc = "Allows you to transmute a white crayon, a wooden plank, and a multitool to create a Consecrated Book. \
/datum/heretic_knowledge/limited_amount/concierge_rite // item that creates 3 max at a time heretic only barriers, probably should limit to 1 only, holy people can also pass
name = "Concierge's Rite"
desc = "Allows you to transmute a white crayon, a wooden plank, and a multitool to create a Labyrinth Handbook. \
It can materialize a barricade at range that only you and people resistant to magic can pass. 3 uses."
gain_text = "With this I can repel those that intend me harm."
gain_text = "The Concierge scribbled my name into the Handbook. \"Welcome to your new home, fellow Steward.\""
required_atoms = list(
/obj/item/toy/crayon/white = 1,
/obj/item/stack/sheet/mineral/wood = 1,
/obj/item/multitool = 1,
)
result_atoms = list(/obj/item/heretic_lintel)
next_knowledge = list(/datum/heretic_knowledge/mark/knock_mark)
result_atoms = list(/obj/item/heretic_labyrinth_handbook)
next_knowledge = list(/datum/heretic_knowledge/mark/lock_mark)
cost = 1
route = PATH_KNOCK
route = PATH_LOCK
/datum/heretic_knowledge/mark/knock_mark
name = "Mark of Knock"
desc = "Your Mansus Grasp now applies the Mark of Knock. \
/datum/heretic_knowledge/mark/lock_mark
name = "Mark of Lock"
desc = "Your Mansus Grasp now applies the Mark of Lock. \
Attack a marked person to bar them from all passages for the duration of the mark. \
This will make it so that they have no access whatsoever, even public access doors will reject them."
gain_text = "Their requests for passage will remain unheeded."
next_knowledge = list(/datum/heretic_knowledge/knowledge_ritual/knock)
route = PATH_KNOCK
mark_type = /datum/status_effect/eldritch/knock
gain_text = "The Gatekeeper was a corrupt Steward. She hindered her fellows for her own twisted amusement."
next_knowledge = list(/datum/heretic_knowledge/knowledge_ritual/lock)
route = PATH_LOCK
mark_type = /datum/status_effect/eldritch/lock
/datum/heretic_knowledge/knowledge_ritual/knock
/datum/heretic_knowledge/knowledge_ritual/lock
next_knowledge = list(/datum/heretic_knowledge/spell/burglar_finesse)
route = PATH_KNOCK
route = PATH_LOCK
/datum/heretic_knowledge/spell/burglar_finesse
name = "Burglar's Finesse"
desc = "Grants you Burglar's Finesse, a single-target spell \
that puts a random item from the victims backpack into your hand."
gain_text = "Their trinkets will be mine, as will their lives in due time."
gain_text = "Consorting with Burglar spirits is frowned upon, but a Steward will always want to learn about new doors."
adds_sidepath_points = 1
next_knowledge = list(
/datum/heretic_knowledge/spell/apetra_vulnera,
/datum/heretic_knowledge/spell/opening_blast,
/datum/heretic_knowledge/blade_upgrade/flesh/knock,
/datum/heretic_knowledge/blade_upgrade/flesh/lock,
)
spell_to_add = /datum/action/cooldown/spell/pointed/burglar_finesse
cost = 2
route = PATH_KNOCK
route = PATH_LOCK
/datum/heretic_knowledge/blade_upgrade/flesh/knock //basically a chance-based weeping avulsion version of the former
/datum/heretic_knowledge/blade_upgrade/flesh/lock //basically a chance-based weeping avulsion version of the former
name = "Opening Blade"
desc = "Your blade has a chance to cause a weeping avulsion on attack."
gain_text = "The power of my patron courses through my blade, willing their very flesh to part."
gain_text = "The Pilgrim-Surgeon was not an Steward. Nonetheless, its blades and sutures proved a match for their keys."
next_knowledge = list(/datum/heretic_knowledge/spell/caretaker_refuge)
route = PATH_KNOCK
route = PATH_LOCK
wound_type = /datum/wound/slash/flesh/critical
var/chance = 35
/datum/heretic_knowledge/blade_upgrade/flesh/knock/do_melee_effects(mob/living/source, mob/living/target, obj/item/melee/sickly_blade/blade)
/datum/heretic_knowledge/blade_upgrade/flesh/lock/do_melee_effects(mob/living/source, mob/living/target, obj/item/melee/sickly_blade/blade)
if(prob(chance))
return ..()
@@ -172,29 +172,29 @@
desc = "Gives you a spell that makes you transparent and not dense. Cannot be used near living sentient beings. \
While in refuge, you cannot use your hands or spells, and you are immune to slowdown. \
You are invincible but unable to harm anything. Cancelled by being hit with an anti-magic item."
gain_text = "Then I saw my my own reflection cascaded mind-numbingly enough times that I was but a haze."
gain_text = "Jealously, the Guard and the Hound hunted me. But I unlocked my form, and was but a haze, untouchable."
adds_sidepath_points = 1
next_knowledge = list(/datum/heretic_knowledge/ultimate/knock_final)
route = PATH_KNOCK
next_knowledge = list(/datum/heretic_knowledge/ultimate/lock_final)
route = PATH_LOCK
spell_to_add = /datum/action/cooldown/spell/caretaker
cost = 1
/datum/heretic_knowledge/ultimate/knock_final
name = "Many secrets behind the Spider Door"
/datum/heretic_knowledge/ultimate/lock_final
name = "Unlock the Labyrinth"
desc = "The ascension ritual of the Path of Knock. \
Bring 3 corpses without organs in their torso to a transmutation rune to complete the ritual. \
When completed, you gain the ability to transform into empowered eldritch creatures \
and in addition, create a tear to the Spider Door; \
and in addition, create a tear to the Labyrinth's heart; \
a tear in reality located at the site of this ritual. \
Eldritch creatures will endlessly pour from this rift \
who are bound to obey your instructions."
gain_text = "With her knowledge, and what I had seen, I knew what to do. \
I had to open the gates, with the holes in my foes as Ways! \
Reality will soon be torn, the Spider Gate opened! WITNESS ME!"
gain_text = "The Stewards guided me, and I guided them. \
My foes were the Locks and my blades were the Key! \
The Labyrinth will be Locked no more, and freedom will be ours! WITNESS US!"
required_atoms = list(/mob/living/carbon/human = 3)
route = PATH_KNOCK
route = PATH_LOCK
/datum/heretic_knowledge/ultimate/knock_final/recipe_snowflake_check(mob/living/user, list/atoms, list/selected_atoms, turf/loc)
/datum/heretic_knowledge/ultimate/lock_final/recipe_snowflake_check(mob/living/user, list/atoms, list/selected_atoms, turf/loc)
. = ..()
if(!.)
return FALSE
@@ -214,7 +214,7 @@
return FALSE
return TRUE
/datum/heretic_knowledge/ultimate/knock_final/on_finished_recipe(mob/living/user, list/selected_atoms, turf/loc)
/datum/heretic_knowledge/ultimate/lock_final/on_finished_recipe(mob/living/user, list/selected_atoms, turf/loc)
. = ..()
priority_announce(
text = "Delta-class dimensional anomaly detec[generate_heretic_text()] Reality rended, torn. Gates open, doors open, [user.real_name] has ascended! Fear the tide! [generate_heretic_text()]",
@@ -222,14 +222,14 @@
sound = ANNOUNCER_SPANOMALIES,
color_override = "pink",
)
user.client?.give_award(/datum/award/achievement/misc/knock_ascension, user)
user.client?.give_award(/datum/award/achievement/misc/lock_ascension, user)
// buffs
var/datum/action/cooldown/spell/shapeshift/eldritch/ascension/transform_spell = new(user.mind)
transform_spell.Grant(user)
user.client?.give_award(/datum/award/achievement/misc/knock_ascension, user)
user.client?.give_award(/datum/award/achievement/misc/lock_ascension, user)
var/datum/antagonist/heretic/heretic_datum = IS_HERETIC(user)
var/datum/heretic_knowledge/blade_upgrade/flesh/knock/blade_upgrade = heretic_datum.get_knowledge(/datum/heretic_knowledge/blade_upgrade/flesh/knock)
var/datum/heretic_knowledge/blade_upgrade/flesh/lock/blade_upgrade = heretic_datum.get_knowledge(/datum/heretic_knowledge/blade_upgrade/flesh/lock)
blade_upgrade.chance += 30
new /obj/structure/knock_tear(loc, user.mind)
new /obj/structure/lock_tear(loc, user.mind)
@@ -34,9 +34,9 @@ GLOBAL_LIST_EMPTY(heretic_sacrifice_landmarks)
name = "rust heretic sacrifice landmark"
for_heretic_path = PATH_RUST
/obj/effect/landmark/heretic/knock
name = "knock heretic sacrifice landmark"
for_heretic_path = PATH_KNOCK
/obj/effect/landmark/heretic/lock
name = "lock heretic sacrifice landmark"
for_heretic_path = PATH_LOCK
// A fluff signpost object that doesn't teleport you somewhere when you touch it.
/obj/structure/no_effect_signpost
@@ -111,7 +111,7 @@ GLOBAL_LIST_EMPTY(heretic_sacrifice_landmarks)
ambience_index = AMBIENCE_REEBE
sound_environment = SOUND_ENVIRONMENT_SEWER_PIPE
/area/centcom/heretic_sacrifice/knock
name = "Mansus Knock Gate"
/area/centcom/heretic_sacrifice/lock
name = "Mansus Lock Gate"
ambience_index = AMBIENCE_DANGER
sound_environment = SOUND_ENVIRONMENT_PSYCHOTIC
@@ -247,16 +247,16 @@
owner.Paralyze(2 SECONDS)
return ..()
// MARK OF KNOCK
// MARK OF LOCK
/datum/status_effect/eldritch/knock
/datum/status_effect/eldritch/lock
effect_icon_state = "emark7"
duration = 10 SECONDS
/datum/status_effect/eldritch/knock/on_apply()
/datum/status_effect/eldritch/lock/on_apply()
. = ..()
ADD_TRAIT(owner, TRAIT_ALWAYS_NO_ACCESS, STATUS_EFFECT_TRAIT)
/datum/status_effect/eldritch/knock/on_remove()
/datum/status_effect/eldritch/lock/on_remove()
REMOVE_TRAIT(owner, TRAIT_ALWAYS_NO_ACCESS, STATUS_EFFECT_TRAIT)
return ..()
@@ -1,4 +1,4 @@
/obj/structure/knock_tear
/obj/structure/lock_tear
name = "???"
desc = "It stares back. Theres no reason to remain. Run."
max_integrity = INFINITE
@@ -24,7 +24,7 @@
/mob/living/basic/heretic_summon/star_gazer,
)
/obj/structure/knock_tear/Initialize(mapload, datum/mind/ascendant_mind)
/obj/structure/lock_tear/Initialize(mapload, datum/mind/ascendant_mind)
. = ..()
transform *= 3
if(isnull(monster_types))
@@ -36,7 +36,7 @@
INVOKE_ASYNC(src, PROC_REF(poll_ghosts))
/// Ask ghosts if they want to make some noise
/obj/structure/knock_tear/proc/poll_ghosts()
/obj/structure/lock_tear/proc/poll_ghosts()
var/list/candidates = poll_ghost_candidates("Would you like to be a random eldritch monster attacking the crew?", ROLE_SENTIENCE, ROLE_SENTIENCE, 10 SECONDS, POLL_IGNORE_HERETIC_MONSTER)
while(LAZYLEN(candidates))
var/mob/dead/observer/candidate = pick_n_take(candidates)
@@ -44,7 +44,7 @@
gathering_candidates = FALSE
/// Destroy the rift if you kill the heretic
/obj/structure/knock_tear/proc/end_madness(datum/former_master)
/obj/structure/lock_tear/proc/end_madness(datum/former_master)
SIGNAL_HANDLER
var/turf/our_turf = get_turf(src)
playsound(our_turf, 'sound/magic/castsummon.ogg', vol = 100, vary = TRUE)
@@ -53,20 +53,20 @@
new /obj/effect/temp_visual/destabilising_tear(our_turf)
qdel(src)
/obj/structure/knock_tear/attack_ghost(mob/user)
/obj/structure/lock_tear/attack_ghost(mob/user)
. = ..()
if(. || gathering_candidates)
return
ghost_to_monster(user)
/obj/structure/knock_tear/examine(mob/user)
/obj/structure/lock_tear/examine(mob/user)
. = ..()
if (!isobserver(user) || gathering_candidates)
return
. += span_notice("You can use this to enter the world as a foul monster.")
/// Turn a ghost into an 'orrible beast
/obj/structure/knock_tear/proc/ghost_to_monster(mob/dead/observer/user, should_ask = TRUE)
/obj/structure/lock_tear/proc/ghost_to_monster(mob/dead/observer/user, should_ask = TRUE)
if(should_ask)
var/ask = tgui_alert(user, "Become a monster?", "Ascended Rift", list("Yes", "No"))
if(ask != "Yes" || QDELETED(src) || QDELETED(user))
@@ -86,10 +86,10 @@
kill_all_your_friends.completed = TRUE
woohoo_free_antag.objectives += kill_all_your_friends
/obj/structure/knock_tear/move_crushed(atom/movable/pusher, force = MOVE_FORCE_DEFAULT, direction)
/obj/structure/lock_tear/move_crushed(atom/movable/pusher, force = MOVE_FORCE_DEFAULT, direction)
return FALSE
/obj/structure/knock_tear/Destroy(force)
/obj/structure/lock_tear/Destroy(force)
if(ascendee)
ascendee = null
return ..()
Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 235 KiB

After

Width:  |  Height:  |  Size: 231 KiB

+4 -4
View File
@@ -3040,20 +3040,20 @@
#include "code\modules\antagonists\heretic\items\heretic_necks.dm"
#include "code\modules\antagonists\heretic\items\hunter_rifle.dm"
#include "code\modules\antagonists\heretic\items\keyring.dm"
#include "code\modules\antagonists\heretic\items\lintel.dm"
#include "code\modules\antagonists\heretic\items\labyrinth_handbook.dm"
#include "code\modules\antagonists\heretic\items\madness_mask.dm"
#include "code\modules\antagonists\heretic\knowledge\ash_lore.dm"
#include "code\modules\antagonists\heretic\knowledge\blade_lore.dm"
#include "code\modules\antagonists\heretic\knowledge\cosmic_lore.dm"
#include "code\modules\antagonists\heretic\knowledge\flesh_lore.dm"
#include "code\modules\antagonists\heretic\knowledge\general_side.dm"
#include "code\modules\antagonists\heretic\knowledge\knock_lore.dm"
#include "code\modules\antagonists\heretic\knowledge\lock_lore.dm"
#include "code\modules\antagonists\heretic\knowledge\rust_lore.dm"
#include "code\modules\antagonists\heretic\knowledge\side_ash_flesh.dm"
#include "code\modules\antagonists\heretic\knowledge\side_blade_rust.dm"
#include "code\modules\antagonists\heretic\knowledge\side_cosmos_ash.dm"
#include "code\modules\antagonists\heretic\knowledge\side_flesh_void.dm"
#include "code\modules\antagonists\heretic\knowledge\side_knock_flesh.dm"
#include "code\modules\antagonists\heretic\knowledge\side_lock_flesh.dm"
#include "code\modules\antagonists\heretic\knowledge\side_rust_cosmos.dm"
#include "code\modules\antagonists\heretic\knowledge\side_void_blade.dm"
#include "code\modules\antagonists\heretic\knowledge\starting_lore.dm"
@@ -3104,7 +3104,7 @@
#include "code\modules\antagonists\heretic\status_effects\ghoul.dm"
#include "code\modules\antagonists\heretic\status_effects\mark_effects.dm"
#include "code\modules\antagonists\heretic\structures\carving_knife.dm"
#include "code\modules\antagonists\heretic\structures\knock_final.dm"
#include "code\modules\antagonists\heretic\structures\lock_final.dm"
#include "code\modules\antagonists\heretic\structures\mawed_crucible.dm"
#include "code\modules\antagonists\highlander\highlander.dm"
#include "code\modules\antagonists\hypnotized\hypnotized.dm"
@@ -0,0 +1,5 @@
/area/centcom/heretic_sacrifice/knock : /area/centcom/heretic_sacrifice/lock{@OLD}
/obj/effect/landmark/heretic/knock: /obj/effect/landmark/heretic/lock{@OLD}
/obj/item/melee/sickly_blade/knock: /obj/item/melee/sickly_blade/lock{@OLD}
/obj/effect/knock_portal: /obj/effect/knock_portal{@OLD}
/obj/item/heretic_lintel: /obj/item/heretic_labyrinth_handbook{@OLD}