mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-18 10:33:30 +01:00
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:
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -227,6 +227,7 @@
|
||||
<a href='?src=\ref[tension_master];addScore=1'>Increase Tension by 50000</a><br>
|
||||
<B>Tension per player:</B> [tension_master.score/tension_master.get_num_players()]<BR>
|
||||
<B>Tensioner Debug Data:</B> R1:[tension_master.round1] R2:[tension_master.round2] R3:[tension_master.round3] R4:[tension_master.round4] ES: [tension_master.eversupressed] CD: [tension_master.cooldown]<br>
|
||||
<B>Current Tensioner Status: [config.Tensioner_Active]. <a href='?src=\ref[tension_master];ToggleStatus=1'>Toggle?</a><br>"
|
||||
<B>Recommendations:</B> All the modes. All of them. Press all of them.<BR>
|
||||
<BR>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user