/mob/camera/blob name = "Blob Overmind" real_name = "Blob Overmind" desc = "The overmind. It controls the blob." icon = 'icons/mob/blob.dmi' icon_state = "marker" mouse_opacity = 1 move_on_shuttle = 1 see_in_dark = 8 see_invisible = SEE_INVISIBLE_MINIMUM invisibility = INVISIBILITY_OBSERVER layer = FLY_LAYER pass_flags = PASSBLOB faction = list("blob") var/obj/structure/blob/core/blob_core = null // The blob overmind's core var/blob_points = 0 var/max_blob_points = 100 var/last_attack = 0 var/datum/reagent/blob/blob_reagent_datum = new/datum/reagent/blob() var/list/blob_mobs = list() var/list/resource_blobs = list() var/ghostimage = null var/free_chem_rerolls = 1 //one free chemical reroll var/nodes_required = 1 //if the blob needs nodes to place resource and factory blobs var/placed = 0 var/base_point_rate = 2 //for blob core placement var/manualplace_min_time = 600 //in deciseconds //a minute, to get bearings var/autoplace_max_time = 3600 //six minutes, as long as should be needed /mob/camera/blob/Initialize(mapload, pre_placed = 0, mode_made = 0, starting_points = 60) blob_points = starting_points if(pre_placed) //we already have a core! manualplace_min_time = 0 autoplace_max_time = 0 placed = 1 else if(mode_made) manualplace_min_time = world.time + BLOB_NO_PLACE_TIME else manualplace_min_time += world.time autoplace_max_time += world.time overminds += src var/new_name = "[initial(name)] ([rand(1, 999)])" name = new_name real_name = new_name last_attack = world.time var/datum/reagent/blob/BC = pick((subtypesof(/datum/reagent/blob))) blob_reagent_datum = new BC color = blob_reagent_datum.complementary_color if(blob_core) blob_core.update_icon() ghostimage = image(src.icon,src,src.icon_state) ghost_darkness_images |= ghostimage //so ghosts can see the blob cursor when they disable darkness updateallghostimages() ..() /mob/camera/blob/Life() if(!blob_core) if(!placed) if(manualplace_min_time && world.time >= manualplace_min_time) to_chat(src, "You may now place your blob core.") to_chat(src, "You will automatically place your blob core in [round((autoplace_max_time - world.time)/600, 0.5)] minutes.") manualplace_min_time = 0 if(autoplace_max_time && world.time >= autoplace_max_time) place_blob_core(base_point_rate, 1) else qdel(src) ..() /mob/camera/blob/Destroy() for(var/BL in blobs) var/obj/structure/blob/B = BL if(B && B.overmind == src) B.overmind = null B.update_icon() //reset anything that was ours for(var/BLO in blob_mobs) var/mob/living/simple_animal/hostile/blob/BM = BLO if(BM) BM.overmind = null BM.update_icons() overminds -= src if(ghostimage) ghost_darkness_images -= ghostimage qdel(ghostimage) ghostimage = null updateallghostimages() return ..() /mob/camera/blob/Login() ..() sync_mind() to_chat(src, "You are the overmind!") blob_help() update_health_hud() add_points(0) /mob/camera/blob/examine(mob/user) ..() if(blob_reagent_datum) to_chat(user, "Its chemical is [blob_reagent_datum.name].") /mob/camera/blob/update_health_hud() if(blob_core) hud_used.healths.maptext = "