diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index 2f5ec34b07b..f8e59280f9b 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -131,7 +131,6 @@ occupant:UI = UI // set interface preference ghost.client.mob = src.occupant - src.occupant.attack_log |= ghost.attack_log //THE LEGACY MUST LIVE ON src.occupant.hud_used = new/obj/hud( src.occupant ) // probably redundant because previous line calls mob/Login() which does this line of code // but until this is proven useless keep it for safety - Doohl diff --git a/code/game/machinery/morgue.dm b/code/game/machinery/morgue.dm index b9163171b59..dfe83add053 100644 --- a/code/game/machinery/morgue.dm +++ b/code/game/machinery/morgue.dm @@ -275,9 +275,10 @@ for (var/obj/item/W in M) if (prob(10)) W.loc = src - M.attack_log += "\[[time_stamp()]\] Has been cremated by [user]/[user.ckey]" //One shall not simply cremate a mob unnoticed! - user.attack_log +="\[[time_stamp()]\] Cremated [M]/[M.ckey]" - log_attack("\[[time_stamp()]\] [user]/[user.ckey] gibbed [M]/[M.ckey]") + //Logging for this runtimes and causes the cremator to lock up + //M.attack_log += "\[[time_stamp()]\] Has been cremated by [user]/[user.ckey]" //No point when the mob's about to be deleted + //user.attack_log +="\[[time_stamp()]\] Cremated [M]/[M.ckey]" + //log_attack("\[[time_stamp()]\] [user]/[user.ckey] gibbed [M]/[M.ckey]") M.death(1) M.ghostize() del(M) diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index d0ce867c724..f699084e97d 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -131,6 +131,14 @@ del(src) return +/obj/machinery/shield/emp_act(severity) + switch(severity) + if(1) + del(src) + if(2) + if(prob(50)) + del(src) + /obj/machinery/shield/blob_act() del(src) @@ -177,12 +185,14 @@ opacity = 0 anchored = 0 pressure_resistance = 2*ONE_ATMOSPHERE - var/active = 0 + req_access = list(access_engine) var/const/max_health = 100 var/health = max_health + var/active = 0 var/malfunction = 0 //Malfunction causes parts of the shield to slowly dissapate var/list/deployed_shields = list() var/is_open = 0 //Whether or not the wires are exposed + var/locked = 0 /obj/machinery/shieldgen/Del() for(var/obj/machinery/shield/shield_tile in deployed_shields) @@ -247,7 +257,26 @@ src.checkhp() return +/obj/machinery/shieldgen/emp_act(severity) + switch(severity) + if(1) + src.health /= 2 //cut health in half + malfunction = 1 + locked = pick(0,1) + if(2) + if(prob(50)) + src.health *= 0.3 //chop off a third of the health + malfunction = 1 + checkhp() + /obj/machinery/shieldgen/attack_hand(mob/user as mob) + if(locked) + user << "The machine is locked, you are unable to use it." + return + if(is_open) + user << "The panel must be closed before operating this machine." + return + if (src.active) user.visible_message("\blue \icon[src] [user] deactivated the shield generator.", \ "\blue \icon[src] You deactivate the shield generator.", \ @@ -279,7 +308,7 @@ else if(istype(W, /obj/item/weapon/cable_coil) && malfunction && is_open) var/obj/item/weapon/cable_coil/coil = W - user << "\blue You begin to repair the cables." + user << "\blue You begin to replace the wires." //if(do_after(user, min(60, round( ((maxhealth/health)*10)+(malfunction*10) ))) //Take longer to repair heavier damage if(do_after(user, 30)) if(!src || !coil) return @@ -290,17 +319,30 @@ update_icon() else if(istype(W, /obj/item/weapon/wrench)) - if(istype(get_turf(src), /turf/space)) return //No wrenching these in space! - playsound(src.loc, 'Ratchet.ogg', 100, 1) + if(locked) + user << "The bolts are covered, unlocking this would retract the covers." + return if(anchored) + playsound(src.loc, 'Ratchet.ogg', 100, 1) user << "\blue You unsecure the [src] from the floor!" if(active) - user << "The [src] shuts off!" + user << "\blue The [src] shuts off!" src.shields_down() anchored = 0 else + if(istype(get_turf(src), /turf/space)) return //No wrenching these in space! + playsound(src.loc, 'Ratchet.ogg', 100, 1) user << "\blue You secure the [src] to the floor!" anchored = 1 + + + else if(istype(W, /obj/item/weapon/card/id) || istype(W, /obj/item/device/pda)) + if(src.allowed(user)) + src.locked = !src.locked + user << "The controls are now [src.locked ? "locked." : "unlocked."]" + else + user << "\red Access denied." + else ..() diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 60a447e6e0b..b8424dd4e0c 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -576,8 +576,8 @@ var/global/BSACooldown = 0 if (href_list["removejobban"]) if ((src.rank in list("Game Admin", "Game Master" ))) var/t = href_list["removejobban"] - if(input(alert("Do you want to unjobban [t]?","Unjobban confirmation", "Yes", "No") == "Yes")) //No more misclicks! Unless you do it twice. - if(t) + if(t) + if(input(alert("Do you want to unjobban [t]?","Unjobban confirmation", "Yes", "No") == "Yes") && t) //No more misclicks! Unless you do it twice. log_admin("[key_name(usr)] removed [t]") message_admins("\blue [key_name_admin(usr)] removed [t]", 1) jobban_remove(t) diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 2f148b8aa23..ccf6540413f 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -36,7 +36,6 @@ Works together with spawning an observer, noted above. if(client) client.screen.len = null//Clear the hud, just to be sure. var/mob/dead/observer/ghost = new(src,transfer_mind)//Transfer safety to observer spawning proc. - ghost.attack_log |= attack_log if(transfer_mind)//When a body is destroyed. if(mind) mind.transfer_to(ghost) @@ -45,7 +44,7 @@ Works together with spawning an observer, noted above. else//Else just modify their key and connect them. ghost.key = key - verbs -= /client/proc/ghost + verbs -= /mob/proc/ghost if (ghost.client) ghost.client.eye = ghost @@ -60,7 +59,7 @@ Works together with spawning an observer, noted above. /* This is the proc mobs get to turn into a ghost. Forked from ghostize due to compatibility issues. */ -/client/proc/ghost() +/mob/proc/ghost() set category = "Ghost" set name = "Ghost" set desc = "You cannot be revived as a ghost." @@ -69,11 +68,9 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp src << "Only dead people and admins get to ghost, and admins don't use this verb to ghost while alive." return*/ if(key) - var/mob/dead/observer/ghost = new(mob) //Duh. - ghost.loc = get_turf(mob) //This is to prevent ghosts from appearing at the arrival shuttle. - ghost.attack_log |= mob.attack_log //THE LEGACY MUST LIVE ON + var/mob/dead/observer/ghost = new(src) ghost.key = key - verbs -= /client/proc/ghost + verbs -= /mob/proc/ghost if (ghost.client) ghost.client.eye = ghost return @@ -148,10 +145,9 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp return if(corpse.ajourn) corpse.ajourn=0 - corpse.attack_log |= attack_log //copy the ghost's attack log to the corpse. THE LEGACY MUST LIVE ON client.mob = corpse if (corpse.stat==2) - verbs += /client/proc/ghost + verbs += /mob/proc/ghost del(src) /mob/dead/observer/proc/dead_tele() diff --git a/code/modules/mob/living/carbon/alien/humanoid/death.dm b/code/modules/mob/living/carbon/alien/humanoid/death.dm index 8683becafb6..3a48378c4c1 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/death.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/death.dm @@ -25,7 +25,7 @@ if (src.key) spawn(10) if(src.key && src.stat == 2) - src.client.verbs += /client/proc/ghost + src.verbs += /mob/proc/ghost tod = worldtime2text() //weasellos time of death patch if (mind) mind.store_memory("Time of death: [tod]", 0) diff --git a/code/modules/mob/living/carbon/alien/humanoid/login.dm b/code/modules/mob/living/carbon/alien/humanoid/login.dm index 827778a4c25..686f36c08dc 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/login.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/login.dm @@ -7,7 +7,7 @@ src.client.eye = src.loc src.client.perspective = EYE_PERSPECTIVE if (src.stat == DEAD) - src.verbs += /client/proc/ghost + src.verbs += /mob/proc/ghost return /* @@ -99,7 +99,7 @@ src.client.eye = src.loc src.client.perspective = EYE_PERSPECTIVE if (src.stat == 2) - src.verbs += /client/proc/ghost + src.verbs += /mob/proc/ghost return diff --git a/code/modules/mob/living/carbon/alien/larva/death.dm b/code/modules/mob/living/carbon/alien/larva/death.dm index c90f074b0ea..8e2fe185497 100644 --- a/code/modules/mob/living/carbon/alien/larva/death.dm +++ b/code/modules/mob/living/carbon/alien/larva/death.dm @@ -23,7 +23,7 @@ if (src.client) spawn(10) if(src.client && src.stat == 2) - src.client.verbs += /client/proc/ghost + src.verbs += /mob/proc/ghost if(mind) // Skie - Added check that there's someone controlling the alien tod = worldtime2text() //weasellos time of death patch diff --git a/code/modules/mob/living/carbon/alien/larva/login.dm b/code/modules/mob/living/carbon/alien/larva/login.dm index 1278daa2bb3..eeff902cce7 100644 --- a/code/modules/mob/living/carbon/alien/larva/login.dm +++ b/code/modules/mob/living/carbon/alien/larva/login.dm @@ -5,6 +5,6 @@ src.client.eye = src.loc src.client.perspective = EYE_PERSPECTIVE if (src.stat == 2) - src.verbs += /client/proc/ghost + src.verbs += /mob/proc/ghost return diff --git a/code/modules/mob/living/carbon/brain/brain.dm b/code/modules/mob/living/carbon/brain/brain.dm index bea5b7b1e45..9b30ff5d76d 100644 --- a/code/modules/mob/living/carbon/brain/brain.dm +++ b/code/modules/mob/living/carbon/brain/brain.dm @@ -40,7 +40,7 @@ src.client.eye = src.loc src.client.perspective = EYE_PERSPECTIVE if (!container || !istype(container, /obj/item/device/mmi)) - src.verbs += /client/proc/ghost + src.verbs += /mob/proc/ghost return diff --git a/code/modules/mob/living/carbon/brain/death.dm b/code/modules/mob/living/carbon/brain/death.dm index 131c0f61838..30967cf43c5 100644 --- a/code/modules/mob/living/carbon/brain/death.dm +++ b/code/modules/mob/living/carbon/brain/death.dm @@ -20,5 +20,5 @@ if (key) spawn(50) if(key && stat == 2) - src.client.verbs += /client/proc/ghost + src.verbs += /mob/proc/ghost return ..(gibbed) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 9148ef5ff74..945266c4c38 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -79,11 +79,9 @@ //This is where the suicide assemblies checks would go if (client) - //world <<"Woo, there's a client!" spawn(10) if(client && src.stat == 2) - //world <<"You're sooooooo dead, let's ghost!" - client.verbs += /client/proc/ghost + verbs += /mob/proc/ghost tod = worldtime2text() //weasellos time of death patch if(mind) diff --git a/code/modules/mob/living/carbon/human/login.dm b/code/modules/mob/living/carbon/human/login.dm index a32d445f838..07c78011584 100644 --- a/code/modules/mob/living/carbon/human/login.dm +++ b/code/modules/mob/living/carbon/human/login.dm @@ -7,6 +7,6 @@ src.client.eye = src.loc src.client.perspective = EYE_PERSPECTIVE if (src.stat == DEAD) - src.verbs += /client/proc/ghost + src.verbs += /mob/proc/ghost return diff --git a/code/modules/mob/living/carbon/metroid/death.dm b/code/modules/mob/living/carbon/metroid/death.dm index 3241bbb94b9..2356f425505 100644 --- a/code/modules/mob/living/carbon/metroid/death.dm +++ b/code/modules/mob/living/carbon/metroid/death.dm @@ -37,6 +37,6 @@ if (src.key) spawn(50) if(src.key && src.stat == 2) - src.client.verbs += /client/proc/ghost + src.verbs += /mob/proc/ghost return ..(gibbed) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/metroid/login.dm b/code/modules/mob/living/carbon/metroid/login.dm index eac13bbfae6..831c6e10044 100644 --- a/code/modules/mob/living/carbon/metroid/login.dm +++ b/code/modules/mob/living/carbon/metroid/login.dm @@ -7,6 +7,6 @@ src.client.eye = src.loc src.client.perspective = EYE_PERSPECTIVE if (src.stat == DEAD) - src.verbs += /client/proc/ghost + src.verbs += /mob/proc/ghost return diff --git a/code/modules/mob/living/carbon/monkey/death.dm b/code/modules/mob/living/carbon/monkey/death.dm index 99e99b9a5b8..a150d7c2bf5 100644 --- a/code/modules/mob/living/carbon/monkey/death.dm +++ b/code/modules/mob/living/carbon/monkey/death.dm @@ -67,6 +67,6 @@ if (src.key) spawn(50) if(src.key && src.stat == 2) - src.client.verbs += /client/proc/ghost + src.verbs += /mob/proc/ghost return ..(gibbed) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/monkey/login.dm b/code/modules/mob/living/carbon/monkey/login.dm index a1cc1b1b844..0a0c216129c 100644 --- a/code/modules/mob/living/carbon/monkey/login.dm +++ b/code/modules/mob/living/carbon/monkey/login.dm @@ -7,5 +7,5 @@ src.client.eye = src.loc src.client.perspective = EYE_PERSPECTIVE if (src.stat == DEAD) - src.verbs += /client/proc/ghost + src.verbs += /mob/proc/ghost return diff --git a/code/modules/mob/living/silicon/ai/death.dm b/code/modules/mob/living/silicon/ai/death.dm index 9bdc49ee17a..636d27a6ac3 100644 --- a/code/modules/mob/living/silicon/ai/death.dm +++ b/code/modules/mob/living/silicon/ai/death.dm @@ -13,16 +13,22 @@ var/callshuttle = 0 for(var/obj/machinery/computer/communications/commconsole in world) + if(commconsole.z == 2) + continue if(istype(commconsole.loc,/turf)) break callshuttle++ for(var/obj/item/weapon/circuitboard/communications/commboard in world) + if(commboard.z == 2) + continue if(istype(commboard.loc,/turf) || istype(commboard.loc,/obj/item/weapon/storage)) break callshuttle++ for(var/mob/living/silicon/ai/shuttlecaller in world) + if(shuttlecaller.z == 2) + continue if(!shuttlecaller.stat && shuttlecaller.client && istype(shuttlecaller.loc,/turf)) break callshuttle++ @@ -53,5 +59,5 @@ if (key) spawn(50) if(key && stat == 2) - client.verbs += /client/proc/ghost + client.verbs += /mob/proc/ghost return ..(gibbed) diff --git a/code/modules/mob/living/silicon/ai/login.dm b/code/modules/mob/living/silicon/ai/login.dm index 2e32d8d2a88..8e1c1c1f081 100644 --- a/code/modules/mob/living/silicon/ai/login.dm +++ b/code/modules/mob/living/silicon/ai/login.dm @@ -22,7 +22,7 @@ src.client.eye = src.loc src.client.perspective = EYE_PERSPECTIVE if (src.stat == 2) - src.verbs += /client/proc/ghost + src.verbs += /mob/proc/ghost else for(var/obj/machinery/ai_status_display/O in world) //change status spawn(0) diff --git a/code/modules/mob/living/silicon/ai/logout.dm b/code/modules/mob/living/silicon/ai/logout.dm index 13daf5d31bd..cf32ea51dae 100644 --- a/code/modules/mob/living/silicon/ai/logout.dm +++ b/code/modules/mob/living/silicon/ai/logout.dm @@ -8,5 +8,5 @@ src.client.eye = src.loc src.client.perspective = EYE_PERSPECTIVE if (src.stat == 2) - src.verbs += /client/proc/ghost + src.verbs += /mob/proc/ghost return \ No newline at end of file diff --git a/code/modules/mob/living/silicon/robot/death.dm b/code/modules/mob/living/silicon/robot/death.dm index da0b5dce4e9..397a403a2b8 100644 --- a/code/modules/mob/living/silicon/robot/death.dm +++ b/code/modules/mob/living/silicon/robot/death.dm @@ -72,5 +72,5 @@ if (src.key) spawn(50) if(src.key && src.stat == 2) - src.verbs += /client/proc/ghost + src.verbs += /mob/proc/ghost return ..(gibbed) \ No newline at end of file diff --git a/code/modules/mob/living/silicon/robot/login.dm b/code/modules/mob/living/silicon/robot/login.dm index f9439a0b14e..898c15e4b14 100644 --- a/code/modules/mob/living/silicon/robot/login.dm +++ b/code/modules/mob/living/silicon/robot/login.dm @@ -7,7 +7,7 @@ src.client.eye = src.loc src.client.perspective = EYE_PERSPECTIVE if (src.stat == 2) - src.verbs += /client/proc/ghost + src.verbs += /mob/proc/ghost if(src.real_name == "Cyborg") src.ident = rand(1, 999) src.real_name += " "