mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-26 22:50:26 +01:00
[MIRROR] [ready]Heretic new path : Path of Void [sprites approved] (#1711)
* [ready]Heretic new path : Path of Void [sprites approved] (#54252) * E * E * E * E * E * E * VOID FINALLY * E * E * E * VOID STORM * e * Update code/modules/antagonists/eldritch_cult/eldritch_items.dm Co-authored-by: Rohesie <rohesie@ gmail.com> * Update code/modules/antagonists/eldritch_cult/eldritch_items.dm Co-authored-by: Rohesie <rohesie@ gmail.com> * Update code/modules/antagonists/eldritch_cult/eldritch_magic.dm Co-authored-by: Rohesie <rohesie@ gmail.com> * Update code/modules/antagonists/eldritch_cult/eldritch_magic.dm Co-authored-by: Rohesie <rohesie@ gmail.com> * E * FUCKING FINALLY * E * E * Voids Embrace * E * E * E * E * some changes * E * E * E * EEE * E * E * Update code/modules/antagonists/eldritch_cult/eldritch_items.dm Co-authored-by: necromanceranne <40847847+necromanceranne@ users.noreply.github.com> * Update code/modules/antagonists/eldritch_cult/eldritch_items.dm Co-authored-by: necromanceranne <40847847+necromanceranne@ users.noreply.github.com> * Update code/modules/antagonists/eldritch_cult/eldritch_items.dm Co-authored-by: necromanceranne <40847847+necromanceranne@ users.noreply.github.com> * Update code/modules/antagonists/eldritch_cult/eldritch_items.dm Co-authored-by: necromanceranne <40847847+necromanceranne@ users.noreply.github.com> * Update code/modules/antagonists/eldritch_cult/eldritch_items.dm Co-authored-by: girl <11748095+ExcessiveUseOfCobblestone@ users.noreply.github.com> * Apply suggestions from code review Co-authored-by: ATH1909 <42606352+ATH1909@ users.noreply.github.com> * E * E * E * MERGE READY UWU * Update code/modules/clothing/suits/toggles.dm Co-authored-by: Rohesie <rohesie@ gmail.com> Co-authored-by: necromanceranne <40847847+necromanceranne@ users.noreply.github.com> Co-authored-by: girl <11748095+ExcessiveUseOfCobblestone@ users.noreply.github.com> Co-authored-by: ATH1909 <42606352+ATH1909@ users.noreply.github.com> * [ready]Heretic new path : Path of Void [sprites approved] Co-authored-by: EdgeLordExe <42111655+EdgeLordExe@users.noreply.github.com> Co-authored-by: Rohesie <rohesie@ gmail.com> Co-authored-by: necromanceranne <40847847+necromanceranne@ users.noreply.github.com> Co-authored-by: girl <11748095+ExcessiveUseOfCobblestone@ users.noreply.github.com> Co-authored-by: ATH1909 <42606352+ATH1909@ users.noreply.github.com>
This commit is contained in:
co-authored by
Rohesie
necromanceranne
girl
ATH1909
EdgeLordExe
parent
b99196b519
commit
c9cd05f7cc
@@ -38,6 +38,7 @@
|
||||
current.log_message("has been converted to the cult of the forgotten ones!", LOG_ATTACK, color="#960000")
|
||||
GLOB.reality_smash_track.AddMind(owner)
|
||||
START_PROCESSING(SSprocessing,src)
|
||||
RegisterSignal(owner.current,COMSIG_LIVING_DEATH,.proc/on_death)
|
||||
if(give_equipment)
|
||||
equip_cultist()
|
||||
return ..()
|
||||
@@ -54,6 +55,8 @@
|
||||
GLOB.reality_smash_track.RemoveMind(owner)
|
||||
STOP_PROCESSING(SSprocessing,src)
|
||||
|
||||
on_death()
|
||||
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -85,10 +88,20 @@
|
||||
|
||||
/datum/antagonist/heretic/process()
|
||||
|
||||
if(owner.current.stat == DEAD)
|
||||
return
|
||||
|
||||
for(var/X in researched_knowledge)
|
||||
var/datum/eldritch_knowledge/EK = researched_knowledge[X]
|
||||
EK.on_life(owner.current)
|
||||
|
||||
///What happens to the heretic once he dies, used to remove any custom perks
|
||||
/datum/antagonist/heretic/proc/on_death()
|
||||
|
||||
for(var/X in researched_knowledge)
|
||||
var/datum/eldritch_knowledge/EK = researched_knowledge[X]
|
||||
EK.on_death(owner.current)
|
||||
|
||||
/datum/antagonist/heretic/proc/forge_primary_objectives()
|
||||
var/list/assasination = list()
|
||||
var/list/protection = list()
|
||||
|
||||
@@ -311,3 +311,4 @@
|
||||
var/static/list/postfix = list("Flaw","Presence","Crack","Heat","Cold","Memory","Reminder","Breeze","Grasp","Sight","Whisper","Flow","Touch","Veil","Thought","Imperfection","Blemish","Blush")
|
||||
|
||||
name = "\improper" + pick(prefix) + " " + pick(postfix)
|
||||
|
||||
|
||||
@@ -104,12 +104,15 @@
|
||||
/obj/item/melee/sickly_blade/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
|
||||
. = ..()
|
||||
var/datum/antagonist/heretic/cultie = user.mind.has_antag_datum(/datum/antagonist/heretic)
|
||||
if(!cultie || !proximity_flag)
|
||||
if(!cultie)
|
||||
return
|
||||
var/list/knowledge = cultie.get_all_knowledge()
|
||||
for(var/X in knowledge)
|
||||
var/datum/eldritch_knowledge/eldritch_knowledge_datum = knowledge[X]
|
||||
eldritch_knowledge_datum.on_eldritch_blade(target,user,proximity_flag,click_parameters)
|
||||
if(proximity_flag)
|
||||
eldritch_knowledge_datum.on_eldritch_blade(target,user,proximity_flag,click_parameters)
|
||||
else
|
||||
eldritch_knowledge_datum.on_ranged_attack_eldritch_blade(target,user,click_parameters)
|
||||
|
||||
/obj/item/melee/sickly_blade/rust
|
||||
name = "\improper Rusted Blade"
|
||||
@@ -129,6 +132,12 @@
|
||||
icon_state = "flesh_blade"
|
||||
inhand_icon_state = "flesh_blade"
|
||||
|
||||
/obj/item/melee/sickly_blade/void
|
||||
name = "Void Blade"
|
||||
desc = "Devoid of any substance, this blade reflects nothingness. It is a real depiction of purity, and chaos that ensues after its implementation."
|
||||
icon_state = "void_blade"
|
||||
inhand_icon_state = "void_blade"
|
||||
|
||||
/obj/item/clothing/neck/eldritch_amulet
|
||||
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 pulsing of a thousand others."
|
||||
@@ -169,7 +178,7 @@
|
||||
inhand_icon_state = "eldritch_armor"
|
||||
flags_inv = HIDESHOES|HIDEJUMPSUIT
|
||||
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS
|
||||
allowed = list(/obj/item/melee/sickly_blade, /obj/item/forbidden_book)
|
||||
allowed = list(/obj/item/melee/sickly_blade, /obj/item/forbidden_book, /obj/item/living_heart)
|
||||
hoodtype = /obj/item/clothing/head/hooded/cult_hoodie/eldritch
|
||||
// slightly better than normal cult robes
|
||||
armor = list(MELEE = 50, BULLET = 50, LASER = 50,ENERGY = 50, BOMB = 35, BIO = 20, RAD = 0, FIRE = 20, ACID = 20)
|
||||
@@ -180,3 +189,242 @@
|
||||
icon = 'icons/obj/eldritch.dmi'
|
||||
icon_state = "eldrich_flask"
|
||||
list_reagents = list(/datum/reagent/eldritch = 50)
|
||||
|
||||
/obj/item/clothing/head/hooded/cult_hoodie/void
|
||||
name = "void hood"
|
||||
icon_state = "void_cloak"
|
||||
flags_inv = NONE
|
||||
flags_cover = NONE
|
||||
desc = "Black like tar, doesn't reflect any light. Runic symbols line the outside, with each flash you loose comprehension of what you are seeing."
|
||||
item_flags = EXAMINE_SKIP
|
||||
armor = list(MELEE = 30, BULLET = 30, LASER = 30,ENERGY = 30, BOMB = 15, BIO = 0, RAD = 0, FIRE = 0, ACID = 0)
|
||||
|
||||
/obj/item/clothing/suit/hooded/cultrobes/void
|
||||
name = "void cloak"
|
||||
desc = "Black like tar, doesn't reflect any light. Runic symbols line the outside, with each flash you loose comprehension of what you are seeing."
|
||||
icon_state = "void_cloak"
|
||||
inhand_icon_state = "void_cloak"
|
||||
allowed = list(/obj/item/melee/sickly_blade, /obj/item/forbidden_book, /obj/item/living_heart)
|
||||
hoodtype = /obj/item/clothing/head/hooded/cult_hoodie/void
|
||||
flags_inv = NONE
|
||||
// slightly worse than normal cult robes
|
||||
armor = list(MELEE = 30, BULLET = 30, LASER = 30,ENERGY = 30, BOMB = 15, BIO = 0, RAD = 0, FIRE = 0, ACID = 0)
|
||||
pocket_storage_component_path = /datum/component/storage/concrete/pockets/void_cloak
|
||||
alternative_mode = TRUE
|
||||
|
||||
/obj/item/clothing/suit/hooded/cultrobes/void/ToggleHood()
|
||||
if(!iscarbon(loc))
|
||||
return
|
||||
var/mob/living/carbon/carbon_user = loc
|
||||
if(IS_HERETIC(carbon_user) || IS_HERETIC_MONSTER(carbon_user))
|
||||
. = ..()
|
||||
//We need to account for the hood shenanigans, and that way we can make sure items always fit, even if one of the slots is used by the fucking hood.
|
||||
if(suittoggled)
|
||||
to_chat(carbon_user,"<span class='notice'>The light shifts around you making the cloak invisible!</span>")
|
||||
else
|
||||
to_chat(carbon_user,"<span class='notice'>The kaleidoscope of colours collapses around you, as the cloak shifts to visibility!</span>")
|
||||
item_flags = suittoggled ? EXAMINE_SKIP : ~EXAMINE_SKIP
|
||||
else
|
||||
to_chat(carbon_user,"<span class='danger'>You can't force the hood onto your head!</span>")
|
||||
|
||||
|
||||
/obj/item/clothing/mask/void_mask
|
||||
name = "Abyssal Mask"
|
||||
desc = "Mask created from the suffering of existance, you can look down it's eyes, and notice something gazing back at you."
|
||||
icon_state = "mad_mask"
|
||||
inhand_icon_state = "mad_mask"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
flags_cover = MASKCOVERSEYES
|
||||
resistance_flags = FLAMMABLE
|
||||
flags_inv = HIDEFACE|HIDEFACIALHAIR
|
||||
///Who is wearing this
|
||||
var/mob/living/carbon/human/local_user
|
||||
|
||||
/obj/item/clothing/mask/void_mask/equipped(mob/user, slot)
|
||||
. = ..()
|
||||
if(slot != ITEM_SLOT_MASK)
|
||||
return
|
||||
if(ishuman(user) && user.mind && slot == ITEM_SLOT_MASK)
|
||||
local_user = user
|
||||
START_PROCESSING(SSobj,src)
|
||||
|
||||
if(IS_HERETIC(user) || IS_HERETIC_MONSTER(user))
|
||||
return
|
||||
ADD_TRAIT(src, TRAIT_NODROP, CLOTHING_TRAIT)
|
||||
|
||||
/obj/item/clothing/mask/void_mask/dropped(mob/M)
|
||||
local_user = null
|
||||
STOP_PROCESSING(SSobj,src)
|
||||
REMOVE_TRAIT(src, TRAIT_NODROP, CLOTHING_TRAIT)
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/mask/void_mask/process(delta_time)
|
||||
if(!local_user)
|
||||
return PROCESS_KILL
|
||||
|
||||
if((IS_HERETIC(local_user) || IS_HERETIC_MONSTER(local_user)) && HAS_TRAIT(src,TRAIT_NODROP))
|
||||
REMOVE_TRAIT(src, TRAIT_NODROP, CLOTHING_TRAIT)
|
||||
|
||||
for(var/mob/living/carbon/human/human_in_range in spiral_range(9,local_user))
|
||||
if(IS_HERETIC(human_in_range) || IS_HERETIC_MONSTER(human_in_range))
|
||||
continue
|
||||
|
||||
SEND_SIGNAL(human_in_range,COMSIG_VOID_MASK_ACT,rand(-2,-20)*delta_time)
|
||||
|
||||
if(DT_PROB(60,delta_time))
|
||||
human_in_range.hallucination += 5
|
||||
|
||||
if(DT_PROB(40,delta_time))
|
||||
human_in_range.Jitter(5)
|
||||
|
||||
if(DT_PROB(30,delta_time))
|
||||
human_in_range.emote(pick("giggle","laugh"))
|
||||
human_in_range.adjustStaminaLoss(10)
|
||||
|
||||
if(DT_PROB(25,delta_time))
|
||||
human_in_range.Dizzy(5)
|
||||
|
||||
/obj/item/melee/rune_knife
|
||||
name = "Carving Knife"
|
||||
desc = "Cold Steel, pure, perfect, this knife can carve the floor in many ways, but only few can evoke the dangers that lurk beneath reality."
|
||||
icon = 'icons/obj/eldritch.dmi'
|
||||
icon_state = "rune_carver"
|
||||
flags_1 = CONDUCT_1
|
||||
sharpness = SHARP_EDGED
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
wound_bonus = 20
|
||||
force = 10
|
||||
throwforce = 5
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
attack_verb_continuous = list("attacks", "slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "rends")
|
||||
attack_verb_simple = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "rend")
|
||||
///turfs that you cannot draw carvings on
|
||||
var/static/list/blacklisted_turfs = typecacheof(list(/turf/closed,/turf/open/space,/turf/open/lava))
|
||||
///A check to see if you are in process of drawing a rune
|
||||
var/drawing = FALSE
|
||||
///A list of current runes
|
||||
var/list/current_runes = list()
|
||||
///Max amount of runes
|
||||
var/max_rune_amt = 3
|
||||
///Linked action
|
||||
var/datum/action/innate/rune_shatter/linked_action
|
||||
|
||||
/obj/item/melee/rune_knife/examine(mob/user)
|
||||
. = ..()
|
||||
. += "This item can carve 'Alert carving' - nearly invisible rune that when stepped on gives you a prompt about where someone stood on it and who it was, doesn't get destroyed by being stepped on."
|
||||
. += "This item can carve 'Grasping carving' - when stepped on it causes heavy damage to the legs and stuns for 5 seconds."
|
||||
. += "This item can carve 'Mad carving' - when stepped on it causes dizzyness, jiterryness, temporary blindness, confusion , stuttering and slurring."
|
||||
|
||||
/obj/item/melee/rune_knife/Initialize()
|
||||
. = ..()
|
||||
linked_action = new(src)
|
||||
|
||||
/obj/item/melee/rune_knife/pickup(mob/user)
|
||||
. = ..()
|
||||
linked_action.Grant(user, src)
|
||||
|
||||
/obj/item/melee/rune_knife/dropped(mob/user, silent)
|
||||
. = ..()
|
||||
linked_action.Remove(user, src)
|
||||
|
||||
/obj/item/melee/rune_knife/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
|
||||
. = ..()
|
||||
if(!is_type_in_typecache(target,blacklisted_turfs) && !drawing && proximity_flag)
|
||||
carve_rune(target,user,proximity_flag,click_parameters)
|
||||
|
||||
///Action of carving runes, gives you the ability to click on floor and choose a rune of your need.
|
||||
/obj/item/melee/rune_knife/proc/carve_rune(atom/target, mob/user, proximity_flag, click_parameters)
|
||||
var/obj/structure/trap/eldritch/elder = locate() in range(1,target)
|
||||
if(elder)
|
||||
to_chat(user,"<span class='notice'>You can't draw runes that close to each other!</span>")
|
||||
return
|
||||
|
||||
for(var/X in current_runes)
|
||||
var/obj/structure/trap/eldritch/eldritch = X
|
||||
if(QDELETED(eldritch) || !eldritch)
|
||||
current_runes -= eldritch
|
||||
|
||||
if(current_runes.len >= max_rune_amt)
|
||||
to_chat(user,"<span class='notice'>The blade cannot support more runes!</span>")
|
||||
return
|
||||
|
||||
var/list/pick_list = list()
|
||||
for(var/E in subtypesof(/obj/structure/trap/eldritch))
|
||||
var/obj/structure/trap/eldritch/eldritch = E
|
||||
pick_list[initial(eldritch.name)] = eldritch
|
||||
|
||||
drawing = TRUE
|
||||
|
||||
var/type = pick_list[input(user,"Choose the rune","Rune") as null|anything in pick_list ]
|
||||
if(!type)
|
||||
drawing = FALSE
|
||||
return
|
||||
|
||||
|
||||
to_chat(user,"<span class='notice'>You start drawing the rune...</span>")
|
||||
if(!do_after(user,5 SECONDS,target = target))
|
||||
drawing = FALSE
|
||||
return
|
||||
|
||||
drawing = FALSE
|
||||
var/obj/structure/trap/eldritch/eldritch = new type(target)
|
||||
eldritch.set_owner(user)
|
||||
current_runes += eldritch
|
||||
|
||||
/datum/action/innate/rune_shatter
|
||||
name = "Rune break"
|
||||
desc = "Destroys all runes that were drawn by this blade."
|
||||
background_icon_state = "bg_ecult"
|
||||
button_icon_state = "rune_break"
|
||||
icon_icon = 'icons/mob/actions/actions_ecult.dmi'
|
||||
check_flags = AB_CHECK_CONSCIOUS
|
||||
///Reference to the rune knife it is inside of
|
||||
var/obj/item/melee/rune_knife/sword
|
||||
|
||||
/datum/action/innate/rune_shatter/Grant(mob/user, obj/object)
|
||||
sword = object
|
||||
return ..()
|
||||
|
||||
/datum/action/innate/rune_shatter/Activate()
|
||||
for(var/X in sword.current_runes)
|
||||
var/obj/structure/trap/eldritch/eldritch = X
|
||||
if(!QDELETED(eldritch) && eldritch)
|
||||
qdel(eldritch)
|
||||
|
||||
/obj/item/eldritch_potion
|
||||
name = "Brew of Day and Night"
|
||||
desc = "You should never see this"
|
||||
icon = 'icons/obj/eldritch.dmi'
|
||||
///Typepath to the status effect this is supposed to hold
|
||||
var/status_effect
|
||||
|
||||
/obj/item/eldritch_potion/attack_self(mob/user)
|
||||
. = ..()
|
||||
to_chat(user,"<span class='notice'>You drink the potion and with the viscous liquid, the glass dematerializes.</span>")
|
||||
effect(user)
|
||||
qdel(src)
|
||||
|
||||
///The effect of the potion if it has any special one, in general try not to override this and utilize the status_effect var to make custom effects.
|
||||
/obj/item/eldritch_potion/proc/effect(mob/user)
|
||||
if(!iscarbon(user))
|
||||
return
|
||||
var/mob/living/carbon/carbie = user
|
||||
carbie.apply_status_effect(status_effect)
|
||||
|
||||
/obj/item/eldritch_potion/crucible_soul
|
||||
name = "Brew of Crucible Soul"
|
||||
desc = "Allows you to phase through walls for 15 seconds, after the time runs out, you get teleported to your original location."
|
||||
icon_state = "crucible_soul"
|
||||
status_effect = /datum/status_effect/crucible_soul
|
||||
|
||||
/obj/item/eldritch_potion/duskndawn
|
||||
name = "Brew of Dusk and Dawn"
|
||||
desc = "Allows you to see clearly through walls and objects for 60 seconds."
|
||||
icon_state = "clarity"
|
||||
status_effect = /datum/status_effect/duskndawn
|
||||
|
||||
/obj/item/eldritch_potion/wounded
|
||||
name = "Brew of Wounded Soldier"
|
||||
desc = "For the next 60 seconds each wound will heal you, minor wounds heal 1 of it's damage type per second, moderate heal 3 and critical heal 6. You also become immune to damage slowdon."
|
||||
icon_state = "marshal"
|
||||
status_effect = /datum/status_effect/marshal
|
||||
|
||||
@@ -65,6 +65,14 @@
|
||||
/datum/eldritch_knowledge/proc/recipe_snowflake_check(list/atoms,loc)
|
||||
return TRUE
|
||||
|
||||
/**
|
||||
* A proc that handles the code when the mob dies
|
||||
*
|
||||
* This proc is primarily used to end any soundloops when the heretic dies
|
||||
*/
|
||||
/datum/eldritch_knowledge/proc/on_death(mob/user)
|
||||
return
|
||||
|
||||
/**
|
||||
* What happens once the recipe is succesfully finished
|
||||
*
|
||||
@@ -109,6 +117,14 @@
|
||||
/datum/eldritch_knowledge/proc/on_eldritch_blade(atom/target,mob/user,proximity_flag,click_parameters)
|
||||
return
|
||||
|
||||
/**
|
||||
* Sickly blade distant act
|
||||
*
|
||||
* Same as [/datum/eldritch_knowledge/proc/on_eldritch_blade] but works on targets that are not in proximity to you.
|
||||
*/
|
||||
/datum/eldritch_knowledge/proc/on_ranged_attack_eldritch_blade(atom/target,mob/user,click_parameters)
|
||||
return
|
||||
|
||||
//////////////
|
||||
///Subtypes///
|
||||
//////////////
|
||||
|
||||
@@ -43,8 +43,8 @@
|
||||
/obj/item/melee/touch_attack/mansus_fist
|
||||
name = "Mansus Grasp"
|
||||
desc = "A sinister looking aura that distorts the flow of reality around it. Causes knockdown and major stamina damage in addition to some brute. It gains additional beneficial effects as you expand your knowledge of the Mansus."
|
||||
icon_state = "disintegrate"
|
||||
inhand_icon_state = "disintegrate"
|
||||
icon_state = "mansus"
|
||||
inhand_icon_state = "mansus"
|
||||
catchphrase = "R'CH T'H TR'TH"
|
||||
|
||||
/obj/item/melee/touch_attack/mansus_fist/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
|
||||
@@ -714,3 +714,92 @@
|
||||
segment_length = armsy.get_length()
|
||||
qdel(armsy)
|
||||
return
|
||||
|
||||
/obj/effect/proc_holder/spell/pointed/void_blink
|
||||
name = "Void Phase"
|
||||
desc = "Let's you blink to your pointed destination, causes 3x3 aoe damage bubble around your pointed destination and your current location. It has a minimum range of 3 tiles and a maximum range of 9 tiles."
|
||||
invocation_type = INVOCATION_WHISPER
|
||||
invocation = "RE'L'TY PH'S'E"
|
||||
clothes_req = FALSE
|
||||
range = 9
|
||||
action_background_icon_state = "bg_ecult"
|
||||
charge_max = 300
|
||||
action_icon = 'icons/mob/actions/actions_ecult.dmi'
|
||||
action_icon_state = "voidblink"
|
||||
selection_type = "range"
|
||||
|
||||
/obj/effect/proc_holder/spell/pointed/void_blink/can_target(atom/target, mob/user, silent)
|
||||
. = ..()
|
||||
if(get_dist(get_turf(user),get_turf(target)) < 3 )
|
||||
return FALSE
|
||||
|
||||
/obj/effect/proc_holder/spell/pointed/void_blink/cast(list/targets, mob/user)
|
||||
. = ..()
|
||||
var/target = targets[1]
|
||||
var/turf/targeted_turf = get_turf(target)
|
||||
|
||||
playsound(user,'sound/magic/voidblink.ogg',100)
|
||||
playsound(targeted_turf,'sound/magic/voidblink.ogg',100)
|
||||
|
||||
new /obj/effect/temp_visual/voidin(user.drop_location())
|
||||
new /obj/effect/temp_visual/voidout(targeted_turf)
|
||||
|
||||
for(var/mob/living/living_mob in range(1,user)-user)
|
||||
if(IS_HERETIC(living_mob) || IS_HERETIC_MONSTER(living_mob))
|
||||
continue
|
||||
living_mob.adjustBruteLoss(40)
|
||||
|
||||
for(var/mob/living/living_mob in range(1,targeted_turf)-user)
|
||||
if(IS_HERETIC(living_mob) || IS_HERETIC_MONSTER(living_mob))
|
||||
continue
|
||||
living_mob.adjustBruteLoss(40)
|
||||
|
||||
do_teleport(user,targeted_turf,TRUE,no_effects = TRUE)
|
||||
|
||||
/obj/effect/temp_visual/voidin
|
||||
icon = 'icons/effects/96x96.dmi'
|
||||
icon_state = "void_blink_in"
|
||||
alpha = 150
|
||||
duration = 6
|
||||
pixel_x = -32
|
||||
pixel_y = -32
|
||||
|
||||
/obj/effect/temp_visual/voidout
|
||||
icon = 'icons/effects/96x96.dmi'
|
||||
icon_state = "void_blink_out"
|
||||
alpha = 150
|
||||
duration = 6
|
||||
pixel_x = -32
|
||||
pixel_y = -32
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/void_pull
|
||||
name = "Void Pull"
|
||||
desc = "Call the void, this pulls all nearby people closer to you, damages people already around you. If they are 4 tiles or closer they are also knocked down and a micro-stun is applied."
|
||||
invocation_type = INVOCATION_WHISPER
|
||||
invocation = "BR'NG F'RTH TH'M T' M'"
|
||||
clothes_req = FALSE
|
||||
action_background_icon_state = "bg_ecult"
|
||||
range = -1
|
||||
include_user = TRUE
|
||||
charge_max = 400
|
||||
action_icon = 'icons/mob/actions/actions_ecult.dmi'
|
||||
action_icon_state = "voidpull"
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/void_pull/cast(list/targets, mob/user)
|
||||
. = ..()
|
||||
for(var/mob/living/living_mob in range(1,user)-user)
|
||||
if(IS_HERETIC(living_mob) || IS_HERETIC_MONSTER(living_mob))
|
||||
continue
|
||||
living_mob.adjustBruteLoss(30)
|
||||
|
||||
playsound(user,'sound/magic/voidblink.ogg',100)
|
||||
new /obj/effect/temp_visual/voidin(user.drop_location())
|
||||
for(var/mob/living/livies in view(7,user)-user)
|
||||
|
||||
if(get_dist(user,livies) < 4)
|
||||
livies.AdjustKnockdown(3 SECONDS)
|
||||
livies.AdjustParalyzed(0.5 SECONDS)
|
||||
|
||||
for(var/i in 1 to 3)
|
||||
livies.forceMove(get_step_towards(livies,user))
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
job_rank = ROLE_HERETIC
|
||||
antag_hud_type = ANTAG_HUD_HERETIC
|
||||
antag_hud_name = "heretic_beast"
|
||||
show_in_antagpanel = FALSE
|
||||
var/datum/antagonist/master
|
||||
|
||||
/datum/antagonist/heretic_monster/admin_add(datum/mind/new_owner,mob/admin)
|
||||
@@ -29,6 +30,7 @@
|
||||
var/datum/objective/master_obj = new
|
||||
master_obj.owner = src
|
||||
master_obj.explanation_text = "Assist your master in any way you can!"
|
||||
master_obj.completed = TRUE
|
||||
objectives += master_obj
|
||||
owner.announce_objectives()
|
||||
to_chat(owner, "<span class='boldannounce'>Your master is [master.owner.current.real_name]</span>")
|
||||
|
||||
@@ -0,0 +1,177 @@
|
||||
/obj/structure/eldritch_crucible
|
||||
name = "Mawed Crucible"
|
||||
desc = "Immortalized cast iron, the steel-like teeth holding it in place, it's vile extract has the power of rebirthing things, remaking them from the very beginning."
|
||||
icon = 'icons/obj/eldritch.dmi'
|
||||
icon_state = "crucible"
|
||||
anchored = FALSE
|
||||
density = TRUE
|
||||
///How much mass this currently holds
|
||||
var/current_mass = 5
|
||||
///Maximum amount of mass
|
||||
var/max_mass = 5
|
||||
///Check to see if it is currently being used.
|
||||
var/in_use = FALSE
|
||||
|
||||
/obj/structure/eldritch_crucible/examine(mob/user)
|
||||
. = ..()
|
||||
if(!IS_HERETIC(user) && !IS_HERETIC_MONSTER(user))
|
||||
return
|
||||
if(current_mass < max_mass)
|
||||
. += "The Crucible requires [max_mass - current_mass] more organs or bodyparts!"
|
||||
else
|
||||
. += "The Crucible is ready to be used!"
|
||||
|
||||
. += "You can anchor and reanchor it using Codex Cicatrix!"
|
||||
. += "It is currently [anchored == FALSE ? "unanchored" : "anchored"]"
|
||||
. += "This structure can brew 'Brew of Crucible soul' - when used it gives you the ability to phase through matter for 15 seconds, after the time elapses it teleports you back to your original location"
|
||||
. += "This structure can brew 'Brew of Dusk and Dawn' - when used it gives you xray for 1 minute"
|
||||
. += "This structure can brew 'Brew of Wounded Soldier' - when used it makes you immune to damage slowdown, additionally you start healing for every wound you have, quickly outpacing the damage caused by them."
|
||||
|
||||
/obj/structure/eldritch_crucible/attacked_by(obj/item/I, mob/living/user)
|
||||
if(istype(I,/obj/item/nullrod))
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
if(!IS_HERETIC(user) && !IS_HERETIC_MONSTER(user))
|
||||
if(iscarbon(user))
|
||||
devour(user)
|
||||
return
|
||||
|
||||
if(istype(I,/obj/item/forbidden_book))
|
||||
playsound(src, 'sound/misc/desecration-02.ogg', 75, TRUE)
|
||||
anchored = !anchored
|
||||
to_chat(user,"<span class='notice'>You [anchored == FALSE ? "unanchor" : "anchor"] the crucible</span>")
|
||||
return
|
||||
|
||||
if(istype(I,/obj/item/bodypart) || istype(I,/obj/item/organ))
|
||||
//Both organs and bodyparts hold information if they are organic or robotic in the exact same way.
|
||||
var/obj/item/bodypart/forced = I
|
||||
if(forced.status != BODYPART_ORGANIC)
|
||||
return
|
||||
|
||||
if(current_mass >= max_mass)
|
||||
to_chat(user,"<span class='notice'> Crucible is already full!</span>")
|
||||
return
|
||||
playsound(src, 'sound/items/eatfood.ogg', 100, TRUE)
|
||||
to_chat(user,"<span class='notice'>Crucible devours [I.name] and fills itself with a little bit of liquid!</span>")
|
||||
current_mass++
|
||||
qdel(I)
|
||||
update_icon_state()
|
||||
return
|
||||
|
||||
return ..()
|
||||
|
||||
/obj/structure/eldritch_crucible/attack_hand(mob/user)
|
||||
if(!IS_HERETIC(user) && !IS_HERETIC_MONSTER(user))
|
||||
if(iscarbon(user))
|
||||
devour(user)
|
||||
return
|
||||
|
||||
if(in_use)
|
||||
to_chat(user,"<span class='notice'>Crucible is already in use!</span>")
|
||||
return
|
||||
|
||||
if(current_mass < max_mass)
|
||||
to_chat(user,"<span class='notice'>Crucible isn't full! Bring it more organs or bodyparts!</span>")
|
||||
return
|
||||
|
||||
in_use = TRUE
|
||||
var/list/lst = list()
|
||||
for(var/X in subtypesof(/obj/item/eldritch_potion))
|
||||
var/obj/item/eldritch_potion/potion = X
|
||||
lst[initial(potion.name)] = potion
|
||||
var/type = lst[input(user,"Choose your brew","Brew") in lst]
|
||||
playsound(src, 'sound/misc/desecration-02.ogg', 75, TRUE)
|
||||
new type(drop_location())
|
||||
current_mass = 0
|
||||
in_use = FALSE
|
||||
update_icon_state()
|
||||
|
||||
///Proc that eats the active limb of the victim
|
||||
/obj/structure/eldritch_crucible/proc/devour(mob/living/carbon/user)
|
||||
if(HAS_TRAIT(user,TRAIT_NODISMEMBER))
|
||||
return
|
||||
playsound(src, 'sound/items/eatfood.ogg', 100, TRUE)
|
||||
to_chat(user,"<span class='danger'>Crucible grabs your arm and devours it whole!</span>")
|
||||
var/obj/item/bodypart/arm = user.get_active_hand()
|
||||
arm.dismember()
|
||||
qdel(arm)
|
||||
current_mass += current_mass < max_mass ? 1 : 0
|
||||
update_icon_state()
|
||||
|
||||
/obj/structure/eldritch_crucible/update_icon_state()
|
||||
. = ..()
|
||||
if(current_mass == max_mass)
|
||||
icon_state = "crucible"
|
||||
else
|
||||
icon_state = "crucible_empty"
|
||||
|
||||
/obj/structure/trap/eldritch
|
||||
name = "elder carving"
|
||||
desc = "Collection of unknown symbols, they remind you of days long gone..."
|
||||
icon = 'icons/obj/eldritch.dmi'
|
||||
charges = 1
|
||||
///Owner of the trap
|
||||
var/mob/owner
|
||||
|
||||
/obj/structure/trap/eldritch/Crossed(atom/movable/AM)
|
||||
if(!isliving(AM))
|
||||
return ..()
|
||||
var/mob/living/living_mob = AM
|
||||
if((owner && living_mob == owner) || IS_HERETIC(living_mob) || IS_HERETIC_MONSTER(living_mob))
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/structure/trap/eldritch/attacked_by(obj/item/I, mob/living/user)
|
||||
. = ..()
|
||||
if(istype(I,/obj/item/melee/rune_knife) || istype(I,/obj/item/nullrod))
|
||||
qdel(src)
|
||||
|
||||
///Proc that sets the owner
|
||||
/obj/structure/trap/eldritch/proc/set_owner(mob/_owner)
|
||||
owner = _owner
|
||||
|
||||
/obj/structure/trap/eldritch/alert
|
||||
name = "alert carving"
|
||||
icon_state = "alert_rune"
|
||||
alpha = 10
|
||||
|
||||
/obj/structure/trap/eldritch/alert/trap_effect(mob/living/L)
|
||||
if(owner)
|
||||
to_chat(owner,"<span class='big boldwarning'>[L.real_name] has stepped foot on the alert rune in [get_area(src)]!</span>")
|
||||
return ..()
|
||||
|
||||
//this trap can only get destroyed by rune carving knife or nullrod
|
||||
/obj/structure/trap/eldritch/alert/flare()
|
||||
return
|
||||
|
||||
/obj/structure/trap/eldritch/tentacle
|
||||
name = "grasping carving"
|
||||
icon_state = "tentacle_rune"
|
||||
|
||||
/obj/structure/trap/eldritch/tentacle/trap_effect(mob/living/L)
|
||||
if(!iscarbon(L))
|
||||
return
|
||||
var/mob/living/carbon/carbon_victim = L
|
||||
carbon_victim.Paralyze(5 SECONDS)
|
||||
carbon_victim.apply_damage(20,BRUTE,BODY_ZONE_R_LEG)
|
||||
carbon_victim.apply_damage(20,BRUTE,BODY_ZONE_L_LEG)
|
||||
playsound(src, 'sound/magic/demon_attack1.ogg', 75, TRUE)
|
||||
return ..()
|
||||
|
||||
/obj/structure/trap/eldritch/mad
|
||||
name = "mad carving"
|
||||
icon_state = "madness_rune"
|
||||
|
||||
/obj/structure/trap/eldritch/mad/trap_effect(mob/living/L)
|
||||
if(!iscarbon(L))
|
||||
return
|
||||
var/mob/living/carbon/carbon_victim = L
|
||||
carbon_victim.adjustStaminaLoss(80)
|
||||
carbon_victim.silent += 10
|
||||
carbon_victim.add_confusion(5)
|
||||
carbon_victim.Jitter(10)
|
||||
carbon_victim.Dizzy(20)
|
||||
carbon_victim.blind_eyes(2)
|
||||
SEND_SIGNAL(carbon_victim, COMSIG_ADD_MOOD_EVENT, "gates_of_mansus", /datum/mood_event/gates_of_mansus)
|
||||
return ..()
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "Nightwatcher's Secret"
|
||||
desc = "Opens up the Path of Ash to you. Allows you to transmute a match with a kitchen knife, or its derivatives, into an Ashen Blade."
|
||||
gain_text = "The City Guard know their watch. If you ask them at night, they may tell you about the ashy lantern."
|
||||
banned_knowledge = list(/datum/eldritch_knowledge/base_rust,/datum/eldritch_knowledge/base_flesh,/datum/eldritch_knowledge/final/rust_final,/datum/eldritch_knowledge/final/flesh_final)
|
||||
banned_knowledge = list(/datum/eldritch_knowledge/base_rust,/datum/eldritch_knowledge/base_flesh,/datum/eldritch_knowledge/final/rust_final,/datum/eldritch_knowledge/final/flesh_final,/datum/eldritch_knowledge/final/void_final,/datum/eldritch_knowledge/base_void)
|
||||
next_knowledge = list(/datum/eldritch_knowledge/ashen_grasp)
|
||||
required_atoms = list(/obj/item/kitchen/knife,/obj/item/match)
|
||||
result_atoms = list(/obj/item/melee/sickly_blade/ash)
|
||||
@@ -42,7 +42,7 @@
|
||||
if(!iscarbon(target))
|
||||
return
|
||||
var/mob/living/carbon/C = target
|
||||
var/datum/status_effect/eldritch/E = C.has_status_effect(/datum/status_effect/eldritch/rust) || C.has_status_effect(/datum/status_effect/eldritch/ash) || C.has_status_effect(/datum/status_effect/eldritch/flesh)
|
||||
var/datum/status_effect/eldritch/E = C.has_status_effect(/datum/status_effect/eldritch/rust) || C.has_status_effect(/datum/status_effect/eldritch/ash) || C.has_status_effect(/datum/status_effect/eldritch/flesh) || C.has_status_effect(/datum/status_effect/eldritch/void)
|
||||
if(E)
|
||||
E.on_effect()
|
||||
for(var/X in user.mind.spell_list)
|
||||
@@ -65,7 +65,7 @@
|
||||
gain_text = "The Nightwatcher was a very particular man, always watching in the dead of night. But in spite of his duty, he regularly tranced through the manse with his blazing lantern held high."
|
||||
desc = "Your Mansus Grasp now applies the Mark of Ash on hit. Attack the afflicted with your Sickly Blade to detonate the mark. Upon detonation, the Mark of Ash causes stamina damage and burn damage, and spreads to an additional nearby opponent. The damage decreases with each spread."
|
||||
cost = 2
|
||||
next_knowledge = list(/datum/eldritch_knowledge/curse/blindness)
|
||||
next_knowledge = list(/datum/eldritch_knowledge/mad_mask)
|
||||
banned_knowledge = list(/datum/eldritch_knowledge/rust_mark,/datum/eldritch_knowledge/flesh_mark)
|
||||
route = PATH_ASH
|
||||
|
||||
@@ -76,24 +76,16 @@
|
||||
var/mob/living/living_target = target
|
||||
living_target.apply_status_effect(/datum/status_effect/eldritch/ash,5)
|
||||
|
||||
/datum/eldritch_knowledge/curse/blindness
|
||||
name = "Curse of Blindness"
|
||||
/datum/eldritch_knowledge/mad_mask
|
||||
name = "Mask of Madness"
|
||||
gain_text = "He walks the world, unnoticed by the masses."
|
||||
desc = "Curse someone with 2 minutes of complete blindness by sacrificing a pair of eyes and a screwdriver with an object that the victim has touched with their bare hands."
|
||||
desc = "Allows you to transmute any mask, with a candle and a pair of eyes, to create a mask of madness, It causes passive stamina damage to everyone around the wearer and hallucinations, can be forced on a non believer to make him unable to take it off..."
|
||||
cost = 1
|
||||
required_atoms = list(/obj/item/organ/eyes,/obj/item/screwdriver)
|
||||
result_atoms = list(/obj/item/clothing/mask/void_mask)
|
||||
required_atoms = list(/obj/item/organ/eyes,/obj/item/clothing/mask,/obj/item/candle)
|
||||
next_knowledge = list(/datum/eldritch_knowledge/curse/corrosion,/datum/eldritch_knowledge/ash_blade_upgrade,/datum/eldritch_knowledge/curse/paralysis)
|
||||
timer = 2 MINUTES
|
||||
route = PATH_ASH
|
||||
|
||||
/datum/eldritch_knowledge/curse/blindness/curse(mob/living/chosen_mob)
|
||||
. = ..()
|
||||
chosen_mob.become_blind(MAGIC_TRAIT)
|
||||
|
||||
/datum/eldritch_knowledge/curse/blindness/uncurse(mob/living/chosen_mob)
|
||||
. = ..()
|
||||
chosen_mob.cure_blind(MAGIC_TRAIT)
|
||||
|
||||
/datum/eldritch_knowledge/spell/flame_birth
|
||||
name = "Flame Birth"
|
||||
gain_text = "The Nightwatcher was a man of principles, and yet his power arose from the chaos he vowed to combat."
|
||||
@@ -125,7 +117,7 @@
|
||||
desc = "Curse someone for 2 minutes of vomiting and major organ damage. Using a wirecutter, a pool of blood, a heart, left arm and a right arm, and an item that the victim touched with their bare hands."
|
||||
cost = 1
|
||||
required_atoms = list(/obj/item/wirecutters,/obj/effect/decal/cleanable/vomit,/obj/item/organ/heart)
|
||||
next_knowledge = list(/datum/eldritch_knowledge/curse/blindness,/datum/eldritch_knowledge/spell/area_conversion)
|
||||
next_knowledge = list(/datum/eldritch_knowledge/mad_mask,/datum/eldritch_knowledge/spell/area_conversion)
|
||||
timer = 2 MINUTES
|
||||
|
||||
/datum/eldritch_knowledge/curse/corrosion/curse(mob/living/chosen_mob)
|
||||
@@ -142,7 +134,7 @@
|
||||
desc = "Curse someone for 5 minutes of inability to walk. Sacrifice a knife, a pool of blood, a pair of legs, a hatchet and an item that the victim touched with their bare hands. "
|
||||
cost = 1
|
||||
required_atoms = list(/obj/item/bodypart/l_leg,/obj/item/bodypart/r_leg,/obj/item/hatchet)
|
||||
next_knowledge = list(/datum/eldritch_knowledge/curse/blindness,/datum/eldritch_knowledge/summon/raw_prophet)
|
||||
next_knowledge = list(/datum/eldritch_knowledge/mad_mask,/datum/eldritch_knowledge/summon/raw_prophet)
|
||||
timer = 5 MINUTES
|
||||
|
||||
/datum/eldritch_knowledge/curse/paralysis/curse(mob/living/chosen_mob)
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "Principle of Hunger"
|
||||
desc = "Opens up the Path of Flesh to you. Allows you to transmute a pool of blood with a kitchen knife, or its derivatives, into a Flesh Blade."
|
||||
gain_text = "Hundreds of us starved, but not me... I found strength in my greed."
|
||||
banned_knowledge = list(/datum/eldritch_knowledge/base_ash,/datum/eldritch_knowledge/base_rust,/datum/eldritch_knowledge/final/ash_final,/datum/eldritch_knowledge/final/rust_final)
|
||||
banned_knowledge = list(/datum/eldritch_knowledge/base_ash,/datum/eldritch_knowledge/base_rust,/datum/eldritch_knowledge/final/ash_final,/datum/eldritch_knowledge/final/rust_final,/datum/eldritch_knowledge/final/void_final,/datum/eldritch_knowledge/base_void)
|
||||
next_knowledge = list(/datum/eldritch_knowledge/flesh_grasp)
|
||||
required_atoms = list(/obj/item/kitchen/knife,/obj/effect/decal/cleanable/blood)
|
||||
result_atoms = list(/obj/item/melee/sickly_blade/flesh)
|
||||
@@ -15,7 +15,7 @@
|
||||
gain_text = "I found notes of a dark ritual, unfinished... yet still, I pushed forward."
|
||||
cost = 1
|
||||
required_atoms = list(/mob/living/carbon/human,/obj/item/reagent_containers/food/snacks/grown/poppy)
|
||||
next_knowledge = list(/datum/eldritch_knowledge/flesh_mark,/datum/eldritch_knowledge/armor,/datum/eldritch_knowledge/ashen_eyes)
|
||||
next_knowledge = list(/datum/eldritch_knowledge/flesh_mark,/datum/eldritch_knowledge/void_cloak,/datum/eldritch_knowledge/ashen_eyes)
|
||||
route = PATH_FLESH
|
||||
var/max_amt = 2
|
||||
var/current_amt = 0
|
||||
@@ -118,7 +118,7 @@
|
||||
if(!ishuman(target))
|
||||
return
|
||||
var/mob/living/carbon/human/human_target = target
|
||||
var/datum/status_effect/eldritch/eldritch_effect = human_target.has_status_effect(/datum/status_effect/eldritch/rust) || human_target.has_status_effect(/datum/status_effect/eldritch/ash) || human_target.has_status_effect(/datum/status_effect/eldritch/flesh)
|
||||
var/datum/status_effect/eldritch/eldritch_effect = human_target.has_status_effect(/datum/status_effect/eldritch/rust) || human_target.has_status_effect(/datum/status_effect/eldritch/ash) || human_target.has_status_effect(/datum/status_effect/eldritch/flesh) || human_target.has_status_effect(/datum/status_effect/eldritch/void)
|
||||
if(eldritch_effect)
|
||||
eldritch_effect.on_effect()
|
||||
if(iscarbon(target))
|
||||
@@ -173,7 +173,7 @@
|
||||
cost = 1
|
||||
required_atoms = list(/obj/item/organ/eyes,/obj/effect/decal/cleanable/blood,/obj/item/bodypart/l_arm)
|
||||
mob_to_summon = /mob/living/simple_animal/hostile/eldritch/raw_prophet
|
||||
next_knowledge = list(/datum/eldritch_knowledge/flesh_blade_upgrade,/datum/eldritch_knowledge/spell/blood_siphon,/datum/eldritch_knowledge/curse/paralysis)
|
||||
next_knowledge = list(/datum/eldritch_knowledge/flesh_blade_upgrade,/datum/eldritch_knowledge/rune_carver,/datum/eldritch_knowledge/curse/paralysis)
|
||||
route = PATH_FLESH
|
||||
|
||||
/datum/eldritch_knowledge/summon/stalker
|
||||
@@ -202,7 +202,7 @@
|
||||
cost = 1
|
||||
required_atoms = list(/obj/effect/decal/cleanable/vomit,/obj/item/book,/obj/item/bodypart/head)
|
||||
mob_to_summon = /mob/living/simple_animal/hostile/eldritch/rust_spirit
|
||||
next_knowledge = list(/datum/eldritch_knowledge/summon/stalker,/datum/eldritch_knowledge/spell/entropic_plume)
|
||||
next_knowledge = list(/datum/eldritch_knowledge/spell/voidpull,/datum/eldritch_knowledge/spell/entropic_plume)
|
||||
|
||||
/datum/eldritch_knowledge/spell/blood_siphon
|
||||
name = "Blood Siphon"
|
||||
@@ -210,7 +210,7 @@
|
||||
desc = "You gain a spell that drains health from your enemies to restores your own."
|
||||
cost = 1
|
||||
spell_to_add = /obj/effect/proc_holder/spell/pointed/blood_siphon
|
||||
next_knowledge = list(/datum/eldritch_knowledge/summon/raw_prophet,/datum/eldritch_knowledge/spell/area_conversion)
|
||||
next_knowledge = list(/datum/eldritch_knowledge/summon/stalker,/datum/eldritch_knowledge/spell/voidpull)
|
||||
|
||||
/datum/eldritch_knowledge/final/flesh_final
|
||||
name = "Priest's Final Hymn"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "Blacksmith's Tale"
|
||||
desc = "Opens up the Path of Rust to you. Allows you to transmute a kitchen knife, or its derivatives, with any trash item into a Rusty Blade."
|
||||
gain_text = "'Let me tell you a story', said the Blacksmith, as he gazed deep into his rusty blade."
|
||||
banned_knowledge = list(/datum/eldritch_knowledge/base_ash,/datum/eldritch_knowledge/base_flesh,/datum/eldritch_knowledge/final/ash_final,/datum/eldritch_knowledge/final/flesh_final)
|
||||
banned_knowledge = list(/datum/eldritch_knowledge/base_ash,/datum/eldritch_knowledge/base_flesh,/datum/eldritch_knowledge/final/ash_final,/datum/eldritch_knowledge/final/flesh_final,/datum/eldritch_knowledge/final/void_final,/datum/eldritch_knowledge/base_void)
|
||||
next_knowledge = list(/datum/eldritch_knowledge/rust_fist)
|
||||
required_atoms = list(/obj/item/kitchen/knife,/obj/item/trash)
|
||||
result_atoms = list(/obj/item/melee/sickly_blade/rust)
|
||||
@@ -28,7 +28,7 @@
|
||||
. = ..()
|
||||
if(ishuman(target))
|
||||
var/mob/living/carbon/human/H = target
|
||||
var/datum/status_effect/eldritch/E = H.has_status_effect(/datum/status_effect/eldritch/rust) || H.has_status_effect(/datum/status_effect/eldritch/ash) || H.has_status_effect(/datum/status_effect/eldritch/flesh)
|
||||
var/datum/status_effect/eldritch/E = H.has_status_effect(/datum/status_effect/eldritch/rust) || H.has_status_effect(/datum/status_effect/eldritch/ash) || H.has_status_effect(/datum/status_effect/eldritch/flesh) || H.has_status_effect(/datum/status_effect/eldritch/void)
|
||||
if(E)
|
||||
E.on_effect()
|
||||
H.adjustOrganLoss(pick(ORGAN_SLOT_BRAIN,ORGAN_SLOT_EARS,ORGAN_SLOT_EYES,ORGAN_SLOT_LIVER,ORGAN_SLOT_LUNGS,ORGAN_SLOT_STOMACH,ORGAN_SLOT_HEART),25)
|
||||
@@ -39,7 +39,7 @@
|
||||
gain_text = "All wise men know well not to touch the Bound King."
|
||||
cost = 1
|
||||
spell_to_add = /obj/effect/proc_holder/spell/aoe_turf/rust_conversion
|
||||
next_knowledge = list(/datum/eldritch_knowledge/rust_blade_upgrade,/datum/eldritch_knowledge/curse/corrosion,/datum/eldritch_knowledge/spell/blood_siphon)
|
||||
next_knowledge = list(/datum/eldritch_knowledge/rust_blade_upgrade,/datum/eldritch_knowledge/curse/corrosion,/datum/eldritch_knowledge/crucible)
|
||||
route = PATH_RUST
|
||||
|
||||
/datum/eldritch_knowledge/rust_regen
|
||||
@@ -108,17 +108,17 @@
|
||||
desc = "You can now create Eldritch Armor using a table and a gas mask."
|
||||
gain_text = "The Rusted Hills welcomed the Blacksmith in their generosity."
|
||||
cost = 1
|
||||
next_knowledge = list(/datum/eldritch_knowledge/rust_regen,/datum/eldritch_knowledge/flesh_ghoul)
|
||||
next_knowledge = list(/datum/eldritch_knowledge/rust_regen,/datum/eldritch_knowledge/cold_snap)
|
||||
required_atoms = list(/obj/structure/table,/obj/item/clothing/mask/gas)
|
||||
result_atoms = list(/obj/item/clothing/suit/hooded/cultrobes/eldritch)
|
||||
|
||||
/datum/eldritch_knowledge/essence
|
||||
name = "Priest's Ritual"
|
||||
desc = "You can now transmute a tank of water into a bottle of eldritch water."
|
||||
desc = "You can now transmute a tank of water and a glass shard into a bottle of eldritch water."
|
||||
gain_text = "This is an old recipe. The Owl whispered it to me."
|
||||
cost = 1
|
||||
next_knowledge = list(/datum/eldritch_knowledge/rust_regen,/datum/eldritch_knowledge/spell/ashen_shift)
|
||||
required_atoms = list(/obj/structure/reagent_dispensers/watertank)
|
||||
required_atoms = list(/obj/structure/reagent_dispensers/watertank,/obj/item/shard)
|
||||
result_atoms = list(/obj/item/reagent_containers/glass/beaker/eldritch)
|
||||
|
||||
/datum/eldritch_knowledge/final/rust_final
|
||||
|
||||
@@ -0,0 +1,203 @@
|
||||
/datum/eldritch_knowledge/base_void
|
||||
name = "Glimmer of Winter"
|
||||
desc = "Opens up the path of void to you. Allows you to transmute a knife in a sub-zero temperature into a void blade."
|
||||
gain_text = "I feel a shimmer in the air, atmosphere around me gets colder. I feel my body realizing the emptiness of existance. Something's watching me"
|
||||
banned_knowledge = list(/datum/eldritch_knowledge/base_ash,/datum/eldritch_knowledge/base_flesh,/datum/eldritch_knowledge/final/ash_final,/datum/eldritch_knowledge/final/flesh_final,/datum/eldritch_knowledge/base_rust,/datum/eldritch_knowledge/final/rust_final)
|
||||
next_knowledge = list(/datum/eldritch_knowledge/void_grasp)
|
||||
required_atoms = list(/obj/item/kitchen/knife)
|
||||
result_atoms = list(/obj/item/melee/sickly_blade/void)
|
||||
cost = 1
|
||||
route = PATH_VOID
|
||||
|
||||
/datum/eldritch_knowledge/base_void/recipe_snowflake_check(list/atoms, loc)
|
||||
. = ..()
|
||||
var/turf/open/turfie = loc
|
||||
if(turfie.GetTemperature() > T0C)
|
||||
return FALSE
|
||||
|
||||
/datum/eldritch_knowledge/void_grasp
|
||||
name = "Grasp of Void"
|
||||
desc = "Temporarily mutes your victim, also lowers their body temperature."
|
||||
gain_text = "I found the cold watcher who observes me. The resonance of cold grows within me. This isn't the end of the mystery."
|
||||
cost = 1
|
||||
route = PATH_VOID
|
||||
next_knowledge = list(/datum/eldritch_knowledge/cold_snap)
|
||||
|
||||
/datum/eldritch_knowledge/void_grasp/on_mansus_grasp(atom/target, mob/user, proximity_flag, click_parameters)
|
||||
. = ..()
|
||||
if(!iscarbon(target))
|
||||
return
|
||||
var/mob/living/carbon/carbon_target = target
|
||||
var/turf/open/turfie = get_turf(carbon_target)
|
||||
turfie.TakeTemperature(-20)
|
||||
carbon_target.adjust_bodytemperature(-40)
|
||||
carbon_target.silent += 4
|
||||
return TRUE
|
||||
|
||||
/datum/eldritch_knowledge/void_grasp/on_eldritch_blade(atom/target, mob/user, proximity_flag, click_parameters)
|
||||
. = ..()
|
||||
if(!ishuman(target))
|
||||
return
|
||||
var/mob/living/carbon/human/H = target
|
||||
var/datum/status_effect/eldritch/E = H.has_status_effect(/datum/status_effect/eldritch/rust) || H.has_status_effect(/datum/status_effect/eldritch/ash) || H.has_status_effect(/datum/status_effect/eldritch/flesh) || H.has_status_effect(/datum/status_effect/eldritch/void)
|
||||
if(!E)
|
||||
return
|
||||
E.on_effect()
|
||||
H.silent += 3
|
||||
|
||||
/datum/eldritch_knowledge/cold_snap
|
||||
name = "Aristocrat's Way"
|
||||
desc = "Makes you immune to cold temperatures, you can still take damage from lack of pressure."
|
||||
gain_text = "I found a thread of cold breath. It lead me to a strange shrine, all made of crystals. Translucent and white, a depiction of a nobleman stood before me."
|
||||
cost = 1
|
||||
route = PATH_VOID
|
||||
next_knowledge = list(/datum/eldritch_knowledge/void_cloak,/datum/eldritch_knowledge/void_mark,/datum/eldritch_knowledge/armor)
|
||||
|
||||
/datum/eldritch_knowledge/cold_snap/on_gain(mob/user)
|
||||
. = ..()
|
||||
ADD_TRAIT(user,TRAIT_RESISTCOLD,MAGIC_TRAIT)
|
||||
|
||||
/datum/eldritch_knowledge/cold_snap/on_lose(mob/user)
|
||||
. = ..()
|
||||
REMOVE_TRAIT(user,TRAIT_RESISTCOLD,MAGIC_TRAIT)
|
||||
|
||||
/datum/eldritch_knowledge/void_cloak
|
||||
name = "Void Cloak"
|
||||
desc = "A cloak that can become invisbile at will, hiding items you store in it. To create it transmute a glass shard, any item of clothing that you can fit over your uniform and any type of bedsheet."
|
||||
gain_text = "Owl is the keeper of things that quite not are in practice, but in theory are."
|
||||
cost = 1
|
||||
next_knowledge = list(/datum/eldritch_knowledge/flesh_ghoul,/datum/eldritch_knowledge/cold_snap)
|
||||
result_atoms = list(/obj/item/clothing/suit/hooded/cultrobes/void)
|
||||
required_atoms = list(/obj/item/shard,/obj/item/clothing/suit,/obj/item/bedsheet)
|
||||
|
||||
/datum/eldritch_knowledge/void_mark
|
||||
name = "Mark of Void"
|
||||
gain_text = "A gust of wind? Maybe a shimmer in the air. Presence is overwhelming, my senses betrayed me, my mind is my enemy."
|
||||
desc = "Your mansus grasp now applies mark of void status effect. To proc the mark, use your sickly blade on the marked. Mark of void when procced lowers the victims body temperature significantly."
|
||||
cost = 2
|
||||
next_knowledge = list(/datum/eldritch_knowledge/spell/void_phase)
|
||||
banned_knowledge = list(/datum/eldritch_knowledge/rust_mark,/datum/eldritch_knowledge/ash_mark,/datum/eldritch_knowledge/flesh_mark)
|
||||
route = PATH_VOID
|
||||
|
||||
/datum/eldritch_knowledge/void_mark/on_mansus_grasp(atom/target, mob/user, proximity_flag, click_parameters)
|
||||
. = ..()
|
||||
if(!isliving(target))
|
||||
return
|
||||
. = TRUE
|
||||
var/mob/living/living_target = target
|
||||
living_target.apply_status_effect(/datum/status_effect/eldritch/void)
|
||||
|
||||
/datum/eldritch_knowledge/spell/void_phase
|
||||
name = "Void Phase"
|
||||
gain_text = "Reality bends under the power of memory, for all is fleeting, and what else stays?"
|
||||
desc = "You gain a long range pointed blink that allows you to instantly teleport to your location, it causes aoe damage around you and your chosen location."
|
||||
cost = 1
|
||||
spell_to_add = /obj/effect/proc_holder/spell/pointed/void_blink
|
||||
next_knowledge = list(/datum/eldritch_knowledge/rune_carver,/datum/eldritch_knowledge/crucible,/datum/eldritch_knowledge/void_blade_upgrade)
|
||||
route = PATH_VOID
|
||||
|
||||
/datum/eldritch_knowledge/rune_carver
|
||||
name = "Carving Knife"
|
||||
gain_text = "Etched, carved... eternal. I can carve the monolith and evoke their powers!"
|
||||
desc = "You can create a carving knife, which allows you to create up to 3 carvings on the floor that have various effects on nonbelievers who walk over them, to create the carving knife transmute a knife with a glass shard and a piece of paper."
|
||||
cost = 1
|
||||
next_knowledge = list(/datum/eldritch_knowledge/spell/void_phase,/datum/eldritch_knowledge/summon/raw_prophet)
|
||||
required_atoms = list(/obj/item/kitchen/knife,/obj/item/shard,/obj/item/paper)
|
||||
result_atoms = list(/obj/item/melee/rune_knife)
|
||||
|
||||
/datum/eldritch_knowledge/crucible
|
||||
name = "Mawed Crucible"
|
||||
gain_text = "This is pure agony, i wasn't able to summon the dereliction of the emperor, but i stumbled upon a diffrent recipe..."
|
||||
desc = "Allows you to create a mawed crucible, eldritch structure that allows you to create potions of various effects, to do so transmute a table with a watertank"
|
||||
cost = 1
|
||||
next_knowledge = list(/datum/eldritch_knowledge/spell/void_phase,/datum/eldritch_knowledge/spell/area_conversion)
|
||||
required_atoms = list(/obj/structure/reagent_dispensers/watertank,/obj/structure/table)
|
||||
result_atoms = list(/obj/structure/eldritch_crucible)
|
||||
|
||||
/datum/eldritch_knowledge/void_blade_upgrade
|
||||
name = "Seeking blade"
|
||||
gain_text = "Fleeting memories, fleeting feet. I can mark my way with the frozen blood upon the snow. Covered and forgotten."
|
||||
desc = "You can now use your blade on a distant marked target to move to them and attack them."
|
||||
cost = 2
|
||||
next_knowledge = list(/datum/eldritch_knowledge/spell/voidpull)
|
||||
banned_knowledge = list(/datum/eldritch_knowledge/ash_blade_upgrade,/datum/eldritch_knowledge/flesh_blade_upgrade,/datum/eldritch_knowledge/rust_blade_upgrade)
|
||||
route = PATH_VOID
|
||||
|
||||
/datum/eldritch_knowledge/void_blade_upgrade/on_ranged_attack_eldritch_blade(atom/target, mob/user, click_parameters)
|
||||
. = ..()
|
||||
if(!ishuman(target) || !iscarbon(user))
|
||||
return
|
||||
var/mob/living/carbon/carbon_human = user
|
||||
var/mob/living/carbon/human/human_target = target
|
||||
var/datum/status_effect/eldritch/effect = human_target.has_status_effect(/datum/status_effect/eldritch/rust) || human_target.has_status_effect(/datum/status_effect/eldritch/ash) || human_target.has_status_effect(/datum/status_effect/eldritch/flesh) || human_target.has_status_effect(/datum/status_effect/eldritch/void)
|
||||
if(!effect)
|
||||
return
|
||||
var/dir = angle2dir(dir2angle(get_dir(user,human_target))+180)
|
||||
carbon_human.forceMove(get_step(human_target,dir))
|
||||
var/obj/item/melee/sickly_blade/blade = carbon_human.get_active_held_item()
|
||||
blade.melee_attack_chain(carbon_human,human_target)
|
||||
|
||||
/datum/eldritch_knowledge/spell/voidpull
|
||||
name = "Void Pull"
|
||||
gain_text = "This entity calls itself the aristocrat, I'm close to ending what was started."
|
||||
desc = "You gain an ability that let's you pull people around you closer to you."
|
||||
cost = 1
|
||||
spell_to_add = /obj/effect/proc_holder/spell/targeted/void_pull
|
||||
next_knowledge = list(/datum/eldritch_knowledge/final/void_final,/datum/eldritch_knowledge/spell/blood_siphon,/datum/eldritch_knowledge/summon/rusty)
|
||||
route = PATH_VOID
|
||||
|
||||
/datum/eldritch_knowledge/final/void_final
|
||||
name = "Waltz at the End of Time"
|
||||
desc = "Bring 3 corpses onto the transmutation rune. After you finish the ritual you will automatically silence people around you and will summon a snow storm around you."
|
||||
gain_text = "The world falls into darkness. I stand in an empty plane, small flakes of ice fall from the sky. Aristocrat stand before me, he motions to me. We will play a waltz to the whispers of dying reality, as the world is destroyed before our eyes."
|
||||
cost = 3
|
||||
required_atoms = list(/mob/living/carbon/human)
|
||||
route = PATH_VOID
|
||||
///soundloop for the void theme
|
||||
var/datum/looping_sound/void_loop/sound_loop
|
||||
///Reference to the ongoing voidstrom that surrounds the heretic
|
||||
var/datum/weather/void_storm/storm
|
||||
|
||||
/datum/eldritch_knowledge/final/void_final/on_finished_recipe(mob/living/user, list/atoms, loc)
|
||||
var/mob/living/carbon/human/H = user
|
||||
H.physiology.brute_mod *= 0.5
|
||||
H.physiology.burn_mod *= 0.5
|
||||
H.client?.give_award(/datum/award/achievement/misc/void_ascension, H)
|
||||
priority_announce("$^@&#*$^@(#&$(@&#^$&#^@# The nobleman of void [H.real_name] has arrived, step along the Waltz that ends worlds! $^@&#*$^@(#&$(@&#^$&#^@#","#$^@&#*$^@(#&$(@&#^$&#^@#", 'sound/ai/spanomalies.ogg')
|
||||
|
||||
sound_loop = new(list(user),TRUE,TRUE)
|
||||
return ..()
|
||||
|
||||
/datum/eldritch_knowledge/final/void_final/on_death()
|
||||
if(sound_loop)
|
||||
sound_loop.stop()
|
||||
if(storm)
|
||||
storm.wind_down()
|
||||
|
||||
/datum/eldritch_knowledge/final/void_final/on_life(mob/user)
|
||||
. = ..()
|
||||
if(!finished)
|
||||
return
|
||||
|
||||
for(var/mob/living/carbon/livies in spiral_range(7,user)-user)
|
||||
if(IS_HERETIC_MONSTER(livies) || IS_HERETIC(livies))
|
||||
return
|
||||
livies.silent += 1
|
||||
livies.adjust_bodytemperature(-20)
|
||||
|
||||
var/turf/turfie = get_turf(user)
|
||||
if(!isopenturf(turfie))
|
||||
return
|
||||
var/turf/open/open_turfie = turfie
|
||||
open_turfie.TakeTemperature(-20)
|
||||
|
||||
var/area/user_area = get_area(user)
|
||||
var/turf/user_turf = get_turf(user)
|
||||
|
||||
if(!storm)
|
||||
storm = new /datum/weather/void_storm(list(user_turf.z))
|
||||
storm.telegraph()
|
||||
|
||||
storm.area_type = user_area.type
|
||||
storm.impacted_areas = list(user_area)
|
||||
storm.update_areas()
|
||||
@@ -249,6 +249,7 @@
|
||||
"ashascend" = 'icons/UI_Icons/Achievements/Misc/ashascend.png',
|
||||
"fleshascend" = 'icons/UI_Icons/Achievements/Misc/fleshascend.png',
|
||||
"rustascend" = 'icons/UI_Icons/Achievements/Misc/rustascend.png',
|
||||
"voidascend" = 'icons/UI_Icons/Achievements/Misc/voidascend.png',
|
||||
"mining" = 'icons/UI_Icons/Achievements/Skills/mining.png',
|
||||
"assistant" = 'icons/UI_Icons/Achievements/Mafia/assistant.png',
|
||||
"changeling" = 'icons/UI_Icons/Achievements/Mafia/changeling.png',
|
||||
|
||||
@@ -4,10 +4,13 @@
|
||||
actions_types = list(/datum/action/item_action/toggle_hood)
|
||||
var/obj/item/clothing/head/hooded/hood
|
||||
var/hoodtype = /obj/item/clothing/head/hooded/winterhood //so the chaplain hoodie or other hoodies can override this
|
||||
///Alternative mode for hiding the hood, instead of storing the hood in the suit it qdels it, useful for when you deal with hooded suit with storage.
|
||||
var/alternative_mode = FALSE
|
||||
|
||||
/obj/item/clothing/suit/hooded/Initialize()
|
||||
. = ..()
|
||||
MakeHood()
|
||||
if(!alternative_mode)
|
||||
MakeHood()
|
||||
|
||||
/obj/item/clothing/suit/hooded/Destroy()
|
||||
. = ..()
|
||||
@@ -35,12 +38,18 @@
|
||||
/obj/item/clothing/suit/hooded/proc/RemoveHood()
|
||||
src.icon_state = "[initial(icon_state)]"
|
||||
suittoggled = FALSE
|
||||
if(ishuman(hood.loc))
|
||||
var/mob/living/carbon/H = hood.loc
|
||||
H.transferItemToLoc(hood, src, TRUE)
|
||||
H.update_inv_wear_suit()
|
||||
else
|
||||
hood.forceMove(src)
|
||||
|
||||
if(hood)
|
||||
if(ishuman(hood.loc))
|
||||
var/mob/living/carbon/human/H = hood.loc
|
||||
H.transferItemToLoc(hood, src, TRUE)
|
||||
H.update_inv_wear_suit()
|
||||
else
|
||||
hood.forceMove(src)
|
||||
|
||||
if(alternative_mode)
|
||||
QDEL_NULL(hood)
|
||||
|
||||
for(var/X in actions)
|
||||
var/datum/action/A = X
|
||||
A.UpdateButtonIcon()
|
||||
@@ -51,21 +60,28 @@
|
||||
|
||||
/obj/item/clothing/suit/hooded/proc/ToggleHood()
|
||||
if(!suittoggled)
|
||||
if(ishuman(src.loc))
|
||||
var/mob/living/carbon/human/H = src.loc
|
||||
if(H.wear_suit != src)
|
||||
to_chat(H, "<span class='warning'>You must be wearing [src] to put up the hood!</span>")
|
||||
if(!ishuman(loc))
|
||||
return
|
||||
var/mob/living/carbon/human/H = loc
|
||||
if(H.wear_suit != src)
|
||||
to_chat(H, "<span class='warning'>You must be wearing [src] to put up the hood!</span>")
|
||||
return
|
||||
if(H.head)
|
||||
to_chat(H, "<span class='warning'>You're already wearing something on your head!</span>")
|
||||
return
|
||||
else
|
||||
if(alternative_mode)
|
||||
MakeHood()
|
||||
if(!H.equip_to_slot_if_possible(hood,ITEM_SLOT_HEAD,0,0,1))
|
||||
if(alternative_mode)
|
||||
RemoveHood()
|
||||
return
|
||||
if(H.head)
|
||||
to_chat(H, "<span class='warning'>You're already wearing something on your head!</span>")
|
||||
return
|
||||
else if(H.equip_to_slot_if_possible(hood,ITEM_SLOT_HEAD,0,0,1))
|
||||
suittoggled = TRUE
|
||||
src.icon_state = "[initial(icon_state)]_t"
|
||||
H.update_inv_wear_suit()
|
||||
for(var/X in actions)
|
||||
var/datum/action/A = X
|
||||
A.UpdateButtonIcon()
|
||||
suittoggled = TRUE
|
||||
icon_state = "[initial(icon_state)]_t"
|
||||
H.update_inv_wear_suit()
|
||||
for(var/X in actions)
|
||||
var/datum/action/A = X
|
||||
A.UpdateButtonIcon()
|
||||
else
|
||||
RemoveHood()
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
. += "You can't make out what species they are."
|
||||
//SKYRAT EDIT CHANGE END
|
||||
//uniform
|
||||
if(w_uniform && !(obscured & ITEM_SLOT_ICLOTHING))
|
||||
if(w_uniform && !(obscured & ITEM_SLOT_ICLOTHING) && !(w_uniform.item_flags & EXAMINE_SKIP))
|
||||
//accessory
|
||||
var/accessory_msg
|
||||
if(istype(w_uniform, /obj/item/clothing/under))
|
||||
@@ -48,26 +48,26 @@
|
||||
|
||||
. += "[t_He] [t_is] wearing [w_uniform.get_examine_string(user)][accessory_msg]."
|
||||
//head
|
||||
if(head && !(obscured & ITEM_SLOT_HEAD))
|
||||
if(head && !(obscured & ITEM_SLOT_HEAD) && !(head.item_flags & EXAMINE_SKIP))
|
||||
. += "[t_He] [t_is] wearing [head.get_examine_string(user)] on [t_his] head."
|
||||
//suit/armor
|
||||
if(wear_suit)
|
||||
if(wear_suit && !(wear_suit.item_flags & EXAMINE_SKIP))
|
||||
. += "[t_He] [t_is] wearing [wear_suit.get_examine_string(user)]."
|
||||
//suit/armor storage
|
||||
if(s_store && !(obscured & ITEM_SLOT_SUITSTORE))
|
||||
if(s_store && !(obscured & ITEM_SLOT_SUITSTORE) && !(s_store.item_flags & EXAMINE_SKIP))
|
||||
. += "[t_He] [t_is] carrying [s_store.get_examine_string(user)] on [t_his] [wear_suit.name]."
|
||||
//back
|
||||
if(back)
|
||||
if(back && !(back.item_flags & EXAMINE_SKIP))
|
||||
. += "[t_He] [t_has] [back.get_examine_string(user)] on [t_his] back."
|
||||
|
||||
//Hands
|
||||
for(var/obj/item/I in held_items)
|
||||
if(!(I.item_flags & ABSTRACT))
|
||||
if(!(I.item_flags & ABSTRACT) && !(I.item_flags & EXAMINE_SKIP))
|
||||
. += "[t_He] [t_is] holding [I.get_examine_string(user)] in [t_his] [get_held_index_name(get_held_index_of_item(I))]."
|
||||
|
||||
var/datum/component/forensics/FR = GetComponent(/datum/component/forensics)
|
||||
//gloves
|
||||
if(gloves && !(obscured & ITEM_SLOT_GLOVES))
|
||||
if(gloves && !(obscured & ITEM_SLOT_GLOVES) && !(gloves.item_flags & EXAMINE_SKIP))
|
||||
. += "[t_He] [t_has] [gloves.get_examine_string(user)] on [t_his] hands."
|
||||
else if(FR && length(FR.blood_DNA))
|
||||
if(num_hands)
|
||||
@@ -83,33 +83,33 @@
|
||||
. += "<span class='warning'>[t_He] [t_is] [icon2html(handcuffed, user)] handcuffed!</span>"
|
||||
|
||||
//belt
|
||||
if(belt)
|
||||
if(belt && !(belt.item_flags & EXAMINE_SKIP))
|
||||
. += "[t_He] [t_has] [belt.get_examine_string(user)] about [t_his] waist."
|
||||
|
||||
//shoes
|
||||
if(shoes && !(obscured & ITEM_SLOT_FEET))
|
||||
if(shoes && !(obscured & ITEM_SLOT_FEET) && !(shoes.item_flags & EXAMINE_SKIP))
|
||||
. += "[t_He] [t_is] wearing [shoes.get_examine_string(user)] on [t_his] feet."
|
||||
|
||||
//mask
|
||||
if(wear_mask && !(obscured & ITEM_SLOT_MASK))
|
||||
if(wear_mask && !(obscured & ITEM_SLOT_MASK) && !(wear_mask.item_flags & EXAMINE_SKIP))
|
||||
. += "[t_He] [t_has] [wear_mask.get_examine_string(user)] on [t_his] face."
|
||||
|
||||
if(wear_neck && !(obscured & ITEM_SLOT_NECK))
|
||||
if(wear_neck && !(obscured & ITEM_SLOT_NECK) && !(wear_neck.item_flags & EXAMINE_SKIP))
|
||||
. += "[t_He] [t_is] wearing [wear_neck.get_examine_string(user)] around [t_his] neck."
|
||||
|
||||
//eyes
|
||||
if(!(obscured & ITEM_SLOT_EYES))
|
||||
if(glasses)
|
||||
if(!(obscured & ITEM_SLOT_EYES) )
|
||||
if(glasses && !(glasses.item_flags & EXAMINE_SKIP))
|
||||
. += "[t_He] [t_has] [glasses.get_examine_string(user)] covering [t_his] eyes."
|
||||
else if(eye_color == BLOODCULT_EYE && iscultist(src) && HAS_TRAIT(src, CULT_EYES))
|
||||
. += "<span class='warning'><B>[t_His] eyes are glowing an unnatural red!</B></span>"
|
||||
|
||||
//ears
|
||||
if(ears && !(obscured & ITEM_SLOT_EARS))
|
||||
if(ears && !(obscured & ITEM_SLOT_EARS) && !(ears.item_flags & EXAMINE_SKIP))
|
||||
. += "[t_He] [t_has] [ears.get_examine_string(user)] on [t_his] ears."
|
||||
|
||||
//ID
|
||||
if(wear_id)
|
||||
if(wear_id && !(wear_id.item_flags & EXAMINE_SKIP))
|
||||
. += "[t_He] [t_is] wearing [wear_id.get_examine_string(user)]."
|
||||
|
||||
//Status effects
|
||||
|
||||
Reference in New Issue
Block a user