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
This commit is contained in:
VivianFoxfoot@gmail.com
2012-03-16 22:20:50 +00:00
parent 22d451be9b
commit bf061913c7
7 changed files with 96 additions and 33 deletions
+27 -13
View File
@@ -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
+7 -7
View File
@@ -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]).")
..()
@@ -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"
+17 -12
View File
@@ -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