This commit is contained in:
SandPoot
2025-02-16 17:28:29 -03:00
parent d124030959
commit 1a694d09de

View File

@@ -11,7 +11,7 @@
/obj/item/clothing/head/helmet/space/chronos/dropped(mob/user) /obj/item/clothing/head/helmet/space/chronos/dropped(mob/user)
if(suit) if(suit)
suit.deactivate(1, 1) suit.deactivate(1, 1)
..() return ..()
/obj/item/clothing/suit/space/chronos /obj/item/clothing/suit/space/chronos
name = "Chronosuit" name = "Chronosuit"
@@ -23,23 +23,22 @@
resistance_flags = FIRE_PROOF | ACID_PROOF resistance_flags = FIRE_PROOF | ACID_PROOF
mutantrace_variation = STYLE_DIGITIGRADE mutantrace_variation = STYLE_DIGITIGRADE
var/list/chronosafe_items = list(/obj/item/chrono_eraser, /obj/item/gun/energy/chrono_gun) var/list/chronosafe_items = list(/obj/item/chrono_eraser, /obj/item/gun/energy/chrono_gun)
var/obj/item/clothing/head/helmet/space/chronos/helmet = null var/obj/item/clothing/head/helmet/space/chronos/helmet
var/obj/effect/chronos_cam/camera = null var/obj/effect/chronos_cam/camera
var/datum/action/innate/chrono_teleport/teleport_now = new var/datum/action/innate/chrono_teleport/teleport_now
var/activating = 0 var/activating = 0
var/activated = 0 var/activated = 0
var/cooldowntime = 50 //deciseconds var/cooldowntime = 5 SECONDS
var/teleporting = 0 var/teleporting = 0
var/phase_timer_id var/phase_timer_id
/obj/item/clothing/suit/space/chronos/New() /obj/item/clothing/suit/space/chronos/Initialize(mapload)
..() . = ..()
teleport_now = new(src)
teleport_now.chronosuit = src teleport_now.chronosuit = src
teleport_now.target = src
/obj/item/clothing/suit/space/chronos/proc/new_camera(mob/user) /obj/item/clothing/suit/space/chronos/proc/new_camera(mob/user)
if(camera) QDEL_NULL(camera)
qdel(camera)
camera = new /obj/effect/chronos_cam(user) camera = new /obj/effect/chronos_cam(user)
camera.holder = user camera.holder = user
camera.chronosuit = src camera.chronosuit = src
@@ -55,7 +54,7 @@
/obj/item/clothing/suit/space/chronos/dropped(mob/user) /obj/item/clothing/suit/space/chronos/dropped(mob/user)
if(activated) if(activated)
deactivate() deactivate()
..() return ..()
/obj/item/clothing/suit/space/chronos/emp_act(severity) /obj/item/clothing/suit/space/chronos/emp_act(severity)
. = ..() . = ..()
@@ -64,8 +63,8 @@
var/mob/living/carbon/human/user = src.loc var/mob/living/carbon/human/user = src.loc
if(severity >= 70) if(severity >= 70)
if(activated && user && ishuman(user) && (user.wear_suit == src)) if(activated && user && ishuman(user) && (user.wear_suit == src))
to_chat(user, "<span class='danger'>E:FATAL:RAM_READ_FAIL\nE:FATAL:STACK_EMPTY\nE:FATAL:READ_NULL_POINT\nE:FATAL:PWR_BUS_OVERLOAD</span>") to_chat(user, span_danger("E:FATAL:RAM_READ_FAIL\nE:FATAL:STACK_EMPTY\nE:FATAL:READ_NULL_POINT\nE:FATAL:PWR_BUS_OVERLOAD"))
to_chat(user, "<span class='userdanger'>An electromagnetic pulse disrupts your [name] and violently tears you out of time-bluespace!</span>") to_chat(user, span_userdanger("An electromagnetic pulse disrupts your [name] and violently tears you out of time-bluespace!"))
user.emote("scream") user.emote("scream")
deactivate(1, 1) deactivate(1, 1)
@@ -75,23 +74,24 @@
if(phase_timer_id) if(phase_timer_id)
deltimer(phase_timer_id) deltimer(phase_timer_id)
phase_timer_id = 0 phase_timer_id = 0
if(istype(user)) if(!istype(user))
if(to_turf) return
user.forceMove(to_turf) if(to_turf)
user.SetStun(0) user.forceMove(to_turf)
user.SetNextAction(0, considered_action = FALSE, immediate = FALSE) user.SetStun(0)
user.alpha = 255 user.SetNextAction(0, considered_action = FALSE, immediate = FALSE)
user.update_atom_colour() user.alpha = 255
user.animate_movement = FORWARD_STEPS user.update_atom_colour()
user.mob_transforming = 0 user.animate_movement = FORWARD_STEPS
user.anchored = FALSE user.mob_transforming = 0
teleporting = 0 user.anchored = FALSE
for(var/obj/item/I in user.held_items) teleporting = 0
REMOVE_TRAIT(I, TRAIT_NODROP, CHRONOSUIT_TRAIT) for(var/obj/item/I in user.held_items)
if(camera) REMOVE_TRAIT(I, TRAIT_NODROP, CHRONOSUIT_TRAIT)
camera.remove_target_ui() if(camera)
camera.forceMove(user) camera.remove_target_ui()
teleport_now.UpdateButtons() camera.forceMove(user)
teleport_now.UpdateButtons()
/obj/item/clothing/suit/space/chronos/proc/chronowalk(atom/location) /obj/item/clothing/suit/space/chronos/proc/chronowalk(atom/location)
var/mob/living/carbon/human/user = src.loc var/mob/living/carbon/human/user = src.loc
@@ -238,7 +238,7 @@
var/mob/holder = null var/mob/holder = null
var/phase_time = 0 var/phase_time = 0
var/phase_time_length = 3 var/phase_time_length = 3
var/atom/movable/screen/chronos_target/target_ui = null var/atom/movable/screen/chronos_target/target_ui
var/obj/item/clothing/suit/space/chronos/chronosuit var/obj/item/clothing/suit/space/chronos/chronosuit
/obj/effect/chronos_cam/singularity_act() /obj/effect/chronos_cam/singularity_act()
@@ -249,17 +249,14 @@
/obj/effect/chronos_cam/proc/create_target_ui() /obj/effect/chronos_cam/proc/create_target_ui()
if(holder && holder.client && chronosuit) if(holder && holder.client && chronosuit)
if(target_ui) remove_target_ui()
remove_target_ui() target_ui = new(null, holder.hud_used, holder)
target_ui = new(null, holder)
holder.client.screen += target_ui holder.client.screen += target_ui
/obj/effect/chronos_cam/proc/remove_target_ui() /obj/effect/chronos_cam/proc/remove_target_ui()
if(target_ui) QDEL_NULL(target_ui)
qdel(target_ui)
target_ui = null
/obj/effect/chronos_cam/relaymove(var/mob/user, direction) /obj/effect/chronos_cam/relaymove(mob/user, direction)
if(!holder) if(!holder)
qdel(src) qdel(src)
return return
@@ -305,13 +302,13 @@
color = "#ff3311" color = "#ff3311"
blend_mode = BLEND_SUBTRACT blend_mode = BLEND_SUBTRACT
/atom/movable/screen/chronos_target/New(loc, var/mob/living/carbon/human/user) /atom/movable/screen/chronos_target/Initialize(mapload, datum/hud/hud_owner, mob/living/carbon/human/user)
if(user) . = ..()
var/icon/user_icon = getFlatIcon(user) if(!user)
icon = user_icon return INITIALIZE_HINT_QDEL
transform = user.transform var/icon/user_icon = getFlatIcon(user)
else icon = user_icon
qdel(src) transform = user.transform
/datum/action/innate/chrono_teleport /datum/action/innate/chrono_teleport
name = "Teleport Now" name = "Teleport Now"
@@ -324,6 +321,7 @@
return (chronosuit && chronosuit.activated && chronosuit.camera && !chronosuit.teleporting) return (chronosuit && chronosuit.activated && chronosuit.camera && !chronosuit.teleporting)
/datum/action/innate/chrono_teleport/Activate() /datum/action/innate/chrono_teleport/Activate()
if(IsAvailable()) if(!IsAvailable())
if(chronosuit.camera) return
chronosuit.chronowalk(chronosuit.camera) if(chronosuit.camera)
chronosuit.chronowalk(chronosuit.camera)