diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index d2a22b2dc82..53d7093e514 100644 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -30,7 +30,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station var/lightswitch = 1 var/valid_territory = 1 //If it's a valid territory for gangs to claim - var/blob_legit = 1 //Does it count for blobs score? By default, all areas count. + var/blob_allowed = 1 //Does it count for blobs score? By default, all areas count. var/eject = null @@ -99,7 +99,7 @@ var/list/teleportlocs = list() power_environ = 0 valid_territory = 0 ambientsounds = list('sound/ambience/ambispace.ogg','sound/ambience/title2.ogg',) - blob_legit = 0 //Eating up space doesn't count for victory as a blob. + blob_allowed = 0 //Eating up space doesn't count for victory as a blob. /area/space/nearstation icon_state = "space_near" @@ -167,7 +167,7 @@ var/list/teleportlocs = list() icon_state = "centcom" requires_power = 0 has_gravity = 1 - blob_legit = 0 //Should go without saying, no blobs should take over centcom as a win condition. + blob_allowed = 0 //Should go without saying, no blobs should take over centcom as a win condition. /area/centcom/control name = "Centcom Docks" @@ -194,7 +194,7 @@ var/list/teleportlocs = list() icon_state = "syndie-ship" requires_power = 0 has_gravity = 1 - blob_legit = 0 //Not... entirely sure this will ever come up... but if the bus makes blobs AND ops, it shouldn't aim for the ops to win. + blob_allowed = 0 //Not... entirely sure this will ever come up... but if the bus makes blobs AND ops, it shouldn't aim for the ops to win. /area/syndicate_mothership/control name = "Syndicate Control Room" @@ -211,7 +211,7 @@ var/list/teleportlocs = list() icon_state = "asteroid" requires_power = 0 has_gravity = 1 - blob_legit = 0 //Nope, no winning on the asteroid as a blob. Gotta eat the station. + blob_allowed = 0 //Nope, no winning on the asteroid as a blob. Gotta eat the station. valid_territory = 0 /area/asteroid/cave @@ -1018,7 +1018,7 @@ var/list/teleportlocs = list() name = "Ruskie DJ Station" icon_state = "DJ" has_gravity = 1 - blob_legit = 0 //Nope, no winning on the DJ station as a blob. Gotta eat the main station. + blob_allowed = 0 //Nope, no winning on the DJ station as a blob. Gotta eat the main station. /area/djstation/solars name = "DJ Station Solars" @@ -1030,7 +1030,7 @@ var/list/teleportlocs = list() /area/derelict name = "Derelict Station" icon_state = "storage" - blob_legit = 0 //Nope, no winning on the derelict as a blob. Gotta eat the station. + blob_allowed = 0 //Nope, no winning on the derelict as a blob. Gotta eat the station. /area/derelict/hallway/primary name = "Derelict Primary Hallway" diff --git a/code/game/gamemodes/blob/blob_finish.dm b/code/game/gamemodes/blob/blob_finish.dm index b177798cdcd..5bd7dc2b321 100644 --- a/code/game/gamemodes/blob/blob_finish.dm +++ b/code/game/gamemodes/blob/blob_finish.dm @@ -19,7 +19,7 @@ /datum/game_mode/blob/declare_completion() if(round_converted) //So badmin blobs later don't step on the dead natural blobs metaphorical toes ..() - if(blobwincount <= blobs.len) + if(blobwincount <= blobs_legit.len) feedback_set_details("round_end_result","win - blob took over") world << "The blob has taken over the station!" world << "The entire station was eaten by the Blob" diff --git a/code/game/gamemodes/blob/theblob.dm b/code/game/gamemodes/blob/theblob.dm index ca99254b6f8..2acc5df04b1 100644 --- a/code/game/gamemodes/blob/theblob.dm +++ b/code/game/gamemodes/blob/theblob.dm @@ -17,10 +17,9 @@ var/fire_resist = 1 var/mob/camera/blob/overmind - /obj/effect/blob/New(loc) var/area/Ablob = get_area(loc) - if (Ablob.blob_legit) //Is the area Legit for blobs? + if (Ablob.blob_allowed) //Is this area allowed for winning as blob? blobs_legit += src blobs += src //Keep track of the blob in the normal list either way src.dir = pick(1, 2, 4, 8) @@ -35,11 +34,10 @@ /obj/effect/blob/Destroy() var/area/Ablob = get_area(loc) - if (Ablob.blob_legit) //Only remove for blobs in Legit places, else they didn't add points to begin with. + if (Ablob.blob_allowed) //Only remove for blobs in areas that counted for the win blobs_legit -= src blobs -= src //It's still removed from the normal list - if(isturf(loc)) //Necessary because Expand() is retarded and spawns a blob and then deletes it - playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) + playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) //Expand() is no longer broken, no check necessary. return ..() @@ -130,24 +128,33 @@ else T = null if(!T) return 0 - var/obj/effect/blob/B = new /obj/effect/blob/normal(src.loc) + //We can keep the above code in this proc, it probably works fine? + //new blob code with less BS: + var/Blob_spawnable = 1 if(istype(T, /turf/space) && prob(65)) - B.health = 0 - B.color = a_color - B.density = 1 - if(T.Enter(B,src))//Attempt to move into the tile - B.density = initial(B.density) - B.loc = T - B.update_icon() - else - T.blob_act()//If we cant move in hit the turf - B.loc = null //So we don't play the splat sound, see Destroy() - qdel(B) - - for(var/atom/A in T)//Hit everything in the turf - A.blob_act() + Blob_spawnable = 0 + playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) //Let's give some feedback that we DID try to spawn in space, since players are used to it + for (var/atom/A in T) + if (A.density != 0) // Unless density is 0, don't spawn a blob + Blob_spawnable = 0 + A.blob_act() //Hit everything + if (T.density != 0) //Check for walls and such dense turfs + Blob_spawnable = 0 + T.blob_act() //Hit the turf + if (Blob_spawnable == 1) + var/obj/effect/blob/B = new /obj/effect/blob/normal(src.loc) + B.color = a_color + B.density = 1 + if(T.Enter(B,src)) //NOW we can attempt to move into the tile + B.density = initial(B.density) + B.loc = T + B.update_icon() + else + T.blob_act() //If we cant move in hit the turf + qdel(B) //We should never get to this point, since we checked before moving in. Destroy blob anyway for cleanliness though return 1 + /obj/effect/blob/ex_act(severity, target) ..() var/damage = 150 - 20 * severity diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm index 39f37bc3d1a..dff4818781c 100644 --- a/code/modules/admin/player_panel.dm +++ b/code/modules/admin/player_panel.dm @@ -544,7 +544,7 @@ if(istype(ticker.mode, /datum/game_mode/blob)) var/datum/game_mode/blob/mode = ticker.mode dat += "
" - dat += "" + dat += "" for(var/datum/mind/blob in mode.infected_crew) var/mob/M = blob.current
Blob
Progress: [blobs.len]/[mode.blobwincount]
Progress: [blobs_legit.len]/[mode.blobwincount]