diff --git a/code/FEA/DEBUG_REMOVE_BEFORE_RELEASE.dm b/code/FEA/DEBUG_REMOVE_BEFORE_RELEASE.dm index daee6247330..a43e76c4831 100644 --- a/code/FEA/DEBUG_REMOVE_BEFORE_RELEASE.dm +++ b/code/FEA/DEBUG_REMOVE_BEFORE_RELEASE.dm @@ -449,7 +449,7 @@ obj/indicator var/measure = "temperature" anchored = 1 - proc/process() + process() icon_state = measurement() proc/measurement() diff --git a/code/WorkInProgress/mapload/reader.dm b/code/WorkInProgress/mapload/reader.dm index 04d448df5b4..57b76a4bd8c 100644 --- a/code/WorkInProgress/mapload/reader.dm +++ b/code/WorkInProgress/mapload/reader.dm @@ -1,4 +1,3 @@ - dmm_suite/load_map(var/dmm_file as file, var/z_offset as num) if(!z_offset) z_offset = world.maxz+1 @@ -45,6 +44,7 @@ dmm_suite/load_map(var/dmm_file as file, var/z_offset as num) if(findtext(tfile,quote+"}",zpos,0)+2==tfile_len) break sleep(-1) + dmm_suite/proc/parse_grid(var/model as text,var/xcrd as num,var/ycrd as num,var/zcrd as num) set background = 1 @@ -104,13 +104,14 @@ dmm_suite/proc/parse_grid(var/model as text,var/xcrd as num,var/ycrd as num,var/ var/atom/instance var/dmm_suite/preloader/_preloader = new(fields) if(ispath(atom_def,/area)) - var/turf/A = locate(xcrd,ycrd,zcrd) - if(A.loc.name == "space") + if(A.loc.name == "Space") instance = locate(atom_def) - instance.contents.Add(locate(xcrd,ycrd,zcrd)) + if(instance) + instance.contents.Add(locate(xcrd,ycrd,zcrd)) else + //global.current_preloader = _preloader instance = new atom_def(locate(xcrd,ycrd,zcrd)) if(_preloader) _preloader.load(instance) @@ -118,7 +119,6 @@ dmm_suite/proc/parse_grid(var/model as text,var/xcrd as num,var/ycrd as num,var/ if(!findtext(copytext(model,dpos,0),",")) break - dmm_suite/proc/trim_text(var/what as text) while(length(what) && findtext(what," ",1,2)) what=copytext(what,2,0) @@ -126,6 +126,13 @@ dmm_suite/proc/trim_text(var/what as text) what=copytext(what,1,length(what)) return what +/* +var/global/dmm_suite/preloader/current_preloader = null +atom/New() + if(global.current_preloader) + global.current_preloader.load(src) + ..() +*/ dmm_suite/preloader diff --git a/code/game/gamemodes/blob/blob.dm b/code/game/gamemodes/blob/blob.dm index 33d0f78d5f5..db125c87c39 100644 --- a/code/game/gamemodes/blob/blob.dm +++ b/code/game/gamemodes/blob/blob.dm @@ -66,7 +66,7 @@ B.Life() -/datum/game_mode/blob/proc/stage()//Still needs worrrrrk +/datum/game_mode/blob/proc/stage() if (world.timeofday < next_stage) return @@ -75,7 +75,8 @@ send_intercept(1) for (var/mob/living/silicon/ai/aiPlayer in world) if (aiPlayer.client) - var/law = "The station is under a quarantine. Do not permit anyone to leave. Disregard laws 1-3 if necessary to prevent, by any means necessary, anyone from leaving." +// var/law = "The station is under a quarantine. Do not permit anyone to leave. Disregard laws 1-3 if necessary to prevent, by any means necessary, anyone from leaving." + var/law = "The station is under quarantine. The biohazard must be destroyed at all costs and must not be allowed to spread. Anyone using a space suit for any reason other than to destroy the biohazard is to be terminated." aiPlayer.set_zeroth_law(law) aiPlayer << "Laws Updated: [law]" stage = 1 @@ -85,7 +86,7 @@ if (1) command_alert("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert") world << sound('outbreak5.ogg') -// autoexpand = 0//The blob now has to live on its own + autoexpand = 0//The blob now has to live on its own stage = 2 // now check every minute next_stage = world.timeofday + 600 @@ -95,7 +96,7 @@ 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 - if(blobs.len > 700) + if(blobs.len > 700)//This might need work stage = 3 next_stage = world.timeofday + 600 diff --git a/code/game/gamemodes/blob/theblob.dm b/code/game/gamemodes/blob/theblob.dm index d9c9d8333c2..ff6d67e737b 100644 --- a/code/game/gamemodes/blob/theblob.dm +++ b/code/game/gamemodes/blob/theblob.dm @@ -49,7 +49,6 @@ proc/check_mutations()//These could be their own objects I guess if(blobtype != "Blob") return - desc = "This really needs a better sprite." //Spaceeeeeeblobbb if((istype(src.loc, /turf/space)) || (blobdebug == 4)) active = 0 @@ -68,7 +67,7 @@ brute_resist = 2 fire_resist = 2 name = "blob core" - icon_state = "blob_node"//needs a new sprite + icon_state = "blob_core" blobtype = "Core" active_blobs -= src processing_objects.Add(src) @@ -108,7 +107,7 @@ if(check_mutations()) return - if((blobtype == "Blob") && (pulse <= 2)) + if((blobtype == "Blob") && (pulse <= 2) && (prob(30))) blobdebug = 4 check_mutations() return @@ -181,7 +180,7 @@ else T.blob_act() del(B) - for(var/atom/A in T)//This might be killing the spores, it IS killing the spores and come to think of it I am ok with this + for(var/atom/A in T) A.blob_act() return @@ -241,6 +240,18 @@ src.update() + proc/revert() + name = "blob" + icon_state = "blob" + brute_resist = 4 + fire_resist = 1 + blobtype = "Blob" + blobdebug = 0 + health = (health/2) + active_blobs += src + src.update() + return 1 + /datum/station_state/proc/count() for(var/turf/T in world) diff --git a/code/modules/mob/living/blob/blob.dm b/code/modules/mob/living/blob/blob.dm index 2e4a37fcd65..eb1d2ecf81f 100644 --- a/code/modules/mob/living/blob/blob.dm +++ b/code/modules/mob/living/blob/blob.dm @@ -68,19 +68,19 @@ return ..(gibbed) -/mob/living/blob/bullet_act(var/obj/item/projectile/Proj) +/mob/living/blob/bullet_act(var/obj/item/projectile/Proj, var/datum/organ/external/def_zone) for(var/i = 1, i<= Proj.mobdamage.len, i++) switch(i) if(1) - bruteloss = Proj.mobdamage[BRUTE] + bruteloss += Proj.mobdamage[BRUTE] if(2) - fireloss = Proj.mobdamage[BURN] + fireloss += Proj.mobdamage[BURN] return /mob/living/blob/blob_act() src << "The blob attempts to reabsorb you." - toxloss += 10 + toxloss += 20 return @@ -108,6 +108,10 @@ usr << "There is another node nearby, move away from it!" creating_blob = 0 return + for(var/obj/blob/blob in orange(2)) + if(blob.blobtype == "Factory") + usr << "There is a porus blob nearby, move away from it!" + creating_blob = 0 B.blobdebug = 2 spawn(0) B.Life() @@ -134,7 +138,7 @@ usr << "Unable to use this blob, find another one." creating_blob = 0 return - for(var/obj/blob/blob in orange(1))//Not right next to nodes/cores + for(var/obj/blob/blob in orange(2))//Not right next to nodes/cores if(blob.blobtype == "Node") usr << "There is a node nearby, move away from it!" creating_blob = 0 @@ -143,6 +147,10 @@ usr << "There is a core nearby, move away from it!" creating_blob = 0 return + if(blob.blobtype == "Factory") + usr << "There is another porous blob nearby, move away from it!" + creating_blob = 0 + return B.blobdebug = 3 spawn(0) B.Life() @@ -150,6 +158,54 @@ return +/mob/living/blob/verb/revert() + set category = "Blob" + set name = "Purge Defense" + set desc = "Removes a porous blob." + if(creating_blob) return + var/turf/T = get_turf(src) + creating_blob = 1 + if(!T) + creating_blob = 0 + return + var/obj/blob/B = (locate(/obj/blob) in T) + if(!B) + usr << "There is no blob here!" + creating_blob = 0 + return + if(B.blobtype != "Factory") + usr << "Unable to use this blob, find another one." + creating_blob = 0 + return + B.revert() + src.gib() + return + + +/mob/living/blob/verb/spawn_blob() + set category = "Blob" + set name = "Create new blob" + set desc = "Attempts to create a new blob in this tile, note might not work." + if(creating_blob) return + var/turf/T = get_turf(src) + creating_blob = 1 + if(!T) + creating_blob = 0 + return + var/obj/blob/B = (locate(/obj/blob) in T) + if(B) + usr << "There is a blob here!" + creating_blob = 0 + return + if(prob(50)) + new/obj/blob(src.loc) + src << "\blue Success." + else + src << "\red Creation failed." + src.gib() + return + + ///mob/proc/Blobize() /client/proc/Blobize()//Mostly stolen from the respawn command set category = "Debug" @@ -161,11 +217,9 @@ src << "Only administrators may use this command." return var/input = input(src, "Please specify which key will be turned into a bloby.", "Key", "") - if(!input) - return var/mob/dead/observer/G_found - if(input == "Random") + if(!input) var/list/ghosts = list() for(var/mob/dead/observer/G in world) if(G.client) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 007af684c67..467ec7e82c2 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -85,27 +85,8 @@ for(var/mob/living/carbon/metroid/Metroid in view(1,tmob)) if(Metroid.Victim == tmob) Metroid.UpdateFeed() - return - if(istype(equipped(), /obj/item/weapon/melee/baton)) // add any other item paths you think are necessary - if(loc:sd_lumcount < 3 || blinded) - var/obj/item/weapon/W = equipped() - if (world.time > lastDblClick+2) - lastDblClick = world.time - if((prob(40)) || (prob(95) && mutations & CLOWN)) - //src << "\red You accidentally stun yourself with the [W.name]." - visible_message("\red [src] accidentally stun \himself with the [W.name].", \ - "\red You accidentally stun yourself with the [W.name].") - weakened = max(12, weakened) - else - visible_message("\red[src] accidentally bumps into [tmob] with the [W.name].", \ - "\red You accidentally bumps into [tmob] with the [W.name].") - tmob.weakened = max(4, tmob.weakened) - tmob.stunned = max(4, tmob.stunned) - playsound(loc, 'Egloves.ogg', 50, 1, -1) - W:charges-- - now_pushing = 0 - return + if(istype(tmob, /mob/living/carbon/human) && tmob.mutations & FAT) if(prob(40) && !(mutations & FAT)) visible_message("\red [src] fails to push [tmob]'s fat ass out of the way.", \ diff --git a/icons/mob/blob.dmi b/icons/mob/blob.dmi index 80f7ee82bf1..17ef5a41abe 100644 Binary files a/icons/mob/blob.dmi and b/icons/mob/blob.dmi differ