From 33e89762740053c68f0a7dc2afbc3d95a751bfe8 Mon Sep 17 00:00:00 2001 From: Giacomand Date: Wed, 10 Jul 2013 01:49:06 +0100 Subject: [PATCH] Removed the nuke code. You cannot nuke the station anymore. Added a Jump to Node power. Cleaned up the code. Changed some more values. Added a blob_act() to camera. Removed most "if(gamemode == "blob") checks to stop people from using it to metagame. Removed cells exploding when being blob_act()'d --- code/game/gamemodes/blob/blob.dm | 23 +++----- code/game/gamemodes/blob/blobs/core.dm | 5 +- code/game/gamemodes/blob/overmind.dm | 3 +- code/game/gamemodes/blob/powers.dm | 53 +++++++++++-------- code/game/machinery/camera/camera.dm | 1 + .../game/machinery/computer/communications.dm | 6 +-- code/game/objects/items/weapons/AI_modules.dm | 4 -- code/modules/admin/topic.dm | 3 -- code/modules/power/cell.dm | 3 +- 9 files changed, 46 insertions(+), 55 deletions(-) diff --git a/code/game/gamemodes/blob/blob.dm b/code/game/gamemodes/blob/blob.dm index f3cd5477303..65b37d74c0c 100644 --- a/code/game/gamemodes/blob/blob.dm +++ b/code/game/gamemodes/blob/blob.dm @@ -24,8 +24,8 @@ var/list/blob_nodes = list() var/players_per_core = 26 var/blob_count = 0 - var/blobnukecount = 200//Might be a bit low - var/blobwincount = 400//Still needs testing + var/blobnukecount = 300//Might be a bit low + var/blobwincount = 600//Still needs testing var/list/infected_crew = list() @@ -64,11 +64,6 @@ var/list/blob_nodes = list() world << "You must kill it all while minimizing the damage to the station." -/datum/game_mode/blob/process() - if(declared == 1) - stage(2) // check for win conditions - return - /datum/game_mode/blob/proc/greet_blob(var/datum/mind/blob) blob.current << "\red You are infected by the Blob!" blob.current << "You're body is ready to give spawn to a new blob core which will eat this station." @@ -82,6 +77,9 @@ var/list/blob_nodes = list() for(var/datum/mind/blob in infected_crew) greet_blob(blob) + if(emergency_shuttle) + emergency_shuttle.always_fake_recall = 1 + spawn(10) start_state = new /datum/station_state() start_state.count() @@ -123,7 +121,7 @@ var/list/blob_nodes = list() stage(0) // Stage 1 - sleep(5000) + sleep(4000) stage(1) ..() @@ -149,14 +147,5 @@ var/list/blob_nodes = list() M << sound('sound/AI/outbreak5.ogg') return - if (2) - if((blobs.len > blobnukecount) && (declared == 1)) - command_alert("Uncontrolled spread of the biohazard onboard the station. We have issued directive 7-12 for [station_name()]. Any living Heads of Staff are ordered to enact directive 7-12 at any cost, a print out with detailed instructions has been sent to your communications computers.", "Biohazard Alert") - send_intercept(2) - declared = 2 - spawn(20) - set_security_level("delta") - - return diff --git a/code/game/gamemodes/blob/blobs/core.dm b/code/game/gamemodes/blob/blobs/core.dm index 9769d1560ab..2d2c8a41e6e 100644 --- a/code/game/gamemodes/blob/blobs/core.dm +++ b/code/game/gamemodes/blob/blobs/core.dm @@ -7,6 +7,7 @@ fire_resist = 2 var/mob/camera/blob/overmind = null // the blob core's overmind var/overmind_get_delay = 0 // we don't want to constantly try to find an overmind, do it every 30 seconds + var/resource_delay = 0 New(loc, var/h = 200, var/client/new_overmind = null) blob_cores += src @@ -38,7 +39,9 @@ if(!overmind) create_overmind() else - overmind.add_points(2) + if(resource_delay <= world.time) + resource_delay = world.time + 10 // 1 second + overmind.add_points(2) health = min(initial(health), health + 1) for(var/i = 1; i < 8; i += i) Pulse(0, i) diff --git a/code/game/gamemodes/blob/overmind.dm b/code/game/gamemodes/blob/overmind.dm index cb9b4202362..dcfc59e1e72 100644 --- a/code/game/gamemodes/blob/overmind.dm +++ b/code/game/gamemodes/blob/overmind.dm @@ -9,10 +9,9 @@ invisibility = INVISIBILITY_OBSERVER pass_flags = PASSBLOB - var/creating_blob = 0 - var/obj/effect/blob/core/blob_core = null // The blob overmind's core faction = "blob" + var/obj/effect/blob/core/blob_core = null // The blob overmind's core var/blob_points = 0 var/max_blob_points = 100 diff --git a/code/game/gamemodes/blob/powers.dm b/code/game/gamemodes/blob/powers.dm index 20817196029..c755b94dd17 100644 --- a/code/game/gamemodes/blob/powers.dm +++ b/code/game/gamemodes/blob/powers.dm @@ -13,7 +13,7 @@ // Power verbs -/mob/camera/blob/verb/transport() +/mob/camera/blob/verb/transport_core() set category = "Blob" set name = "Return to Core" set desc = "Transport back to your core." @@ -21,6 +21,19 @@ if(blob_core) src.loc = blob_core.loc +/mob/camera/blob/verb/jump_to_node() + set category = "Blob" + set name = "Jump to Node" + set desc = "Transport back to your core." + + if(blob_nodes.len) + var/list/nodes = list() + for(var/i = 1; i <= blob_nodes.len; i++) + nodes["Blob Node #[i]"] = blob_nodes[i] + var/node_name = input(src, "Choose a node to jump to.", "Node Jump") in nodes + var/obj/effect/blob/node/chosen_node = nodes[node_name] + if(chosen_node) + src.loc = chosen_node.loc /mob/camera/blob/verb/create_shield() set category = "Blob" @@ -36,11 +49,11 @@ var/obj/effect/blob/B = (locate(/obj/effect/blob) in T) if(!B)//We are on a blob - usr << "There is no blob here!" + src << "There is no blob here!" return if(!istype(B, /obj/effect/blob/normal)) - usr << "Unable to use this blob, find a normal one." + src << "Unable to use this blob, find a normal one." return if(!can_buy(10)) @@ -53,7 +66,7 @@ /mob/camera/blob/verb/create_resource() set category = "Blob" - set name = "Create Resource Blob (20)" + set name = "Create Resource Blob (40)" set desc = "Create a resource tower which will generate points for you." @@ -65,18 +78,18 @@ var/obj/effect/blob/B = (locate(/obj/effect/blob) in T) if(!B)//We are on a blob - usr << "There is no blob here!" + src << "There is no blob here!" return if(!istype(B, /obj/effect/blob/normal)) - usr << "Unable to use this blob, find a normal one." + src << "Unable to use this blob, find a normal one." return for(var/obj/effect/blob/resource/blob in orange(3)) - usr << "There is a resource blob nearby, move more than 3 tiles away from it!" + src << "There is a resource blob nearby, move more than 3 tiles away from it!" return - if(!can_buy(20)) + if(!can_buy(40)) return @@ -101,15 +114,15 @@ var/obj/effect/blob/B = (locate(/obj/effect/blob) in T) if(!B)//We are on a blob - usr << "There is no blob here!" + src << "There is no blob here!" return if(!istype(B, /obj/effect/blob/normal)) - usr << "Unable to use this blob, find a normal one." + src << "Unable to use this blob, find a normal one." return for(var/obj/effect/blob/node/blob in orange(4)) - usr << "There is another node nearby, move more than 4 tiles away from it!" + src << "There is another node nearby, move more than 4 tiles away from it!" return if(!can_buy(60)) @@ -133,15 +146,15 @@ var/obj/effect/blob/B = locate(/obj/effect/blob) in T if(!B) - usr << "You must be on a blob!" + src << "You must be on a blob!" return if(!istype(B, /obj/effect/blob/normal)) - usr << "Unable to use this blob, find a normal one." + src << "Unable to use this blob, find a normal one." return for(var/obj/effect/blob/factory/blob in orange(6)) - usr << "There is a factory blob nearby, move more than 6 tiles away from it!" + src << "There is a factory blob nearby, move more than 6 tiles away from it!" return if(!can_buy(60)) @@ -155,7 +168,6 @@ set category = "Blob" set name = "Remove Blob (0)" set desc = "Removes a blob." - if(creating_blob) return var/turf/T = get_turf(src) if(!T) @@ -163,11 +175,11 @@ var/obj/effect/blob/B = locate(/obj/effect/blob) in T if(!B) - usr << "You must be on a blob!" + src << "You must be on a blob!" return if(istype(B, /obj/effect/blob/core)) - usr << "Unable to use this blob, find another one." + src << "Unable to use this blob, find another one." return B.change_to(/obj/effect/blob) @@ -178,7 +190,7 @@ set category = "Blob" set name = "Expand Blob (5)" set desc = "Attempts to create a new blob in this tile. If the tile isn't clear we will attack it, which might clear it." - if(creating_blob) return + var/turf/T = get_turf(src) if(!T) @@ -186,12 +198,12 @@ var/obj/effect/blob/B = locate() in T if(B) - usr << "There is a blob here!" + src << "There is a blob here!" return var/obj/effect/blob/OB = locate() in circlerange(src, 1) if(!OB) - usr << "There is no blob adjacent to you." + src << "There is no blob adjacent to you." return if(!can_buy(5)) @@ -204,7 +216,6 @@ set category = "Blob" set name = "Rally Spores (5)" set desc = "Rally the spores to move to your location." - if(creating_blob) return if(!can_buy(5)) return diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 0a789b2cf21..f0ef6f1907b 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -91,6 +91,7 @@ return /obj/machinery/camera/blob_act() + del(src) return /obj/machinery/camera/proc/setViewRange(var/num = 7) diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 6f3190f9ee1..ff0e2a25da4 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -456,10 +456,6 @@ user << "The emergency shuttle is already on its way." return - if(ticker.mode.name == "blob") - user << "Under directive 7-10, [station_name()] is quarantined until further notice." - return - emergency_shuttle.incall() log_game("[key_name(user)] has called the shuttle.") message_admins("[key_name_admin(user)] has called the shuttle.", 1) @@ -472,7 +468,7 @@ /proc/cancel_call_proc(var/mob/user) if ((!( ticker ) || emergency_shuttle.location || emergency_shuttle.direction == 0 || emergency_shuttle.timeleft() < 300)) return - if((ticker.mode.name == "blob")||(ticker.mode.name == "meteor")) + if(ticker.mode.name == "meteor") return if(emergency_shuttle.direction != -1 && emergency_shuttle.online) //check that shuttle isn't already heading to centcom diff --git a/code/game/objects/items/weapons/AI_modules.dm b/code/game/objects/items/weapons/AI_modules.dm index 888c2e126f2..3b1f70d7199 100644 --- a/code/game/objects/items/weapons/AI_modules.dm +++ b/code/game/objects/items/weapons/AI_modules.dm @@ -34,10 +34,6 @@ AI MODULES usr << "You haven't selected an AI to transmit laws to!" return - if(ticker && ticker.mode && ticker.mode.name == "blob") - usr << "Law uploads have been disabled by NanoTrasen!" - return - if (comp.current.stat == 2 || comp.current.control_disabled == 1) usr << "Upload failed. No signal is being detected from the AI." else if (comp.current.see_in_dark == 0) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 6b3b4d5e1d1..0c7c24a7578 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -231,9 +231,6 @@ else if(href_list["call_shuttle"]) if(!check_rights(R_ADMIN)) return - if( ticker.mode.name == "blob" ) - alert("You can't call the shuttle during blob!") - return switch(href_list["call_shuttle"]) if("1") diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index 0eabed3c341..055e62d9ca0 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -140,8 +140,7 @@ return /obj/item/weapon/cell/blob_act() - if(prob(75)) - explode() + ex_act(1) /obj/item/weapon/cell/proc/get_electrocute_damage() switch (charge)