[MIRROR] Gargoyle adjustments & fixes (#11123)

Co-authored-by: Cameron Lennox <killer65311@gmail.com>
Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
This commit is contained in:
CHOMPStation2StaffMirrorBot
2025-06-28 19:17:55 -07:00
committed by GitHub
parent 3693f3ab8c
commit df62120096
5 changed files with 117 additions and 104 deletions

View File

@@ -2,7 +2,6 @@
var/energy = 100 var/energy = 100
var/transformed = FALSE var/transformed = FALSE
var/paused = FALSE var/paused = FALSE
var/paused_loc
var/cooldown var/cooldown
var/mob/living/carbon/human/gargoyle //easy reference var/mob/living/carbon/human/gargoyle //easy reference
@@ -18,54 +17,61 @@
if (!ishuman(parent)) if (!ishuman(parent))
return COMPONENT_INCOMPATIBLE return COMPONENT_INCOMPATIBLE
gargoyle = parent gargoyle = parent
add_verb(gargoyle,/mob/living/carbon/human/proc/gargoyle_transformation) add_verb(parent,/mob/living/carbon/human/proc/gargoyle_transformation)
add_verb(gargoyle,/mob/living/carbon/human/proc/gargoyle_pause) add_verb(parent,/mob/living/carbon/human/proc/gargoyle_pause)
add_verb(gargoyle,/mob/living/carbon/human/proc/gargoyle_checkenergy) add_verb(parent,/mob/living/carbon/human/proc/gargoyle_checkenergy)
RegisterSignal(gargoyle, COMSIG_GARGOYLE_TRANSFORMATION, PROC_REF(gargoyle_transformation))
RegisterSignal(gargoyle, COMSIG_GARGOYLE_PAUSE, PROC_REF(gargoyle_pause))
RegisterSignal(gargoyle, COMSIG_GARGOYLE_CHECK_ENERGY, PROC_REF(gargoyle_checkenergy))
RegisterSignal(gargoyle, COMSIG_LIVING_LIFE, PROC_REF(process_component)) /datum/component/gargoyle/RegisterWithParent()
RegisterSignal(parent, COMSIG_GARGOYLE_TRANSFORMATION, PROC_REF(gargoyle_transformation))
RegisterSignal(parent, COMSIG_GARGOYLE_PAUSE, PROC_REF(gargoyle_pause))
RegisterSignal(parent, COMSIG_GARGOYLE_CHECK_ENERGY, PROC_REF(gargoyle_checkenergy))
RegisterSignal(parent, COMSIG_LIVING_LIFE, PROC_REF(process_component))
/datum/component/gargoyle/UnregisterFromParent()
UnregisterSignal(parent, COMSIG_GARGOYLE_TRANSFORMATION)
UnregisterSignal(parent, COMSIG_GARGOYLE_PAUSE)
UnregisterSignal(parent, COMSIG_GARGOYLE_CHECK_ENERGY)
UnregisterSignal(parent, COMSIG_LIVING_LIFE)
UnregisterSignal(parent, COMSIG_MOVABLE_MOVED) //happens if gargoyle_pause is used
/datum/component/gargoyle/proc/process_component() /datum/component/gargoyle/proc/process_component()
if(QDELETED(gargoyle)) if(QDELETED(gargoyle))
return return
if (paused && gargoyle.loc != paused_loc) if(transformed)
if(!statue)
transformed = FALSE
if(paused) //We somehow lost our energy while paused.
unpause() unpause()
statue.damage(-0.5)
energy = min(energy+0.3, 100)
//This is where we do all the 'make sure we don't die in statue form' stuff (unless you succumb or take MASSIVE damage.)
//Bloodloss will still kill us, but if we are patient enough, we'll survive most other stuff.
//If we had 150 brute (crit for most species) it'll take 3000 seconds (50 minutes) to heal back to full hp...So yes, while you can heal, it's not a good idea.
if(gargoyle.health < gargoyle.getMaxHealth())
gargoyle.adjustBruteLoss(-0.1)
gargoyle.adjustFireLoss(-0.1)
gargoyle.adjustOxyLoss(-1) //So you don't suffocate to death.
gargoyle.adjustToxLoss(-0.1)
gargoyle.adjustCloneLoss(-0.02) //yeah this is uber slow, no cheese allowed by combining it with bad genetics.
return //Early return. If we're transformed, we can stop, we don't need to check anything else.
if(energy > 0) if(energy > 0)
if(!transformed && !paused) if(!transformed && !paused)
energy = max(0,energy-0.05) energy = max(0,energy-0.05)
else if(!transformed && isturf(gargoyle.loc)) else if(!transformed && isturf(gargoyle.loc))
gargoyle.gargoyle_transformation() gargoyle.gargoyle_transformation()
if (transformed)
if (!statue)
transformed = FALSE
statue.damage(-0.5)
energy = min(energy+0.3, 100)
/datum/component/gargoyle/Destroy(force = FALSE) /datum/component/gargoyle/Destroy(force = FALSE)
UnregisterSignal(gargoyle, COMSIG_GARGOYLE_TRANSFORMATION)
UnregisterSignal(gargoyle, COMSIG_GARGOYLE_PAUSE)
UnregisterSignal(gargoyle, COMSIG_GARGOYLE_CHECK_ENERGY)
UnregisterSignal(gargoyle, COMSIG_LIVING_LIFE)
gargoyle = null gargoyle = null
statue = null statue = null
. = ..() . = ..()
/datum/component/gargoyle/proc/unpause() /datum/component/gargoyle/proc/unpause()
SIGNAL_HANDLER SIGNAL_HANDLER
if (!paused || transformed)
paused = FALSE paused = FALSE
paused_loc = null UnregisterSignal(gargoyle, COMSIG_MOVABLE_MOVED)
UnregisterSignal(gargoyle, COMSIG_ATOM_ENTERING)
return return
if (gargoyle?.loc != paused_loc)
paused = FALSE
paused_loc = null
energy = max(energy - 5, 0)
if (energy == 0)
gargoyle.gargoyle_transformation()
UnregisterSignal(gargoyle, COMSIG_ATOM_ENTERING)
//verbs or action buttons...? //verbs or action buttons...?
/mob/living/carbon/human/proc/gargoyle_transformation() /mob/living/carbon/human/proc/gargoyle_transformation()
@@ -76,6 +82,7 @@
/datum/component/gargoyle/proc/gargoyle_transformation() /datum/component/gargoyle/proc/gargoyle_transformation()
SIGNAL_HANDLER
if(gargoyle.stat == DEAD) if(gargoyle.stat == DEAD)
return return
if(energy <= 0 && isturf(gargoyle.loc)) if(energy <= 0 && isturf(gargoyle.loc))
@@ -96,14 +103,14 @@
SEND_SIGNAL(src, COMSIG_GARGOYLE_PAUSE) SEND_SIGNAL(src, COMSIG_GARGOYLE_PAUSE)
/datum/component/gargoyle/proc/gargoyle_pause() /datum/component/gargoyle/proc/gargoyle_pause()
SIGNAL_HANDLER
if(gargoyle.stat) if(gargoyle.stat)
return return
if(!transformed && !paused) if(!transformed && !paused)
paused = TRUE paused = TRUE
paused_loc = gargoyle.loc RegisterSignal(parent, COMSIG_MOVABLE_MOVED, /datum/component/gargoyle/proc/unpause)
RegisterSignal(gargoyle, COMSIG_ATOM_ENTERING, /datum/component/gargoyle/proc/unpause) to_chat(parent, span_notice("You start conserving your energy."))
to_chat(gargoyle, span_notice("You start conserving your energy."))
/mob/living/carbon/human/proc/gargoyle_checkenergy() /mob/living/carbon/human/proc/gargoyle_checkenergy()
set name = "Gargoyle - Check Energy" set name = "Gargoyle - Check Energy"
@@ -112,4 +119,5 @@
SEND_SIGNAL(src, COMSIG_GARGOYLE_CHECK_ENERGY) SEND_SIGNAL(src, COMSIG_GARGOYLE_CHECK_ENERGY)
/datum/component/gargoyle/proc/gargoyle_checkenergy() /datum/component/gargoyle/proc/gargoyle_checkenergy()
to_chat(gargoyle, span_notice("You have [round(energy,0.01)] energy remaining. It is currently [paused ? "stable" : (transformed ? "increasing" : "decreasing")].")) SIGNAL_HANDLER
to_chat(parent, span_notice("You have [round(energy,0.01)] energy remaining. It is currently [paused ? "stable" : (transformed ? "increasing" : "decreasing")]."))

View File

@@ -3,7 +3,7 @@
desc = "A very lifelike carving." desc = "A very lifelike carving."
density = TRUE density = TRUE
anchored = TRUE anchored = TRUE
var/mob/living/carbon/human/gargoyle var/datum/weakref/WR_gargoyle
var/initial_sleep var/initial_sleep
var/initial_blind var/initial_blind
var/initial_is_shifted var/initial_is_shifted
@@ -44,7 +44,7 @@
adjective = length(comp.adjective) > 0 ? comp.adjective : initial(adjective) adjective = length(comp.adjective) > 0 ? comp.adjective : initial(adjective)
if(copytext_char(adjective, -1) != "s") if(copytext_char(adjective, -1) != "s")
adjective += "s" adjective += "s"
gargoyle = H WR_gargoyle = WEAKREF(H)
if(H.get_effective_size(TRUE) < 0.5) // "So small! I can step over it!" if(H.get_effective_size(TRUE) < 0.5) // "So small! I can step over it!"
density = FALSE density = FALSE
@@ -119,7 +119,6 @@
if(H.appearance_flags & PIXEL_SCALE) if(H.appearance_flags & PIXEL_SCALE)
appearance_flags |= PIXEL_SCALE appearance_flags |= PIXEL_SCALE
wagging = H.wagging wagging = H.wagging
H.transforming = TRUE
flapping = H.flapping flapping = H.flapping
H.toggle_tail(FALSE, FALSE) H.toggle_tail(FALSE, FALSE)
H.toggle_wing(FALSE, FALSE) H.toggle_wing(FALSE, FALSE)
@@ -127,7 +126,6 @@
H.forceMove(src) H.forceMove(src)
H.SetBlinded(0) H.SetBlinded(0)
H.SetSleeping(0) H.SetSleeping(0)
H.status_flags |= GODMODE
H.updatehealth() H.updatehealth()
H.canmove = 0 H.canmove = 0
@@ -137,27 +135,40 @@
/obj/structure/gargoyle/Destroy() /obj/structure/gargoyle/Destroy()
STOP_PROCESSING(SSprocessing, src) STOP_PROCESSING(SSprocessing, src)
var/mob/living/carbon/human/gargoyle = WR_gargoyle.resolve()
if(!gargoyle) if(!gargoyle)
return ..() return ..()
if(can_revert) if(can_revert)
unpetrify(deleting = FALSE) //don't delete if we're already deleting! unpetrify(deleting = FALSE) //don't delete if we're already deleting!
else else
visible_message(span_warning("The [identifier] loses shape and crumbles into a pile of [material]!")) visible_message(span_warning("The [identifier] loses shape and crumbles into a pile of [material]!"))
WR_gargoyle = null
. = ..() . = ..()
/obj/structure/gargoyle/process() /obj/structure/gargoyle/process()
var/mob/living/carbon/human/gargoyle = WR_gargoyle.resolve()
if(!gargoyle) if(!gargoyle)
qdel(src) qdel(src)
return
if(gargoyle.stat == DEAD) //died while in statue state.
unpetrify(deal_damage = TRUE, deleting = TRUE)
return
if(gargoyle.loc != src) if(gargoyle.loc != src)
can_revert = TRUE //something's gone wrong, they escaped, lets not qdel them can_revert = TRUE //something's gone wrong, they escaped, lets not qdel them
unpetrify(deal_damage = FALSE, deleting = TRUE) unpetrify(deal_damage = FALSE, deleting = TRUE)
/obj/structure/gargoyle/fire_act(datum/gas_mixture/air, temperature, volume)
if(temperature > T0C + 1600) //Bingle says the burning point of rock is between 600 to 1600C...Let's use the highest range.
damage(temperature/(T0C + 1600)) //1 damage per 1600C
return
/obj/structure/gargoyle/examine_icon() /obj/structure/gargoyle/examine_icon()
var/icon/examine_icon = icon(icon=src.icon, icon_state=src.icon_state, dir=SOUTH, frame=1, moving=0) var/icon/examine_icon = icon(icon=src.icon, icon_state=src.icon_state, dir=SOUTH, frame=1, moving=0)
examine_icon.MapColors(rgb(77,77,77), rgb(150,150,150), rgb(28,28,28), rgb(0,0,0)) examine_icon.MapColors(rgb(77,77,77), rgb(150,150,150), rgb(28,28,28), rgb(0,0,0))
return examine_icon return examine_icon
/obj/structure/gargoyle/get_description_info() /obj/structure/gargoyle/get_description_info()
var/mob/living/carbon/human/gargoyle = WR_gargoyle.resolve()
if(gargoyle) if(gargoyle)
if(isspace(loc) || isopenspace(loc)) if(isspace(loc) || isopenspace(loc))
return return
@@ -165,12 +176,14 @@
/obj/structure/gargoyle/examine(mob/user) /obj/structure/gargoyle/examine(mob/user)
. = ..() . = ..()
var/mob/living/carbon/human/gargoyle = WR_gargoyle.resolve()
if(gargoyle && stored_examine) if(gargoyle && stored_examine)
. += "The [identifier] seems to have a bit more to them..." . += "The [identifier] seems to have a bit more to them..."
. += stored_examine . += stored_examine
return return
/obj/structure/gargoyle/proc/unpetrify(var/deal_damage = TRUE, var/deleting = FALSE) /obj/structure/gargoyle/proc/unpetrify(var/deal_damage = TRUE, var/deleting = FALSE)
var/mob/living/carbon/human/gargoyle = WR_gargoyle.resolve()
if(!gargoyle) if(!gargoyle)
return return
var/datum/component/gargoyle/comp = gargoyle.GetComponent(/datum/component/gargoyle) var/datum/component/gargoyle/comp = gargoyle.GetComponent(/datum/component/gargoyle)
@@ -193,10 +206,8 @@
gargoyle.toggle_tail(wagging, FALSE) gargoyle.toggle_tail(wagging, FALSE)
gargoyle.toggle_wing(flapping, FALSE) gargoyle.toggle_wing(flapping, FALSE)
gargoyle.sdisabilities &= ~MUTE //why is there no ADD_TRAIT etc here that's actually ussssed gargoyle.sdisabilities &= ~MUTE //why is there no ADD_TRAIT etc here that's actually ussssed
gargoyle.status_flags &= ~GODMODE
gargoyle.SetBlinded(initial_blind) gargoyle.SetBlinded(initial_blind)
gargoyle.SetSleeping(initial_sleep) gargoyle.SetSleeping(initial_sleep)
gargoyle.transforming = FALSE
gargoyle.canmove = 1 gargoyle.canmove = 1
gargoyle.update_canmove() gargoyle.update_canmove()
var/hurtmessage = "" var/hurtmessage = ""
@@ -239,6 +250,7 @@
damage(damage) damage(damage)
/obj/structure/gargoyle/attackby(var/obj/item/W as obj, var/mob/living/user as mob) /obj/structure/gargoyle/attackby(var/obj/item/W as obj, var/mob/living/user as mob)
var/mob/living/carbon/human/gargoyle = WR_gargoyle.resolve()
if(W.is_wrench()) if(W.is_wrench())
if(isspace(loc) || isopenspace(loc)) if(isspace(loc) || isopenspace(loc))
to_chat(user, span_warning("You can't anchor that here!")) to_chat(user, span_warning("You can't anchor that here!"))
@@ -274,12 +286,15 @@
add_overlay(tail_image) add_overlay(tail_image)
/obj/structure/gargoyle/hitby(atom/movable/AM as mob|obj,var/speed = THROWFORCE_SPEED_DIVISOR) /obj/structure/gargoyle/hitby(atom/movable/AM as mob|obj,var/speed = THROWFORCE_SPEED_DIVISOR)
if(istype(AM,/obj/item) && gargoyle && gargoyle.vore_selected && gargoyle.trash_catching) var/mob/living/carbon/human/gargoyle = WR_gargoyle.resolve()
if(!gargoyle)
return
if(istype(AM,/obj/item) && gargoyle.vore_selected && gargoyle.trash_catching)
var/obj/item/I = AM var/obj/item/I = AM
if(gargoyle.adminbus_trash || is_type_in_list(I, GLOB.edible_trash) && I.trash_eatable && !is_type_in_list(I, GLOB.item_vore_blacklist)) if(gargoyle.adminbus_trash || is_type_in_list(I, GLOB.edible_trash) && I.trash_eatable && !is_type_in_list(I, GLOB.item_vore_blacklist))
gargoyle.hitby(AM, speed) gargoyle.hitby(AM, speed)
return return
else if(isliving(AM) && gargoyle) else if(isliving(AM))
var/mob/living/L = AM var/mob/living/L = AM
if(gargoyle.throw_vore && L.throw_vore && gargoyle.can_be_drop_pred && L.can_be_drop_prey) if(gargoyle.throw_vore && L.throw_vore && gargoyle.can_be_drop_pred && L.can_be_drop_prey)
var/drop_prey_temp = FALSE var/drop_prey_temp = FALSE

View File

@@ -17,18 +17,16 @@
if(losebreath>0) //Suffocating so do not take a breath if(losebreath>0) //Suffocating so do not take a breath
AdjustLosebreath(-1) AdjustLosebreath(-1)
if (prob(10) && !isbelly(loc)) //Gasp per 10 ticks? Sounds about right. //VOREStation Add if (prob(10) && !isbelly(loc)) //Gasp per 10 ticks? Sounds about right.
spawn emote("gasp") spawn emote("gasp")
else else
//Okay, we can breathe, now check if we can get air //Okay, we can breathe, now check if we can get air
breath = get_breath_from_internal() //First, check for air from internals breath = get_breath_from_internal() //First, check for air from internals
//VOREStation Add - Respirocytes as a NIF implant
if(!breath && ishuman(src)) if(!breath && ishuman(src))
var/mob/living/carbon/human/H = src var/mob/living/carbon/human/H = src
if(H.nif && H.nif.flag_check(NIF_H_SPAREBREATH,NIF_FLAGS_HEALTH)) if(H.nif && H.nif.flag_check(NIF_H_SPAREBREATH,NIF_FLAGS_HEALTH))
var/datum/nifsoft/spare_breath/SB = H.nif.imp_check(NIF_SPAREBREATH) var/datum/nifsoft/spare_breath/SB = H.nif.imp_check(NIF_SPAREBREATH)
breath = SB.resp_breath() breath = SB.resp_breath()
//VOREStation Add End
if(!breath) if(!breath)
breath = get_breath_from_environment() //No breath from internals so let's try to get air from our location breath = get_breath_from_environment() //No breath from internals so let's try to get air from our location
if(!breath) if(!breath)

View File

@@ -86,11 +86,9 @@
var/name_ender = "" var/name_ender = ""
if(!((skip_gear & EXAMINE_SKIPJUMPSUIT) && (skip_body & EXAMINE_SKIPFACE))) if(!((skip_gear & EXAMINE_SKIPJUMPSUIT) && (skip_body & EXAMINE_SKIPFACE)))
//VOREStation Add Start
if(custom_species) if(custom_species)
name_ender = ", a " + span_bold("[src.custom_species]") name_ender = ", a " + span_bold("[src.custom_species]")
else if(looks_synth) else if(looks_synth)
//VOREStation Add End
var/use_gender = "a synthetic" var/use_gender = "a synthetic"
if(gender == MALE) if(gender == MALE)
use_gender = "an android" use_gender = "an android"
@@ -275,7 +273,6 @@
if(suiciding) if(suiciding)
msg += span_warning("[T.He] appears to have commited suicide... there is no hope of recovery.") msg += span_warning("[T.He] appears to have commited suicide... there is no hope of recovery.")
//VOREStation Add
var/list/vorestrings = list() var/list/vorestrings = list()
vorestrings += examine_weight() vorestrings += examine_weight()
vorestrings += examine_nutrition() vorestrings += examine_nutrition()
@@ -289,7 +286,6 @@
if(entry == "" || entry == null) if(entry == "" || entry == null)
vorestrings -= entry vorestrings -= entry
msg += vorestrings msg += vorestrings
//VOREStation Add End
if(mSmallsize in mutations) if(mSmallsize in mutations)
msg += "[T.He] [T.is] very short!" msg += "[T.He] [T.is] very short!"
@@ -318,14 +314,12 @@
msg += span_deadsay("[T.He] [T.is] [ssd_msg]. It doesn't look like [T.he] [T.is] waking up anytime soon.") msg += span_deadsay("[T.He] [T.is] [ssd_msg]. It doesn't look like [T.he] [T.is] waking up anytime soon.")
else if(!client) else if(!client)
msg += span_deadsay("[T.He] [T.is] [ssd_msg].") msg += span_deadsay("[T.He] [T.is] [ssd_msg].")
//VOREStation Add Start
if(client && away_from_keyboard && manual_afk) if(client && away_from_keyboard && manual_afk)
msg += "\[Away From Keyboard for [round((client.inactivity/10)/60)] minutes\]" msg += "\[Away From Keyboard for [round((client.inactivity/10)/60)] minutes\]"
else if(client && ((client.inactivity / 10) / 60 > 10)) //10 Minutes else if(client && ((client.inactivity / 10) / 60 > 10)) //10 Minutes
msg += "\[Inactive for [round((client.inactivity/10)/60)] minutes\]" msg += "\[Inactive for [round((client.inactivity/10)/60)] minutes\]"
else if(disconnect_time) else if(disconnect_time)
msg += "\[Disconnected/ghosted [round(((world.realtime - disconnect_time)/10)/60)] minutes ago\]" msg += "\[Disconnected/ghosted [round(((world.realtime - disconnect_time)/10)/60)] minutes ago\]"
//VOREStation Add End
var/list/wound_flavor_text = list() var/list/wound_flavor_text = list()
var/list/is_bleeding = list() var/list/is_bleeding = list()
@@ -366,7 +360,7 @@
wound_flavor_text["[temp.name]"] = span_warning("[T.He] [T.has] [temp.get_wounds_desc()] on [T.his] [temp.name].") wound_flavor_text["[temp.name]"] = span_warning("[T.He] [T.has] [temp.get_wounds_desc()] on [T.his] [temp.name].")
else else
wound_flavor_text["[temp.name]"] = "" wound_flavor_text["[temp.name]"] = ""
if(temp.dislocated == 1) //VOREStation Edit Bugfix if(temp.dislocated == 1)
wound_flavor_text["[temp.name]"] += span_warning("[T.His] [temp.joint] is dislocated!") wound_flavor_text["[temp.name]"] += span_warning("[T.His] [temp.joint] is dislocated!")
if(temp.brute_dam > temp.min_broken_damage || (temp.status & (ORGAN_BROKEN | ORGAN_MUTATED))) if(temp.brute_dam > temp.min_broken_damage || (temp.status & (ORGAN_BROKEN | ORGAN_MUTATED)))
wound_flavor_text["[temp.name]"] += span_warning("[T.His] [temp.name] is dented and swollen!") wound_flavor_text["[temp.name]"] += span_warning("[T.His] [temp.name] is dented and swollen!")
@@ -442,14 +436,12 @@
flavor_text = replacetext(flavor_text, "||", "") flavor_text = replacetext(flavor_text, "||", "")
msg += "[flavor_text]" msg += "[flavor_text]"
// VOREStation Start
if(custom_link) if(custom_link)
msg += "Custom link: " + span_linkify("[custom_link]") msg += "Custom link: " + span_linkify("[custom_link]")
if(ooc_notes) if(ooc_notes)
msg += "OOC Notes: <a href='byond://?src=\ref[src];ooc_notes=1'>\[View\]</a> - <a href='byond://?src=\ref[src];print_ooc_notes_chat=1'>\[Print\]</a>" msg += "OOC Notes: <a href='byond://?src=\ref[src];ooc_notes=1'>\[View\]</a> - <a href='byond://?src=\ref[src];print_ooc_notes_chat=1'>\[Print\]</a>"
msg += "<a href='byond://?src=\ref[src];vore_prefs=1'>\[Mechanical Vore Preferences\]</a>" msg += "<a href='byond://?src=\ref[src];vore_prefs=1'>\[Mechanical Vore Preferences\]</a>"
// VOREStation End
msg = list(span_info(jointext(msg, "<br>"))) msg = list(span_info(jointext(msg, "<br>")))
if(applying_pressure) if(applying_pressure)
msg += applying_pressure msg += applying_pressure
@@ -465,7 +457,7 @@
/proc/hasHUD(mob/M as mob, hudtype) /proc/hasHUD(mob/M as mob, hudtype)
if(ishuman(M)) if(ishuman(M))
var/mob/living/carbon/human/H = M var/mob/living/carbon/human/H = M
if(hasHUD_vr(H,hudtype)) return 1 //VOREStation Add - Added records access for certain modes of omni-hud glasses if(hasHUD_vr(H,hudtype)) return 1 //Added records access for certain modes of omni-hud glasses
switch(hudtype) switch(hudtype)
if("security") if("security")
return istype(H.glasses, /obj/item/clothing/glasses/hud/security) || istype(H.glasses, /obj/item/clothing/glasses/sunglasses/sechud) return istype(H.glasses, /obj/item/clothing/glasses/hud/security) || istype(H.glasses, /obj/item/clothing/glasses/sunglasses/sechud)
@@ -473,4 +465,4 @@
return istype(H.glasses, /obj/item/clothing/glasses/hud/health) return istype(H.glasses, /obj/item/clothing/glasses/hud/health)
else if(isrobot(M)) else if(isrobot(M))
var/mob/living/silicon/robot/R = M var/mob/living/silicon/robot/R = M
return R.sensor_type //VOREStation Add - Borgo sensors are now binary so just have them on or off return R.sensor_type //Borgo sensors are now binary so just have them on or off

View File

@@ -34,7 +34,7 @@
/obj/item/mindbinder/pre_attack(atom/A) /obj/item/mindbinder/pre_attack(atom/A)
if(istype(A, /obj/structure/gargoyle)) if(istype(A, /obj/structure/gargoyle))
var/obj/structure/gargoyle/G = A var/obj/structure/gargoyle/G = A
A = G.gargoyle A = G.WR_gargoyle?.resolve()
if(istype(A, /obj/item/holder)) if(istype(A, /obj/item/holder))
var/obj/item/holder/H = A var/obj/item/holder/H = A
A = H.held_mob A = H.held_mob