From ba18f631c06b2d83cc67e3d3aaedc5a458f6e814 Mon Sep 17 00:00:00 2001 From: "johnsonmt88@gmail.com" Date: Wed, 11 Jul 2012 19:55:20 +0000 Subject: [PATCH] Emergency Field Generators are now live! - Now have an emp_act - Can now be (un)locked by engineering IDs Reverted ghosts getting mob attack logs and moving the ghost verb to clients - This should fix the ghosting issues, but it's possible I've missed something. If there's any problems ping me(Nodrak) in #coderbus on IRC and I'll fix it. - Attack logs moving to ghosts would be an amazing feature, it's not that admins can't get that information already but it makes it much easier. If it can be implemented without all of these bugs, it'd defiantly be an asset - Fixes Issue 647 Removed logging from the cremator as it was causing runtimes and the cremator to lock up. Fixes Issue 649 Fixed an issue with unjobbanning players. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4044 316c924e-a436-60f5-8080-3fe189b3f50e --- code/game/machinery/cloning.dm | 1 - code/game/machinery/morgue.dm | 7 +-- code/game/machinery/shieldgen.dm | 52 +++++++++++++++++-- code/modules/admin/admin.dm | 4 +- code/modules/mob/dead/observer/observer.dm | 14 ++--- .../mob/living/carbon/alien/humanoid/death.dm | 2 +- .../mob/living/carbon/alien/humanoid/login.dm | 4 +- .../mob/living/carbon/alien/larva/death.dm | 2 +- .../mob/living/carbon/alien/larva/login.dm | 2 +- code/modules/mob/living/carbon/brain/brain.dm | 2 +- code/modules/mob/living/carbon/brain/death.dm | 2 +- code/modules/mob/living/carbon/human/death.dm | 4 +- code/modules/mob/living/carbon/human/login.dm | 2 +- .../mob/living/carbon/metroid/death.dm | 2 +- .../mob/living/carbon/metroid/login.dm | 2 +- .../modules/mob/living/carbon/monkey/death.dm | 2 +- .../modules/mob/living/carbon/monkey/login.dm | 2 +- code/modules/mob/living/silicon/ai/death.dm | 8 ++- code/modules/mob/living/silicon/ai/login.dm | 2 +- code/modules/mob/living/silicon/ai/logout.dm | 2 +- .../modules/mob/living/silicon/robot/death.dm | 2 +- .../modules/mob/living/silicon/robot/login.dm | 2 +- 22 files changed, 82 insertions(+), 40 deletions(-) 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 += " "