module things, jfc
This commit is contained in:
@@ -4,12 +4,12 @@
|
||||
circuit = /obj/item/circuitboard/machine/nanite_chamber
|
||||
icon = 'icons/obj/machines/nanite_chamber.dmi'
|
||||
icon_state = "nanite_chamber"
|
||||
layer = ABOVE_WINDOW_LAYER
|
||||
use_power = IDLE_POWER_USE
|
||||
anchored = TRUE
|
||||
density = TRUE
|
||||
idle_power_usage = 50
|
||||
active_power_usage = 300
|
||||
occupant_typecache = list(/mob/living)
|
||||
|
||||
var/obj/machinery/computer/nanite_chamber_control/console
|
||||
var/locked = FALSE
|
||||
@@ -20,6 +20,10 @@
|
||||
var/busy_message
|
||||
var/message_cooldown = 0
|
||||
|
||||
/obj/machinery/nanite_chamber/Initialize()
|
||||
. = ..()
|
||||
occupant_typecache = GLOB.typecache_living
|
||||
|
||||
/obj/machinery/nanite_chamber/RefreshParts()
|
||||
scan_level = 0
|
||||
for(var/obj/item/stock_parts/scanning_module/P in component_parts)
|
||||
@@ -224,4 +228,4 @@
|
||||
/obj/machinery/nanite_chamber/MouseDrop_T(mob/target, mob/user)
|
||||
if(user.stat || user.lying || !Adjacent(user) || !user.Adjacent(target) || !iscarbon(target) || !user.IsAdvancedToolUser())
|
||||
return
|
||||
close_machine(target)
|
||||
close_machine(target)
|
||||
|
||||
@@ -167,7 +167,7 @@
|
||||
if(backup)
|
||||
playsound(src, 'sound/machines/terminal_prompt.ogg', 50, 0)
|
||||
var/datum/component/nanites/nanites = backup.nanites
|
||||
nanites.add_program(disk.program.copy())
|
||||
nanites.add_program(null, disk.program.copy())
|
||||
investigate_log("[key_name(usr)] uploaded program [disk.program.name] to cloud #[current_view]", INVESTIGATE_NANITES)
|
||||
. = TRUE
|
||||
if("remove_program")
|
||||
|
||||
@@ -15,6 +15,11 @@
|
||||
if(disk)
|
||||
eject()
|
||||
|
||||
/obj/item/nanite_hijacker/examine(mob/user)
|
||||
. = ..()
|
||||
if(disk)
|
||||
to_chat(user, "<span class='notice'>Alt-click [src] to eject the disk.</span>")
|
||||
|
||||
/obj/item/nanite_hijacker/attackby(obj/item/I, mob/user)
|
||||
if(istype(I, /obj/item/disk/nanite_program))
|
||||
var/obj/item/disk/nanite_program/N = I
|
||||
|
||||
@@ -224,7 +224,7 @@
|
||||
if(5) //Program is scrambled and does something different
|
||||
var/rogue_type = pick(rogue_types)
|
||||
var/datum/nanite_program/rogue = new rogue_type
|
||||
nanites.add_program(rogue, src)
|
||||
nanites.add_program(null, rogue, src)
|
||||
qdel(src)
|
||||
|
||||
/datum/nanite_program/proc/receive_signal(code, source)
|
||||
|
||||
@@ -12,12 +12,6 @@
|
||||
var/mob/living/carbon/human/H = host_mob
|
||||
H.physiology.stun_mod *= 0.5
|
||||
|
||||
/datum/nanite_program/nervous/active_effect()
|
||||
. = ..()
|
||||
if(iscarbon(host_mob))
|
||||
var/mob/living/carbon/C = host_mob
|
||||
C.adjustStaminaLoss(-2)
|
||||
|
||||
/datum/nanite_program/nervous/disable_passive_effect()
|
||||
. = ..()
|
||||
if(ishuman(host_mob))
|
||||
@@ -133,4 +127,4 @@
|
||||
/datum/nanite_program/mindshield/disable_passive_effect()
|
||||
. = ..()
|
||||
host_mob.remove_trait(TRAIT_MINDSHIELD, "nanites")
|
||||
host_mob.sec_hud_set_implants()
|
||||
host_mob.sec_hud_set_implants()
|
||||
@@ -128,7 +128,7 @@
|
||||
return
|
||||
var/update = FALSE
|
||||
for(var/obj/item/bodypart/L in parts)
|
||||
if(L.heal_damage(1/parts.len, 1/parts.len))
|
||||
if(L.heal_damage(1/parts.len, 1/parts.len, only_robotic = TRUE, only_organic = FALSE))
|
||||
update = TRUE
|
||||
if(update)
|
||||
host_mob.update_damage_overlays()
|
||||
@@ -208,10 +208,8 @@
|
||||
if(!..())
|
||||
return
|
||||
|
||||
playsound(host_mob, 'sound/machines/defib_zap.ogg', 75, 1, -1)
|
||||
if(check_revivable())
|
||||
host_mob.notify_ghost_cloning("Your heart is being defibrillated. Re-enter your corpse if you want to be revived!", source = src)
|
||||
addtimer(CALLBACK(src, .proc/zap), 30)
|
||||
host_mob.notify_ghost_cloning("Your heart is being defibrillated by nanites. Re-enter your corpse if you want to be revived!")
|
||||
addtimer(CALLBACK(src, .proc/zap), 50)
|
||||
|
||||
/datum/nanite_program/triggered/defib/proc/check_revivable()
|
||||
if(!iscarbon(host_mob)) //nonstandard biology
|
||||
@@ -219,22 +217,25 @@
|
||||
var/mob/living/carbon/C = host_mob
|
||||
if(C.suiciding || C.has_trait(TRAIT_NOCLONE) || C.hellbound) //can't revive
|
||||
return FALSE
|
||||
if((world.time - C.timeofdeath) < 1800) //too late
|
||||
if((world.time - C.timeofdeath) > 1800) //too late
|
||||
return FALSE
|
||||
if((C.getBruteLoss() > 180) || (C.getFireLoss() > 180)) //too damaged
|
||||
if((C.getBruteLoss() > 180) || (C.getFireLoss() > 180) || !C.can_be_revived()) //too damaged
|
||||
return FALSE
|
||||
if(!C.getorgan(/obj/item/organ/heart)) //what are we even shocking
|
||||
return FALSE
|
||||
var/obj/item/organ/brain/BR = C.getorgan(/obj/item/organ/brain)
|
||||
if(QDELETED(BR) || BR.damaged_brain)
|
||||
return FALSE
|
||||
if(!C.ckey && !C.get_ghost())
|
||||
if(C.get_ghost())
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/datum/nanite_program/triggered/defib/proc/zap()
|
||||
if(check_revivable() && host_mob.ckey)
|
||||
var/mob/living/carbon/C = host_mob
|
||||
var/mob/living/carbon/C = host_mob
|
||||
playsound(C, 'sound/machines/defib_charge.ogg', 50, 0)
|
||||
sleep(30)
|
||||
playsound(C, 'sound/machines/defib_zap.ogg', 50, 0)
|
||||
if(check_revivable())
|
||||
playsound(C, 'sound/machines/defib_success.ogg', 50, 0)
|
||||
C.set_heartattack(FALSE)
|
||||
C.revive()
|
||||
@@ -246,5 +247,5 @@
|
||||
C.adjustBrainLoss( max(0, ((1800 - tplus) / 1800 * 150)), 150)
|
||||
log_game("[C] has been successfully defibrillated by nanites.")
|
||||
else
|
||||
playsound(host_mob, 'sound/machines/defib_failed.ogg', 50, 0)
|
||||
playsound(C, 'sound/machines/defib_failed.ogg', 50, 0)
|
||||
|
||||
|
||||
@@ -147,7 +147,7 @@
|
||||
if(host_mob.stat == DEAD)
|
||||
return
|
||||
to_chat(host_mob, "<span class='warning'>You feel compelled to speak...</span>")
|
||||
host_mob.say(sentence)
|
||||
host_mob.say(sentence, forced = "nanite speech")
|
||||
|
||||
/datum/nanite_program/triggered/voice
|
||||
name = "Skull Echo"
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
circuit = /obj/item/circuitboard/machine/public_nanite_chamber
|
||||
icon = 'icons/obj/machines/nanite_chamber.dmi'
|
||||
icon_state = "nanite_chamber"
|
||||
layer = ABOVE_WINDOW_LAYER
|
||||
use_power = IDLE_POWER_USE
|
||||
anchored = TRUE
|
||||
density = TRUE
|
||||
idle_power_usage = 50
|
||||
active_power_usage = 300
|
||||
occupant_typecache = list(/mob/living)
|
||||
|
||||
var/cloud_id = 1
|
||||
var/locked = FALSE
|
||||
@@ -18,6 +18,10 @@
|
||||
var/busy_icon_state
|
||||
var/message_cooldown = 0
|
||||
|
||||
/obj/machinery/public_nanite_chamber/Initialize()
|
||||
. = ..()
|
||||
occupant_typecache = GLOB.typecache_living
|
||||
|
||||
/obj/machinery/public_nanite_chamber/RefreshParts()
|
||||
var/obj/item/circuitboard/machine/public_nanite_chamber/board = circuit
|
||||
if(board)
|
||||
@@ -171,4 +175,4 @@
|
||||
/obj/machinery/public_nanite_chamber/MouseDrop_T(mob/target, mob/user)
|
||||
if(user.stat || user.lying || !Adjacent(user) || !user.Adjacent(target) || !iscarbon(target) || !user.IsAdvancedToolUser())
|
||||
return
|
||||
close_machine(target)
|
||||
close_machine(target)
|
||||
|
||||
Reference in New Issue
Block a user