mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-23 13:10:02 +01:00
gives three tiny buffs the knock heretic path (#88291)
## About The Pull Request burglars finesse range increased and it may loot any storage object on the back caretakers refuge cooldown is only applied when exiting refuge labyrinth handbook accepts any crayon instead of a white crayon less balance related: click on an id card with eldritch id card to make it consume it eldritch id portals are slightly smoother ## Why It's Good For The Game burglars finesse will immediately get you valided at max range anyway so lets make it longer caretakers refuge is not that good to need a 2 minute total cooldown the labyrinth handbook recipe is too bad to even consider making it ever, making it use a crayon makes it more accessible and its still not that good of an item anyway ## Changelog 🆑 balance: burglars finesse spell range increased from 4 to 6 and it may loot any back storage object, caretakers refuge cooldown is only applied when exiting refuge, labyrinth handbook accepts any crayon instead of a white crayon qol: you may click an id with the knock heretic id card to make it consume it /🆑
This commit is contained in:
@@ -1159,8 +1159,6 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
|
||||
#define TRAIT_MAGNETIC_ID_CARD "magnetic_id_card"
|
||||
/// ID cards with this trait have special appraisal text.
|
||||
#define TRAIT_TASTEFULLY_THICK_ID_CARD "impressive_very_nice"
|
||||
/// things with this trait are treated as having no access in /atom/movable/proc/check_access(obj/item)
|
||||
#define TRAIT_ALWAYS_NO_ACCESS "alwaysnoaccess"
|
||||
|
||||
///The entity has Silicon 'access', so is either a silicon, has an access wand, or is an admin ghost AI.
|
||||
///This is put on the mob, it is used on the client for Admins but they are the exception as they use `isAdminGhostAI`.
|
||||
|
||||
@@ -147,7 +147,6 @@ GLOBAL_LIST_INIT(traits_by_type, list(
|
||||
"TRAIT_ALCOHOL_TOLERANCE" = TRAIT_ALCOHOL_TOLERANCE,
|
||||
"TRAIT_ALLOWED_HONORBOUND_ATTACK" = TRAIT_ALLOWED_HONORBOUND_ATTACK,
|
||||
"TRAIT_ALLOW_HERETIC_CASTING" = TRAIT_ALLOW_HERETIC_CASTING,
|
||||
"TRAIT_ALWAYS_NO_ACCESS" = TRAIT_ALWAYS_NO_ACCESS,
|
||||
"TRAIT_ALWAYS_WANTED" = TRAIT_ALWAYS_WANTED,
|
||||
"TRAIT_ANALGESIA" = TRAIT_ANALGESIA,
|
||||
"TRAIT_ANGELIC" = TRAIT_ANGELIC,
|
||||
|
||||
@@ -38,7 +38,6 @@ GLOBAL_LIST_INIT(admin_visible_traits, list(
|
||||
"TRAIT_AGEUSIA" = TRAIT_AGEUSIA,
|
||||
"TRAIT_ALCOHOL_TOLERANCE" = TRAIT_ALCOHOL_TOLERANCE,
|
||||
"TRAIT_ALLOW_HERETIC_CASTING" = TRAIT_ALLOW_HERETIC_CASTING,
|
||||
"TRAIT_ALWAYS_NO_ACCESS" = TRAIT_ALWAYS_NO_ACCESS,
|
||||
"TRAIT_ALWAYS_WANTED" = TRAIT_ALWAYS_WANTED,
|
||||
"TRAIT_ANOSMIA" = TRAIT_ANOSMIA,
|
||||
"TRAIT_ANTENNAE" = TRAIT_ANTENNAE,
|
||||
|
||||
@@ -64,6 +64,8 @@
|
||||
if(!do_teleport(teleportee, get_turf(doorstination), channel = TELEPORT_CHANNEL_MAGIC))
|
||||
return
|
||||
|
||||
teleportee.client?.move_delay = 0 //make moving through smoother
|
||||
|
||||
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."))
|
||||
@@ -109,7 +111,7 @@
|
||||
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("Using an ID on this or using this ID on another ID 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.")
|
||||
. += span_hypnophrase("<b>Ctrl-clicking the ID</b>, makes the ID make inverted portals instead, which teleport you onto a random airlock onstation, while heathens are teleported to the destination.")
|
||||
@@ -169,18 +171,28 @@
|
||||
portal_two.destination = portal_one
|
||||
balloon_alert(user, "[message]")
|
||||
|
||||
/obj/item/card/id/advanced/heretic/attackby(obj/item/thing, mob/user, params)
|
||||
if(!istype(thing, /obj/item/card/id/advanced) || !IS_HERETIC(user))
|
||||
/obj/item/card/id/advanced/heretic/item_interaction(mob/living/user, obj/item/tool, list/modifiers)
|
||||
if(!istype(tool, /obj/item/card/id/advanced) || !IS_HERETIC(user))
|
||||
return ..()
|
||||
var/obj/item/card/id/card = thing
|
||||
eat_card(tool, user)
|
||||
return ITEM_INTERACT_SUCCESS
|
||||
|
||||
/obj/item/card/id/advanced/heretic/proc/eat_card(obj/item/card/id/card, mob/user)
|
||||
if(card == src)
|
||||
return //no self vore
|
||||
fused_ids[card.name] = card
|
||||
card.moveToNullspace()
|
||||
playsound(drop_location(),'sound/items/eatfood.ogg', rand(10,50), TRUE)
|
||||
playsound(drop_location(), 'sound/items/eatfood.ogg', rand(10,30), TRUE)
|
||||
access += card.access
|
||||
if(!isnull(user))
|
||||
balloon_alert(user, "consumed card")
|
||||
|
||||
/obj/item/card/id/advanced/heretic/interact_with_atom(atom/target, mob/living/user, list/modifiers)
|
||||
if(!IS_HERETIC(user))
|
||||
return NONE
|
||||
if(istype(target, /obj/item/card/id))
|
||||
eat_card(target, user)
|
||||
return ITEM_INTERACT_SUCCESS
|
||||
if(istype(target, /obj/effect/lock_portal))
|
||||
clear_portals()
|
||||
return ITEM_INTERACT_SUCCESS
|
||||
|
||||
@@ -117,11 +117,11 @@
|
||||
|
||||
/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 stick of chalk, a wooden plank, and a multitool to create a Labyrinth Handbook. \
|
||||
desc = "Allows you to transmute a 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 = "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/toy/crayon = 1,
|
||||
/obj/item/stack/sheet/mineral/wood = 1,
|
||||
/obj/item/multitool = 1,
|
||||
)
|
||||
|
||||
@@ -13,10 +13,13 @@
|
||||
invocation_type = INVOCATION_WHISPER
|
||||
spell_requirements = NONE
|
||||
|
||||
cast_range = 4
|
||||
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/is_valid_target(mob/living/carbon/human/cast_on)
|
||||
if(!istype(cast_on))
|
||||
return FALSE
|
||||
var/obj/item/back_item = cast_on.get_item_by_slot(ITEM_SLOT_BACK)
|
||||
return ..() && back_item?.atom_storage
|
||||
|
||||
/datum/action/cooldown/spell/pointed/burglar_finesse/cast(mob/living/carbon/human/cast_on)
|
||||
. = ..()
|
||||
@@ -25,12 +28,12 @@
|
||||
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
|
||||
var/obj/storage_item = cast_on.get_item_by_slot(ITEM_SLOT_BACK)
|
||||
|
||||
if(isnull(storage_item))
|
||||
return FALSE
|
||||
|
||||
var/item = pick(storage_item.contents)
|
||||
var/item = pick(storage_item.atom_storage.return_inv(recursive = FALSE))
|
||||
if(isnull(item))
|
||||
return FALSE
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
/datum/action/cooldown/spell/caretaker/is_valid_target(atom/cast_on)
|
||||
return isliving(cast_on)
|
||||
|
||||
/datum/action/cooldown/spell/caretaker/before_cast(atom/cast_on)
|
||||
/datum/action/cooldown/spell/caretaker/before_cast(mob/living/cast_on)
|
||||
. = ..()
|
||||
if(. & SPELL_CANCEL_CAST)
|
||||
return
|
||||
@@ -34,6 +34,9 @@
|
||||
owner.balloon_alert(owner, "other minds nearby!")
|
||||
return . | SPELL_CANCEL_CAST
|
||||
|
||||
if(!cast_on.has_status_effect(/datum/status_effect/caretaker_refuge))
|
||||
return SPELL_NO_IMMEDIATE_COOLDOWN // cooldown only on exit
|
||||
|
||||
/datum/action/cooldown/spell/caretaker/cast(mob/living/cast_on)
|
||||
. = ..()
|
||||
|
||||
|
||||
@@ -235,12 +235,16 @@
|
||||
|
||||
/datum/status_effect/eldritch/lock/on_apply()
|
||||
. = ..()
|
||||
ADD_TRAIT(owner, TRAIT_ALWAYS_NO_ACCESS, STATUS_EFFECT_TRAIT)
|
||||
RegisterSignal(owner, COMSIG_MOB_TRIED_ACCESS, PROC_REF(attempt_access))
|
||||
|
||||
/datum/status_effect/eldritch/lock/on_remove()
|
||||
REMOVE_TRAIT(owner, TRAIT_ALWAYS_NO_ACCESS, STATUS_EFFECT_TRAIT)
|
||||
UnregisterSignal(owner, COMSIG_MOB_TRIED_ACCESS)
|
||||
return ..()
|
||||
|
||||
/datum/status_effect/eldritch/lock/proc/attempt_access(datum/source, obj/door_attempt)
|
||||
SIGNAL_HANDLER
|
||||
return ACCESS_DISALLOWED
|
||||
|
||||
// MARK OF MOON
|
||||
|
||||
/datum/status_effect/eldritch/moon
|
||||
|
||||
@@ -9,11 +9,6 @@
|
||||
return TRUE
|
||||
if(result_bitflags & COMPONENT_OBJ_DISALLOW) // override all other checks
|
||||
return FALSE
|
||||
if(!isnull(accessor) && HAS_TRAIT(accessor, TRAIT_ALWAYS_NO_ACCESS))
|
||||
return FALSE
|
||||
//check if it doesn't require any access at all
|
||||
if(check_access(null))
|
||||
return TRUE
|
||||
if(isnull(accessor)) //likely a TK user.
|
||||
return FALSE
|
||||
if(isAdminGhostAI(accessor))
|
||||
@@ -25,6 +20,9 @@
|
||||
return TRUE
|
||||
if(attempted_access & ACCESS_DISALLOWED)
|
||||
return FALSE
|
||||
//check if it doesn't require any access at all
|
||||
if(check_access(null))
|
||||
return TRUE
|
||||
if(HAS_SILICON_ACCESS(accessor))
|
||||
if(ispAI(accessor))
|
||||
return FALSE
|
||||
|
||||
Reference in New Issue
Block a user