[Semi-Port] New Heretic Path: Knock (#20763)
* woo hoo haha * lore next then we're done * ok lore done * i didnt forget this time hahaha * fix lint? maybe * linter angy maybe * updated comment time to go raid yippie * typo ha * yes forgot this * ok whatever * Updates sprites yay
@@ -117,6 +117,7 @@
|
|||||||
#define PATH_VOID "Void"
|
#define PATH_VOID "Void"
|
||||||
#define PATH_BLADE "Blade"
|
#define PATH_BLADE "Blade"
|
||||||
#define PATH_COSMIC "Cosmic"
|
#define PATH_COSMIC "Cosmic"
|
||||||
|
#define PATH_KNOCK "Knock"
|
||||||
|
|
||||||
#define TIER_NONE 0
|
#define TIER_NONE 0
|
||||||
#define TIER_PATH 1
|
#define TIER_PATH 1
|
||||||
|
|||||||
@@ -484,3 +484,5 @@
|
|||||||
#define TRAIT_NO_FLOATING_ANIM "no-floating-animation"
|
#define TRAIT_NO_FLOATING_ANIM "no-floating-animation"
|
||||||
/// Used to prevent multiple floating blades from triggering over the same target
|
/// Used to prevent multiple floating blades from triggering over the same target
|
||||||
#define TRAIT_BEING_BLADE_SHIELDED "being_blade_shielded"
|
#define TRAIT_BEING_BLADE_SHIELDED "being_blade_shielded"
|
||||||
|
/// things with this trait are treated as having no access in /obj/proc/check_access(obj/item)
|
||||||
|
#define TRAIT_ALWAYS_NO_ACCESS "alwaysnoaccess"
|
||||||
|
|||||||
@@ -21,6 +21,7 @@
|
|||||||
#define POLL_IGNORE_SPLITPERSONALITY "split_personality"
|
#define POLL_IGNORE_SPLITPERSONALITY "split_personality"
|
||||||
#define POLL_IGNORE_CONTRACTOR_SUPPORT "contractor_support"
|
#define POLL_IGNORE_CONTRACTOR_SUPPORT "contractor_support"
|
||||||
#define POLL_IGNORE_RAGINMAGES "raging_mages"
|
#define POLL_IGNORE_RAGINMAGES "raging_mages"
|
||||||
|
#define POLL_IGNORE_HERETIC_MONSTER "heretic_monsters"
|
||||||
|
|
||||||
|
|
||||||
GLOBAL_LIST_INIT(poll_ignore_desc, list(
|
GLOBAL_LIST_INIT(poll_ignore_desc, list(
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ SUBSYSTEM_DEF(machines)
|
|||||||
var/list/processing = list()
|
var/list/processing = list()
|
||||||
var/list/currentrun = list()
|
var/list/currentrun = list()
|
||||||
var/list/powernets = list()
|
var/list/powernets = list()
|
||||||
|
/// Assosciative list of all machines that exist.
|
||||||
|
VAR_PRIVATE/list/machines_by_type = list()
|
||||||
|
|
||||||
/datum/controller/subsystem/machines/Initialize()
|
/datum/controller/subsystem/machines/Initialize()
|
||||||
makepowernets()
|
makepowernets()
|
||||||
@@ -67,3 +69,16 @@ SUBSYSTEM_DEF(machines)
|
|||||||
processing = SSmachines.processing
|
processing = SSmachines.processing
|
||||||
if (istype(SSmachines.powernets))
|
if (istype(SSmachines.powernets))
|
||||||
powernets = SSmachines.powernets
|
powernets = SSmachines.powernets
|
||||||
|
|
||||||
|
/// Gets a list of all machines that are either the passed type or a subtype.
|
||||||
|
/datum/controller/subsystem/machines/proc/get_machines_by_type_and_subtypes(obj/machinery/machine_type)
|
||||||
|
if(!ispath(machine_type))
|
||||||
|
machine_type = machine_type.type
|
||||||
|
if(!ispath(machine_type, /obj/machinery))
|
||||||
|
CRASH("called get_machines_by_type_and_subtypes with a non-machine type [machine_type]")
|
||||||
|
var/list/machines = list()
|
||||||
|
for(var/next_type in typesof(machine_type))
|
||||||
|
var/list/found_machines = machines_by_type[next_type]
|
||||||
|
if(found_machines)
|
||||||
|
machines += found_machines
|
||||||
|
return machines
|
||||||
|
|||||||
@@ -1639,3 +1639,16 @@
|
|||||||
new teleport_effect(get_turf(owner))
|
new teleport_effect(get_turf(owner))
|
||||||
owner.Paralyze(2 SECONDS)
|
owner.Paralyze(2 SECONDS)
|
||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
|
/datum/status_effect/eldritch/knock
|
||||||
|
id = "knock_mark"
|
||||||
|
effect_sprite = "emark7"
|
||||||
|
duration = 10 SECONDS
|
||||||
|
|
||||||
|
/datum/status_effect/eldritch/knock/on_apply()
|
||||||
|
. = ..()
|
||||||
|
ADD_TRAIT(owner, TRAIT_ALWAYS_NO_ACCESS, STATUS_EFFECT_TRAIT)
|
||||||
|
|
||||||
|
/datum/status_effect/eldritch/knock/on_remove()
|
||||||
|
REMOVE_TRAIT(owner, TRAIT_ALWAYS_NO_ACCESS, STATUS_EFFECT_TRAIT)
|
||||||
|
return ..()
|
||||||
|
|||||||
@@ -1087,3 +1087,176 @@ update_label("John Doe", "Clowny")
|
|||||||
/obj/item/card/id/departmental_budget/sec
|
/obj/item/card/id/departmental_budget/sec
|
||||||
department_ID = ACCOUNT_SEC
|
department_ID = ACCOUNT_SEC
|
||||||
department_name = ACCOUNT_SEC_NAME
|
department_name = ACCOUNT_SEC_NAME
|
||||||
|
|
||||||
|
/***
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* HERETIC ID SECTION (SORRY)
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/obj/effect/knock_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'
|
||||||
|
icon_state = "realitycrack"
|
||||||
|
light_system = STATIC_LIGHT
|
||||||
|
light_power = 1
|
||||||
|
light_on = TRUE
|
||||||
|
light_color = COLOR_GREEN
|
||||||
|
light_range = 3
|
||||||
|
opacity = TRUE
|
||||||
|
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
|
||||||
|
///The airlock we are linked to, we delete if it is destroyed
|
||||||
|
var/obj/machinery/door/our_airlock
|
||||||
|
|
||||||
|
/obj/effect/knock_portal/Initialize(mapload, target)
|
||||||
|
. = ..()
|
||||||
|
if(target)
|
||||||
|
our_airlock = target
|
||||||
|
RegisterSignal(target, COMSIG_PARENT_QDELETING, PROC_REF(delete_on_door_delete))
|
||||||
|
|
||||||
|
var/static/list/loc_connections = list(
|
||||||
|
COMSIG_ATOM_ENTERED = PROC_REF(on_entered),
|
||||||
|
)
|
||||||
|
AddElement(/datum/element/connect_loc, loc_connections)
|
||||||
|
|
||||||
|
///Deletes us and our destination portal if our_airlock is destroyed
|
||||||
|
/obj/effect/knock_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)
|
||||||
|
SIGNAL_HANDLER
|
||||||
|
if(istype(loser) && !(locate(type) in old_loc))
|
||||||
|
teleport(loser)
|
||||||
|
|
||||||
|
/obj/effect/knock_portal/Destroy()
|
||||||
|
QDEL_NULL(destination)
|
||||||
|
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)
|
||||||
|
if(isnull(destination)) //dumbass
|
||||||
|
qdel(src)
|
||||||
|
return
|
||||||
|
|
||||||
|
//get it?
|
||||||
|
var/obj/machinery/door/doorstination = IS_HERETIC_OR_MONSTER(teleportee) ? destination.our_airlock : find_random_airlock()
|
||||||
|
if(!do_teleport(teleportee, get_turf(doorstination), channel = TELEPORT_CHANNEL_MAGIC))
|
||||||
|
return
|
||||||
|
|
||||||
|
if(!IS_HERETIC_OR_MONSTER(teleportee))
|
||||||
|
teleportee.apply_damage(20, BRUTE) //so they dont roll it like a jackpot machine to see if they can land in the armory
|
||||||
|
to_chat(teleportee, span_userdanger("You stumble through [src], battered by forces beyond your comprehension, landing anywhere but where you thought you were going."))
|
||||||
|
|
||||||
|
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()
|
||||||
|
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)
|
||||||
|
continue
|
||||||
|
if(airlock.loc == loc)
|
||||||
|
continue
|
||||||
|
possible_destinations += airlock
|
||||||
|
return pick(possible_destinations)
|
||||||
|
|
||||||
|
///Asynchronous proc to unbolt, then open the passed door
|
||||||
|
/obj/effect/knock_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()
|
||||||
|
door.open()
|
||||||
|
|
||||||
|
|
||||||
|
/obj/item/card/id/syndicate/heretic
|
||||||
|
name = "Eldritch Card"
|
||||||
|
access = list(ACCESS_MAINT_TUNNELS)
|
||||||
|
///The first portal in the portal pair, so we can clear it later
|
||||||
|
var/obj/effect/knock_portal/portal_one
|
||||||
|
///The second portal in the portal pair, so we can clear it later
|
||||||
|
var/obj/effect/knock_portal/portal_two
|
||||||
|
///The first door we are linking in the pair, so we can create a portal pair
|
||||||
|
var/datum/weakref/link
|
||||||
|
|
||||||
|
/obj/item/card/id/syndicate/heretic/examine(mob/user)
|
||||||
|
. = ..()
|
||||||
|
if(!IS_HERETIC_OR_MONSTER(user))
|
||||||
|
return
|
||||||
|
. += span_hypnophrase("Enchanted by the Mansus!")
|
||||||
|
. += span_hypnophrase("Using an ID on this will consume it and allow you to copy its accesses.")
|
||||||
|
. += span_hypnophrase("<b>Using this in-hand</b> allows you to change its appearance.")
|
||||||
|
. += span_hypnophrase("<b>Using this on a pair of doors</b>, allows you to link them together. Entering one door will transport you to the other, while heathens are instead teleported to a random airlock.")
|
||||||
|
|
||||||
|
/obj/item/card/id/syndicate/heretic/afterattack(obj/item/O, mob/user, proximity)
|
||||||
|
if(!proximity)
|
||||||
|
return
|
||||||
|
if(istype(O, /obj/item/card/id))
|
||||||
|
var/obj/item/card/id/I = O
|
||||||
|
src.access |= I.access
|
||||||
|
if(isliving(user) && user.mind)
|
||||||
|
if(user.mind.has_antag_datum(/datum/antagonist/heretic))
|
||||||
|
qdel(I)
|
||||||
|
to_chat(usr, span_notice("The card consumes the original ID, copying its access."))
|
||||||
|
|
||||||
|
/obj/item/card/id/syndicate/heretic/proc/clear_portals()
|
||||||
|
QDEL_NULL(portal_one)
|
||||||
|
QDEL_NULL(portal_two)
|
||||||
|
|
||||||
|
///Clears portal references
|
||||||
|
/obj/item/card/id/syndicate/heretic/proc/clear_portal_refs()
|
||||||
|
SIGNAL_HANDLER
|
||||||
|
portal_one = null
|
||||||
|
portal_two = null
|
||||||
|
|
||||||
|
///Creates a portal pair at door1 and door2, displays a balloon alert to user
|
||||||
|
/obj/item/card/id/syndicate/heretic/proc/make_portal(mob/user, obj/machinery/door/door1, obj/machinery/door/door2)
|
||||||
|
var/message = "linked"
|
||||||
|
if(portal_one || portal_two)
|
||||||
|
clear_portals()
|
||||||
|
message += ", previous cleared"
|
||||||
|
|
||||||
|
portal_one = new(get_turf(door2), door2)
|
||||||
|
portal_two = new(get_turf(door1), door1)
|
||||||
|
portal_one.destination = portal_two
|
||||||
|
RegisterSignal(portal_one, COMSIG_PARENT_QDELETING, PROC_REF(clear_portal_refs)) //we only really need to register one because they already qdel both portals if one is destroyed
|
||||||
|
portal_two.destination = portal_one
|
||||||
|
balloon_alert(user, "[message]")
|
||||||
|
|
||||||
|
|
||||||
|
/obj/item/card/id/syndicate/heretic/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
|
||||||
|
. = ..()
|
||||||
|
if(!proximity_flag || !IS_HERETIC(user))
|
||||||
|
return
|
||||||
|
if(istype(target, /obj/effect/knock_portal))
|
||||||
|
clear_portals()
|
||||||
|
return
|
||||||
|
|
||||||
|
if(!istype(target, /obj/machinery/door))
|
||||||
|
return
|
||||||
|
|
||||||
|
var/reference_resolved = link?.resolve()
|
||||||
|
if(reference_resolved == target)
|
||||||
|
return
|
||||||
|
|
||||||
|
if(reference_resolved)
|
||||||
|
make_portal(user, reference_resolved, target)
|
||||||
|
to_chat(user, span_notice("You use [src], to link [link] and [target] together."))
|
||||||
|
link = null
|
||||||
|
balloon_alert(user, "link 2/2")
|
||||||
|
else
|
||||||
|
link = WEAKREF(target)
|
||||||
|
balloon_alert(user, "link 1/2")
|
||||||
|
|
||||||
|
/obj/item/card/id/syndicate/heretic/Destroy()
|
||||||
|
link = null
|
||||||
|
clear_portals()
|
||||||
|
return ..()
|
||||||
|
|||||||
@@ -31,7 +31,8 @@
|
|||||||
/datum/eldritch_knowledge/base_mind,
|
/datum/eldritch_knowledge/base_mind,
|
||||||
/datum/eldritch_knowledge/base_void,
|
/datum/eldritch_knowledge/base_void,
|
||||||
/datum/eldritch_knowledge/base_blade,
|
/datum/eldritch_knowledge/base_blade,
|
||||||
/datum/eldritch_knowledge/base_cosmic),
|
/datum/eldritch_knowledge/base_cosmic,
|
||||||
|
/datum/eldritch_knowledge/base_knock),
|
||||||
TIER_1 = list(
|
TIER_1 = list(
|
||||||
/datum/eldritch_knowledge/madness_mask,
|
/datum/eldritch_knowledge/madness_mask,
|
||||||
/datum/eldritch_knowledge/flesh_ghoul,
|
/datum/eldritch_knowledge/flesh_ghoul,
|
||||||
@@ -40,6 +41,7 @@
|
|||||||
/datum/eldritch_knowledge/spell/void_phase,
|
/datum/eldritch_knowledge/spell/void_phase,
|
||||||
/datum/eldritch_knowledge/blade_dance,
|
/datum/eldritch_knowledge/blade_dance,
|
||||||
/datum/eldritch_knowledge/spell/cosmic_runes,
|
/datum/eldritch_knowledge/spell/cosmic_runes,
|
||||||
|
/datum/eldritch_knowledge/key_ring,
|
||||||
/datum/eldritch_knowledge/armor,
|
/datum/eldritch_knowledge/armor,
|
||||||
/datum/eldritch_knowledge/void_cloak,
|
/datum/eldritch_knowledge/void_cloak,
|
||||||
/datum/eldritch_knowledge/ashen_eyes,
|
/datum/eldritch_knowledge/ashen_eyes,
|
||||||
@@ -52,7 +54,8 @@
|
|||||||
/datum/eldritch_knowledge/mind_mark,
|
/datum/eldritch_knowledge/mind_mark,
|
||||||
/datum/eldritch_knowledge/void_mark,
|
/datum/eldritch_knowledge/void_mark,
|
||||||
/datum/eldritch_knowledge/blade_mark,
|
/datum/eldritch_knowledge/blade_mark,
|
||||||
/datum/eldritch_knowledge/cosmic_mark),
|
/datum/eldritch_knowledge/cosmic_mark,
|
||||||
|
/datum/eldritch_knowledge/knock_mark),
|
||||||
TIER_2 = list(
|
TIER_2 = list(
|
||||||
/datum/eldritch_knowledge/spell/volcano_blast,
|
/datum/eldritch_knowledge/spell/volcano_blast,
|
||||||
/datum/eldritch_knowledge/raw_prophet,
|
/datum/eldritch_knowledge/raw_prophet,
|
||||||
@@ -61,6 +64,7 @@
|
|||||||
/datum/eldritch_knowledge/cold_snap,
|
/datum/eldritch_knowledge/cold_snap,
|
||||||
/datum/eldritch_knowledge/duel_stance,
|
/datum/eldritch_knowledge/duel_stance,
|
||||||
/datum/eldritch_knowledge/spell/star_blast,
|
/datum/eldritch_knowledge/spell/star_blast,
|
||||||
|
/datum/eldritch_knowledge/spell/burglar_finesse,
|
||||||
/datum/eldritch_knowledge/spell/blood_siphon,
|
/datum/eldritch_knowledge/spell/blood_siphon,
|
||||||
/datum/eldritch_knowledge/spell/eldritchbolt,
|
/datum/eldritch_knowledge/spell/eldritchbolt,
|
||||||
/datum/eldritch_knowledge/spell/void_blast),
|
/datum/eldritch_knowledge/spell/void_blast),
|
||||||
@@ -71,7 +75,8 @@
|
|||||||
/datum/eldritch_knowledge/mind_blade_upgrade,
|
/datum/eldritch_knowledge/mind_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/void_blade_upgrade,
|
/datum/eldritch_knowledge/void_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/blade_blade_upgrade,
|
/datum/eldritch_knowledge/blade_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/cosmic_blade_upgrade),
|
/datum/eldritch_knowledge/cosmic_blade_upgrade,
|
||||||
|
/datum/eldritch_knowledge/knock_blade_upgrade),
|
||||||
TIER_3 = list(
|
TIER_3 = list(
|
||||||
/datum/eldritch_knowledge/spell/flame_birth,
|
/datum/eldritch_knowledge/spell/flame_birth,
|
||||||
/datum/eldritch_knowledge/stalker,
|
/datum/eldritch_knowledge/stalker,
|
||||||
@@ -80,6 +85,7 @@
|
|||||||
/datum/eldritch_knowledge/spell/void_pull,
|
/datum/eldritch_knowledge/spell/void_pull,
|
||||||
/datum/eldritch_knowledge/spell/furious_steel,
|
/datum/eldritch_knowledge/spell/furious_steel,
|
||||||
/datum/eldritch_knowledge/spell/cosmic_expansion,
|
/datum/eldritch_knowledge/spell/cosmic_expansion,
|
||||||
|
/datum/eldritch_knowledge/spell/freedom_forever,
|
||||||
/datum/eldritch_knowledge/ashy,
|
/datum/eldritch_knowledge/ashy,
|
||||||
/datum/eldritch_knowledge/rusty,
|
/datum/eldritch_knowledge/rusty,
|
||||||
/datum/eldritch_knowledge/spell/cleave,
|
/datum/eldritch_knowledge/spell/cleave,
|
||||||
@@ -92,7 +98,8 @@
|
|||||||
/datum/eldritch_knowledge/mind_final,
|
/datum/eldritch_knowledge/mind_final,
|
||||||
/datum/eldritch_knowledge/void_final,
|
/datum/eldritch_knowledge/void_final,
|
||||||
/datum/eldritch_knowledge/blade_final,
|
/datum/eldritch_knowledge/blade_final,
|
||||||
/datum/eldritch_knowledge/cosmic_final))
|
/datum/eldritch_knowledge/cosmic_final,
|
||||||
|
/datum/eldritch_knowledge/knock_final))
|
||||||
|
|
||||||
var/static/list/path_to_ui_color = list(
|
var/static/list/path_to_ui_color = list(
|
||||||
PATH_START = "grey",
|
PATH_START = "grey",
|
||||||
@@ -368,6 +375,8 @@
|
|||||||
else if(is_cosmic())
|
else if(is_cosmic())
|
||||||
if(transformed)
|
if(transformed)
|
||||||
parts += "<span class='greentext big'>THE STAR GAZER HAS ASCENDED!</span>"
|
parts += "<span class='greentext big'>THE STAR GAZER HAS ASCENDED!</span>"
|
||||||
|
else if(is_knock())
|
||||||
|
parts += "<span class='greentext big'>THE SPIDER'S DOOR HAS BEEN OPENED!</span>"
|
||||||
else
|
else
|
||||||
parts += "<span class='greentext big'>THE OATHBREAKER HAS ASCENDED!</span>"
|
parts += "<span class='greentext big'>THE OATHBREAKER HAS ASCENDED!</span>"
|
||||||
else
|
else
|
||||||
@@ -731,6 +740,37 @@
|
|||||||
flavor_message += "Dragging your feet through what remains of the ruined station, you can only laugh as the stars continue to twinkle in the sky, despite everything."
|
flavor_message += "Dragging your feet through what remains of the ruined station, you can only laugh as the stars continue to twinkle in the sky, despite everything."
|
||||||
else //Dead
|
else //Dead
|
||||||
flavor_message += "Your skin turns to dust and your bones reduce to raw atoms, you will be forgotten in the new cosmic age."
|
flavor_message += "Your skin turns to dust and your bones reduce to raw atoms, you will be forgotten in the new cosmic age."
|
||||||
|
|
||||||
|
else if(is_knock()) //Cosmic epilogues
|
||||||
|
|
||||||
|
if(ascended)
|
||||||
|
message_color = "#FFD700"
|
||||||
|
if(escaped)
|
||||||
|
flavor_message += "The shuttle docks at Centcom, the doors open but instead of people a mass of horrors pour out, consuming everyone in their path."
|
||||||
|
else if(alive)
|
||||||
|
flavor_message += "You've opened the door, unlocked the lock, became the key. Crack open the rest of reality, door by door."
|
||||||
|
else //Dead
|
||||||
|
flavor_message += "For a fleeting moment, you opened a portal to the end of days. Nothing could have brought you greater satisfaction, and you pass in peace"
|
||||||
|
|
||||||
|
else if(cultiewin) //Completed objectives
|
||||||
|
if(escaped)
|
||||||
|
flavor_message += "With each gleeful step you take through the station, you look at the passing airlocks, knowing the truth that you will bring."
|
||||||
|
message_color = "#008000"
|
||||||
|
else if(alive)
|
||||||
|
flavor_message += "The shuttle is gone, you are alone. And yet, as you turn to the nearest airlock, what waits beyond is something only you can see."
|
||||||
|
message_color = "#008000"
|
||||||
|
else //Dead
|
||||||
|
flavor_message += "Your death is not your end, as your bones will become the key for another's path to glory."
|
||||||
|
message_color = "#517fff"
|
||||||
|
|
||||||
|
else //Failed objectives
|
||||||
|
if(escaped)
|
||||||
|
flavor_message += "You escaped, but for what? For the rest of your life you avoid doorways, knowing that once you pass through one, you may not come back."
|
||||||
|
message_color = "#517fff"
|
||||||
|
else if(alive)
|
||||||
|
flavor_message += "Step by step, you walk the halls of the abandonded tarnished station, ID in hand looking for the right door. The door to oblivion."
|
||||||
|
else //Dead
|
||||||
|
flavor_message += "As the last of your life drains from you, all you can manage is to lay there dying. Nobody will remember your deeds here today."
|
||||||
else //Unpledged epilogues
|
else //Unpledged epilogues
|
||||||
|
|
||||||
if(cultiewin) //Completed objectives (WITH NO RESEARCH MIND YOU)
|
if(cultiewin) //Completed objectives (WITH NO RESEARCH MIND YOU)
|
||||||
@@ -839,6 +879,9 @@
|
|||||||
/datum/antagonist/heretic/proc/is_cosmic()
|
/datum/antagonist/heretic/proc/is_cosmic()
|
||||||
return "[lore]" == "Cosmic"
|
return "[lore]" == "Cosmic"
|
||||||
|
|
||||||
|
/datum/antagonist/heretic/proc/is_knock()
|
||||||
|
return "[lore]" == "Knock"
|
||||||
|
|
||||||
/datum/antagonist/heretic/proc/is_unpledged()
|
/datum/antagonist/heretic/proc/is_unpledged()
|
||||||
return "[lore]" == "Unpledged"
|
return "[lore]" == "Unpledged"
|
||||||
|
|
||||||
|
|||||||
@@ -189,7 +189,7 @@
|
|||||||
|
|
||||||
/obj/item/melee/sickly_blade/cosmic
|
/obj/item/melee/sickly_blade/cosmic
|
||||||
name = "cosmic blade"
|
name = "cosmic blade"
|
||||||
desc = "A piece of the cosmos, shaped like a weapon for you to wield"
|
desc = "A piece of the cosmos, shaped like a weapon for you to wield."
|
||||||
icon_state = "cosmic_blade"
|
icon_state = "cosmic_blade"
|
||||||
item_state = "cosmic_blade"
|
item_state = "cosmic_blade"
|
||||||
|
|
||||||
@@ -202,6 +202,12 @@
|
|||||||
user.changeNext_move(CLICK_CD_MELEE)
|
user.changeNext_move(CLICK_CD_MELEE)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
/obj/item/melee/sickly_blade/knock
|
||||||
|
name = "key blade"
|
||||||
|
desc = "A blade in the shape of a key, what door will you unlock with it?"
|
||||||
|
icon_state = "knock_blade"
|
||||||
|
item_state = "knock_blade"
|
||||||
|
|
||||||
/obj/item/clothing/neck/eldritch_amulet
|
/obj/item/clothing/neck/eldritch_amulet
|
||||||
name = "warm eldritch medallion"
|
name = "warm eldritch medallion"
|
||||||
desc = "A strange medallion. Peering through the crystalline surface, the world around you melts away. You see your own beating heart, and the pulse of a thousand others."
|
desc = "A strange medallion. Peering through the crystalline surface, the world around you melts away. You see your own beating heart, and the pulse of a thousand others."
|
||||||
|
|||||||
@@ -9,12 +9,14 @@
|
|||||||
/datum/eldritch_knowledge/base_void,
|
/datum/eldritch_knowledge/base_void,
|
||||||
/datum/eldritch_knowledge/base_blade,
|
/datum/eldritch_knowledge/base_blade,
|
||||||
/datum/eldritch_knowledge/base_cosmic,
|
/datum/eldritch_knowledge/base_cosmic,
|
||||||
|
/datum/eldritch_knowledge/base_knock,
|
||||||
/datum/eldritch_knowledge/rust_mark,
|
/datum/eldritch_knowledge/rust_mark,
|
||||||
/datum/eldritch_knowledge/flesh_mark,
|
/datum/eldritch_knowledge/flesh_mark,
|
||||||
/datum/eldritch_knowledge/mind_mark,
|
/datum/eldritch_knowledge/mind_mark,
|
||||||
/datum/eldritch_knowledge/void_mark,
|
/datum/eldritch_knowledge/void_mark,
|
||||||
/datum/eldritch_knowledge/blade_mark,
|
/datum/eldritch_knowledge/blade_mark,
|
||||||
/datum/eldritch_knowledge/cosmic_mark,
|
/datum/eldritch_knowledge/cosmic_mark,
|
||||||
|
/datum/eldritch_knowledge/knock_mark,
|
||||||
/datum/eldritch_knowledge/rust_blade_upgrade,
|
/datum/eldritch_knowledge/rust_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/flesh_blade_upgrade,
|
/datum/eldritch_knowledge/flesh_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/mind_blade_upgrade,
|
/datum/eldritch_knowledge/mind_blade_upgrade,
|
||||||
@@ -26,7 +28,8 @@
|
|||||||
/datum/eldritch_knowledge/mind_final,
|
/datum/eldritch_knowledge/mind_final,
|
||||||
/datum/eldritch_knowledge/void_final,
|
/datum/eldritch_knowledge/void_final,
|
||||||
/datum/eldritch_knowledge/blade_final,
|
/datum/eldritch_knowledge/blade_final,
|
||||||
/datum/eldritch_knowledge/cosmic_final)
|
/datum/eldritch_knowledge/cosmic_final,
|
||||||
|
/datum/eldritch_knowledge/knock_final)
|
||||||
unlocked_transmutations = list(/datum/eldritch_transmutation/ash_knife)
|
unlocked_transmutations = list(/datum/eldritch_transmutation/ash_knife)
|
||||||
cost = 1
|
cost = 1
|
||||||
route = PATH_ASH
|
route = PATH_ASH
|
||||||
@@ -95,7 +98,8 @@
|
|||||||
/datum/eldritch_knowledge/mind_mark,
|
/datum/eldritch_knowledge/mind_mark,
|
||||||
/datum/eldritch_knowledge/void_mark,
|
/datum/eldritch_knowledge/void_mark,
|
||||||
/datum/eldritch_knowledge/blade_mark,
|
/datum/eldritch_knowledge/blade_mark,
|
||||||
/datum/eldritch_knowledge/cosmic_mark)
|
/datum/eldritch_knowledge/cosmic_mark,
|
||||||
|
/datum/eldritch_knowledge/knock_mark,)
|
||||||
route = PATH_ASH
|
route = PATH_ASH
|
||||||
tier = TIER_MARK
|
tier = TIER_MARK
|
||||||
|
|
||||||
@@ -126,7 +130,7 @@
|
|||||||
/datum/eldritch_knowledge/spell/volcano_blast
|
/datum/eldritch_knowledge/spell/volcano_blast
|
||||||
name = "T2 - Volcano Blast"
|
name = "T2 - Volcano Blast"
|
||||||
gain_text = "The strongest fires come from within, expel a piece of your burning soul to show you enemies the truth of flame."
|
gain_text = "The strongest fires come from within, expel a piece of your burning soul to show you enemies the truth of flame."
|
||||||
desc = "Shoot a stong blast of fire at an enemy."
|
desc = "Shoot a strong blast of fire at an enemy."
|
||||||
cost = 1
|
cost = 1
|
||||||
spell_to_add = /datum/action/cooldown/spell/pointed/projectile/fireball/eldritch
|
spell_to_add = /datum/action/cooldown/spell/pointed/projectile/fireball/eldritch
|
||||||
route = PATH_ASH
|
route = PATH_ASH
|
||||||
@@ -159,7 +163,8 @@
|
|||||||
/datum/eldritch_knowledge/mind_blade_upgrade,
|
/datum/eldritch_knowledge/mind_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/void_blade_upgrade,
|
/datum/eldritch_knowledge/void_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/blade_blade_upgrade,
|
/datum/eldritch_knowledge/blade_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/cosmic_blade_upgrade)
|
/datum/eldritch_knowledge/cosmic_blade_upgrade,
|
||||||
|
/datum/eldritch_knowledge/knock_blade_upgrade,)
|
||||||
route = PATH_ASH
|
route = PATH_ASH
|
||||||
tier = TIER_BLADE
|
tier = TIER_BLADE
|
||||||
|
|
||||||
|
|||||||
@@ -9,24 +9,28 @@
|
|||||||
/datum/eldritch_knowledge/base_mind,
|
/datum/eldritch_knowledge/base_mind,
|
||||||
/datum/eldritch_knowledge/base_void,
|
/datum/eldritch_knowledge/base_void,
|
||||||
/datum/eldritch_knowledge/base_cosmic,
|
/datum/eldritch_knowledge/base_cosmic,
|
||||||
|
/datum/eldritch_knowledge/base_knock,
|
||||||
/datum/eldritch_knowledge/ash_mark,
|
/datum/eldritch_knowledge/ash_mark,
|
||||||
/datum/eldritch_knowledge/rust_mark,
|
/datum/eldritch_knowledge/rust_mark,
|
||||||
/datum/eldritch_knowledge/flesh_mark,
|
/datum/eldritch_knowledge/flesh_mark,
|
||||||
/datum/eldritch_knowledge/mind_mark,
|
/datum/eldritch_knowledge/mind_mark,
|
||||||
/datum/eldritch_knowledge/void_mark,
|
/datum/eldritch_knowledge/void_mark,
|
||||||
/datum/eldritch_knowledge/cosmic_mark,
|
/datum/eldritch_knowledge/cosmic_mark,
|
||||||
|
/datum/eldritch_knowledge/knock_mark,
|
||||||
/datum/eldritch_knowledge/ash_blade_upgrade,
|
/datum/eldritch_knowledge/ash_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/rust_blade_upgrade,
|
/datum/eldritch_knowledge/rust_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/flesh_blade_upgrade,
|
/datum/eldritch_knowledge/flesh_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/mind_blade_upgrade,
|
/datum/eldritch_knowledge/mind_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/void_blade_upgrade,
|
/datum/eldritch_knowledge/void_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/cosmic_blade_upgrade,
|
/datum/eldritch_knowledge/cosmic_blade_upgrade,
|
||||||
|
/datum/eldritch_knowledge/knock_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/ash_final,
|
/datum/eldritch_knowledge/ash_final,
|
||||||
/datum/eldritch_knowledge/rust_final,
|
/datum/eldritch_knowledge/rust_final,
|
||||||
/datum/eldritch_knowledge/flesh_final,
|
/datum/eldritch_knowledge/flesh_final,
|
||||||
/datum/eldritch_knowledge/mind_final,
|
/datum/eldritch_knowledge/mind_final,
|
||||||
/datum/eldritch_knowledge/void_final,
|
/datum/eldritch_knowledge/void_final,
|
||||||
/datum/eldritch_knowledge/cosmic_final)
|
/datum/eldritch_knowledge/cosmic_final,
|
||||||
|
/datum/eldritch_knowledge/knock_final)
|
||||||
unlocked_transmutations = list(/datum/eldritch_transmutation/dark_knife)
|
unlocked_transmutations = list(/datum/eldritch_transmutation/dark_knife)
|
||||||
cost = 1
|
cost = 1
|
||||||
route = PATH_BLADE
|
route = PATH_BLADE
|
||||||
@@ -195,7 +199,8 @@
|
|||||||
/datum/eldritch_knowledge/flesh_mark,
|
/datum/eldritch_knowledge/flesh_mark,
|
||||||
/datum/eldritch_knowledge/mind_mark,
|
/datum/eldritch_knowledge/mind_mark,
|
||||||
/datum/eldritch_knowledge/void_mark,
|
/datum/eldritch_knowledge/void_mark,
|
||||||
/datum/eldritch_knowledge/cosmic_mark)
|
/datum/eldritch_knowledge/cosmic_mark,
|
||||||
|
/datum/eldritch_knowledge/knock_mark,)
|
||||||
unlocked_transmutations = list(/datum/eldritch_transmutation/eldritch_whetstone)
|
unlocked_transmutations = list(/datum/eldritch_transmutation/eldritch_whetstone)
|
||||||
route = PATH_BLADE
|
route = PATH_BLADE
|
||||||
tier = TIER_MARK
|
tier = TIER_MARK
|
||||||
@@ -270,7 +275,8 @@
|
|||||||
/datum/eldritch_knowledge/flesh_blade_upgrade,
|
/datum/eldritch_knowledge/flesh_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/mind_blade_upgrade,
|
/datum/eldritch_knowledge/mind_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/void_blade_upgrade,
|
/datum/eldritch_knowledge/void_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/cosmic_blade_upgrade)
|
/datum/eldritch_knowledge/cosmic_blade_upgrade,
|
||||||
|
/datum/eldritch_knowledge/knock_blade_upgrade,)
|
||||||
unlocked_transmutations = list(/datum/eldritch_transmutation/bone_knife)
|
unlocked_transmutations = list(/datum/eldritch_transmutation/bone_knife)
|
||||||
route = PATH_BLADE
|
route = PATH_BLADE
|
||||||
tier = TIER_BLADE
|
tier = TIER_BLADE
|
||||||
|
|||||||
@@ -10,24 +10,28 @@
|
|||||||
/datum/eldritch_knowledge/base_mind,
|
/datum/eldritch_knowledge/base_mind,
|
||||||
/datum/eldritch_knowledge/base_void,
|
/datum/eldritch_knowledge/base_void,
|
||||||
/datum/eldritch_knowledge/base_blade,
|
/datum/eldritch_knowledge/base_blade,
|
||||||
|
/datum/eldritch_knowledge/base_knock,
|
||||||
/datum/eldritch_knowledge/ash_mark,
|
/datum/eldritch_knowledge/ash_mark,
|
||||||
/datum/eldritch_knowledge/rust_mark,
|
/datum/eldritch_knowledge/rust_mark,
|
||||||
/datum/eldritch_knowledge/flesh_mark,
|
/datum/eldritch_knowledge/flesh_mark,
|
||||||
/datum/eldritch_knowledge/mind_mark,
|
/datum/eldritch_knowledge/mind_mark,
|
||||||
/datum/eldritch_knowledge/void_mark,
|
/datum/eldritch_knowledge/void_mark,
|
||||||
/datum/eldritch_knowledge/blade_mark,
|
/datum/eldritch_knowledge/blade_mark,
|
||||||
|
/datum/eldritch_knowledge/knock_mark,
|
||||||
/datum/eldritch_knowledge/ash_blade_upgrade,
|
/datum/eldritch_knowledge/ash_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/rust_blade_upgrade,
|
/datum/eldritch_knowledge/rust_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/flesh_blade_upgrade,
|
/datum/eldritch_knowledge/flesh_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/mind_blade_upgrade,
|
/datum/eldritch_knowledge/mind_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/void_blade_upgrade,
|
/datum/eldritch_knowledge/void_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/blade_blade_upgrade,
|
/datum/eldritch_knowledge/blade_blade_upgrade,
|
||||||
|
/datum/eldritch_knowledge/knock_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/ash_final,
|
/datum/eldritch_knowledge/ash_final,
|
||||||
/datum/eldritch_knowledge/rust_final,
|
/datum/eldritch_knowledge/rust_final,
|
||||||
/datum/eldritch_knowledge/flesh_final,
|
/datum/eldritch_knowledge/flesh_final,
|
||||||
/datum/eldritch_knowledge/mind_final,
|
/datum/eldritch_knowledge/mind_final,
|
||||||
/datum/eldritch_knowledge/void_final,
|
/datum/eldritch_knowledge/void_final,
|
||||||
/datum/eldritch_knowledge/blade_final)
|
/datum/eldritch_knowledge/blade_final,
|
||||||
|
/datum/eldritch_knowledge/knock_final)
|
||||||
unlocked_transmutations = list(/datum/eldritch_transmutation/cosmic_knife)
|
unlocked_transmutations = list(/datum/eldritch_transmutation/cosmic_knife)
|
||||||
cost = 1
|
cost = 1
|
||||||
route = PATH_COSMIC
|
route = PATH_COSMIC
|
||||||
@@ -78,7 +82,8 @@
|
|||||||
/datum/eldritch_knowledge/flesh_mark,
|
/datum/eldritch_knowledge/flesh_mark,
|
||||||
/datum/eldritch_knowledge/mind_mark,
|
/datum/eldritch_knowledge/mind_mark,
|
||||||
/datum/eldritch_knowledge/void_mark,
|
/datum/eldritch_knowledge/void_mark,
|
||||||
/datum/eldritch_knowledge/blade_mark)
|
/datum/eldritch_knowledge/blade_mark,
|
||||||
|
/datum/eldritch_knowledge/knock_mark,)
|
||||||
route = PATH_COSMIC
|
route = PATH_COSMIC
|
||||||
tier = TIER_MARK
|
tier = TIER_MARK
|
||||||
|
|
||||||
@@ -125,7 +130,8 @@
|
|||||||
/datum/eldritch_knowledge/flesh_blade_upgrade,
|
/datum/eldritch_knowledge/flesh_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/mind_blade_upgrade,
|
/datum/eldritch_knowledge/mind_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/void_blade_upgrade,
|
/datum/eldritch_knowledge/void_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/blade_blade_upgrade)
|
/datum/eldritch_knowledge/blade_blade_upgrade,
|
||||||
|
/datum/eldritch_knowledge/knock_blade_upgrade)
|
||||||
route = PATH_COSMIC
|
route = PATH_COSMIC
|
||||||
tier = TIER_BLADE
|
tier = TIER_BLADE
|
||||||
|
|
||||||
|
|||||||
@@ -9,24 +9,28 @@
|
|||||||
/datum/eldritch_knowledge/base_void,
|
/datum/eldritch_knowledge/base_void,
|
||||||
/datum/eldritch_knowledge/base_blade,
|
/datum/eldritch_knowledge/base_blade,
|
||||||
/datum/eldritch_knowledge/base_cosmic,
|
/datum/eldritch_knowledge/base_cosmic,
|
||||||
|
/datum/eldritch_knowledge/base_knock,
|
||||||
/datum/eldritch_knowledge/ash_mark,
|
/datum/eldritch_knowledge/ash_mark,
|
||||||
/datum/eldritch_knowledge/rust_mark,
|
/datum/eldritch_knowledge/rust_mark,
|
||||||
/datum/eldritch_knowledge/mind_mark,
|
/datum/eldritch_knowledge/mind_mark,
|
||||||
/datum/eldritch_knowledge/void_mark,
|
/datum/eldritch_knowledge/void_mark,
|
||||||
/datum/eldritch_knowledge/blade_mark,
|
/datum/eldritch_knowledge/blade_mark,
|
||||||
/datum/eldritch_knowledge/cosmic_mark,
|
/datum/eldritch_knowledge/cosmic_mark,
|
||||||
|
/datum/eldritch_knowledge/knock_mark,
|
||||||
/datum/eldritch_knowledge/ash_blade_upgrade,
|
/datum/eldritch_knowledge/ash_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/rust_blade_upgrade,
|
/datum/eldritch_knowledge/rust_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/mind_blade_upgrade,
|
/datum/eldritch_knowledge/mind_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/void_blade_upgrade,
|
/datum/eldritch_knowledge/void_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/blade_blade_upgrade,
|
/datum/eldritch_knowledge/blade_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/cosmic_blade_upgrade,
|
/datum/eldritch_knowledge/cosmic_blade_upgrade,
|
||||||
|
/datum/eldritch_knowledge/knock_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/ash_final,
|
/datum/eldritch_knowledge/ash_final,
|
||||||
/datum/eldritch_knowledge/rust_final,
|
/datum/eldritch_knowledge/rust_final,
|
||||||
/datum/eldritch_knowledge/mind_final,
|
/datum/eldritch_knowledge/mind_final,
|
||||||
/datum/eldritch_knowledge/void_final,
|
/datum/eldritch_knowledge/void_final,
|
||||||
/datum/eldritch_knowledge/blade_final,
|
/datum/eldritch_knowledge/blade_final,
|
||||||
/datum/eldritch_knowledge/cosmic_final)
|
/datum/eldritch_knowledge/cosmic_final,
|
||||||
|
/datum/eldritch_knowledge/knock_final)
|
||||||
cost = 1
|
cost = 1
|
||||||
unlocked_transmutations = list(/datum/eldritch_transmutation/flesh_blade)
|
unlocked_transmutations = list(/datum/eldritch_transmutation/flesh_blade)
|
||||||
route = PATH_FLESH
|
route = PATH_FLESH
|
||||||
@@ -124,7 +128,8 @@
|
|||||||
/datum/eldritch_knowledge/mind_mark,
|
/datum/eldritch_knowledge/mind_mark,
|
||||||
/datum/eldritch_knowledge/void_mark,
|
/datum/eldritch_knowledge/void_mark,
|
||||||
/datum/eldritch_knowledge/blade_mark,
|
/datum/eldritch_knowledge/blade_mark,
|
||||||
/datum/eldritch_knowledge/cosmic_mark)
|
/datum/eldritch_knowledge/cosmic_mark,
|
||||||
|
/datum/eldritch_knowledge/knock_mark,)
|
||||||
route = PATH_FLESH
|
route = PATH_FLESH
|
||||||
tier = TIER_MARK
|
tier = TIER_MARK
|
||||||
|
|
||||||
@@ -170,7 +175,8 @@
|
|||||||
/datum/eldritch_knowledge/mind_blade_upgrade,
|
/datum/eldritch_knowledge/mind_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/void_blade_upgrade,
|
/datum/eldritch_knowledge/void_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/blade_blade_upgrade,
|
/datum/eldritch_knowledge/blade_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/cosmic_blade_upgrade)
|
/datum/eldritch_knowledge/cosmic_blade_upgrade,
|
||||||
|
/datum/eldritch_knowledge/knock_blade_upgrade,)
|
||||||
route = PATH_FLESH
|
route = PATH_FLESH
|
||||||
tier = TIER_BLADE
|
tier = TIER_BLADE
|
||||||
|
|
||||||
|
|||||||
196
code/modules/antagonists/eldritch_cult/knowledge/knock_lore.dm
Normal file
@@ -0,0 +1,196 @@
|
|||||||
|
/datum/eldritch_knowledge/base_knock
|
||||||
|
name = "A Locksmith's Secret"
|
||||||
|
desc = "Opens up the Path of Knock to you. \
|
||||||
|
Allows you to transmute a knife and a crowbar into a Key Blade. Additionally, your grasp will open up numerous locked things when used upon them."
|
||||||
|
gain_text = "The Knock permits no seal and no isolation. It thrusts us gleefully out of the safety of ignorance."
|
||||||
|
banned_knowledge = list(
|
||||||
|
/datum/eldritch_knowledge/base_ash,
|
||||||
|
/datum/eldritch_knowledge/base_rust,
|
||||||
|
/datum/eldritch_knowledge/base_flesh,
|
||||||
|
/datum/eldritch_knowledge/base_mind,
|
||||||
|
/datum/eldritch_knowledge/base_void,
|
||||||
|
/datum/eldritch_knowledge/base_blade,
|
||||||
|
/datum/eldritch_knowledge/base_cosmic,
|
||||||
|
/datum/eldritch_knowledge/ash_mark,
|
||||||
|
/datum/eldritch_knowledge/rust_mark,
|
||||||
|
/datum/eldritch_knowledge/flesh_mark,
|
||||||
|
/datum/eldritch_knowledge/mind_mark,
|
||||||
|
/datum/eldritch_knowledge/void_mark,
|
||||||
|
/datum/eldritch_knowledge/blade_mark,
|
||||||
|
/datum/eldritch_knowledge/cosmic_mark,
|
||||||
|
/datum/eldritch_knowledge/ash_blade_upgrade,
|
||||||
|
/datum/eldritch_knowledge/rust_blade_upgrade,
|
||||||
|
/datum/eldritch_knowledge/flesh_blade_upgrade,
|
||||||
|
/datum/eldritch_knowledge/mind_blade_upgrade,
|
||||||
|
/datum/eldritch_knowledge/void_blade_upgrade,
|
||||||
|
/datum/eldritch_knowledge/blade_blade_upgrade,
|
||||||
|
/datum/eldritch_knowledge/cosmic_blade_upgrade,
|
||||||
|
/datum/eldritch_knowledge/ash_final,
|
||||||
|
/datum/eldritch_knowledge/rust_final,
|
||||||
|
/datum/eldritch_knowledge/flesh_final,
|
||||||
|
/datum/eldritch_knowledge/mind_final,
|
||||||
|
/datum/eldritch_knowledge/void_final,
|
||||||
|
/datum/eldritch_knowledge/blade_final,
|
||||||
|
/datum/eldritch_knowledge/cosmic_final)
|
||||||
|
unlocked_transmutations = list(/datum/eldritch_transmutation/knock_knife)
|
||||||
|
cost = 1
|
||||||
|
route = PATH_KNOCK
|
||||||
|
tier = TIER_PATH
|
||||||
|
|
||||||
|
/datum/eldritch_knowledge/base_knock/on_gain(mob/user)
|
||||||
|
. = ..()
|
||||||
|
|
||||||
|
var/datum/action/cooldown/spell/touch/mansus_grasp/knock_grasp = locate() in user.actions
|
||||||
|
knock_grasp?.cooldown_time = 20 SECONDS
|
||||||
|
var/obj/realknife = new /obj/item/melee/sickly_blade/knock
|
||||||
|
user.put_in_hands(realknife)
|
||||||
|
RegisterSignal(user, COMSIG_HERETIC_MANSUS_GRASP_ATTACK, PROC_REF(on_mansus_grasp))
|
||||||
|
|
||||||
|
/datum/eldritch_knowledge/base_ash/on_lose(mob/user)
|
||||||
|
UnregisterSignal(user, COMSIG_HERETIC_MANSUS_GRASP_ATTACK)
|
||||||
|
|
||||||
|
/datum/eldritch_knowledge/base_knock/proc/on_mansus_grasp(mob/living/source, atom/target)
|
||||||
|
//SIGNAL_HANDLER - if this is uncommented the whole thing explodes like flesh grasp
|
||||||
|
|
||||||
|
if(isopenturf(target))//prevent use on tiles
|
||||||
|
return COMPONENT_BLOCK_HAND_USE
|
||||||
|
if(ismecha(target))
|
||||||
|
var/obj/mecha/mecha = target
|
||||||
|
mecha.dna_lock = null
|
||||||
|
for(var/mob/living/occupant as anything in mecha.occupant)
|
||||||
|
mecha.go_out()
|
||||||
|
else if(istype(target,/obj/machinery/door/airlock))
|
||||||
|
var/obj/machinery/door/airlock/door = target
|
||||||
|
door.unbolt()
|
||||||
|
else if(istype(target, /obj/machinery/computer))
|
||||||
|
var/obj/machinery/computer/computer = target
|
||||||
|
computer.authenticated = TRUE
|
||||||
|
computer.balloon_alert(source, "unlocked")
|
||||||
|
|
||||||
|
var/turf/target_turf = get_turf(target)
|
||||||
|
SEND_SIGNAL(target_turf, COMSIG_ATOM_MAGICALLY_UNLOCKED, src, source)
|
||||||
|
playsound(target, 'sound/magic/hereticknock.ogg', 100, TRUE, -1)
|
||||||
|
|
||||||
|
/datum/eldritch_knowledge/key_ring
|
||||||
|
name = "T1 - Key Keeper’s Burden"
|
||||||
|
desc = "Allows you to transmute a wallet, an iron rod, and an ID card to create an Eldritch Card. \
|
||||||
|
It functions the same as an ID Card, but attacking an ID card with it fuses them, causing it to gain the original's access. \
|
||||||
|
You can use it in-hand to change its form. \
|
||||||
|
Does not preserve the card used in the ritual.\
|
||||||
|
Will also allow you to open portals at airlocks to travel between, with a maximum of two."
|
||||||
|
gain_text = "Gateways shall open before me, my very will ensnaring reality."
|
||||||
|
|
||||||
|
unlocked_transmutations = list(/datum/eldritch_transmutation/key_ring)
|
||||||
|
cost = 1
|
||||||
|
route = PATH_KNOCK
|
||||||
|
tier = TIER_1
|
||||||
|
|
||||||
|
/datum/eldritch_knowledge/knock_mark
|
||||||
|
name = "Grasp Mark - Mark of Knock"
|
||||||
|
desc = "Your Mansus Grasp now applies the Mark of Knock. \
|
||||||
|
Attack a marked person to bar them from all passages for the duration of the mark."
|
||||||
|
gain_text = "Their requests for passage will remain unheeded."
|
||||||
|
cost = 2
|
||||||
|
banned_knowledge = list(
|
||||||
|
/datum/eldritch_knowledge/ash_mark,
|
||||||
|
/datum/eldritch_knowledge/rust_mark,
|
||||||
|
/datum/eldritch_knowledge/flesh_mark,
|
||||||
|
/datum/eldritch_knowledge/mind_mark,
|
||||||
|
/datum/eldritch_knowledge/void_mark,
|
||||||
|
/datum/eldritch_knowledge/blade_mark,
|
||||||
|
/datum/eldritch_knowledge/cosmic_mark)
|
||||||
|
route = PATH_KNOCK
|
||||||
|
tier = TIER_MARK
|
||||||
|
|
||||||
|
/datum/eldritch_knowledge/knock_mark/on_gain(mob/user)
|
||||||
|
. = ..()
|
||||||
|
RegisterSignal(user, COMSIG_HERETIC_MANSUS_GRASP_ATTACK, PROC_REF(on_mansus_grasp))
|
||||||
|
|
||||||
|
/datum/eldritch_knowledge/knock_mark/on_lose(mob/user, datum/antagonist/heretic/our_heretic)
|
||||||
|
UnregisterSignal(user, COMSIG_HERETIC_MANSUS_GRASP_ATTACK)
|
||||||
|
|
||||||
|
/datum/eldritch_knowledge/knock_mark/proc/on_mansus_grasp(mob/living/source, mob/living/target)
|
||||||
|
SIGNAL_HANDLER
|
||||||
|
|
||||||
|
if(isliving(target))
|
||||||
|
var/mob/living/living_target = target
|
||||||
|
living_target.apply_status_effect(/datum/status_effect/eldritch/knock)
|
||||||
|
|
||||||
|
/datum/eldritch_knowledge/spell/burglar_finesse
|
||||||
|
name = "T2 - 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."
|
||||||
|
spell_to_add = /datum/action/cooldown/spell/pointed/burglar_finesse
|
||||||
|
cost = 1
|
||||||
|
route = PATH_KNOCK
|
||||||
|
tier = TIER_2
|
||||||
|
|
||||||
|
/datum/eldritch_knowledge/knock_blade_upgrade
|
||||||
|
name = "Blade Upgrade - Opening Blade"
|
||||||
|
desc = "Your blade will be able to pry open unlocked airlocks."
|
||||||
|
gain_text = "The power of my patron courses through my blade, willing their very flesh to part."
|
||||||
|
banned_knowledge = list(
|
||||||
|
/datum/eldritch_knowledge/ash_blade_upgrade,
|
||||||
|
/datum/eldritch_knowledge/rust_blade_upgrade,
|
||||||
|
/datum/eldritch_knowledge/flesh_blade_upgrade,
|
||||||
|
/datum/eldritch_knowledge/mind_blade_upgrade,
|
||||||
|
/datum/eldritch_knowledge/void_blade_upgrade,
|
||||||
|
/datum/eldritch_knowledge/blade_blade_upgrade,
|
||||||
|
/datum/eldritch_knowledge/cosmic_blade_upgrade,)
|
||||||
|
route = PATH_KNOCK
|
||||||
|
tier = TIER_BLADE
|
||||||
|
|
||||||
|
/datum/eldritch_knowledge/knock_blade_upgrade/on_eldritch_blade(target,mob/user,proximity_flag,click_parameters)
|
||||||
|
. = ..()
|
||||||
|
|
||||||
|
if(istype(target, /obj/machinery/door/airlock))
|
||||||
|
var/obj/machinery/door/airlock/A = target
|
||||||
|
|
||||||
|
if((!A.requiresID() || A.allowed(user)) && A.hasPower()) //This is to prevent stupid shit like hitting a door with an arm blade, the door opening because you have acces and still getting a "the airlocks motors resist our efforts to force it" message, power requirement is so this doesn't stop unpowered doors from being pried open if you have access
|
||||||
|
return
|
||||||
|
|
||||||
|
if(A.locked)
|
||||||
|
to_chat(user, span_warning("The airlock's bolts prevent it from being forced!"))
|
||||||
|
return
|
||||||
|
if(A.welded)
|
||||||
|
to_chat(user, span_warning("The airlock is welded shut, it won't budge!"))
|
||||||
|
return
|
||||||
|
|
||||||
|
if(A.hasPower())
|
||||||
|
user.visible_message(span_warning("[user] jams [src] into the airlock and starts prying it open!"), span_warning("We start forcing the airlock open."), //yogs modified description
|
||||||
|
span_italics("You hear a metal screeching sound."))
|
||||||
|
playsound(A, 'sound/machines/airlock_alien_prying.ogg', 100, 1)
|
||||||
|
if(!do_after(user, 6 SECONDS, A))
|
||||||
|
return
|
||||||
|
//user.say("Heeeeeeeeeerrre's Johnny!")
|
||||||
|
user.visible_message(span_warning("[user] forces the airlock to open with [user.p_their()] [src]!"), span_warning("We force the airlock to open."), //yogs modified description
|
||||||
|
span_italics("You hear a metal screeching sound."))
|
||||||
|
A.open(2)
|
||||||
|
|
||||||
|
/datum/eldritch_knowledge/spell/freedom_forever
|
||||||
|
name = "T3 - Freedom Forever"
|
||||||
|
desc = "Grants you Freedom Forever, a spell \
|
||||||
|
will cause reality to warp around you for a few seconds, confusing enemies and allies alike."
|
||||||
|
gain_text = "Flesh opens, and blood spills. My master seeks sacrifice, and I shall appease."
|
||||||
|
spell_to_add = /datum/action/cooldown/spell/spacetime_dist/eldritch
|
||||||
|
cost = 1
|
||||||
|
route = PATH_KNOCK
|
||||||
|
tier = TIER_3
|
||||||
|
|
||||||
|
/datum/eldritch_knowledge/knock_final
|
||||||
|
name = "Ascension Rite - Many secrets behind the Spider Door"
|
||||||
|
desc = "The ascension ritual of the Path of Knock. \
|
||||||
|
Bring 3 corpses to a transmutation rune to complete the ritual. \
|
||||||
|
When completed, you gain damage resistance, and stun immunity \
|
||||||
|
and in addition, create a tear to the Spider Door; \
|
||||||
|
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!"
|
||||||
|
cost = 3
|
||||||
|
unlocked_transmutations = list(/datum/eldritch_transmutation/final/knock_final)
|
||||||
|
route = PATH_KNOCK
|
||||||
|
tier = TIER_ASCEND
|
||||||
@@ -9,24 +9,28 @@
|
|||||||
/datum/eldritch_knowledge/base_void,
|
/datum/eldritch_knowledge/base_void,
|
||||||
/datum/eldritch_knowledge/base_blade,
|
/datum/eldritch_knowledge/base_blade,
|
||||||
/datum/eldritch_knowledge/base_cosmic,
|
/datum/eldritch_knowledge/base_cosmic,
|
||||||
|
/datum/eldritch_knowledge/base_knock,
|
||||||
/datum/eldritch_knowledge/ash_mark,
|
/datum/eldritch_knowledge/ash_mark,
|
||||||
/datum/eldritch_knowledge/rust_mark,
|
/datum/eldritch_knowledge/rust_mark,
|
||||||
/datum/eldritch_knowledge/flesh_mark,
|
/datum/eldritch_knowledge/flesh_mark,
|
||||||
/datum/eldritch_knowledge/void_mark,
|
/datum/eldritch_knowledge/void_mark,
|
||||||
/datum/eldritch_knowledge/blade_mark,
|
/datum/eldritch_knowledge/blade_mark,
|
||||||
/datum/eldritch_knowledge/cosmic_mark,
|
/datum/eldritch_knowledge/cosmic_mark,
|
||||||
|
/datum/eldritch_knowledge/knock_mark,
|
||||||
/datum/eldritch_knowledge/ash_blade_upgrade,
|
/datum/eldritch_knowledge/ash_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/rust_blade_upgrade,
|
/datum/eldritch_knowledge/rust_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/flesh_blade_upgrade,
|
/datum/eldritch_knowledge/flesh_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/void_blade_upgrade,
|
/datum/eldritch_knowledge/void_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/blade_blade_upgrade,
|
/datum/eldritch_knowledge/blade_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/cosmic_blade_upgrade,
|
/datum/eldritch_knowledge/cosmic_blade_upgrade,
|
||||||
|
/datum/eldritch_knowledge/knock_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/ash_final,
|
/datum/eldritch_knowledge/ash_final,
|
||||||
/datum/eldritch_knowledge/rust_final,
|
/datum/eldritch_knowledge/rust_final,
|
||||||
/datum/eldritch_knowledge/flesh_final,
|
/datum/eldritch_knowledge/flesh_final,
|
||||||
/datum/eldritch_knowledge/void_final,
|
/datum/eldritch_knowledge/void_final,
|
||||||
/datum/eldritch_knowledge/blade_final,
|
/datum/eldritch_knowledge/blade_final,
|
||||||
/datum/eldritch_knowledge/cosmic_final)
|
/datum/eldritch_knowledge/cosmic_final,
|
||||||
|
/datum/eldritch_knowledge/knock_final)
|
||||||
unlocked_transmutations = list(/datum/eldritch_transmutation/mind_knife)
|
unlocked_transmutations = list(/datum/eldritch_transmutation/mind_knife)
|
||||||
cost = 1
|
cost = 1
|
||||||
route = PATH_MIND
|
route = PATH_MIND
|
||||||
@@ -82,7 +86,9 @@
|
|||||||
/datum/eldritch_knowledge/flesh_mark,
|
/datum/eldritch_knowledge/flesh_mark,
|
||||||
/datum/eldritch_knowledge/ash_mark,
|
/datum/eldritch_knowledge/ash_mark,
|
||||||
/datum/eldritch_knowledge/void_mark,
|
/datum/eldritch_knowledge/void_mark,
|
||||||
/datum/eldritch_knowledge/blade_mark)
|
/datum/eldritch_knowledge/blade_mark,
|
||||||
|
/datum/eldritch_knowledge/cosmic_mark,
|
||||||
|
/datum/eldritch_knowledge/knock_mark,)
|
||||||
route = PATH_MIND
|
route = PATH_MIND
|
||||||
tier = TIER_MARK
|
tier = TIER_MARK
|
||||||
|
|
||||||
@@ -132,7 +138,9 @@
|
|||||||
/datum/eldritch_knowledge/flesh_blade_upgrade,
|
/datum/eldritch_knowledge/flesh_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/ash_blade_upgrade,
|
/datum/eldritch_knowledge/ash_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/void_blade_upgrade,
|
/datum/eldritch_knowledge/void_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/blade_blade_upgrade)
|
/datum/eldritch_knowledge/blade_blade_upgrade,
|
||||||
|
/datum/eldritch_knowledge/cosmic_blade_upgrade,
|
||||||
|
/datum/eldritch_knowledge/knock_blade_upgrade,)
|
||||||
route = PATH_MIND
|
route = PATH_MIND
|
||||||
tier = TIER_BLADE
|
tier = TIER_BLADE
|
||||||
|
|
||||||
|
|||||||
@@ -9,24 +9,28 @@
|
|||||||
/datum/eldritch_knowledge/base_void,
|
/datum/eldritch_knowledge/base_void,
|
||||||
/datum/eldritch_knowledge/base_blade,
|
/datum/eldritch_knowledge/base_blade,
|
||||||
/datum/eldritch_knowledge/base_cosmic,
|
/datum/eldritch_knowledge/base_cosmic,
|
||||||
|
/datum/eldritch_knowledge/base_knock,
|
||||||
/datum/eldritch_knowledge/ash_mark,
|
/datum/eldritch_knowledge/ash_mark,
|
||||||
/datum/eldritch_knowledge/flesh_mark,
|
/datum/eldritch_knowledge/flesh_mark,
|
||||||
/datum/eldritch_knowledge/mind_mark,
|
/datum/eldritch_knowledge/mind_mark,
|
||||||
/datum/eldritch_knowledge/void_mark,
|
/datum/eldritch_knowledge/void_mark,
|
||||||
/datum/eldritch_knowledge/blade_mark,
|
/datum/eldritch_knowledge/blade_mark,
|
||||||
/datum/eldritch_knowledge/cosmic_mark,
|
/datum/eldritch_knowledge/cosmic_mark,
|
||||||
|
/datum/eldritch_knowledge/knock_mark,
|
||||||
/datum/eldritch_knowledge/ash_blade_upgrade,
|
/datum/eldritch_knowledge/ash_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/flesh_blade_upgrade,
|
/datum/eldritch_knowledge/flesh_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/mind_blade_upgrade,
|
/datum/eldritch_knowledge/mind_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/void_blade_upgrade,
|
/datum/eldritch_knowledge/void_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/blade_blade_upgrade,
|
/datum/eldritch_knowledge/blade_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/cosmic_blade_upgrade,
|
/datum/eldritch_knowledge/cosmic_blade_upgrade,
|
||||||
|
/datum/eldritch_knowledge/knock_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/ash_final,
|
/datum/eldritch_knowledge/ash_final,
|
||||||
/datum/eldritch_knowledge/flesh_final,
|
/datum/eldritch_knowledge/flesh_final,
|
||||||
/datum/eldritch_knowledge/mind_final,
|
/datum/eldritch_knowledge/mind_final,
|
||||||
/datum/eldritch_knowledge/void_final,
|
/datum/eldritch_knowledge/void_final,
|
||||||
/datum/eldritch_knowledge/blade_final,
|
/datum/eldritch_knowledge/blade_final,
|
||||||
/datum/eldritch_knowledge/cosmic_final)
|
/datum/eldritch_knowledge/cosmic_final,
|
||||||
|
/datum/eldritch_knowledge/knock_final)
|
||||||
cost = 1
|
cost = 1
|
||||||
unlocked_transmutations = list(/datum/eldritch_transmutation/rust_blade)
|
unlocked_transmutations = list(/datum/eldritch_transmutation/rust_blade)
|
||||||
route = PATH_RUST
|
route = PATH_RUST
|
||||||
@@ -113,7 +117,8 @@
|
|||||||
/datum/eldritch_knowledge/mind_mark,
|
/datum/eldritch_knowledge/mind_mark,
|
||||||
/datum/eldritch_knowledge/void_mark,
|
/datum/eldritch_knowledge/void_mark,
|
||||||
/datum/eldritch_knowledge/blade_mark,
|
/datum/eldritch_knowledge/blade_mark,
|
||||||
/datum/eldritch_knowledge/cosmic_mark)
|
/datum/eldritch_knowledge/cosmic_mark,
|
||||||
|
/datum/eldritch_knowledge/knock_mark,)
|
||||||
route = PATH_RUST
|
route = PATH_RUST
|
||||||
tier = TIER_MARK
|
tier = TIER_MARK
|
||||||
|
|
||||||
@@ -151,7 +156,8 @@
|
|||||||
/datum/eldritch_knowledge/mind_blade_upgrade,
|
/datum/eldritch_knowledge/mind_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/void_blade_upgrade,
|
/datum/eldritch_knowledge/void_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/blade_blade_upgrade,
|
/datum/eldritch_knowledge/blade_blade_upgrade,
|
||||||
/datum/eldritch_knowledge/cosmic_blade_upgrade)
|
/datum/eldritch_knowledge/cosmic_blade_upgrade,
|
||||||
|
/datum/eldritch_knowledge/knock_blade_upgrade,)
|
||||||
route = PATH_RUST
|
route = PATH_RUST
|
||||||
tier = TIER_BLADE
|
tier = TIER_BLADE
|
||||||
|
|
||||||
|
|||||||
58
code/modules/antagonists/eldritch_cult/magic/knock_magic.dm
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
/datum/action/cooldown/spell/pointed/burglar_finesse
|
||||||
|
name = "Burglar's Finesse"
|
||||||
|
desc = "Steal a random item from the victim's backpack."
|
||||||
|
background_icon_state = "bg_heretic"
|
||||||
|
overlay_icon_state = "bg_heretic_border"
|
||||||
|
button_icon = 'icons/mob/actions/actions_ecult.dmi'
|
||||||
|
button_icon_state = "burglarsfinesse"
|
||||||
|
|
||||||
|
school = SCHOOL_FORBIDDEN
|
||||||
|
cooldown_time = 15 SECONDS
|
||||||
|
|
||||||
|
invocation = "Y'O'INK!"
|
||||||
|
invocation_type = INVOCATION_WHISPER
|
||||||
|
spell_requirements = SPELL_CASTABLE_WITHOUT_INVOCATION|SPELL_REQUIRES_NO_ANTIMAGIC
|
||||||
|
|
||||||
|
cast_range = 6
|
||||||
|
|
||||||
|
/datum/action/cooldown/spell/pointed/burglar_finesse/is_valid_target(atom/cast_on)
|
||||||
|
return ..() && ishuman(cast_on) && (locate(/obj/item/storage/backpack) in cast_on.contents)
|
||||||
|
|
||||||
|
/datum/action/cooldown/spell/pointed/burglar_finesse/cast(mob/living/carbon/human/cast_on)
|
||||||
|
. = ..()
|
||||||
|
if(cast_on.can_block_magic(antimagic_flags))
|
||||||
|
to_chat(cast_on, span_danger("You feel a light tug, but are otherwise fine, you were protected by holiness!"))
|
||||||
|
to_chat(owner, span_danger("[cast_on] is protected by holy forces!"))
|
||||||
|
return FALSE
|
||||||
|
|
||||||
|
var/obj/storage_item = locate(/obj/item/storage/backpack) in cast_on.contents
|
||||||
|
|
||||||
|
if(isnull(storage_item))
|
||||||
|
return FALSE
|
||||||
|
|
||||||
|
var/item = pick(storage_item.contents)
|
||||||
|
if(isnull(item))
|
||||||
|
return FALSE
|
||||||
|
|
||||||
|
to_chat(cast_on, span_warning("Your [storage_item] feels lighter..."))
|
||||||
|
to_chat(owner, span_notice("With a blink, you pull [item] out of [cast_on][p_s()] [storage_item]."))
|
||||||
|
owner.put_in_active_hand(item)
|
||||||
|
|
||||||
|
|
||||||
|
/datum/action/cooldown/spell/spacetime_dist/eldritch
|
||||||
|
name = "Freedom Forever"
|
||||||
|
desc = "Entangle the strings of space-time in an area around you, \
|
||||||
|
randomizing the layout and making proper movement impossible. The strings vibrate..."
|
||||||
|
sound = 'sound/effects/magic.ogg'
|
||||||
|
background_icon_state = "bg_heretic"
|
||||||
|
overlay_icon_state = "bg_heretic_border"
|
||||||
|
button_icon_state = "spacetime"
|
||||||
|
|
||||||
|
school = SCHOOL_FORBIDDEN
|
||||||
|
cooldown_time = 60 SECONDS
|
||||||
|
spell_requirements = SPELL_CASTABLE_WITHOUT_INVOCATION|SPELL_REQUIRES_NO_ANTIMAGIC|SPELL_REQUIRES_STATION
|
||||||
|
|
||||||
|
scramble_radius = 3
|
||||||
|
/// The duration of the scramble
|
||||||
|
duration = 5 SECONDS
|
||||||
|
|
||||||
@@ -0,0 +1,137 @@
|
|||||||
|
/datum/eldritch_transmutation/knock_knife
|
||||||
|
name = "Key Blade"
|
||||||
|
required_atoms = list(/obj/item/kitchen/knife,/obj/item/crowbar)
|
||||||
|
result_atoms = list(/obj/item/melee/sickly_blade/knock)
|
||||||
|
required_shit_list = "A crowbar and a knife."
|
||||||
|
|
||||||
|
/datum/eldritch_transmutation/key_ring
|
||||||
|
name = "Key Keeper’s Burden"
|
||||||
|
required_atoms = list(/obj/item/storage/wallet,/obj/item/card/id,/obj/item/stack/rods)
|
||||||
|
result_atoms = list(/obj/item/card/id/syndicate/heretic)
|
||||||
|
required_shit_list = "A wallet, ID card, and metal rods."
|
||||||
|
|
||||||
|
/datum/eldritch_transmutation/final/knock_final
|
||||||
|
name = "Many secrets behind the Spider Door"
|
||||||
|
required_atoms = list(/mob/living/carbon/human)
|
||||||
|
required_shit_list = "Three dead bodies."
|
||||||
|
|
||||||
|
/datum/eldritch_transmutation/final/knock_final/on_finished_recipe(mob/living/user, list/atoms, loc)
|
||||||
|
priority_announce("Immense destabilization of the bluespace veil has been observed. Our scanners report a fiery entity of unknown power is quickly escalating the station temperature to unhabitable levels. Immediate evacuation is advised.", "Anomaly Alert", ANNOUNCER_SPANOMALIES)
|
||||||
|
|
||||||
|
new /obj/structure/knock_tear(loc, user.mind)
|
||||||
|
var/mob/living/carbon/human/H = user
|
||||||
|
H.physiology.brute_mod *= 0.5
|
||||||
|
H.physiology.burn_mod *= 0.5
|
||||||
|
H.physiology.stamina_mod = 0
|
||||||
|
H.physiology.stun_mod = 0
|
||||||
|
var/datum/antagonist/heretic/ascension = H.mind.has_antag_datum(/datum/antagonist/heretic)
|
||||||
|
ascension.ascended = TRUE
|
||||||
|
return ..()
|
||||||
|
|
||||||
|
/obj/structure/knock_tear
|
||||||
|
name = "???"
|
||||||
|
desc = "It stares back. Theres no reason to remain. Run."
|
||||||
|
max_integrity = 10000
|
||||||
|
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
|
||||||
|
icon = 'icons/effects/effects.dmi'
|
||||||
|
icon_state = "bhole3"
|
||||||
|
light_range = 20
|
||||||
|
anchored = TRUE
|
||||||
|
density = FALSE
|
||||||
|
move_resist = INFINITY
|
||||||
|
/// Who is our daddy?
|
||||||
|
var/datum/mind/ascendee
|
||||||
|
/// True if we're currently checking for ghost opinions
|
||||||
|
var/gathering_candidates = TRUE
|
||||||
|
///a static list of heretic summons we cam create, automatically populated from heretic monster subtypes
|
||||||
|
var/static/list/monster_types
|
||||||
|
/// A static list of heretic summons which we should not create
|
||||||
|
var/static/list/monster_types_blacklist = list(
|
||||||
|
/mob/living/simple_animal/hostile/eldritch/armsy,
|
||||||
|
/mob/living/simple_animal/hostile/eldritch/armsy/prime,
|
||||||
|
/mob/living/simple_animal/hostile/eldritch/star_gazer,
|
||||||
|
)
|
||||||
|
|
||||||
|
/obj/structure/knock_tear/Initialize(mapload, datum/mind/ascendant_mind)
|
||||||
|
. = ..()
|
||||||
|
transform *= 3
|
||||||
|
if(isnull(monster_types))
|
||||||
|
monster_types = subtypesof(/mob/living/simple_animal/hostile/eldritch) - monster_types_blacklist
|
||||||
|
if(!isnull(ascendant_mind))
|
||||||
|
ascendee = ascendant_mind
|
||||||
|
RegisterSignals(ascendant_mind.current, list(COMSIG_LIVING_DEATH, COMSIG_PARENT_QDELETING), PROC_REF(end_madness))
|
||||||
|
INVOKE_ASYNC(src, PROC_REF(poll_ghosts))
|
||||||
|
|
||||||
|
/// Ask ghosts if they want to make some noise
|
||||||
|
/obj/structure/knock_tear/proc/poll_ghosts()
|
||||||
|
var/list/candidates = pollCandidatesForMob("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)
|
||||||
|
ghost_to_monster(candidate, should_ask = FALSE)
|
||||||
|
gathering_candidates = FALSE
|
||||||
|
|
||||||
|
/// Destroy the rift if you kill the heretic
|
||||||
|
/obj/structure/knock_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)
|
||||||
|
visible_message(span_boldwarning("The rip in space spasms and disappears!"))
|
||||||
|
UnregisterSignal(former_master, list(COMSIG_LIVING_DEATH, COMSIG_PARENT_QDELETING)) // Just in case they die THEN delete
|
||||||
|
new /obj/effect/temp_visual/destabilising_tear(our_turf)
|
||||||
|
qdel(src)
|
||||||
|
|
||||||
|
/obj/structure/knock_tear/attack_ghost(mob/user)
|
||||||
|
. = ..()
|
||||||
|
if(. || gathering_candidates)
|
||||||
|
return
|
||||||
|
ghost_to_monster(user)
|
||||||
|
|
||||||
|
/obj/structure/knock_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)
|
||||||
|
if(should_ask)
|
||||||
|
var/ask = tgui_alert(user, "Become a monster?", "Ascended Rift", list("Yes", "No"))
|
||||||
|
if(ask != "Yes" || QDELETED(src) || QDELETED(user))
|
||||||
|
return FALSE
|
||||||
|
var/monster_type = pick(monster_types)
|
||||||
|
var/mob/living/monster = new monster_type(loc)
|
||||||
|
monster.key = user.key
|
||||||
|
monster.set_name()
|
||||||
|
var/datum/antagonist/heretic_monster/woohoo_free_antag = new(src)
|
||||||
|
monster.mind.add_antag_datum(woohoo_free_antag)
|
||||||
|
if(ascendee)
|
||||||
|
monster.faction = ascendee.current.faction
|
||||||
|
woohoo_free_antag.set_owner(ascendee)
|
||||||
|
var/datum/objective/kill_all_your_friends = new()
|
||||||
|
kill_all_your_friends.owner = monster.mind
|
||||||
|
kill_all_your_friends.explanation_text = "The station's crew must be culled."
|
||||||
|
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)
|
||||||
|
return FALSE
|
||||||
|
|
||||||
|
/obj/structure/knock_tear/Destroy(force)
|
||||||
|
if(ascendee)
|
||||||
|
ascendee = null
|
||||||
|
return ..()
|
||||||
|
|
||||||
|
/obj/effect/temp_visual/destabilising_tear
|
||||||
|
name = "destabilised tear"
|
||||||
|
icon = 'icons/effects/effects.dmi'
|
||||||
|
icon_state = "bhole3"
|
||||||
|
light_range = 20
|
||||||
|
duration = 1 SECONDS
|
||||||
|
|
||||||
|
/obj/effect/temp_visual/destabilising_tear/Initialize(mapload)
|
||||||
|
. = ..()
|
||||||
|
transform *= 3
|
||||||
|
animate(src, transform = matrix().Scale(3.2), time = 0.15 SECONDS)
|
||||||
|
animate(transform = matrix().Scale(0.2), time = 0.75 SECONDS)
|
||||||
|
animate(transform = matrix().Scale(3, 0), time = 0.1 SECONDS)
|
||||||
|
animate(src, color = COLOR_WHITE, time = 0.25 SECONDS, flags = ANIMATION_PARALLEL)
|
||||||
@@ -11,6 +11,8 @@
|
|||||||
if(IsAdminGhost(M))
|
if(IsAdminGhost(M))
|
||||||
//Access can't stop the abuse
|
//Access can't stop the abuse
|
||||||
return TRUE
|
return TRUE
|
||||||
|
if(HAS_TRAIT(M, TRAIT_ALWAYS_NO_ACCESS))
|
||||||
|
return FALSE
|
||||||
else if(istype(M) && SEND_SIGNAL(M, COMSIG_MOB_ALLOWED, src))
|
else if(istype(M) && SEND_SIGNAL(M, COMSIG_MOB_ALLOWED, src))
|
||||||
return TRUE
|
return TRUE
|
||||||
else if(ishuman(M))
|
else if(ishuman(M))
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 930 KiB After Width: | Height: | Size: 941 KiB |
|
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 74 KiB |
|
Before Width: | Height: | Size: 69 KiB After Width: | Height: | Size: 70 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 14 KiB |
BIN
sound/magic/hereticknock.ogg
Normal file
@@ -663,8 +663,8 @@
|
|||||||
#include "code\datums\elements\frozen.dm"
|
#include "code\datums\elements\frozen.dm"
|
||||||
#include "code\datums\elements\life_drain.dm"
|
#include "code\datums\elements\life_drain.dm"
|
||||||
#include "code\datums\elements\movetype_handler.dm"
|
#include "code\datums\elements\movetype_handler.dm"
|
||||||
#include "code\datums\elements\rust.dm"
|
|
||||||
#include "code\datums\elements\regenerator.dm"
|
#include "code\datums\elements\regenerator.dm"
|
||||||
|
#include "code\datums\elements\rust.dm"
|
||||||
#include "code\datums\elements\squish.dm"
|
#include "code\datums\elements\squish.dm"
|
||||||
#include "code\datums\elements\update_icon_blocker.dm"
|
#include "code\datums\elements\update_icon_blocker.dm"
|
||||||
#include "code\datums\helper_datums\events.dm"
|
#include "code\datums\helper_datums\events.dm"
|
||||||
@@ -1814,6 +1814,7 @@
|
|||||||
#include "code\modules\antagonists\eldritch_cult\knowledge\blade_lore.dm"
|
#include "code\modules\antagonists\eldritch_cult\knowledge\blade_lore.dm"
|
||||||
#include "code\modules\antagonists\eldritch_cult\knowledge\cosmo_lore.dm"
|
#include "code\modules\antagonists\eldritch_cult\knowledge\cosmo_lore.dm"
|
||||||
#include "code\modules\antagonists\eldritch_cult\knowledge\flesh_lore.dm"
|
#include "code\modules\antagonists\eldritch_cult\knowledge\flesh_lore.dm"
|
||||||
|
#include "code\modules\antagonists\eldritch_cult\knowledge\knock_lore.dm"
|
||||||
#include "code\modules\antagonists\eldritch_cult\knowledge\mind_lore.dm"
|
#include "code\modules\antagonists\eldritch_cult\knowledge\mind_lore.dm"
|
||||||
#include "code\modules\antagonists\eldritch_cult\knowledge\rust_lore.dm"
|
#include "code\modules\antagonists\eldritch_cult\knowledge\rust_lore.dm"
|
||||||
#include "code\modules\antagonists\eldritch_cult\knowledge\void_lore.dm"
|
#include "code\modules\antagonists\eldritch_cult\knowledge\void_lore.dm"
|
||||||
@@ -1822,6 +1823,7 @@
|
|||||||
#include "code\modules\antagonists\eldritch_cult\magic\cosmo_magic.dm"
|
#include "code\modules\antagonists\eldritch_cult\magic\cosmo_magic.dm"
|
||||||
#include "code\modules\antagonists\eldritch_cult\magic\flesh_magic.dm"
|
#include "code\modules\antagonists\eldritch_cult\magic\flesh_magic.dm"
|
||||||
#include "code\modules\antagonists\eldritch_cult\magic\general_heretic_magic.dm"
|
#include "code\modules\antagonists\eldritch_cult\magic\general_heretic_magic.dm"
|
||||||
|
#include "code\modules\antagonists\eldritch_cult\magic\knock_magic.dm"
|
||||||
#include "code\modules\antagonists\eldritch_cult\magic\mind_magic.dm"
|
#include "code\modules\antagonists\eldritch_cult\magic\mind_magic.dm"
|
||||||
#include "code\modules\antagonists\eldritch_cult\magic\rust_magic.dm"
|
#include "code\modules\antagonists\eldritch_cult\magic\rust_magic.dm"
|
||||||
#include "code\modules\antagonists\eldritch_cult\magic\void_magic.dm"
|
#include "code\modules\antagonists\eldritch_cult\magic\void_magic.dm"
|
||||||
@@ -1829,6 +1831,7 @@
|
|||||||
#include "code\modules\antagonists\eldritch_cult\transmutations\blade_transmutations.dm"
|
#include "code\modules\antagonists\eldritch_cult\transmutations\blade_transmutations.dm"
|
||||||
#include "code\modules\antagonists\eldritch_cult\transmutations\cosmo_transmutations.dm"
|
#include "code\modules\antagonists\eldritch_cult\transmutations\cosmo_transmutations.dm"
|
||||||
#include "code\modules\antagonists\eldritch_cult\transmutations\flesh_transmutations.dm"
|
#include "code\modules\antagonists\eldritch_cult\transmutations\flesh_transmutations.dm"
|
||||||
|
#include "code\modules\antagonists\eldritch_cult\transmutations\knock_transmutations.dm"
|
||||||
#include "code\modules\antagonists\eldritch_cult\transmutations\mind_transmutations.dm"
|
#include "code\modules\antagonists\eldritch_cult\transmutations\mind_transmutations.dm"
|
||||||
#include "code\modules\antagonists\eldritch_cult\transmutations\rust_transmutations.dm"
|
#include "code\modules\antagonists\eldritch_cult\transmutations\rust_transmutations.dm"
|
||||||
#include "code\modules\antagonists\eldritch_cult\transmutations\void_transmutations.dm"
|
#include "code\modules\antagonists\eldritch_cult\transmutations\void_transmutations.dm"
|
||||||
|
|||||||