mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-19 12:05:59 +01:00
Adds a bloodwriting ability to the revenant, that functions like an innate red crayon (#5116)
## About The Pull Request Adds a free ability to the revenant, which allows them to write messages and draw runes as if they had a crayon. clicking the ability button opens the crayon menu, and clicking around allows the revenant to draw what was selected ## Why It's Good For The Game Encourages roleplay with revenants and gives them something to do if they can't get their hands on enough corpses ## Proof Of Testing <details> <summary>Screenshots/Videos</summary> <img width="1848" height="1354" alt="image" src="https://github.com/user-attachments/assets/379d1bfa-3c18-4574-b51c-6359168e9f3c" /> </details> ## Changelog 🆑 add: Added a bloodwriting ability to the revenant that works like a built-in crayon /🆑 --------- Co-authored-by: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Co-authored-by: Alexis <catmc8565@gmail.com>
This commit is contained in:
@@ -73,6 +73,7 @@
|
||||
/datum/action/cooldown/spell/aoe/revenant/malfunction,
|
||||
/datum/action/cooldown/spell/aoe/revenant/overload,
|
||||
/datum/action/cooldown/spell/list_target/telepathy/revenant,
|
||||
/datum/action/cooldown/spell/pointed/revenant/bloodwriting, //BUBBER ADDITION
|
||||
)
|
||||
|
||||
/// The resource, and health, of revenants.
|
||||
@@ -202,6 +203,10 @@
|
||||
relay_to_list_and_observers(rendered, GLOB.revenant_relay_mobs, src)
|
||||
|
||||
/mob/living/basic/revenant/ClickOn(atom/A, params) //revenants can't interact with the world directly, so we gotta do some wacky override stuff
|
||||
//BUBBER ADDITION START
|
||||
if(check_click_intercept(params,A) || HAS_TRAIT(src, TRAIT_NO_TRANSFORM))
|
||||
return
|
||||
//BUBBER ADDITION END
|
||||
var/list/modifiers = params2list(params)
|
||||
if(LAZYACCESS(modifiers, SHIFT_CLICK))
|
||||
ShiftClickOn(A)
|
||||
|
||||
@@ -0,0 +1,86 @@
|
||||
#define INFINITE_CHARGES -1
|
||||
|
||||
/datum/action/cooldown/spell/pointed/revenant/bloodwriting
|
||||
name = "Bloodwriting"
|
||||
desc = "Write messages on the ground. In BLOOD!!"
|
||||
button_icon = 'icons/effects/blood.dmi'
|
||||
button_icon_state = "bubblegumfoot"
|
||||
antimagic_flags = MAGIC_RESISTANCE_HOLY
|
||||
spell_requirements = SPELL_REQUIRES_NO_ANTIMAGIC
|
||||
cooldown_time = 2.5 SECONDS
|
||||
|
||||
///The crayon used for the bloodwriting
|
||||
var/obj/item/toy/crayon/revenant/blood_crayon
|
||||
var/obj/item/toy/crayon/revenant/active_blood_crayon
|
||||
///used to check if the ability is active
|
||||
active_msg = "You start writing in blood."
|
||||
deactive_msg = "You stop writing in blood."
|
||||
aim_assist = FALSE
|
||||
unset_after_click = FALSE
|
||||
var/list/click_params
|
||||
|
||||
|
||||
/datum/action/cooldown/spell/pointed/revenant/bloodwriting/on_activation(mob/on_who)
|
||||
. = ..()
|
||||
if(!blood_crayon)
|
||||
blood_crayon = new()
|
||||
blood_crayon.drawtype = pick(blood_crayon.all_drawables)
|
||||
|
||||
blood_crayon.forceMove(on_who)
|
||||
active_blood_crayon = blood_crayon
|
||||
|
||||
blood_crayon.ui_interact(on_who, null)
|
||||
|
||||
/datum/action/cooldown/spell/pointed/revenant/bloodwriting/on_deactivation(mob/on_who, refund_cooldown)
|
||||
. = ..()
|
||||
if(blood_crayon)
|
||||
SStgui.close_uis(blood_crayon, on_who)
|
||||
QDEL_NULL(blood_crayon)
|
||||
|
||||
active_blood_crayon = null
|
||||
|
||||
/datum/action/cooldown/spell/pointed/revenant/bloodwriting/is_valid_target(atom/cast_on)
|
||||
return isturf(cast_on)
|
||||
|
||||
/datum/action/cooldown/spell/pointed/revenant/bloodwriting/cast(atom/cast_on)
|
||||
. = ..()
|
||||
if(active_blood_crayon)
|
||||
if(!IsAvailable())
|
||||
return FALSE
|
||||
|
||||
if(!active_blood_crayon.can_use_on(cast_on, owner))
|
||||
return FALSE
|
||||
StartCooldown()
|
||||
active_blood_crayon.use_on(cast_on, owner, click_params)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/datum/action/cooldown/spell/pointed/revenant/bloodwriting/InterceptClickOn(mob/living/clicker, params, atom/target)
|
||||
src.click_params = params2list(params) //hacky solution, but I am sick and tired of working on this. I will not fiddle with porting everything in cast() down here.
|
||||
return ..()
|
||||
|
||||
//Crayon stuff neccessary for this
|
||||
/obj/item/toy/crayon/revenant
|
||||
name = "bloodwriting"
|
||||
desc = "If you're reading this, something went wrong. yell at coders."
|
||||
icon = null
|
||||
icon_state = null
|
||||
charges = INFINITE_CHARGES
|
||||
self_contained = FALSE
|
||||
edible = FALSE
|
||||
can_change_colour = FALSE
|
||||
paint_color = COLOR_DARK_RED
|
||||
actually_paints = TRUE
|
||||
instant = TRUE
|
||||
pre_noise = FALSE
|
||||
post_noise = FALSE
|
||||
|
||||
/obj/item/toy/crayon/revenant/ui_state(mob/user)
|
||||
return GLOB.always_state
|
||||
|
||||
/obj/item/toy/crayon/revenant/ui_data(mob/user)
|
||||
. = ..()
|
||||
// Force literacy for bloodwriting UI
|
||||
.["is_literate_user"] = TRUE
|
||||
|
||||
#undef INFINITE_CHARGES
|
||||
@@ -9205,6 +9205,7 @@
|
||||
#include "modular_zubbers\code\modules\antagonists\malf\remove_malf.dm"
|
||||
#include "modular_zubbers\code\modules\antagonists\nightmare\nightmare_species.dm"
|
||||
#include "modular_zubbers\code\modules\antagonists\nukeop\equipment\nuclear_authentication_disk.dm"
|
||||
#include "modular_zubbers\code\modules\antagonists\revenant\bloodwriting.dm"
|
||||
#include "modular_zubbers\code\modules\antagonists\voidwalker\voidwalker_mood.dm"
|
||||
#include "modular_zubbers\code\modules\antagonists\voidwalker\voidwalker_trauma.dm"
|
||||
#include "modular_zubbers\code\modules\antagonists\wizard\events_removal.dm"
|
||||
|
||||
Reference in New Issue
Block a user