From bf061913c7ee4aae1eba9115cdf722b9a830f8df Mon Sep 17 00:00:00 2001 From: "VivianFoxfoot@gmail.com" Date: Fri, 16 Mar 2012 22:20:50 +0000 Subject: [PATCH] Adds an admin verb that fully sets up the singlo (for testing/debugging msotly) Fixes the tensioner occasionally attempting to turn cyborgs into malf AIs. Adds checks to space ninja during its objective creation. Fixes that fucking message when you're carrying the disk in outer space Nuke disk now respawns in all rounds. Adds the abiity to turn off the tensioner for the entire round. Pinpointers now show the remaining time until a nuke goes off if it's been armed when examined Nuclear bombs now have a minimum detonation time of one minute. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3312 316c924e-a436-60f5-8080-3fe189b3f50e --- code/datums/helper_datums/tension.dm | 5 ++- code/game/gamemodes/events/space_ninja.dm | 40 +++++++++++++++------- code/game/gamemodes/nuclear/nuclearbomb.dm | 14 ++++---- code/game/gamemodes/nuclear/pinpointer.dm | 6 ++++ code/game/turf.dm | 29 +++++++++------- code/modules/admin/admin_verbs.dm | 34 ++++++++++++++++++ code/modules/admin/verbs/diagnostics.dm | 1 + 7 files changed, 96 insertions(+), 33 deletions(-) diff --git a/code/datums/helper_datums/tension.dm b/code/datums/helper_datums/tension.dm index 0a5a7a153c6..a10682869d7 100644 --- a/code/datums/helper_datums/tension.dm +++ b/code/datums/helper_datums/tension.dm @@ -228,6 +228,9 @@ var/global/datum/tension/tension_master spawn(6000) supress = 0 + else if (href_list["ToggleStatus"]) + config.Tensioner_Active = !config.Tensioner_Active + proc/makeMalfAImode() @@ -235,7 +238,7 @@ var/global/datum/tension/tension_master var/mob/living/silicon/malfAI = null var/datum/mind/themind = null - for(var/mob/living/silicon/ai in world) + for(var/mob/living/silicon/ai/ai in world) if(ai.client) AIs += ai diff --git a/code/game/gamemodes/events/space_ninja.dm b/code/game/gamemodes/events/space_ninja.dm index f39138fd25c..e7ffe922c50 100644 --- a/code/game/gamemodes/events/space_ninja.dm +++ b/code/game/gamemodes/events/space_ninja.dm @@ -187,7 +187,7 @@ Malf AIs/silicons aren't added. Monkeys aren't added. Messes with objective comp if(sent_strike_team&&side=="heel"&&antagonist_list.len)//If a strike team was sent, murder them all like a champ. for(current_mind in antagonist_list)//Search and destroy. Since we already have an antagonist list, they should appear there. - if(current_mind.special_role=="Death Commando") + if(current_mind && current_mind.special_role=="Death Commando") commando_list += current_mind if(commando_list.len)//If there are living commandos still in play. for(var/mob/living/carbon/human/commando in commando_list) @@ -232,10 +232,14 @@ In either case, it's a good idea to spawn the ninja with a semi-random set of ob if(1)//kill current_mind = pick(hostile_targets) - var/datum/objective/assassinate/ninja_objective = new - ninja_objective.owner = ninja_mind - ninja_objective.find_target_by_role((current_mind.special_role ? current_mind.special_role : current_mind.assigned_role),(current_mind.special_role?1:0))//If they have a special role, use that instead to find em. - ninja_mind.objectives += ninja_objective + if(current_mind) + var/datum/objective/assassinate/ninja_objective = new + ninja_objective.owner = ninja_mind + ninja_objective.find_target_by_role((current_mind.special_role ? current_mind.special_role : current_mind.assigned_role),(current_mind.special_role?1:0))//If they have a special role, use that instead to find em. + ninja_mind.objectives += ninja_objective + + else + i++ hostile_targets -= current_mind//Remove them from the list. if(2)//Steal @@ -248,19 +252,29 @@ In either case, it's a good idea to spawn the ninja with a semi-random set of ob if(3)//Protect. Keeping people alive can be pretty difficult. current_mind = pick(friendly_targets) - var/datum/objective/protect/ninja_objective = new - ninja_objective.owner = ninja_mind - ninja_objective.find_target_by_role((current_mind.special_role ? current_mind.special_role : current_mind.assigned_role),(current_mind.special_role?1:0)) - ninja_mind.objectives += ninja_objective + if(current_mind) + + var/datum/objective/protect/ninja_objective = new + ninja_objective.owner = ninja_mind + ninja_objective.find_target_by_role((current_mind.special_role ? current_mind.special_role : current_mind.assigned_role),(current_mind.special_role?1:0)) + ninja_mind.objectives += ninja_objective + + else + i++ friendly_targets -= current_mind if(4)//Debrain current_mind = pick(hostile_targets) - var/datum/objective/debrain/ninja_objective = new - ninja_objective.owner = ninja_mind - ninja_objective.find_target_by_role((current_mind.special_role ? current_mind.special_role : current_mind.assigned_role),(current_mind.special_role?1:0)) - ninja_mind.objectives += ninja_objective + if(current_mind) + + var/datum/objective/debrain/ninja_objective = new + ninja_objective.owner = ninja_mind + ninja_objective.find_target_by_role((current_mind.special_role ? current_mind.special_role : current_mind.assigned_role),(current_mind.special_role?1:0)) + ninja_mind.objectives += ninja_objective + + else + i++ hostile_targets -= current_mind//Remove them from the list. if(5)//Download research diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm index e6880eb09a7..a4492b2b3d7 100644 --- a/code/game/gamemodes/nuclear/nuclearbomb.dm +++ b/code/game/gamemodes/nuclear/nuclearbomb.dm @@ -112,7 +112,7 @@ if (href_list["time"]) var/time = text2num(href_list["time"]) src.timeleft += time - src.timeleft = min(max(round(src.timeleft), 5), 600) + src.timeleft = min(max(round(src.timeleft), 60), 600) if (href_list["timer"]) if (src.timing == -1.0) return @@ -217,9 +217,9 @@ /obj/item/weapon/disk/nuclear/Del() - if (ticker.mode && ticker.mode.name == "nuclear emergency") - if(blobstart.len > 0) - var/obj/D = new /obj/item/weapon/disk/nuclear(pick(blobstart)) - message_admins("[src] has been destroyed. Spawning [D] at ([D.x], [D.y], [D.z]).") - log_game("[src] has been destroyed. Spawning [D] at ([D.x], [D.y], [D.z]).") - ..() +// if (ticker.mode && ticker.mode.name == "nuclear emergency") + if(blobstart.len > 0) + var/obj/D = new /obj/item/weapon/disk/nuclear(pick(blobstart)) + message_admins("[src] has been destroyed. Spawning [D] at ([D.x], [D.y], [D.z]).") + log_game("[src] has been destroyed. Spawning [D] at ([D.x], [D.y], [D.z]).") +..() diff --git a/code/game/gamemodes/nuclear/pinpointer.dm b/code/game/gamemodes/nuclear/pinpointer.dm index 47fb555059e..e0dd9ed0544 100644 --- a/code/game/gamemodes/nuclear/pinpointer.dm +++ b/code/game/gamemodes/nuclear/pinpointer.dm @@ -41,6 +41,12 @@ icon_state = "pinonfar" spawn(5) .() + examine() + ..() + for(var/obj/machinery/nuclearbomb/bomb in world) + if(bomb.timing) + usr << "Extreme danger. Arming signal detected. Time remaining: [bomb.timeleft]" + /obj/item/weapon/pinpointer/advpinpointer name = "Advanced Pinpointer" diff --git a/code/game/turf.dm b/code/game/turf.dm index 7aa015542db..a5c9b66c80e 100644 --- a/code/game/turf.dm +++ b/code/game/turf.dm @@ -1269,18 +1269,8 @@ turf/simulated/floor/return_siding_icon_state() // Okay, so let's make it so that people can travel z levels but not nuke disks! // if(ticker.mode.name == "nuclear emergency") return - - if(istype(A, /obj/item/weapon/disk/nuclear)) // Don't let nuke disks travel Z levels - return - - if(!isemptylist(A.search_contents_for(/obj/item/weapon/disk/nuclear))) - if(istype(A, /mob/living)) - var/mob/living/MM = A - if(MM.client) - MM << "\red Something you are carrying is preventing you from leaving. Don't play stupid; you know exactly what it is." - return - - else if(ticker.mode.name == "extended"||ticker.mode.name == "sandbox") Sandbox_Spacemove(A) + if(ticker.mode.name == "extended"||ticker.mode.name == "sandbox") + Sandbox_Spacemove(A) else if (src.x <= 2 || A.x >= (world.maxx - 1) || src.y <= 2 || A.y >= (world.maxy - 1)) @@ -1288,6 +1278,18 @@ turf/simulated/floor/return_siding_icon_state() del(A) return + if(istype(A, /obj/item/weapon/disk/nuclear)) // Don't let nuke disks travel Z levels ... And moving this shit down here so it only fires when they're actually trying to change z-level. + return + + if(!isemptylist(A.search_contents_for(/obj/item/weapon/disk/nuclear))) + if(istype(A, /mob/living)) + var/mob/living/MM = A + if(MM.client) + MM << "\red Something you are carrying is preventing you from leaving. Don't play stupid; you know exactly what it is." + return + + + var/move_to_z_str = pickweight(accessable_z_levels) var/move_to_z = text2num(move_to_z_str) @@ -1295,8 +1297,11 @@ turf/simulated/floor/return_siding_icon_state() if(!move_to_z) return + + A.z = move_to_z + if(src.x <= 2) A.x = world.maxx - 2 diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index c8ab5664db1..8868bd5da51 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -205,6 +205,7 @@ verbs += /client/proc/tension_report verbs += /client/proc/jumptocoord verbs += /client/proc/deadmin_self + verbs += /client/proc/startSinglo if (holder.level >= 3)//Trial Admin******************************************************************** verbs += /obj/admins/proc/toggleaban //abandon mob @@ -414,6 +415,7 @@ verbs -= /client/proc/toggle_gravity_off verbs -= /client/proc/toggle_random_events verbs -= /client/proc/deadmin_self + verbs -= /client/proc/startSinglo verbs -= /client/proc/jumptocoord verbs -= /client/proc/everyone_random verbs -= /client/proc/cmd_switch_radio @@ -701,6 +703,38 @@ admins.Remove(src.ckey) usr << "You are now a normal player." +/client/proc/startSinglo() + set name = "Singlo Starter" + set category = "Debug" + set desc = "Starts a self-sustaining, stable singlo. This artifical singlo does not have a gravitational pull." + + for(var/obj/machinery/emitter/E in world) + if(E.anchored) + E.active = 1 + + for(var/obj/machinery/field_generator/F in world) + if(F.anchored) + F.Varedit_start = 1 + spawn(30) + for(var/obj/machinery/the_singularitygen/G in world) + if(G.anchored) + var/obj/machinery/singularity/S = new /obj/machinery/singularity(get_turf(G), 50) + spawn(0) + del(G) + S.energy = 1750 + S.current_size = 7 + S.icon = '224x224.dmi' + S.icon_state = "singularity_s7" + S.pixel_x = -96 + S.pixel_y = -96 + S.grav_pull = 0 + //S.consume_range = 3 + S.dissipate = 0 + //S.dissipate_delay = 10 + //S.dissipate_track = 0 + //S.dissipate_strength = 10 + + /client/proc/hide_most_verbs()//Allows you to keep some functionality while hiding some verbs set name = "Toggle most admin verb visibility" set category = "Admin" diff --git a/code/modules/admin/verbs/diagnostics.dm b/code/modules/admin/verbs/diagnostics.dm index e2285de931b..f585110bf6c 100644 --- a/code/modules/admin/verbs/diagnostics.dm +++ b/code/modules/admin/verbs/diagnostics.dm @@ -227,6 +227,7 @@ Increase Tension by 50000
Tension per player: [tension_master.score/tension_master.get_num_players()]
Tensioner Debug Data: R1:[tension_master.round1] R2:[tension_master.round2] R3:[tension_master.round3] R4:[tension_master.round4] ES: [tension_master.eversupressed] CD: [tension_master.cooldown]
+Current Tensioner Status: [config.Tensioner_Active]. Toggle?
" Recommendations: All the modes. All of them. Press all of them.